#pragma once #include "stddef.h" #include "utils/typeclass_helpers.h" typedef struct SceneNodeEntity SceneNodeEntity; typedef struct SceneNode SceneNode; typedef struct Scene Scene; //! Instantiate a new scene node. extern SceneNode *CreateSceneNode(); //! Free a scene node. extern void DestroySceneNode(SceneNode *self); //! Get a child from a scene node. extern SceneNode *SceneNodeGetChild(SceneNode *self, size_t idx); //! Attach a child to a node extern void SceneNodeAddChild(SceneNode *self, SceneNode *child); //! Detach a child from a node, removing it from the scene extern void SceneNodeRemoveChild(SceneNode *self, SceneNode *child); //! INTERNAL FUNCTION, used to attach a scene node entity typeclass to an object. extern void Internal_SceneNodeAttachEntity(SceneNodeEntity object); //! Instantiate a new scene with a root node. extern Scene *CreateScene(SceneNode const *root); //! Destroy a node and it's scene tree. extern void DestroyScene(Scene *scene);