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