#ifndef TEST_OBJECT_H
#define TEST_OBJECT_H

#include "core/scene.h"
#include "core/scene_node_entity.h"
#include "core/transformable.h"
#include "core/renderable.h"
#include "utils/drop.h"
#include "utils/mirror.h"

// Test object created to generally test game features
typedef struct TestObject {
    SceneNode *node;
    Transformable transform;
} TestObject;

SceneNode *CreateTestObject();
void DestroyTestObject(TestObject *self);

void TestObjectEnterTree(TestObject *self);
void TestObjectExitTree(TestObject *self);
void TestObjectDraw(TestObject *self);
void TestObjectTick(TestObject *self, double delta);

DECL_REFLECT(TestObject);
decl_typeclass_impl(SceneNodeEntity, TestObject);
decl_typeclass_impl(Drop, TestObject);
decl_typeclass_impl(Renderable, TestObject);

#endif // !TEST_OBJECT_H
