54 lines
1.6 KiB
C
54 lines
1.6 KiB
C
#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) {
|
|
}
|
|
|
|
void TestObjectTick(TestObject *self, double delta) {
|
|
Transform global_transform = self->transform.tc->get_global_transform(self->transform.data);
|
|
Matrix global_matrix = TransformGetMatrix(global_transform);
|
|
global_transform.rotation = QuaternionMultiply(global_transform.rotation, QuaternionFromAxisAngle(MATRIX_UP(global_matrix), 0.01f));
|
|
global_matrix = TransformGetMatrix(global_transform);
|
|
global_transform.translation = Vector3Add(global_transform.translation, Vector3Scale(MATRIX_FORWARD(global_matrix), 0.1f));
|
|
self->transform.tc->set_global_transform(self->transform.data, global_transform);
|
|
}
|