nuclear@16: #ifndef SCENE_H_ nuclear@16: #define SCENE_H_ nuclear@16: nuclear@16: #include "vmath.h" nuclear@16: #include "texture.h" nuclear@16: nuclear@16: nuclear@16: struct material { nuclear@16: char *name; nuclear@17: int kd[3]; nuclear@16: int kd_base; nuclear@16: struct texture *tex; nuclear@16: nuclear@16: struct material *next; nuclear@16: }; nuclear@16: nuclear@16: struct mesh { nuclear@16: int nface; nuclear@16: vec3_t *vert; nuclear@16: vec3_t *norm; nuclear@16: vec2_t *texcoord; nuclear@16: struct material *mtl; nuclear@16: nuclear@16: struct mesh *next; nuclear@16: }; nuclear@16: nuclear@16: struct scene { nuclear@17: int ready; nuclear@16: struct material *matlist; nuclear@16: struct mesh *meshlist; nuclear@16: }; nuclear@16: nuclear@16: #ifdef __cplusplus nuclear@16: extern "C" { nuclear@16: #endif nuclear@16: nuclear@16: /* --- scene --- */ nuclear@16: int scn_init(struct scene *scn); nuclear@16: void scn_destroy(struct scene *scn); nuclear@16: nuclear@16: void scn_add_mesh(struct scene *scn, struct mesh *m); nuclear@16: void scn_add_material(struct scene *scn, struct material *m); nuclear@16: nuclear@16: struct material *scn_find_material(struct scene *scn, const char *name); nuclear@16: nuclear@16: int scn_load(struct scene *scn, const char *fname); nuclear@16: nuclear@16: void scn_render(struct scene *scn); nuclear@16: nuclear@16: /* --- material --- */ nuclear@16: int mtl_init(struct material *mtl); nuclear@16: void mtl_destroy(struct material *mtl); nuclear@16: nuclear@16: int mtl_set_name(struct material *mtl, const char *name); nuclear@16: nuclear@16: /* --- mesh --- */ nuclear@16: int mesh_init(struct mesh *m); nuclear@16: void mesh_destroy(struct mesh *m); nuclear@16: nuclear@16: void mesh_add_vertex(struct mesh *m, vec3_t v); nuclear@16: void mesh_add_normal(struct mesh *m, vec3_t n); nuclear@16: void mesh_add_texcoord(struct mesh *m, vec2_t tc); nuclear@16: nuclear@16: void mesh_draw(struct mesh *m); nuclear@16: nuclear@16: #ifdef __cplusplus nuclear@16: } nuclear@16: #endif nuclear@16: nuclear@16: #endif /* SCENE_H_ */