42 lines
926 B
C
42 lines
926 B
C
#pragma once
|
|
|
|
#include "scene_graph.h"
|
|
#include "../Rendering/renderer.h"
|
|
#include "../Rendering/mesh.h"
|
|
#include "../Rendering/material.h"
|
|
#include "../Rendering/shader.h"
|
|
#include "../Rendering/texture.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
MESH_NONE = 0,
|
|
MESH_CUBE = 1,
|
|
MESH_SPHERE = 2,
|
|
MESH_PLANE = 3,
|
|
MESH_OBJ = 4
|
|
} MeshType;
|
|
|
|
typedef struct {
|
|
MeshType type;
|
|
Mesh* mesh;
|
|
Material* material;
|
|
char path[256];
|
|
} MeshRenderer;
|
|
|
|
void scene_node_set_mesh_renderer(SceneNode* node, MeshRenderer* renderer);
|
|
MeshRenderer* scene_node_get_mesh_renderer(SceneNode* node);
|
|
|
|
void scene_render_node(SceneNode* node, Renderer* r);
|
|
void scene_render(Scene* scene, Renderer* r);
|
|
|
|
MeshRenderer* mesh_renderer_create(MeshType type, Mesh* mesh, Material* material);
|
|
void mesh_renderer_destroy(MeshRenderer* mr);
|
|
void scene_destroy_renderers(Scene* scene);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|