1 #ifndef _RIVE_TRANSFORM_COMPONENT_HPP_
2 #define _RIVE_TRANSFORM_COMPONENT_HPP_
3 #include "generated/transform_component_base.hpp"
4 #include "math/mat2d.hpp"
8 class TransformComponent : public TransformComponentBase
12 Mat2D m_WorldTransform;
13 float m_RenderOpacity = 0.0f;
14 TransformComponent* m_ParentTransformComponent = nullptr;
17 StatusCode onAddedClean(CoreContext* context) override;
18 void buildDependencies() override;
19 void update(ComponentDirt value) override;
20 void updateTransform();
21 void updateWorldTransform();
22 void markTransformDirty();
23 void markWorldTransformDirty();
25 /// Opacity inherited by any child of this transform component. This'll
26 /// later get overridden by effect layers.
27 virtual float childOpacity() { return m_RenderOpacity; }
28 float renderOpacity() const { return m_RenderOpacity; }
30 const Mat2D& transform() const;
31 const Mat2D& worldTransform() const;
33 virtual float x() const = 0;
34 virtual float y() const = 0;
36 void rotationChanged() override;
37 void scaleXChanged() override;
38 void scaleYChanged() override;
39 void opacityChanged() override;