Exemplo n.º 1
0
        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]);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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]);
                            }
                        }
                    }
                }
            }
        }