You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Editor/TrackView/EditorTrackViewEventsBus.h

135 lines
4.2 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#include <AzCore/std/any.h>
namespace AzToolsFramework
{
/**
* This bus can be used to send commands to the track view.
*/
class EditorLayerTrackViewRequests
: public AZ::ComponentBus
{
public:
/**
* Gets the number of sequences.
*/
virtual int GetNumSequences() = 0;
/**
* Creates a new sequence of the given type(0 = Object Entity Sequence(Legacy), 1 = Component Entity Sequence(PREVIEW)) with the given name.
*/
virtual void NewSequence(const char* name, int sequenceType) = 0;
/**
* Plays the current sequence in TrackView.
*/
virtual void PlaySequence() = 0;
/**
* Stops any sequence currently playing in TrackView.
*/
virtual void StopSequence() = 0;
/**
* Sets the time of the sequence currently playing in TrackView.
*/
virtual void SetSequenceTime(float time) = 0;
/**
* Adds an entity node(s) from viewport selection to the current sequence.
*/
virtual void AddSelectedEntities() = 0;
/**
* Adds a layer node from the current layer to the current sequence.
*/
virtual void AddLayerNode() = 0;
/**
* Adds a track of the given parameter ID to the node.
*/
virtual void AddTrack(const char* paramName, const char* nodeName, const char* parentDirectorName) = 0;
/**
* Deletes a track of the given parameter ID (in the given index in case of a multi-track) from the node.
*/
virtual void DeleteTrack(const char* paramName, uint32 index, const char* nodeName, const char* parentDirectorName) = 0;
/**
* Gets number of keys of the specified track.
*/
virtual int GetNumTrackKeys(const char* paramName, int trackIndex, const char* nodeName, const char* parentDirectorName) = 0;
/**
* Activates/deactivates TrackView recording mode.
*/
virtual void SetRecording(bool bRecording) = 0;
/**
* Deletes the specified sequence.
*/
virtual void DeleteSequence(const char* name) = 0;
/**
* Sets the specified sequence as a current one in TrackView.
*/
virtual void SetCurrentSequence(const char* name) = 0;
/**
* Gets the name of a sequence by its index.
*/
virtual AZStd::string GetSequenceName(unsigned int index) = 0;
/**
* Gets the time range of a sequence as a pair.
*/
virtual TRange<float> GetSequenceTimeRange(const char* name) = 0;
/**
* Adds a new node with the given type & name to the current sequence.
*/
virtual void AddNode(const char* nodeTypeString, const char* nodeName) = 0;
/**
* Deletes the specified node from the current sequence.
*/
virtual void DeleteNode(AZStd::string_view nodeName, AZStd::string_view parentDirectorName) = 0;
/**
* Gets the number of nodes.
*/
virtual int GetNumNodes(AZStd::string_view parentDirectorName) = 0;
/**
* Gets the name of a sequence by its index.
*/
virtual AZStd::string GetNodeName(int index, AZStd::string_view parentDirectorName) = 0;
/**
* Gets the value of the specified key.
*/
virtual AZStd::any GetKeyValue(const char* paramName, int trackIndex, int keyIndex, const char* nodeName, const char* parentDirectorName) = 0;
/**
* Gets the interpolated value of a track at the specified time.
*/
virtual AZStd::any GetInterpolatedValue(const char* paramName, int trackIndex, float time, const char* nodeName, const char* parentDirectorName) = 0;
/**
* Sets the time range of a sequence.
*/
virtual void SetSequenceTimeRange(const char* name, float start, float end) = 0;
};
using EditorLayerTrackViewRequestBus = AZ::EBus<EditorLayerTrackViewRequests>;
}