feat: created test object that renders a yellow box

This commit is contained in:
Sara 2024-09-13 00:01:43 +02:00
parent 67bd8017c5
commit 6a81ac4ece
2 changed files with 78 additions and 0 deletions

49
src/test_object.c Normal file
View file

@ -0,0 +1,49 @@
#include "test_object.h"
#include "core/render.h"
#include "raylib.h"
START_REFLECT(TestObject);
REFLECT_TYPECLASS(TestObject, Drop);
REFLECT_TYPECLASS(TestObject, SceneNodeEntity);
REFLECT_TYPECLASS(TestObject, Renderable);
END_REFLECT(TestObject);
impl_Drop_for(TestObject,
DestroyTestObject
)
impl_Renderable_for(TestObject,
TestObjectDraw
)
impl_SceneNodeEntity_for(TestObject,
TestObjectEnterTree,
TestObjectExitTree,
TestObjectTick
)
SceneNode *CreateTestObject() {
TestObject *self = new(TestObject);
return CreateSceneNode(TestObject_as_SceneNodeEntity(self));
}
void DestroyTestObject(TestObject *self) {
free(self);
}
void TestObjectEnterTree(TestObject *self) {
self->transform = TC_CAST(self->node->parent->entity, Transformable);
AddRenderable(TestObject_as_Renderable(self));
}
void TestObjectExitTree(TestObject *self) {
RemoveRenderable(TestObject_as_Renderable(self));
}
void TestObjectDraw(TestObject *self) {
Vector3 position = Vector3Add((Vector3){0.f, 1.f, 0.f}, self->transform.tc->get_global_transform(self->transform.data).translation);
DrawCube(position, 1.f, 2.f, 1.f, YELLOW);
}
void TestObjectTick(TestObject *self, double delta) {
}

29
src/test_object.h Normal file
View file

@ -0,0 +1,29 @@
#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"
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