Skip to content

Instantly share code, notes, and snippets.

View MattRix's full-sized avatar

Matt Rix MattRix

View GitHub Profile
@MattRix
MattRix / SpriteShapeUtils.cs
Last active February 2, 2022 18:49
Copy and paste sprite physics shapes between TextureImporter, SpriteRenderer and PolygonCollider2D using their context menus.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
#if UNITY_EDITOR
using UnityEditor;
public class SpriteShapeUtils
{
@MattRix
MattRix / AdventOfCode_Day12_Faster.cs
Last active December 12, 2021 23:25
AdventOfCode Day 12 C# faster solution with zero allocations while searching (runs in 25ms on my 8-year-old cpu)
var input = File.ReadAllText(Path.GetDirectoryName(Util.CurrentQueryPath) + @"\..\Inputs\aoc_day12.txt");
var lines = input.Split('\n').Select(line=>line.Trim()).ToArray();
var connections = new Dictionary<int,List<int>>();
var nodes = new List<string>();
foreach(var line in lines)
{
var nodeA = line.Split('-')[0];
var nodeB = line.Split('-')[1];
@MattRix
MattRix / AdventOfCode_Day12.cs
Created December 12, 2021 19:31
Solution for Advent of Code Day 12 that (runs in ~150ms)
var input = File.ReadAllText(Path.GetDirectoryName(Util.CurrentQueryPath) + @"\..\Inputs\aoc_day12.txt");
var lines = input.Split('\n').Select(line=>line.Trim()).ToArray();
var connections = new Dictionary<string,List<string>>();
foreach(var line in lines)
{
var nodeA = line.Split('-')[0];
var nodeB = line.Split('-')[1];
if(!connections.TryGetValue(nodeA, out var listA)) connections[nodeA] = listA = new List<string>();
if(!connections.TryGetValue(nodeB, out var listB)) connections[nodeB] = listB = new List<string>();
@MattRix
MattRix / readme.txt
Created July 8, 2021 20:12
Cake Monsters (PuzzleScript Script)
Play this game by pasting the script in http://www.puzzlescript.net/editor.html
@MattRix
MattRix / FolderNoteEditor.cs
Last active July 13, 2022 20:17
FolderNoteEditor.cs - put notes on any folder in Unity.
#if UNITY_EDITOR //this allows the user to put it in a non-editor folder if they want, since it's not accessing anything else
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(DefaultAsset))]
public class FolderNoteEditor : Editor
{
bool isFolder;
string path;
AssetImporter importer;
@MattRix
MattRix / FancyColorSwap.shader
Created March 17, 2021 02:11
Fancy Color Swap
Shader "Futile/FancyColorSwap"
{
Properties
{
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_ColorR ("Red Replacement Color", Color) = (1,0,0,1)
_ColorG ("Green Replacement Color", Color) = (0,1,0,1)
_ColorB ("Blue Replacement Color", Color) = (0,0,1,1)
}
@MattRix
MattRix / ColorSwap.shader
Created March 16, 2021 23:45
ColorSwap for Futile
Shader "Futile/ColorSwap"
{
Properties
{
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_ColorR ("Red Replacement Color", Color) = (1,0,0,1)
_ColorG ("Green Replacement Color", Color) = (0,1,0,1)
_ColorB ("Blue Replacement Color", Color) = (0,0,1,1)
}
@MattRix
MattRix / PixImporter.cs
Created March 16, 2021 19:35
ScriptedImporter custom texture file format example
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor.AssetImporters;
using System;
using System.IO;
//ScriptedImporter docs: https://docs.unity3d.com/Manual/ScriptedImporters.html
[ScriptedImporter(1, "pix")]
@MattRix
MattRix / FLabel.cs
Created March 15, 2021 20:17
FLabel with pixel snapping and wrapping
using System;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
//parts of this were inspired by https://github.com/prime31/UIToolkit/blob/master/Assets/Plugins/UIToolkit/UIElements/UIText.cs
public class FLabel : FFacetElementNode
{
public Action SignalTextChange;
using UnityEngine;
using System.Collections;
public class InstancedExample : MonoBehaviour
{
public int instanceCount = 1000;
public Mesh instanceMesh;
public Material instanceMaterial;
public int subMeshIndex = 0;