void DrawPivotHandles(DecalProjector decalProjector) { Vector3 scale = decalProjector.effectiveScale; Vector3 scaledPivot = Vector3.Scale(decalProjector.pivot, scale); Vector3 scaledSize = Vector3.Scale(decalProjector.size, scale); using (new Handles.DrawingScope(fullColor, Matrix4x4.TRS(Vector3.zero, decalProjector.transform.rotation, Vector3.one))) { EditorGUI.BeginChangeCheck(); Vector3 newPosition = ProjectedTransform.DrawHandles(decalProjector.transform.position, .5f * scaledSize.z - scaledPivot.z, decalProjector.transform.rotation); if (EditorGUI.EndChangeCheck()) { Undo.RecordObjects(new UnityEngine.Object[] { decalProjector, decalProjector.transform }, "Decal Projector Change"); scaledPivot += Quaternion.Inverse(decalProjector.transform.rotation) * (decalProjector.transform.position - newPosition); decalProjector.pivot = new Vector3( scale.x != 0f ? scaledPivot.x / scale.x : decalProjector.pivot.x, scale.y != 0f ? scaledPivot.y / scale.y : decalProjector.pivot.y, scale.z != 0f ? scaledPivot.z / scale.z : decalProjector.pivot.z); decalProjector.transform.position = newPosition; ReinitSavedRatioSizePivotPosition(); } } }
void DrawPivotHandles(DecalProjector decalProjector) { using (new Handles.DrawingScope(fullColor, Matrix4x4.TRS(Vector3.zero, decalProjector.transform.rotation, Vector3.one))) { EditorGUI.BeginChangeCheck(); Vector3 newPosition = ProjectedTransform.DrawHandles(decalProjector.transform.position, .5f * decalProjector.size.z - decalProjector.pivot.z, decalProjector.transform.rotation); if (EditorGUI.EndChangeCheck()) { Undo.RecordObjects(new UnityEngine.Object[] { decalProjector, decalProjector.transform }, "Decal Projector Change"); decalProjector.pivot += Quaternion.Inverse(decalProjector.transform.rotation) * (decalProjector.transform.position - newPosition); decalProjector.transform.position = newPosition; } } }