Files
UnrealEngineUWP/Engine/Plugins/Runtime/GeometryCache/Source/GeometryCacheTracks/Classes/MovieSceneGeometryCacheSection.h
anousack kitisa 1d22901981 * Moved AlembicImporter and GeometryCache plugins out of experimental.
#jira UETOOL-4055
#rb none
#preflight 61f17bd8be0f0e0a6234afb2

#ROBOMERGE-AUTHOR: anousack.kitisa
#ROBOMERGE-SOURCE: CL 18737179 in //UE5/Release-5.0/... via CL 18737385 via CL 18738249
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18738699 by anousack kitisa in ue5-main branch]
2022-01-26 13:05:26 -05:00

101 lines
2.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "MovieSceneSection.h"
#include "GeometryCacheComponent.h"
#include "GeometryCache.h"
#include "Channels/MovieSceneFloatChannel.h"
#include "UObject/SoftObjectPath.h"
#include "MovieSceneGeometryCacheSection.generated.h"
USTRUCT()
struct GEOMETRYCACHETRACKS_API FMovieSceneGeometryCacheParams
{
GENERATED_BODY()
FMovieSceneGeometryCacheParams();
/** Gets the animation sequence length, not modified by play rate */
float GetSequenceLength() const;
/** The animation this section plays */
UPROPERTY(EditAnywhere, Category = "GeometryCache", DisplayName = "Geometry Cache")
TObjectPtr<UGeometryCache> GeometryCacheAsset;
/** The offset for the first loop of the animation clip */
UPROPERTY(EditAnywhere, Category = "GeometryCache")
FFrameNumber FirstLoopStartFrameOffset;
/** The offset into the beginning of the animation clip */
UPROPERTY(EditAnywhere, Category = "GeometryCache")
FFrameNumber StartFrameOffset;
/** The offset into the end of the animation clip */
UPROPERTY(EditAnywhere, Category = "GeometryCache")
FFrameNumber EndFrameOffset;
/** The playback rate of the animation clip */
UPROPERTY(EditAnywhere, Category = "GeometryCache")
float PlayRate;
/** Reverse the playback of the animation clip */
UPROPERTY(EditAnywhere, Category = "Animation")
uint32 bReverse : 1;
UPROPERTY()
float StartOffset_DEPRECATED;
UPROPERTY()
float EndOffset_DEPRECATED;
UPROPERTY()
FSoftObjectPath GeometryCache_DEPRECATED;
};
/**
* Movie scene section that control geometry cache playback
*/
UCLASS(MinimalAPI)
class UMovieSceneGeometryCacheSection
: public UMovieSceneSection
{
GENERATED_UCLASS_BODY()
public:
UPROPERTY(EditAnywhere, Category = "Animation", meta = (ShowOnlyInnerProperties))
FMovieSceneGeometryCacheParams Params;
/** Get Frame Time as Animation Time*/
virtual float MapTimeToAnimation(float ComponentDuration, FFrameTime InPosition, FFrameRate InFrameRate) const;
protected:
//~ UMovieSceneSection interface
virtual TOptional<TRange<FFrameNumber> > GetAutoSizeRange() const override;
virtual void TrimSection(FQualifiedFrameTime TrimTime, bool bTrimLeft, bool bDeleteKeys) override;
virtual UMovieSceneSection* SplitSection(FQualifiedFrameTime SplitTime, bool bDeleteKeys) override;
virtual void GetSnapTimes(TArray<FFrameNumber>& OutSnapTimes, bool bGetSectionBorders) const override;
virtual TOptional<FFrameTime> GetOffsetTime() const override;
virtual void MigrateFrameTimes(FFrameRate SourceRate, FFrameRate DestinationRate) override;
/** ~UObject interface */
virtual void PostLoad() override;
virtual void Serialize(FArchive& Ar) override;
private:
//~ UObject interface
#if WITH_EDITOR
virtual void PreEditChange(FProperty* PropertyAboutToChange) override;
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
public:
float PreviousPlayRate;
#endif
};