#ifndef TRANSFORM_NODE_H
#define TRANSFORM_NODE_H

#include "transformable.h"
#include "raylib.h"
#include "transformable.h"
#include "scene_node_entity.h"
#include "utils/drop.h"

typedef struct TransformNode { ExtendsTransformable;
    SceneNode *node;
} TransformNode;

extern SceneNode *CreateTransformNode();
extern void DestroyTransformNode(TransformNode *self);

extern void TransformNodeEnterTree(TransformNode *self);
extern void TransformNodeExitTree(TransformNode *self);

extern Transform *TransformNodeGetTransform(TransformNode *self);
extern Transform *TransformNodeGetGlobalTransform(TransformNode *self);

DECL_REFLECT(TransformNode);
decl_typeclass_impl(Transformable, TransformNode);
decl_typeclass_impl(Drop, TransformNode);
decl_typeclass_impl(SceneNodeEntity, TransformNode);

#endif // !TRANSFORM_NODE_H
