From bd57f345ed9dbed1d81683e48199626de2ea9044 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Fri, 27 Jun 2025 10:18:39 -0700 Subject: Restructure project --- src/scene/object_impl.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/scene/object_impl.h (limited to 'src/scene/object_impl.h') diff --git a/src/scene/object_impl.h b/src/scene/object_impl.h new file mode 100644 index 0000000..88f8e31 --- /dev/null +++ b/src/scene/object_impl.h @@ -0,0 +1,26 @@ +#pragma once + +#include + +#include "types.h" + +#include + +typedef struct MeshLink { + mesh_idx mesh; + mesh_link_idx next; // Next MeshLink in the list. +} MeshLink; + +/// Scene object. +/// +/// A SceneObject does not own its Meshes, and they are instead shared for +/// re-use. The SceneObject consequently embeds a list of MeshLinks as opposed +/// to a list of Meshes. The MeshLinks define a list of Meshes, which can be +/// different for each SceneObject. Each SceneObject may then have a unique list +/// of Meshes, and the Meshes are re-used. +typedef struct SceneObject { + mesh_link_idx mesh_link; /// First MeshLink in the list. + skeleton_idx skeleton; /// 0 for static objects. + node_idx parent; /// Parent SceneNode. + aabb3 box; +} SceneObject; -- cgit v1.2.3