// sceneGraph.h

#ifndef SCENE_GRAPH_H
#define SCENE_GRAPH_H

#include <GL/glew.h>
#include "matrixMath.h"

typedef struct SceneNode {
    mat4 transformation; // Local transformation matrix
    mat4 worldTransformation; // World transformation matrix
    void (*render)(struct SceneNode*); // Function pointer to render this node
    struct SceneNode** children; // Array of pointers to child nodes
    int numChildren; // Number of child nodes
} SceneNode;

SceneNode* createSceneNode();
void addChild(SceneNode* parent, SceneNode* child);
void updateSceneNode(SceneNode* node, mat4* parentTransformation);
void renderSceneNode(SceneNode* node);
void freeSceneNode(SceneNode* node);

#endif