private void DoOriginEditing() { ReflectionProbe reflectionProbe = (ReflectionProbe)base.target; Vector3 position = reflectionProbe.transform.position; Vector3 size = reflectionProbe.size; EditorGUI.BeginChangeCheck(); Vector3 v = Handles.PositionHandle(position, ReflectionProbeEditor.GetLocalSpaceRotation(reflectionProbe)); if (EditorGUI.EndChangeCheck() || this.m_OldLocalSpace != ReflectionProbeEditor.GetLocalSpace((ReflectionProbe)base.target)) { Vector3 vector = this.m_OldLocalSpace.inverse.MultiplyPoint3x4(v); Bounds bounds = new Bounds(reflectionProbe.center, size); vector = bounds.ClosestPoint(vector); Undo.RecordObject(reflectionProbe.transform, "Modified Reflection Probe Origin"); reflectionProbe.transform.position = this.m_OldLocalSpace.MultiplyPoint3x4(vector); Undo.RecordObject(reflectionProbe, "Modified Reflection Probe Origin"); reflectionProbe.center = ReflectionProbeEditor.GetLocalSpace(reflectionProbe).inverse.MultiplyPoint3x4(this.m_OldLocalSpace.MultiplyPoint3x4(reflectionProbe.center)); EditorUtility.SetDirty(base.target); this.UpdateOldLocalSpace(); } }
private static Matrix4x4 GetLocalSpace(ReflectionProbe probe) { Vector3 position = probe.transform.position; return(Matrix4x4.TRS(position, ReflectionProbeEditor.GetLocalSpaceRotation(probe), Vector3.one)); }