public void OnPointerClick(PointerEventData eventData) { if (_dragging || Input.touchCount > 1 || eventData.button != PointerEventData.InputButton.Left) { return; } if (nextClickOverride != null) { nextClickOverride(); nextClickOverride = null; return; } Utils.GetInputCoords(out var x, out var y); if (FieldMatrix.Get(x, y, out var block)) { block.logic.Click(eventData); } else { PixelDriver.Add(PixelRoad.Circle(Colors.GetPalette(-1)[3], 3f, 3f, 0.05f, 0.5f, x, y).SetWeight(0.05f)); } }
void OnEnable() { Instance = this; OnNextFrame += LoadFromMemoryOrFile; PixelDriver.Add(PixelRoad.Checkerboard(Color.white, new Color(0.97f, 0.97f, 0.97f)).SetWeight(0.3f)); PixelDriver.Add(PixelRoad.NodeBackground().SetWeight(0.1f)); }
public static PixelRoad Circle(Color c, float radius, float spread, float timeScale, float timeFade, int fromX, int fromY) { var pr = new PixelRoad(timeScale + timeFade); pr._colorFunc = (x, y) => { var dist = Vector2.Distance(new Vector2(x, y), new Vector2(fromX, fromY)); var distCircle = Mathf.Lerp(0f, radius, pr.T / timeScale); if (dist > distCircle + spread) { return(WeightedColor.Clear); } var weight = pr._weight * (1f - Mathf.Max(0, pr.T - timeScale) / timeFade); if (dist <= distCircle + spread) { weight = Mathf.Lerp(0f, weight, 1 - (dist - distCircle) / spread); } return(new WeightedColor(c, weight)); }; return(pr); }
public static PixelRoad Checkerboard(Color a, Color b) { var pr = new PixelRoad(-1f); pr._colorFunc = (x, y) => { var c = (x + 1000000) % 2 == (y + 1000000) % 2 ? a : b; return(new WeightedColor(c, pr._weight)); }; return(pr); }
void OnPulseDeadEnd(Block from) { if (from == null || BindMatrix.GetOutBindsCount(this) != 0) { return; } var dir = Utils.DirFromCoords(logic.Position - from.logic.Position); var root = Roots.Root[rootId].block; root.soundsPlayer.Play(dir); PixelDriver.Add(PixelRoad.Circle(root.view.PrimaryPainter.palette.GetColor(dir), 2f, 3f, 0.05f, 0.5f, logic.X, logic.Y).SetWeight(0.3f)); }
public static PixelRoad NodeBackground() { var pr = new PixelRoad(-1f); pr._colorFunc = (x, y) => { if (FieldMatrix.Get(x, y, out var block)) { return(new WeightedColor(Roots.Root[block.rootId].block.view.PrimaryPainter.palette.GetColor(2), pr._weight)); } return(WeightedColor.Clear); }; return(pr); }
public static void Add(PixelRoad road) { _roads.Add(road); }