Exemple #1
0
        private float GetRLElementHeight(int ruleIndex)
        {
            ScriptedTile.Rule rule = scriptedTile.rules[ruleIndex];

            BoundsInt neighborsMatrixBounds = GetNeighborsMatrixBounds(rule.GetNeighborsMatrixBoundsBySelectedNeighbors());

            float heightByTileDataComponent = 0f;
            float sumOfFieldPaddingTop;
            float sumOfheightOfAllSpritesFields;

            switch (rule.spriteOutputType)
            {
            case ScriptedTile.RuleTileData.SpriteOutputType.Single:
                heightByTileDataComponent = ReorderableListGUIDefaults.ElementHeight + ReorderableListGUIDefaults.ElementPaddingHeight + ReorderableListGUIDefaults.FieldPaddingTop * 3;
                break;

            case ScriptedTile.RuleTileData.SpriteOutputType.Random:
                // Iniciar com 6 Fields.
                sumOfFieldPaddingTop = ReorderableListGUIDefaults.FieldPaddingTop * 6;

                for (int i = 0; i < rule.tileSprites.Length; i++)
                {
                    sumOfFieldPaddingTop += ReorderableListGUIDefaults.FieldPaddingTop;
                }

                sumOfheightOfAllSpritesFields = ReorderableListGUIDefaults.FieldHeight * (rule.tileSprites.Length + 3);

                heightByTileDataComponent = sumOfFieldPaddingTop + sumOfheightOfAllSpritesFields + ReorderableListGUIDefaults.ElementHeight + ReorderableListGUIDefaults.ElementPaddingHeight;
                break;

            case ScriptedTile.RuleTileData.SpriteOutputType.Animation:
                // Iniciar com 5 Fields.
                sumOfFieldPaddingTop = ReorderableListGUIDefaults.FieldPaddingTop * 5;

                for (int i = 0; i < rule.tileSprites.Length; i++)
                {
                    sumOfFieldPaddingTop += ReorderableListGUIDefaults.FieldPaddingTop;
                }

                sumOfheightOfAllSpritesFields = ReorderableListGUIDefaults.FieldHeight * (rule.tileSprites.Length + 2);

                heightByTileDataComponent = sumOfFieldPaddingTop + sumOfheightOfAllSpritesFields + ReorderableListGUIDefaults.ElementHeight + ReorderableListGUIDefaults.ElementPaddingHeight;
                break;
            }

            float neighborsMatrixGUIHeight = TransformNeighborsMatrixBoundsToGUI(neighborsMatrixBounds).y + 10f;

            // Qual componente tem a maior altura? TileDataComponent ou NeighborMatrixBounds.
            return(Mathf.Max(heightByTileDataComponent, neighborsMatrixGUIHeight));
        }
Exemple #2
0
        private void OnDrawRLElement(Rect elementRectangle, int ruleIndex, bool isActive, bool isFocused)
        {
            ScriptedTile.Rule rule = scriptedTile.rules[ruleIndex];

            float elementGUITop   = elementRectangle.yMin;
            float elementGUIRight = elementRectangle.xMax;
            float elementGUILeft  = elementRectangle.xMin;

            BoundsInt neighborsMatrixBounds = GetNeighborsMatrixBounds(rule.GetNeighborsMatrixBoundsBySelectedNeighbors());
            Vector2   neighborsMatrixGUI    = TransformNeighborsMatrixBoundsToGUI(neighborsMatrixBounds);

            float neighborsMatrixGUIWidth  = neighborsMatrixGUI.x;
            float neighborsMatrixGUIHeight = neighborsMatrixGUI.y;

            #region SpriteComponent Rectangle.
            float spriteComponentPositionX = elementGUIRight - ReorderableListGUIDefaults.ComponentWidth;
            float spriteComponentPositionY = elementGUITop + ReorderableListGUIDefaults.FieldPaddingTop * 2;
            float spriteComponentWidth     = ReorderableListGUIDefaults.ComponentWidth;
            float spriteComponentHeight    = ReorderableListGUIDefaults.ElementHeight;

            // Separar o espaço deste componente dentro do element do ReorderableList.
            Rect spriteComponentRectangle = new Rect(
                spriteComponentPositionX,
                spriteComponentPositionY,
                spriteComponentWidth,
                spriteComponentHeight
                );
            #endregion

            #region NeighborsMatrixComponent Rectangle.
            float neighborsMatrixComponentPositionX = elementGUIRight - neighborsMatrixGUIWidth - spriteComponentWidth - 10f;
            float neighborsMatrixComponentPositionY = elementGUITop + ReorderableListGUIDefaults.FieldPaddingTop * 2;
            float neighborsMatrixComponentWidth     = neighborsMatrixGUIWidth;
            float neighborsMatrixComponentHeight    = neighborsMatrixGUIHeight;

            // Separar o espaço deste componente dentro do element do ReorderableList.
            Rect neighborsMatrixComponentRectangle = new Rect(
                neighborsMatrixComponentPositionX,
                neighborsMatrixComponentPositionY,
                neighborsMatrixComponentWidth,
                neighborsMatrixComponentHeight
                );
            #endregion

            #region TileDataComponent Rectangle.
            float tileDataComponentPositionX = elementGUILeft;
            float tileDataComponentPositionY = elementGUITop + ReorderableListGUIDefaults.FieldPaddingTop;
            float tileDataComponentWidth     = elementRectangle.width - neighborsMatrixGUIWidth - spriteComponentRectangle.width - 20f;
            float tileDataComponentHeight    = elementRectangle.height - ReorderableListGUIDefaults.ElementPaddingHeight;

            // Separar o espaço deste componente dentro do element do ReorderableList.
            Rect tileDataComponentRectangle = new Rect(
                tileDataComponentPositionX,
                tileDataComponentPositionY,
                tileDataComponentWidth,
                tileDataComponentHeight
                );
            #endregion

            DrawTileDataComponent(tileDataComponentRectangle, rule);
            DrawNeighborsMatrixComponent(neighborsMatrixComponentRectangle, neighborsMatrixBounds, scriptedTile, rule);
            DrawSpriteComponent(spriteComponentRectangle, rule);
        }