#include "raylib.h" #include "test_object.h" #include "core/camera_node.h" #include "core/engine_global.h" #include "core/engine_loop.h" #include "core/scene.h" #include "core/transform_node.h" #include "core/mesh_render_entity.h" #include "utils/debug.h" 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); transform = transformable.tc->get_transform(transformable.data); 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(camera_parent_parent, camera_parent); SceneNodeAddChild(camera_parent, CreateCameraNode()); SceneNodeAddChild(camera_parent, CreateTestObject()); SceneNodeAddChild(root, CreateMeshRenderEntity("spacefighter.glb")); return CreateScene(root); } int main() { InitializeEngine(); RunGame(CreateInitialScene()); UNREACHABLE("End of main function reached. This is an error, call ShutDown() when exiting instead."); }