Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
 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);
          */
     }
 }
Exemplo n.º 4
0
 public virtual void Rotate(GridBrushBase.RotationDirection direction, GridLayout.CellLayout layout)
 {
 }