nuclear@0: #ifndef GOAT3D_IMPL_H_ nuclear@0: #define GOAT3D_IMPL_H_ nuclear@0: nuclear@0: #include nuclear@1: #include nuclear@0: #include "goat3d.h" nuclear@0: #include "mesh.h" nuclear@0: #include "light.h" nuclear@0: #include "camera.h" nuclear@0: #include "material.h" nuclear@12: #include "node.h" nuclear@0: nuclear@0: class Scene { nuclear@0: private: nuclear@0: std::string name; nuclear@0: Vector3 ambient; nuclear@0: nuclear@0: std::vector materials; nuclear@0: std::vector meshes; nuclear@0: std::vector lights; nuclear@0: std::vector cameras; nuclear@12: std::vector nodes; nuclear@0: nuclear@0: public: nuclear@0: Scene(); nuclear@0: ~Scene(); nuclear@0: nuclear@0: void clear(); nuclear@0: nuclear@0: void set_name(const char *name); nuclear@0: const char *get_name() const; nuclear@0: nuclear@0: void set_ambient(const Vector3 &amb); nuclear@0: const Vector3 &get_ambient() const; nuclear@0: nuclear@0: void add_material(Material *mat); nuclear@0: Material *get_material(int idx) const; nuclear@0: Material *get_material(const char *name) const; nuclear@9: int get_material_count() const; nuclear@0: nuclear@0: void add_mesh(Mesh *mesh); nuclear@0: Mesh *get_mesh(int idx) const; nuclear@0: Mesh *get_mesh(const char *name) const; nuclear@9: int get_mesh_count() const; nuclear@0: nuclear@0: void add_light(Light *light); nuclear@0: Light *get_light(int idx) const; nuclear@0: Light *get_light(const char *name) const; nuclear@9: int get_light_count() const; nuclear@0: nuclear@0: void add_camera(Camera *cam); nuclear@0: Camera *get_camera(int idx) const; nuclear@0: Camera *get_camera(const char *name) const; nuclear@9: int get_camera_count() const; nuclear@0: nuclear@0: void add_node(Node *node); nuclear@0: Node *get_node(int idx) const; nuclear@0: Node *get_node(const char *name) const; nuclear@9: int get_node_count() const; nuclear@0: nuclear@0: bool load(goat3d_io *io); nuclear@0: bool save(goat3d_io *io) const; nuclear@14: nuclear@14: bool loadxml(goat3d_io *io); nuclear@14: bool savexml(goat3d_io *io) const; nuclear@0: }; nuclear@0: nuclear@14: void io_fprintf(goat3d_io *io, const char *fmt, ...); nuclear@14: void io_vfprintf(goat3d_io *io, const char *fmt, va_list ap); nuclear@0: nuclear@0: #endif // GOAT3D_IMPL_H_