/// <summary> /// Triggered when the user presses a virtual button. /// </summary> /// <param name="btn">Button that was pressed.</param> /// <param name="deviceIdx">Index of the device it was pressed on. </param> private void OnButtonUp(VirtualButton btn, int deviceIdx) { if (!HasFocus) return; IGlobalShortcuts shortcuts = this; if (btn == EditorApplication.CopyKey) shortcuts.OnCopyPressed(); else if (btn == EditorApplication.CutKey) shortcuts.OnCutPressed(); else if (btn == EditorApplication.PasteKey) shortcuts.OnPastePressed(); else if (btn == EditorApplication.DuplicateKey) shortcuts.OnDuplicatePressed(); else if (btn == EditorApplication.RenameKey) shortcuts.OnRenamePressed(); else if (btn == EditorApplication.DeleteKey) shortcuts.OnDeletePressed(); else if(btn == EditorApplication.PasteKey) shortcuts.OnPastePressed(); }
private void OnInitialize() { mainLayout = GUI.AddLayoutY(); GUIContent viewIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.View), new LocEdString("View")); GUIContent moveIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Move), new LocEdString("Move")); GUIContent rotateIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Rotate), new LocEdString("Rotate")); GUIContent scaleIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Scale), new LocEdString("Scale")); GUIContent localIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Local), new LocEdString("Local")); GUIContent worldIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.World), new LocEdString("World")); GUIContent pivotIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Pivot), new LocEdString("Pivot")); GUIContent centerIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.Center), new LocEdString("Center")); GUIContent moveSnapIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.MoveSnap), new LocEdString("Move snap")); GUIContent rotateSnapIcon = new GUIContent(EditorBuiltin.GetSceneWindowIcon(SceneWindowIcon.RotateSnap), new LocEdString("Rotate snap")); GUIToggleGroup handlesTG = new GUIToggleGroup(); viewButton = new GUIToggle(viewIcon, handlesTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); moveButton = new GUIToggle(moveIcon, handlesTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); rotateButton = new GUIToggle(rotateIcon, handlesTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); scaleButton = new GUIToggle(scaleIcon, handlesTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); GUIToggleGroup coordModeTG = new GUIToggleGroup(); localCoordButton = new GUIToggle(localIcon, coordModeTG, EditorStyles.Button, GUIOption.FlexibleWidth(75)); worldCoordButton = new GUIToggle(worldIcon, coordModeTG, EditorStyles.Button, GUIOption.FlexibleWidth(75)); GUIToggleGroup pivotModeTG = new GUIToggleGroup(); pivotButton = new GUIToggle(pivotIcon, pivotModeTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); centerButton = new GUIToggle(centerIcon, pivotModeTG, EditorStyles.Button, GUIOption.FlexibleWidth(35)); moveSnapButton = new GUIToggle(moveSnapIcon, EditorStyles.Button, GUIOption.FlexibleWidth(35)); moveSnapInput = new GUIFloatField("", GUIOption.FlexibleWidth(35)); rotateSnapButton = new GUIToggle(rotateSnapIcon, EditorStyles.Button, GUIOption.FlexibleWidth(35)); rotateSnapInput = new GUIFloatField("", GUIOption.FlexibleWidth(35)); viewButton.OnClick += () => OnSceneToolButtonClicked(SceneViewTool.View); moveButton.OnClick += () => OnSceneToolButtonClicked(SceneViewTool.Move); rotateButton.OnClick += () => OnSceneToolButtonClicked(SceneViewTool.Rotate); scaleButton.OnClick += () => OnSceneToolButtonClicked(SceneViewTool.Scale); localCoordButton.OnClick += () => OnCoordinateModeButtonClicked(HandleCoordinateMode.Local); worldCoordButton.OnClick += () => OnCoordinateModeButtonClicked(HandleCoordinateMode.World); pivotButton.OnClick += () => OnPivotModeButtonClicked(HandlePivotMode.Pivot); centerButton.OnClick += () => OnPivotModeButtonClicked(HandlePivotMode.Center); moveSnapButton.OnToggled += (bool active) => OnMoveSnapToggled(active); moveSnapInput.OnChanged += (float value) => OnMoveSnapValueChanged(value); rotateSnapButton.OnToggled += (bool active) => OnRotateSnapToggled(active); rotateSnapInput.OnChanged += (float value) => OnRotateSnapValueChanged(value); GUILayout handlesLayout = mainLayout.AddLayoutX(); handlesLayout.AddElement(viewButton); handlesLayout.AddElement(moveButton); handlesLayout.AddElement(rotateButton); handlesLayout.AddElement(scaleButton); handlesLayout.AddSpace(10); handlesLayout.AddElement(localCoordButton); handlesLayout.AddElement(worldCoordButton); handlesLayout.AddSpace(10); handlesLayout.AddElement(pivotButton); handlesLayout.AddElement(centerButton); handlesLayout.AddFlexibleSpace(); handlesLayout.AddElement(moveSnapButton); handlesLayout.AddElement(moveSnapInput); handlesLayout.AddSpace(10); handlesLayout.AddElement(rotateSnapButton); handlesLayout.AddElement(rotateSnapInput); GUIPanel mainPanel = mainLayout.AddPanel(); rtPanel = mainPanel.AddPanel(); selectionPanel = mainPanel.AddPanel(-1); GUIPanel sceneAxesPanel = mainPanel.AddPanel(-1); sceneAxesGUI = new SceneAxesGUI(this, sceneAxesPanel, HandleAxesGUISize, HandleAxesGUISize, ProjectionType.Perspective); focusCatcher = new GUIButton("", EditorStyles.Blank); focusCatcher.OnFocusGained += () => hasContentFocus = true; focusCatcher.OnFocusLost += () => hasContentFocus = false; GUIPanel focusPanel = GUI.AddPanel(-2); focusPanel.AddElement(focusCatcher); toggleProfilerOverlayKey = new VirtualButton(ToggleProfilerOverlayBinding); viewToolKey = new VirtualButton(ViewToolBinding); moveToolKey = new VirtualButton(MoveToolBinding); rotateToolKey = new VirtualButton(RotateToolBinding); scaleToolKey = new VirtualButton(ScaleToolBinding); frameKey = new VirtualButton(FrameBinding); UpdateRenderTexture(Width, Height - HeaderHeight); UpdateProfilerOverlay(); }
private void OnReset() { camera = SceneObject.GetComponent<Camera>(); moveForwardBtn = new VirtualButton(MoveForwardBinding); moveLeftBtn = new VirtualButton(MoveLeftBinding); moveRightBtn = new VirtualButton(MoveRightBinding); moveBackwardBtn = new VirtualButton(MoveBackBinding); moveUpBtn = new VirtualButton(MoveUpBinding); moveDownBtn = new VirtualButton(MoveDownBinding); fastMoveBtn = new VirtualButton(FastMoveBinding); activeBtn = new VirtualButton(RotateBinding); panBtn = new VirtualButton(PanBinding); horizontalAxis = new VirtualAxis(HorizontalAxisBinding); verticalAxis = new VirtualAxis(VerticalAxisBinding); scrollAxis = new VirtualAxis(ScrollAxisBinding); }
/// <summary> /// Triggered by the runtime when the virtual button is released. /// </summary> /// <param name="button">Virtual button that was released.</param> /// <param name="deviceIdx">Index of the device the button was released on.</param> private static void Internal_TriggerButtonUp(VirtualButton button, int deviceIdx) { if (OnButtonUp != null) OnButtonUp(button, deviceIdx); }
/// <summary> /// Checks if the physical button combination corresponding to the specified virtual button is being held down. /// </summary> /// <param name="button">Virtual button to check.</param> /// <param name="deviceIdx">Index of the device to check.</param> public static bool IsButtonHeld(VirtualButton button, int deviceIdx = 0) { return(Internal_IsButtonHeld(ref button, deviceIdx)); }
private static extern bool Internal_IsButtonHeld(ref VirtualButton button, int deviceIdx);
/// <summary> /// Manually triggers a global shortcut. /// </summary> /// <param name="btn">Button for the shortcut. If this doesn't correspond to any shortcut, it is ignored.</param> internal static void TriggerGlobalShortcut(VirtualButton btn) { IGlobalShortcuts window = null; if (btn != PasteKey) { // The system ensures elsewhere that only either a resource or a scene object is selected, but not both if (Selection.ResourcePaths.Length > 0) { window = EditorWindow.GetWindow<LibraryWindow>(); } else if (Selection.SceneObjects.Length > 0) { window = EditorWindow.GetWindow<HierarchyWindow>(); if (window == null) window = EditorWindow.GetWindow<SceneWindow>(); } if (window != null) { if (btn == CopyKey) window.OnCopyPressed(); else if (btn == CutKey) window.OnCutPressed(); else if (btn == PasteKey) window.OnPastePressed(); else if (btn == DuplicateKey) window.OnDuplicatePressed(); else if (btn == RenameKey) window.OnRenamePressed(); else if (btn == DeleteKey) window.OnDeletePressed(); } } else { HierarchyWindow hierarchy = EditorWindow.GetWindow<HierarchyWindow>(); if (hierarchy != null && hierarchy.HasFocus) window = hierarchy; else { LibraryWindow library = EditorWindow.GetWindow<LibraryWindow>(); if (library != null && library.HasFocus) window = library; } if (window != null) window.OnPastePressed(); } }