Files
UnrealEngineUWP/Engine/Source/Editor/MovieSceneTools/Private/Channels/DoubleChannelKeyProxy.h
ludovic chabant c5bbb72e4f Sequencer: Large world coordinates support
- Add support for double precision channels, curves, evaluation, blending, and all other runtime infrastructure.
- Note that, as usual for now, double channels load and save float values.
- Editor side also gains some new track editors for these new types, with some workarounds to correctly recognize between float and double vectors.
- Transform tracks are now operating entirely in doubles.
- Float recomposing APIs for keying tracks in the editor are now using doubles, and have been renamed to "value recomposing".

#rb max.chen
#preflight 6123f6d9e7a3070001ff37ed

[CL 17278174 by ludovic chabant in ue5-main branch]
2021-08-23 18:25:30 -04:00

55 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "UObject/WeakObjectPtr.h"
#include "UObject/WeakObjectPtrTemplates.h"
#include "Channels/MovieSceneChannelHandle.h"
#include "CurveEditorKeyProxy.h"
#include "MovieSceneKeyProxy.h"
#include "Channels/MovieSceneDoubleChannel.h"
#include "DoubleChannelKeyProxy.generated.h"
class UMovieSceneSection;
UCLASS()
class UDoubleChannelKeyProxy : public UObject, public ICurveEditorKeyProxy, public IMovieSceneKeyProxy
{
public:
GENERATED_BODY()
/**
* Initialize this key proxy object by caching the underlying key object, and retrieving the time/value each tick
*/
void Initialize(FKeyHandle InKeyHandle, TMovieSceneChannelHandle<FMovieSceneDoubleChannel> InChannelHandle, TWeakObjectPtr<UMovieSceneSection> InWeakSection);
private:
/** Apply this class's properties to the underlying key */
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
/** Update this class's properties from the underlying key */
virtual void UpdateValuesFromRawData() override;
private:
/** User-facing time of the key, applied to the actual key on PostEditChange, and updated every tick */
UPROPERTY(EditAnywhere, Category="Key")
FFrameNumber Time;
/** User-facing value of the key, applied to the actual key on PostEditChange, and updated every tick */
UPROPERTY(EditAnywhere, Category="Key", meta=(ShowOnlyInnerProperties))
FMovieSceneDoubleValue Value;
private:
/** Cached key handle that this key proxy relates to */
FKeyHandle KeyHandle;
/** Cached channel in which the key resides */
TMovieSceneChannelHandle<FMovieSceneDoubleChannel> ChannelHandle;
/** Cached section in which the channel resides */
TWeakObjectPtr<UMovieSceneSection> WeakSection;
};