blob: b7818900a057eff960e6b21039a271e5cb6c0512 [file] [log] [blame]
#ifndef _RIVE_JOYSTICK_HPP_
#define _RIVE_JOYSTICK_HPP_
#include "rive/generated/joystick_base.hpp"
#include "rive/joystick_flags.hpp"
#include "rive/math/mat2d.hpp"
#include <stdio.h>
namespace rive
{
class Artboard;
class LinearAnimation;
class TransformComponent;
class Joystick : public JoystickBase
{
public:
void update(ComponentDirt value) override;
void apply(Artboard* artboard) const;
StatusCode onAddedClean(CoreContext* context) override;
StatusCode onAddedDirty(CoreContext* context) override;
bool isJoystickFlagged(JoystickFlags flag) const
{
return ((JoystickFlags)joystickFlags()) & flag;
}
bool canApplyBeforeUpdate() const { return m_handleSource == nullptr; }
protected:
void buildDependencies() override;
private:
Mat2D m_worldTransform;
Mat2D m_inverseWorldTransform;
LinearAnimation* m_xAnimation = nullptr;
LinearAnimation* m_yAnimation = nullptr;
TransformComponent* m_handleSource = nullptr;
};
} // namespace rive
#endif