Пример #1
0
        public virtual void SnapToGrid()
        {
            GameObject[] selection = Editor.Selection.gameObjects;
            if (selection == null || selection.Length == 0)
            {
                return;
            }

            Transform activeTransform = selection[0].transform;

            Vector3 position = activeTransform.position;

            if (SizeOfGrid < 0.01)
            {
                SizeOfGrid = 0.01f;
            }
            position.x = Mathf.Round(position.x / SizeOfGrid) * SizeOfGrid;
            position.y = Mathf.Round(position.y / SizeOfGrid) * SizeOfGrid;
            position.z = Mathf.Round(position.z / SizeOfGrid) * SizeOfGrid;
            Vector3 offset = position - activeTransform.position;

            Editor.Undo.BeginRecord();
            for (int i = 0; i < selection.Length; ++i)
            {
                Editor.Undo.BeginRecordTransform(selection[i].transform);
                selection[i].transform.position += offset;
                Editor.Undo.EndRecordTransform(selection[i].transform);
            }
            Editor.Undo.EndRecord();

            if (m_rectTool != null && Editor.Tools.Current == RuntimeTool.Rect)
            {
                m_rectTool.RecalculateBoundsAndRebuild();
            }
        }
Пример #2
0
        protected override void OnDrop()
        {
            base.OnDrop();

            Targets = RealTargets;

            for (int i = 0; i < m_connectedTools.Count; ++i)
            {
                RectTool tool = m_connectedTools[i];
                if (tool != this)
                {
                    tool.RecalculateBoundsAndRebuild();
                }
            }


            m_referencePoints    = null;
            m_referencePositions = null;
            m_referenceScale     = null;
        }