blob: 81cbaea2792df8cb5a35cdfbd55d9416c7823c22 [file] [log] [blame]
#ifndef _RIVE_STATE_INSTANCE_HPP_
#define _RIVE_STATE_INSTANCE_HPP_
#include <string>
#include <stddef.h>
#include "rive/rive_types.hpp"
#include "rive/span.hpp"
namespace rive {
class LayerState;
class SMIInput;
class ArtboardInstance;
/// Represents an instance of a state tracked by the State Machine.
class StateInstance {
private:
const LayerState* m_LayerState;
public:
StateInstance(const LayerState* layerState);
virtual ~StateInstance();
virtual void advance(float seconds, Span<SMIInput*> inputs) = 0;
virtual void apply(float mix) = 0;
/// Returns true when the State Machine needs to keep advancing this
/// state.
virtual bool keepGoing() const = 0;
const LayerState* state() const;
};
} // namespace rive
#endif