feat: test object now rotates the surroundings
This commit is contained in:
parent
09e52d007a
commit
8f3ad30c4a
|
@ -10,12 +10,14 @@
|
||||||
Scene *CreateInitialScene() {
|
Scene *CreateInitialScene() {
|
||||||
SceneNode *root = CreateTransformNode();
|
SceneNode *root = CreateTransformNode();
|
||||||
SceneNode *camera_parent_parent = CreateTransformNode();
|
SceneNode *camera_parent_parent = CreateTransformNode();
|
||||||
|
// create parent of camera parent to test transform hierarchy
|
||||||
Transformable transformable = TC_CAST(camera_parent_parent->entity, Transformable);
|
Transformable transformable = TC_CAST(camera_parent_parent->entity, Transformable);
|
||||||
Transform transform = transformable.tc->get_transform(transformable.data);
|
Transform transform = transformable.tc->get_transform(transformable.data);
|
||||||
transform.translation = (Vector3){10.f, 0.f, 0.f};
|
transform.translation = (Vector3){10.f, 0.f, 0.f};
|
||||||
transform.rotation = QuaternionFromEuler(0.f, -10.f * DEG2RAD, 0.f);
|
transform.rotation = QuaternionFromEuler(0.f, -10.f * DEG2RAD, 0.f);
|
||||||
transformable.tc->set_transform(transformable.data, transform);
|
transformable.tc->set_transform(transformable.data, transform);
|
||||||
// create camera with a transform parent
|
// create camera with a transform parent
|
||||||
|
SceneNodeAddChild(root, camera_parent_parent);
|
||||||
SceneNode *camera_parent = CreateTransformNode();
|
SceneNode *camera_parent = CreateTransformNode();
|
||||||
// set camera parent location
|
// set camera parent location
|
||||||
transformable = TC_CAST(camera_parent->entity, Transformable);
|
transformable = TC_CAST(camera_parent->entity, Transformable);
|
||||||
|
@ -23,10 +25,9 @@ Scene *CreateInitialScene() {
|
||||||
transform.translation = (Vector3){0.f, 10.f, -10.f};
|
transform.translation = (Vector3){0.f, 10.f, -10.f};
|
||||||
transform.rotation = QuaternionFromEuler(45.f * DEG2RAD, 0.f, 0.f);
|
transform.rotation = QuaternionFromEuler(45.f * DEG2RAD, 0.f, 0.f);
|
||||||
transformable.tc->set_transform(transformable.data, transform);
|
transformable.tc->set_transform(transformable.data, transform);
|
||||||
SceneNodeAddChild(root, camera_parent_parent);
|
|
||||||
SceneNodeAddChild(camera_parent_parent, camera_parent);
|
SceneNodeAddChild(camera_parent_parent, camera_parent);
|
||||||
SceneNodeAddChild(camera_parent, CreateCameraNode());
|
SceneNodeAddChild(camera_parent, CreateCameraNode());
|
||||||
SceneNodeAddChild(root, CreateTestObject());
|
SceneNodeAddChild(camera_parent, CreateTestObject());
|
||||||
return CreateScene(root);
|
return CreateScene(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,9 +41,10 @@ void TestObjectExitTree(TestObject *self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestObjectDraw(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) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "utils/drop.h"
|
#include "utils/drop.h"
|
||||||
#include "utils/mirror.h"
|
#include "utils/mirror.h"
|
||||||
|
|
||||||
|
// Test object created to generally test game features
|
||||||
typedef struct TestObject {
|
typedef struct TestObject {
|
||||||
SceneNode *node;
|
SceneNode *node;
|
||||||
Transformable transform;
|
Transformable transform;
|
||||||
|
|
Loading…
Reference in a new issue