private void DrawRuleMatrix(RuleTile tile, Rect rect, RuleTile.Rule rule) { var index = 0; var w = rect.width / 3; var h = rect.height / 3; var color = new Color(0, 0, 0, 0.2f); for (var y = 0; y <= 3; y++) { var top = rect.yMin + y * h; HandleHelper.DrawLine(new Vector2(rect.xMin, top), new Vector2(rect.xMax, top), color); } for (var x = 0; x <= 3; x++) { var left = rect.xMin + x * w; HandleHelper.DrawLine(new Vector3(left, rect.yMin), new Vector3(left, rect.yMax), color); } for (var y = 0; y <= 2; y++) { for (var x = 0; x <= 2; x++) { var r = new Rect(rect.xMin + x * w, rect.yMin + y * h, w - 1, h - 1); if (x != 1 || y != 1) { var currentRule = rule.Neighbors[index]; DrawRule(tile, r, new Vector2Int(x, y), currentRule); index++; } else { if (!rule.UseReference) { if (rule.Tile.FlipHorizontal) { GUI.DrawTexture(r, RuleTileEditor.Textures[10]); } if (rule.Tile.FlipVertical) { GUI.DrawTexture(r, RuleTileEditor.Textures[11]); } if (rule.Tile.Rotation != 0) { GUI.DrawTexture(r, RuleTileEditor.Textures[5]); } } } } } }
private void DrawRuleMatrix(RuleTile tile, Rect rect, RuleTile.Rule rule) { var index = 0; var w = rect.width / 3; var h = rect.height / 3; var color = new Color(0, 0, 0, 0.2f); for (var y = 0; y <= 3; y++) { var top = rect.yMin + y * h; HandleHelper.DrawLine(new Vector2(rect.xMin, top), new Vector2(rect.xMax, top), color); } for (var x = 0; x <= 3; x++) { var left = rect.xMin + x * w; HandleHelper.DrawLine(new Vector2(left, rect.yMin), new Vector2(left, rect.yMax), color); } for (var y = 0; y <= 2; y++) { for (var x = 0; x <= 2; x++) { var r = new Rect(rect.xMin + x * w, rect.yMin + y * h, w - 1, h - 1); if (x != 1 || y != 1) { var currentRule = rule.Neighbors[index]; DrawRule(tile, r, new Vector2Int(x, y), currentRule); if (Event.current.type == EventType.MouseDown && r.Contains(Event.current.mousePosition)) { if (Event.current.button == 0) { rule.Neighbors[index] = (RuleTile.NeighborType)Mathf.Repeat((int)currentRule + 1, (int)RuleTile.NeighborType.Count); GUI.changed = true; Event.current.Use(); } } index++; } else { if (!rule.UseReference) { if (rule.Tile.FlipHorizontal) { GUI.DrawTexture(r, Textures[10]); } if (rule.Tile.FlipVertical) { GUI.DrawTexture(r, Textures[11]); } if (rule.Tile.Rotation != 0) { GUI.DrawTexture(r, Textures[5]); } } } } } }