#ifndef _RIVE_TRANSFORM_COMPONENT_HPP_
#define _RIVE_TRANSFORM_COMPONENT_HPP_
#include "rive/generated/transform_component_base.hpp"
#include "rive/math/mat2d.hpp"

namespace rive
{
	class Constraint;
	class WorldTransformComponent;
	class TransformComponent : public TransformComponentBase
	{
	private:
		Mat2D m_Transform;
		float m_RenderOpacity = 0.0f;
		WorldTransformComponent* m_ParentTransformComponent = nullptr;
		std::vector<Constraint*> m_Constraints;

	public:
#ifdef TESTING
		const std::vector<Constraint*>& constraints() const
		{
			return m_Constraints;
		}
#endif
		StatusCode onAddedClean(CoreContext* context) override;
		void buildDependencies() override;
		void update(ComponentDirt value) override;
		void updateTransform();
		void updateWorldTransform();
		void markTransformDirty();

		/// Opacity inherited by any child of this transform component. This'll
		/// later get overridden by effect layers.
		float childOpacity() override { return m_RenderOpacity; }
		float renderOpacity() const { return m_RenderOpacity; }

		const Mat2D& transform() const;

		/// Explicitly dangerous. Use transform/worldTransform when you don't
		/// need to transform things outside of their hierarchy.
		Mat2D& mutableTransform();

		virtual float x() const = 0;
		virtual float y() const = 0;

		void rotationChanged() override;
		void scaleXChanged() override;
		void scaleYChanged() override;

		void addConstraint(Constraint* constraint);
	};
} // namespace rive

#endif