Files
UnrealEngineUWP/Engine/Source/Editor/ViewportInteraction/ViewportInteractionInputProcessor.h
Mike Fricker f177c0a46b ViewportInteraction refactoring; miscellaneous VREditor improvements
- This merge contains various changes to ViewportInteraction and VR Editor to make things more extensible
       - Some changes are from Yannick's recent shelved refactoring work, that I've modified and improved upon
       - EditorWorldManager is gone and replaced by EditorWorldExtensionManager
       - EditorWorldExtensions are sort of like a more modern version of 'FEdMode', but still a work in progress
       - Cleaned up access to VREditorMode from other modules, forcing systems to go through EditorWorldExtensions

- Overhauled how transforming objects works with world interaction
       - Viewport interactors can now be used to move objects other than actors around (by implementing an UViewportTransformer, and a FViewportTransformable)
       - Undo/Redo now works better with inertial transformation!  The transaction only ends when objects finally come to rest.
       - Some initial support for 'grabber sphere' interactor methods has been implemented (not used yet)
       - Viewport interaction input events now receive the viewport being interacted through
       - Viewport interaction hover events no longer get a viewport client (because they must be designed to work any number of viewports.)

NOTE: This introduces UBT warnings about cyclic module dependencies.  We'll have to address this in a different changelist.

Other changes:
- The active Viewport Interaction 'gizmo mode' is now tied directly to the editor's normal gizmo mode.  They share the same state.
- New console variable 'VI.UseTransientActors' can be turned off to force editor actors to be created non-transient to make it easier to debug
- New console variable 'VI.DragTranslationVelocityStopEpsilon' sets the speed at which transformables will stop have inertia applied to them
- Fixed cyclic dependencies with ViewportInteraction and VREditor modules not being tagged properly for UBT
- Fixed some issues with transform gizmos not getting release events
- Various methods that should have been const were made const
- Eliminated duplicate implementation of SpawnTransientSceneActor and DestroyTransientActor; made it static
- UnrealEd no longer directly depends on VREditor and ViewportInteraction modules
- Engine: AActor::SetIsTemporarilyHiddenInEditor no longer does any work if the object's hidden state didn't change
- Slate: Input preprocessor (if bound) now also gets a chance at mouse button down and up events

#codereview yannick.lange,lauren.ridge
#rb various

[CL 3245240 by Mike Fricker in Dev-VREditor branch]
2017-01-03 14:38:17 -05:00

34 lines
1.2 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GenericPlatform/ICursor.h"
#include "Framework/Application/IInputProcessor.h"
class FSlateApplication;
class FViewportWorldInteractionManager;
struct FAnalogInputEvent;
struct FKeyEvent;
struct FPointerEvent;
class FViewportInteractionInputProcessor : public IInputProcessor
{
public:
FViewportInteractionInputProcessor ( FViewportWorldInteractionManager* InWorldInteractionManager );
virtual ~FViewportInteractionInputProcessor ();
// IInputProcess overrides
virtual void Tick( const float DeltaTime, FSlateApplication& SlateApp, TSharedRef<ICursor> Cursor ) override;
virtual bool HandleKeyDownEvent( FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent ) override;
virtual bool HandleKeyUpEvent( FSlateApplication& SlateApp, const FKeyEvent& InKeyEvent ) override;
virtual bool HandleAnalogInputEvent( FSlateApplication& SlateApp, const FAnalogInputEvent& InAnalogInputEvent ) override;
virtual bool HandleMouseMoveEvent( FSlateApplication& SlateApp, const FPointerEvent& MouseEvent ) override;
private:
/** The WorldInteraction that will receive the input */
FViewportWorldInteractionManager* WorldInteractionManager;
};