protected virtual void RecalculateDebugPoints(Vector2 startPoint, Vector2 endPoint, DrawingFunction drawingFunc)
        {
            STETilemap tilemap = GetTargetTilemap();

            if (!tilemap)
            {
                return;
            }
            Vector2 cellSizeDiv2 = tilemap.CellSize / 2f;

            m_debugPoints.Clear();
            int x0, y0, x1, y1;

            if ((ePositionType)m_action.positionType.Value == ePositionType.LocalPosition)
            {
                x0 = TilemapUtils.GetGridX(tilemap, startPoint);
                y0 = TilemapUtils.GetGridY(tilemap, startPoint);
                x1 = TilemapUtils.GetGridX(tilemap, endPoint);
                y1 = TilemapUtils.GetGridY(tilemap, endPoint);
            }
            else //if ((ePositionType)m_action.positionType.Value == ePositionType.GridPosition)
            {
                x0 = (int)startPoint.x;
                y0 = (int)startPoint.y;
                x1 = (int)endPoint.x;
                y1 = (int)endPoint.y;
            }
            drawingFunc(x0, y0, x1, y1,
                        (x, y) =>
            {
                m_debugPoints.Add(new Vector2(x * tilemap.CellSize.x + cellSizeDiv2.x, y * tilemap.CellSize.y + cellSizeDiv2.y));
                return(true);
            });
        }
Esempio n. 2
0
        public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (UpdateCache(go))
            {
                STETilemap tilemap = cachedComponent as STETilemap;
                int        gridX;
                int        gridY;
                if ((ePositionType)positionType.Value == ePositionType.LocalPosition)
                {
                    gridX = TilemapUtils.GetGridX(tilemap, startPaintingPosition.Value);
                    gridY = TilemapUtils.GetGridY(tilemap, startPaintingPosition.Value);
                }
                else// if ((ePositionType)positionType.Value == ePositionType.GridPosition)
                {
                    gridX = (int)startPaintingPosition.Value.x;
                    gridY = (int)startPaintingPosition.Value.y;
                }

                if (tileSelection.selectionData.Length == 1)
                {
                    tilemap.SetTileData(gridX, gridY, (uint)tileSelection.selectionData[0]);
                }
                else
                {
                    int w  = tileSelection.rowLength;
                    int h  = tileSelection.columnLength;
                    int xf = -(w >> 1) + 1 - (w & 1);
                    int yf = -(h >> 1) + 1 - (h & 1);
                    for (int y = h - 1, idx = 0; y >= 0; --y)
                    {
                        for (int x = 0; x < w; ++x, ++idx)
                        {
                            tilemap.SetTileData(gridX + x + xf, gridY + y + yf, (uint)tileSelection.selectionData[idx]);
                        }
                    }
                }


                tilemap.UpdateMesh();
            }

            Finish();
        }
Esempio n. 3
0
        protected override void DoPaintAction()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (UpdateCache(go))
            {
                STETilemap tilemap = cachedComponent as STETilemap;
                int        gridX;
                int        gridY;
                if ((ePositionType)positionType.Value == ePositionType.LocalPosition)
                {
                    gridX = TilemapUtils.GetGridX(tilemap, startPaintingPosition.Value);
                    gridY = TilemapUtils.GetGridY(tilemap, startPaintingPosition.Value);
                }
                else// if ((ePositionType)positionType.Value == ePositionType.GridPosition)
                {
                    gridX = (int)startPaintingPosition.Value.x;
                    gridY = (int)startPaintingPosition.Value.y;
                }
                TilemapDrawingUtils.FloodFill(tilemap as STETilemap, gridX, gridY, tileSelection.Get2DTileDataArray(), randomizePattern.Value);
                tilemap.UpdateMesh();
            }
        }