Jam-Teacher/Plugins/FMODStudio/Source/FMODStudioEditor/Private/Sequencer/FMODEventControlTrackEditor.h

60 lines
2.1 KiB
C
Raw Normal View History

2020-08-01 11:48:17 +00:00
// Copyright (c), Firelight Technologies Pty, Ltd. 2012-2020.
#pragma once
#include "CoreMinimal.h"
#include "Misc/Guid.h"
#include "Templates/SubclassOf.h"
#include "Curves/KeyHandle.h"
#include "ISequencer.h"
#include "MovieSceneTrack.h"
#include "ISequencerSection.h"
#include "ISequencerTrackEditor.h"
#include "MovieSceneTrackEditor.h"
class FMenuBuilder;
class FSequencerSectionPainter;
/** FMOD Event control track */
class FFMODEventControlTrackEditor : public FMovieSceneTrackEditor
{
public:
FFMODEventControlTrackEditor(TSharedRef<ISequencer> InSequencer);
static TSharedRef<ISequencerTrackEditor> CreateTrackEditor(TSharedRef<ISequencer> OwningSequencer);
void AddControlKey(const FGuid ObjectGuid);
// Begin ISequencerTrackEditor interface
virtual void BuildObjectBindingTrackMenu(FMenuBuilder &MenuBuilder, const TArray<FGuid> &ObjectBindings, const UClass *ObjectClass) override;
virtual TSharedRef<ISequencerSection> MakeSectionInterface(
UMovieSceneSection &SectionObject, UMovieSceneTrack &Track, FGuid ObjectBinding) override;
virtual bool SupportsType(TSubclassOf<UMovieSceneTrack> Type) const override;
// End ISequencerTrackEditor interface
private:
/** Delegate for AnimatablePropertyChanged in AddKey. */
virtual FKeyPropertyResult AddKeyInternal(FFrameNumber KeyTime, UObject *Object);
};
/** Class for event control sections. */
class FFMODEventControlSection : public ISequencerSection, public TSharedFromThis<FFMODEventControlSection>
{
public:
FFMODEventControlSection(UMovieSceneSection &InSection, TSharedRef<ISequencer> InOwningSequencer);
// Begin ISequencerSection interface
virtual UMovieSceneSection *GetSectionObject() override;
virtual float GetSectionHeight() const override;
virtual int32 OnPaintSection(FSequencerSectionPainter &InPainter) const override;
virtual bool SectionIsResizable() const override { return false; }
// End ISequencerSection interface
private:
/** The section we are visualizing. */
UMovieSceneSection &Section;
/** The sequencer that owns this section */
TWeakPtr<ISequencer> OwningSequencerPtr;
};