You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Sequencer - Allow MovieSceneByteProperty tracks to find UEnums nested in structs in order to properly show the UI for animating these enums.
[REVIEW] [at]ue-sequencer #jira UE-194570 [CL 27607421 by david bromberg in ue5-main branch]
This commit is contained in:
@@ -28,8 +28,7 @@ TSharedRef<ISequencerTrackEditor> FBytePropertyTrackEditor::CreateTrackEditor( T
|
||||
return MakeShareable(new FBytePropertyTrackEditor(OwningSequencer));
|
||||
}
|
||||
|
||||
|
||||
UEnum* GetEnumForByteTrack(TSharedPtr<ISequencer> Sequencer, const FGuid& OwnerObjectHandle, FName PropertyName, UMovieSceneByteTrack* ByteTrack)
|
||||
UEnum* GetEnumForByteTrack(TSharedPtr<ISequencer> Sequencer, const FGuid& OwnerObjectHandle, const FPropertyChangedParams& PropertyChangedParams, UMovieSceneByteTrack* ByteTrack)
|
||||
{
|
||||
TSet<UEnum*> PropertyEnums;
|
||||
|
||||
@@ -41,7 +40,7 @@ UEnum* GetEnumForByteTrack(TSharedPtr<ISequencer> Sequencer, const FGuid& OwnerO
|
||||
continue;
|
||||
}
|
||||
|
||||
FProperty* Property = RuntimeObject->GetClass()->FindPropertyByName(PropertyName);
|
||||
FProperty* Property = PropertyChangedParams.PropertyPath.GetLeafMostProperty().Property.Get();
|
||||
if (Property != nullptr)
|
||||
{
|
||||
UEnum* Enum = nullptr;
|
||||
@@ -77,23 +76,23 @@ UEnum* GetEnumForByteTrack(TSharedPtr<ISequencer> Sequencer, const FGuid& OwnerO
|
||||
}
|
||||
|
||||
|
||||
UMovieSceneTrack* FBytePropertyTrackEditor::AddTrack(UMovieScene* FocusedMovieScene, const FGuid& ObjectHandle, TSubclassOf<class UMovieSceneTrack> TrackClass, FName UniqueTypeName)
|
||||
{
|
||||
UMovieSceneTrack* NewTrack = FPropertyTrackEditor::AddTrack(FocusedMovieScene, ObjectHandle, TrackClass, UniqueTypeName);
|
||||
UMovieSceneByteTrack* ByteTrack = Cast<UMovieSceneByteTrack>(NewTrack);
|
||||
UEnum* TrackEnum = GetEnumForByteTrack(GetSequencer(), ObjectHandle, UniqueTypeName, ByteTrack);
|
||||
|
||||
if (TrackEnum != nullptr)
|
||||
{
|
||||
ByteTrack->SetEnum(TrackEnum);
|
||||
}
|
||||
|
||||
return NewTrack;
|
||||
}
|
||||
|
||||
|
||||
void FBytePropertyTrackEditor::GenerateKeysFromPropertyChanged( const FPropertyChangedParams& PropertyChangedParams, UMovieSceneSection* SectionToKey, FGeneratedTrackKeys& OutGeneratedKeys )
|
||||
{
|
||||
uint8 KeyedValue = PropertyChangedParams.GetPropertyValue<uint8>();
|
||||
OutGeneratedKeys.Add(FMovieSceneChannelValueSetter::Create<FMovieSceneByteChannel>(0, KeyedValue, true));
|
||||
}
|
||||
|
||||
void FBytePropertyTrackEditor::InitializeNewTrack(UMovieSceneByteTrack* NewTrack, FPropertyChangedParams PropertyChangedParams)
|
||||
{
|
||||
FPropertyTrackEditor<UMovieSceneByteTrack>::InitializeNewTrack(NewTrack, PropertyChangedParams);
|
||||
if (NewTrack)
|
||||
{
|
||||
UEnum* TrackEnum = GetEnumForByteTrack(GetSequencer(), NewTrack->FindObjectBindingGuid(), PropertyChangedParams, NewTrack);
|
||||
|
||||
if (TrackEnum != nullptr)
|
||||
{
|
||||
NewTrack->SetEnum(TrackEnum);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,15 +61,11 @@ public:
|
||||
*/
|
||||
static TSharedRef<ISequencerTrackEditor> CreateTrackEditor(TSharedRef<ISequencer> OwningSequencer);
|
||||
|
||||
public:
|
||||
|
||||
//~ ISequencerTrackEditor interface
|
||||
|
||||
virtual UMovieSceneTrack* AddTrack(UMovieScene* FocusedMovieScene, const FGuid& ObjectHandle, TSubclassOf<class UMovieSceneTrack> TrackClass, FName UniqueTypeName) override;
|
||||
|
||||
protected:
|
||||
|
||||
//~ FPropertyTrackEditor interface
|
||||
|
||||
virtual void GenerateKeysFromPropertyChanged(const FPropertyChangedParams& PropertyChangedParams, UMovieSceneSection* SectionToKey, FGeneratedTrackKeys& OutGeneratedKeys) override;
|
||||
virtual void InitializeNewTrack(UMovieSceneByteTrack* NewTrack, FPropertyChangedParams PropertyChangedParams) override;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user