public void DoShortcutKey(Editor owner) { var evt = Event.current; if (evt.type != EventType.KeyDown || !evt.shift) { return; } ToolBar toolbar; if (toolbar_ShortCutKey.TryGetValue(evt.keyCode, out toolbar)) { bool used = false; foreach (ToolBar t in toolBars) { if ((t & toolbar) > 0) { used = true; break; } } if (!used) { return; } var targetMode = toolbar_Mode[toolbar]; var mode = EditMode.editMode == targetMode ? EditMode.SceneViewEditMode.None : targetMode; EditMode.ChangeEditMode(mode, GetBoundsGetter(owner)(), owner); evt.Use(); } }
static void SwappingEditUVMode(ShortcutArguments args) { //If editor is not there, then the selected GameObject does not contains a DecalProjector DecalProjector activeDecalProjector = Selection.activeGameObject?.GetComponent <DecalProjector>(); if (activeDecalProjector == null || activeDecalProjector.Equals(null)) { return; } SceneViewEditMode targetMode = SceneViewEditMode.None; switch (editMode) { case k_EditShapePreservingUV: case k_EditUVAndPivot: targetMode = k_EditShapeWithoutPreservingUV; break; case k_EditShapeWithoutPreservingUV: targetMode = k_EditShapePreservingUV; break; } if (targetMode != SceneViewEditMode.None) { ChangeEditMode(targetMode, GetBoundsGetter(activeDecalProjector)(), FindEditorFromSelection()); } }
static public void Drawer_ToolBarButton(int buttonIndex, Editor owner, params GUILayoutOption[] styles) { if (GUILayout.Button(toolbar_Contents[buttonIndex], styles)) { EditMode.ChangeEditMode(k_Toolbar_SceneViewEditModes[buttonIndex], GetBoundsGetter(owner)(), owner); } }
static void EnterEditModePivotPreservingUV(ShortcutArguments args) { //If editor is not there, then the selected GameObject does not contains a DecalProjector DecalProjector activeDecalProjector = Selection.activeGameObject?.GetComponent <DecalProjector>(); if (activeDecalProjector == null || activeDecalProjector.Equals(null)) { return; } ChangeEditMode(k_EditUVAndPivot, GetBoundsGetter(activeDecalProjector)(), FindEditorFromSelection()); }
static internal void Drawer_ToolBarButton(ToolBar button, Editor owner, params GUILayoutOption[] options) { bool enabled = toolbar_Mode[button] == EditMode.editMode; EditorGUI.BeginChangeCheck(); enabled = GUILayout.Toggle(enabled, toolbar_Contents[button], EditorStyles.miniButton, options); if (EditorGUI.EndChangeCheck()) { EditMode.SceneViewEditMode targetMode = EditMode.editMode == toolbar_Mode[button] ? EditMode.SceneViewEditMode.None : toolbar_Mode[button]; EditMode.ChangeEditMode(targetMode, GetBoundsGetter(owner)(), owner); } }
internal static void DrawToolBarButton <TEnum>( TEnum button, Editor owner, Dictionary <TEnum, EditMode.SceneViewEditMode> toolbarMode, Dictionary <TEnum, GUIContent> toolbarContent, params GUILayoutOption[] options ) where TEnum : struct, IConvertible { var intButton = (int)(object)button; bool enabled = toolbarMode[button] == EditMode.editMode; EditorGUI.BeginChangeCheck(); enabled = GUILayout.Toggle(enabled, toolbarContent[button], EditorStyles.miniButton, options); if (EditorGUI.EndChangeCheck()) { EditMode.SceneViewEditMode targetMode = EditMode.editMode == toolbarMode[button] ? EditMode.SceneViewEditMode.None : toolbarMode[button]; EditMode.ChangeEditMode(targetMode, GetBoundsGetter(owner)(), owner); } }
public static void DoShortcutKey(SerializedHDReflectionProbe p, Editor o) { var evt = Event.current; if (evt.type != EventType.KeyDown || !evt.shift) { return; } for (var i = 0; i < k_ShortCutKeys.Length; ++i) { if (evt.keyCode == k_ShortCutKeys[i]) { var mode = EditMode.editMode == k_Toolbar_SceneViewEditModes[i] ? EditMode.SceneViewEditMode.None : k_Toolbar_SceneViewEditModes[i]; EditMode.ChangeEditMode(mode, GetBoundsGetter(p)(), o); evt.Use(); break; } } }
static void Drawer_InfluenceSphereSettings(HDReflectionProbeUI s, SerializedHDReflectionProbe p, Editor owner) { var maxBlendDistance = HDReflectionProbeEditorUtility.CalculateSphereMaxBlendDistance(s, p, owner); var blendDistance = p.blendDistancePositive.vector3Value.x; EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = p.blendDistancePositive.hasMultipleDifferentValues; blendDistance = EditorGUILayout.Slider(CoreEditorUtils.GetContent("Blend Distance|Area around the probe where it is blended with other probes. Only used in deferred probes."), blendDistance, 0, maxBlendDistance); if (EditorGUI.EndChangeCheck()) { p.blendDistancePositive.vector3Value = Vector3.one * blendDistance; p.blendDistanceNegative.vector3Value = Vector3.one * blendDistance; } if (GUILayout.Button(toolbar_Contents[1], GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(k_Toolbar_SceneViewEditModes[1], GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); var blendNormalDistance = p.blendNormalDistancePositive.vector3Value.x; EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = p.blendNormalDistancePositive.hasMultipleDifferentValues; blendNormalDistance = EditorGUILayout.Slider(CoreEditorUtils.GetContent("Blend Normal Distance|Area around the probe where the normals influence the probe. Only used in deferred probes."), blendNormalDistance, 0, maxBlendDistance); if (EditorGUI.EndChangeCheck()) { p.blendNormalDistancePositive.vector3Value = Vector3.one * blendNormalDistance; p.blendNormalDistanceNegative.vector3Value = Vector3.one * blendNormalDistance; } if (GUILayout.Button(toolbar_Contents[2], GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(k_Toolbar_SceneViewEditModes[2], GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); EditorGUI.showMixedValue = false; }
static void Drawer_InfluenceBoxSettings(HDReflectionProbeUI s, SerializedHDReflectionProbe p, Editor owner) { bool advanced = p.editorAdvancedModeEnabled.boolValue; var maxBlendDistance = HDReflectionProbeEditorUtility.CalculateBoxMaxBlendDistance(s, p, owner); EditorGUILayout.BeginHorizontal(); Drawer_AdvancedBlendDistance( p, false, maxBlendDistance, CoreEditorUtils.GetContent("Blend Distance|Area around the probe where it is blended with other probes. Only used in deferred probes.") ); if (GUILayout.Button(toolbar_Contents[1], GUILayout.ExpandHeight(true), GUILayout.Width(28f), GUILayout.MinHeight(22f), GUILayout.MaxHeight((advanced ? 3 : 1) * (EditorGUIUtility.singleLineHeight + 3)))) { EditMode.ChangeEditMode(k_Toolbar_SceneViewEditModes[1], GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); Drawer_AdvancedBlendDistance( p, true, maxBlendDistance, CoreEditorUtils.GetContent("Blend Normal Distance|Area around the probe where the normals influence the probe. Only used in deferred probes.") ); if (GUILayout.Button(toolbar_Contents[2], GUILayout.ExpandHeight(true), GUILayout.Width(28f), GUILayout.MinHeight(22f), GUILayout.MaxHeight((advanced ? 3 : 1) * (EditorGUIUtility.singleLineHeight + 3)))) { EditMode.ChangeEditMode(k_Toolbar_SceneViewEditModes[2], GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); if (advanced) { CoreEditorUtils.DrawVector6( CoreEditorUtils.GetContent("Face fade|Fade faces of the cubemap."), p.boxSideFadePositive, p.boxSideFadeNegative, Vector3.zero, Vector3.one, HDReflectionProbeEditor.k_handlesColor); } }
static void Drawer_InfluenceShapeSphereSettings(HDReflectionProbeUI s, SerializedHDReflectionProbe p, Editor owner) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(p.influenceSphereRadius, CoreEditorUtils.GetContent("Radius")); if (GUILayout.Button(toolbar_Contents[0], GUILayout.ExpandHeight(true), GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.ReflectionProbeBox, GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(p.boxOffset, CoreEditorUtils.GetContent("Sphere Offset|The center of the sphere in which the reflections will be applied to objects. The value is relative to the position of the Game Object.")); if (GUILayout.Button(toolbar_Contents[3], GUILayout.ExpandHeight(true), GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.ReflectionProbeOrigin, GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); }
static void Drawer_InfluenceShapeBoxSettings(HDReflectionProbeUI s, SerializedHDReflectionProbe p, Editor owner) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(p.boxSize, CoreEditorUtils.GetContent("Box Size|The size of the box in which the reflections will be applied to objects. The value is not affected by the Transform of the Game Object.")); if (GUILayout.Button(toolbar_Contents[0], GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.ReflectionProbeBox, GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(p.boxOffset, CoreEditorUtils.GetContent("Box Offset|The center of the box in which the reflections will be applied to objects. The value is relative to the position of the Game Object.")); if (GUILayout.Button(toolbar_Contents[3], GUILayout.Width(28f), GUILayout.Height(EditorGUIUtility.singleLineHeight + 3))) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.ReflectionProbeOrigin, GetBoundsGetter(p)(), owner); } EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { var center = p.boxOffset.vector3Value; var size = p.boxSize.vector3Value; if (HDReflectionProbeEditorUtility.ValidateAABB(p.target, ref center, ref size)) { //clamp to contains object center instead of resizing Vector3 projector = (center - p.boxOffset.vector3Value).normalized; p.boxOffset.vector3Value = center + Mathf.Abs(Vector3.Dot((p.boxSize.vector3Value - size) * .5f, projector)) * projector; } } }