/// <summary> /// Handles rotation in the given direction when the RotateTool is activated /// </summary> /// <param name="direction">Direction to rotate by</param> protected void Rotate(GridBrushBase.RotationDirection direction) { if (GridPaintingState.gridBrush == null) { return; } var grid = GridPaintingState.activeGrid; if (grid == null) { grid = GridPaintingState.lastActiveGrid; } if (grid != null && grid.isActive) { GridPaintingState.gridBrush.Rotate(direction, grid.cellLayout); grid.Repaint(); } else if (GridPaintingState.scenePaintTarget != null) { var gridLayout = GridPaintingState.scenePaintTarget.GetComponentInParent <GridLayout>(); if (gridLayout != null) { GridPaintingState.gridBrush.Rotate(direction, gridLayout.cellLayout); } } }
public override void Rotate(GridBrushBase.RotationDirection direction, GridLayout.CellLayout layout) { Vector3Int size = this.m_Size; GridBrush.BrushCell[] array = this.m_Cells.Clone() as GridBrush.BrushCell[]; this.size = new Vector3Int(size.y, size.x, size.z); BoundsInt boundsInt = new BoundsInt(Vector3Int.zero, size); foreach (Vector3Int current in boundsInt.allPositionsWithin) { int x = (direction != GridBrushBase.RotationDirection.Clockwise) ? current.y : (size.y - current.y - 1); int y = (direction != GridBrushBase.RotationDirection.Clockwise) ? (size.x - current.x - 1) : current.x; int cellIndex = this.GetCellIndex(x, y, current.z); int cellIndex2 = this.GetCellIndex(current.x, current.y, current.z, size.x, size.y, size.z); this.m_Cells[cellIndex] = array[cellIndex2]; } int x2 = (direction != GridBrushBase.RotationDirection.Clockwise) ? this.pivot.y : (size.y - this.pivot.y - 1); int y2 = (direction != GridBrushBase.RotationDirection.Clockwise) ? (size.x - this.pivot.x - 1) : this.pivot.x; this.pivot = new Vector3Int(x2, y2, this.pivot.z); Matrix4x4 rhs = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0f, 0f, (direction != GridBrushBase.RotationDirection.Clockwise) ? -90f : 90f), Vector3.one); GridBrush.BrushCell[] cells = this.m_Cells; for (int i = 0; i < cells.Length; i++) { GridBrush.BrushCell brushCell = cells[i]; Matrix4x4 matrix = brushCell.matrix; brushCell.matrix = matrix * rhs; } }
public void RotateSelectedTile(GridBrushBase.RotationDirection rotateDirection) { if (m_Collection != null && m_Collection.m_GridObjectBrushes != null && m_Collection.m_GridObjectBrushes.Count > 0 && m_Collection.m_SelectedGridObjectBrush != null && m_Collection.m_SelectedGridObjectBrush.m_GridObject != null) { /* * m_Collection.m_SelectedGridObjectBrush.m_Rotation = (Quaternion.Euler(m_Collection.m_SelectedGridObjectBrush.m_Rotation) * orientation).eulerAngles; * EditorUtility.SetDirty(this); */ } }
public virtual void Rotate(GridBrushBase.RotationDirection direction, GridLayout.CellLayout layout) { }