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); }); }
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(); }
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(); } }