static void Handle_OriginEditing(HDReflectionProbeUI s, SerializedHDReflectionProbe sp, Editor o) { var p = (ReflectionProbe)sp.so.targetObject; var transformPosition = p.transform.position; var size = p.size; EditorGUI.BeginChangeCheck(); var newPostion = Handles.PositionHandle(transformPosition, HDReflectionProbeEditorUtility.GetLocalSpaceRotation(p)); var changed = EditorGUI.EndChangeCheck(); if (changed || s.oldLocalSpace != HDReflectionProbeEditorUtility.GetLocalSpace(p)) { var localNewPosition = s.oldLocalSpace.inverse.MultiplyPoint3x4(newPostion); var b = new Bounds(p.center, size); localNewPosition = b.ClosestPoint(localNewPosition); Undo.RecordObject(p.transform, "Modified Reflection Probe Origin"); p.transform.position = s.oldLocalSpace.MultiplyPoint3x4(localNewPosition); Undo.RecordObject(p, "Modified Reflection Probe Origin"); p.center = HDReflectionProbeEditorUtility.GetLocalSpace(p).inverse.MultiplyPoint3x4(s.oldLocalSpace.MultiplyPoint3x4(p.center)); EditorUtility.SetDirty(p); s.UpdateOldLocalSpace(p); } }
static void Drawer_Toolbar(HDReflectionProbeUI s, SerializedHDReflectionProbe p, Editor owner) { if (p.so.targetObjects.Length > 1) { return; } // Show the master tool selector GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.changed = false; var oldEditMode = EditMode.editMode; EditMode.DoInspectorToolbar(k_Toolbar_SceneViewEditModes, toolbar_Contents, GetBoundsGetter(p), owner); //if (GUILayout.Button(EditorGUIUtility.IconContent("Navigation", "|Fit the reflection probe volume to the surrounding colliders."))) // s.AddOperation(Operation.FitVolumeToSurroundings); if (oldEditMode != EditMode.editMode) { switch (EditMode.editMode) { case EditMode.SceneViewEditMode.ReflectionProbeOrigin: s.UpdateOldLocalSpace(p.target); break; } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); }