205 lines
7.0 KiB
C++
205 lines
7.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "UI/VREditorUISystem.h"
|
|
#include "Styling/SlateTypes.h"
|
|
#include "InputCoreTypes.h"
|
|
#include "Editor.h"
|
|
#include "UnrealWidgetFwd.h"
|
|
|
|
// Forward declarations
|
|
class UVREditorMode;
|
|
enum class EGizmoHandleTypes : uint8;
|
|
|
|
/**
|
|
* Implementation of various VR editor action callback functions
|
|
*/
|
|
class FVREditorActionCallbacks
|
|
{
|
|
public:
|
|
|
|
/** Returns the checked state of the translation snap enable/disable button */
|
|
static ECheckBoxState GetTranslationSnapState();
|
|
|
|
/** Rotates through the available translation snap sizes */
|
|
static void OnTranslationSnapSizeButtonClicked();
|
|
|
|
/** Returns the translation snap size as text to use as the button display text */
|
|
static FText GetTranslationSnapSizeText();
|
|
|
|
/** Returns the checked state of the rotation snap enable/disable button */
|
|
static ECheckBoxState GetRotationSnapState();
|
|
|
|
/** Rotates through the available rotation snap sizes */
|
|
static void OnRotationSnapSizeButtonClicked();
|
|
|
|
/** Returns the rotation snap size as text to use as the button display text */
|
|
static FText GetRotationSnapSizeText();
|
|
|
|
/** Returns the checked state of the scale snap enable/disable button */
|
|
static ECheckBoxState GetScaleSnapState();
|
|
|
|
/** Rotates through the available scale snap sizes */
|
|
static void OnScaleSnapSizeButtonClicked();
|
|
|
|
/** Returns the scale snap size as text to use as the button display text */
|
|
static FText GetScaleSnapSizeText();
|
|
|
|
/**
|
|
* Toggles the gizmo coordinate system between local and world space
|
|
* @param InVRMode Currently active VRMode
|
|
*/
|
|
static void OnGizmoCoordinateSystemButtonClicked(UVREditorMode* InVRMode);
|
|
|
|
static void SetCoordinateSystem(UVREditorMode* InVRMode, ECoordSystem InCoordSystem);
|
|
|
|
static ECheckBoxState IsActiveCoordinateSystem(UVREditorMode* InVRMode, ECoordSystem InCoordSystem);
|
|
|
|
/** Returns the gizmo coordinate system as text to use as the button display text */
|
|
static FText GetGizmoCoordinateSystemText();
|
|
|
|
/**
|
|
* Updates the gizmo coordinate system text if the coordinate system or gizmo type is changed
|
|
* @param InVRMode Currently active VRMode
|
|
*/
|
|
static void UpdateGizmoCoordinateSystemText(UVREditorMode* InVRMode);
|
|
|
|
/**
|
|
* Rotates the gizmo type through universal, translate, rotate, and scale
|
|
* @param InVRMode Currently active VRMode
|
|
*/
|
|
static void OnGizmoModeButtonClicked(UVREditorMode* InVRMode);
|
|
|
|
static void SetGizmoMode(UVREditorMode* InVRMode, EGizmoHandleTypes InGizmoMode);
|
|
|
|
static EGizmoHandleTypes GetGizmoMode(const UVREditorMode* InVRMode);
|
|
|
|
static ECheckBoxState IsActiveGizmoMode(UVREditorMode* InVRMode, EGizmoHandleTypes InGizmoMode);
|
|
|
|
/** Returns the gizmo type as text to use as the button display text */
|
|
static FText GetGizmoModeText();
|
|
|
|
/**
|
|
* Updates the gizmo coordinate type text if the coordinate system or gizmo type is changed
|
|
* @param InVRMode Currently active VRMode
|
|
*/
|
|
static void UpdateGizmoModeText(UVREditorMode* InVRMode);
|
|
|
|
/**
|
|
* Toggles a VR UI panel's state between visible and invisible
|
|
* @param InVRMode Currently active VRMode
|
|
* @param PanelToToggle UI panel to change the state of
|
|
*/
|
|
static void OnUIToggleButtonClicked(UVREditorMode* InVRMode, VREditorPanelID PanelToToggle);
|
|
|
|
/**
|
|
* Returns a VR UI panel's visibility - used for check boxes on the menu button
|
|
* @param InVRMode Currently active VRMode
|
|
* @param PanelToToggle UI panel to read the state of
|
|
*/
|
|
static ECheckBoxState GetUIToggledState(UVREditorMode* InVRMode, VREditorPanelID PanelToCheck);
|
|
|
|
/**
|
|
* Snaps currently selected Actors to the ground
|
|
* @param InVRMode Currently active VRMode
|
|
*/
|
|
static void OnSnapActorsToGroundClicked(UVREditorMode* InVRMode);
|
|
|
|
/**
|
|
* Simulates the user entering characters with a keyboard for data entry
|
|
* @param InChar String of characters to enter
|
|
*/
|
|
static void SimulateCharacterEntry(const FString InChar);
|
|
|
|
/** Send a backspace event. Slate editable text fields handle backspace as a TCHAR(8) character entry */
|
|
static void SimulateBackspace();
|
|
|
|
/**
|
|
* Simulates the user pressing a key down
|
|
* @param Key Key to press
|
|
* @param bRepeat Whether or not to repeat
|
|
*/
|
|
static void SimulateKeyDown( const FKey Key, const bool bRepeat );
|
|
|
|
/**
|
|
* Simulates the user releasing a key
|
|
* @param Key Key to release
|
|
*/
|
|
static void SimulateKeyUp( const FKey Key );
|
|
|
|
/** Create a new level sequence with an auto-generated name */
|
|
static void CreateNewSequence(UVREditorMode* InVRMode);
|
|
|
|
/** Close the sequencer instance */
|
|
static void CloseSequencer(class UMovieSceneSequence* OpenSequence);
|
|
|
|
/** Plays the current sequence at a specified rate */
|
|
static void PlaySequenceAtRate(UVREditorMode* InVRMode, float Rate);
|
|
|
|
/** Pauses sequence playback */
|
|
static void PauseSequencePlayback(UVREditorMode* InVRMode);
|
|
|
|
/** Plays at a rate of 1.0 from the local start of the sequence */
|
|
static void PlayFromBeginning(UVREditorMode* InVRMode);
|
|
|
|
/** Toggles looping the sequence */
|
|
static void ToggleLooping(UVREditorMode* InVRMode);
|
|
|
|
/** The type of looping for the current sequence*/
|
|
static FText GetSequencerLoopingText();
|
|
|
|
/** Updates the sequencer toggling display */
|
|
static void UpdateSequencerLoopingText(UVREditorMode * InVRMode);
|
|
|
|
/** Sets the current sequence's selection range start to the current time */
|
|
static void SetSelectionRangeStart(UVREditorMode* InVRMode);
|
|
|
|
/** Sets the current sequence's selection range end to the current time */
|
|
static void SetSelectionRangeEnd(UVREditorMode* InVRMode);
|
|
|
|
static void ToggleSequencerScrubbing(UVREditorMode* InVRMode, UVREditorInteractor* InController);
|
|
|
|
static ECheckBoxState GetSequencerScrubState(UVREditorInteractor* InController);
|
|
|
|
/** Toggles whether or not the world interaction method should align transformables to actors in the scene*/
|
|
static void ToggleAligningToActors(UVREditorMode* InVRMode);
|
|
|
|
/** True if the world interaction method is currently aligning transformables to actors in the scene*/
|
|
static ECheckBoxState AreAligningToActors(UVREditorMode* InVRMode);
|
|
|
|
/** Either selects or deselects alignment candidates */
|
|
static void ToggleSelectingCandidateActors(UVREditorMode* InVRMode);
|
|
|
|
/** Can only select candidate actors if actor alignment is active */
|
|
static bool CanSelectCandidateActors(UVREditorMode* InVRMode);
|
|
|
|
/** Dynamic label for the alignment candidate button */
|
|
static FText GetSelectingCandidateActorsText();
|
|
|
|
/** Updates the alignment candidate label based on the current aligning state */
|
|
static void UpdateSelectingCandidateActorsText(UVREditorMode* InVRMode);
|
|
|
|
/** Changes the editor mode to the given ID */
|
|
static void ChangeEditorModes(FEditorModeID InMode);
|
|
|
|
/** Checks whether the editor mode for the given ID is active*/
|
|
static ECheckBoxState EditorModeActive(FEditorModeID InMode);
|
|
|
|
/** Deselects everything currently selected */
|
|
static void DeselectAll();
|
|
|
|
/** Exit the VR mode */
|
|
static void ExitVRMode(UVREditorMode* InVRMode);
|
|
|
|
public:
|
|
|
|
static FText GizmoCoordinateSystemText;
|
|
|
|
static FText GizmoModeText;
|
|
|
|
static FText SelectingCandidateActorsText;
|
|
|
|
static FText SequencerLoopText;
|
|
|
|
};
|