From 8f3ad30c4af7226081b9ec51224cbc2c6ede3ad8 Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 13 Sep 2024 11:28:51 +0200 Subject: [PATCH] feat: test object now rotates the surroundings --- src/main.c | 5 +++-- src/test_object.c | 5 +++-- src/test_object.h | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index d3d0293..153bdfa 100644 --- a/src/main.c +++ b/src/main.c @@ -10,12 +10,14 @@ Scene *CreateInitialScene() { SceneNode *root = CreateTransformNode(); SceneNode *camera_parent_parent = CreateTransformNode(); + // create parent of camera parent to test transform hierarchy Transformable transformable = TC_CAST(camera_parent_parent->entity, Transformable); Transform transform = transformable.tc->get_transform(transformable.data); transform.translation = (Vector3){10.f, 0.f, 0.f}; transform.rotation = QuaternionFromEuler(0.f, -10.f * DEG2RAD, 0.f); transformable.tc->set_transform(transformable.data, transform); // create camera with a transform parent + SceneNodeAddChild(root, camera_parent_parent); SceneNode *camera_parent = CreateTransformNode(); // set camera parent location transformable = TC_CAST(camera_parent->entity, Transformable); @@ -23,10 +25,9 @@ Scene *CreateInitialScene() { transform.translation = (Vector3){0.f, 10.f, -10.f}; transform.rotation = QuaternionFromEuler(45.f * DEG2RAD, 0.f, 0.f); transformable.tc->set_transform(transformable.data, transform); - SceneNodeAddChild(root, camera_parent_parent); SceneNodeAddChild(camera_parent_parent, camera_parent); SceneNodeAddChild(camera_parent, CreateCameraNode()); - SceneNodeAddChild(root, CreateTestObject()); + SceneNodeAddChild(camera_parent, CreateTestObject()); return CreateScene(root); } diff --git a/src/test_object.c b/src/test_object.c index a57be71..f744fc0 100644 --- a/src/test_object.c +++ b/src/test_object.c @@ -41,9 +41,10 @@ void TestObjectExitTree(TestObject *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) { + Transform local_transform = self->transform.tc->get_transform(self->transform.data); + local_transform.rotation = QuaternionMultiply(QuaternionFromEuler(0.f, 0.01f, 0.f), local_transform.rotation); + self->transform.tc->set_transform(self->transform.data, local_transform); } diff --git a/src/test_object.h b/src/test_object.h index 2e42962..0b47274 100644 --- a/src/test_object.h +++ b/src/test_object.h @@ -8,6 +8,7 @@ #include "utils/drop.h" #include "utils/mirror.h" +// Test object created to generally test game features typedef struct TestObject { SceneNode *node; Transformable transform;