#include <SceneBuilder.h>
Public Member Functions | |
SceneBuilder () | |
~SceneBuilder () | |
void | load (Scene &scene, Camera *&camera, const std::string &fileName, bool parseScene=true) |
Private Member Functions | |
std::string | nextOperator (std::istream &ifile) |
void | makeScene (Scene &scene) |
Camera * | makeCamera (const std::string &type) |
void | addLight (Scene &scene, const std::string &type) |
void | addTexture (Scene &scene, const std::string &type) |
void | addShader (Scene &scene, const std::string &type) |
void | addObject (Scene &scene, const std::string &type) |
void | doInit (const std::string &type) |
void | addPhysicsStep (Scene &scene, const std::string &type) |
void | clear () |
Private Attributes | |
std::string | mFileName |
Current file name. | |
std::stringstream | mLine |
Current line. | |
int | mLineNr |
Current line number. | |
std::map< std::string, Light * > | mLights |
Mapping name -> light. | |
std::map< std::string, Texture * > | mTextures |
Mapping name -> texture. | |
std::map< std::string, Shader * > | mShaders |
Mapping name -> shader. | |
std::map< std::string, Object * > | mObjects |
Mapping name -> object. | |
std::vector< CameraFactory * > | mCameraParsers |
Camera parsers. | |
std::vector< LightFactory * > | mLightParsers |
Light parsers. | |
std::vector< ShaderFactory * > | mShaderParsers |
Shader parsers. | |
std::vector< ObjectFactory * > | mObjectParsers |
Objects parsers. | |
std::vector< Transformator * > | mTransformators |
Transformations parsers. | |
std::vector< AnimatorParser * > | mPhysicsParsers |
Physics parsers. | |
Classes | |
class | SceneParseException |
Definition at line 30 of file SceneBuilder.h.
SceneBuilder::SceneBuilder | ( | ) |
Constructor
Definition at line 25 of file SceneBuilder.cpp.
References mCameraParsers, mLightParsers, mObjectParsers, mObjects, mPhysicsParsers, mShaderParsers, mShaders, mTextures, and mTransformators.
SceneBuilder::~SceneBuilder | ( | ) |
Destructor
Definition at line 70 of file SceneBuilder.cpp.
References mCameraParsers, mLightParsers, mObjectParsers, mPhysicsParsers, mShaderParsers, and mTransformators.
void SceneBuilder::load | ( | Scene & | scene, | |
Camera *& | camera, | |||
const std::string & | fileName, | |||
bool | parseScene = true | |||
) |
Load a .scene file and construct camera and scene accordingly. Throws std::invalid_argument if file name extension is not ".scene". Throws SceneParseException if an syntax error is found or file can not be opened
scene | Output parameter. Scene to set up | |
camera | Output parameter. New camera for the scene | |
fileName | File name of the .scene file | |
parseScene | If scene section shjould be parsed (used with includes) |
Definition at line 102 of file SceneBuilder.cpp.
References addLight(), addObject(), addPhysicsStep(), addShader(), addTexture(), clear(), doInit(), LOG, makeCamera(), makeScene(), mFileName, mLine, mLineNr, nextOperator(), and THROW_SPE.
Referenced by Renderer::buildScene().
std::string SceneBuilder::nextOperator | ( | std::istream & | ifile | ) | [private] |
Find next line with operator or section skipping empty lines and comments. Throws SceneParseException on parse errors
ifile | Input file stream |
Definition at line 283 of file SceneBuilder.cpp.
References mLine, and mLineNr.
Referenced by load().
void SceneBuilder::makeScene | ( | Scene & | scene | ) | [private] |
Initialize empty scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to init |
Definition at line 305 of file SceneBuilder.cpp.
References LOG, mLine, Scene::setBgColor(), Scene::setCastShadows(), and THROW_SPE.
Referenced by load().
Camera * SceneBuilder::makeCamera | ( | const std::string & | type | ) | [private] |
Create new camera. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
type | Camera type |
Definition at line 334 of file SceneBuilder.cpp.
References mCameraParsers, mLine, and THROW_SPE.
Referenced by load().
void SceneBuilder::addLight | ( | Scene & | scene, | |
const std::string & | type | |||
) | [private] |
Add new light to the internal name list and given scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to update | |
type | type |
Definition at line 361 of file SceneBuilder.cpp.
References Scene::addLight(), mLightParsers, mLights, mLine, and THROW_SPE.
Referenced by load().
void SceneBuilder::addTexture | ( | Scene & | scene, | |
const std::string & | type | |||
) | [private] |
Add new texture to the internal name list and given scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to update | |
type | Texture type |
Definition at line 404 of file SceneBuilder.cpp.
References Scene::addTexture(), Texture2DFactory::create(), mLine, mTextures, and THROW_SPE.
Referenced by load().
void SceneBuilder::addShader | ( | Scene & | scene, | |
const std::string & | type | |||
) | [private] |
Add new shader to the internal name list and given scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to update | |
type | Shader type |
Definition at line 444 of file SceneBuilder.cpp.
References Scene::addShader(), mLine, mShaderParsers, mShaders, and THROW_SPE.
Referenced by load().
void SceneBuilder::addObject | ( | Scene & | scene, | |
const std::string & | type | |||
) | [private] |
Add new object to the internal name list and given scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to update | |
type | Object type |
Definition at line 487 of file SceneBuilder.cpp.
References Scene::addObject(), LOG, mLine, mObjectParsers, mObjects, Object::setName(), and THROW_SPE.
Referenced by load().
void SceneBuilder::doInit | ( | const std::string & | type | ) | [private] |
Initialize some of the objects in internal list. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
type | Initialization type |
Definition at line 531 of file SceneBuilder.cpp.
References mLine, mTransformators, and THROW_SPE.
Referenced by load().
void SceneBuilder::addPhysicsStep | ( | Scene & | scene, | |
const std::string & | type | |||
) | [private] |
Add a new physics step to the scene. Throws SceneParseException on parse errors, mLine should contain needed parameters for parsing.
scene | The scene to update | |
type | Physics step type |
Definition at line 559 of file SceneBuilder.cpp.
References Scene::addAnimator(), mLine, mPhysicsParsers, and THROW_SPE.
Referenced by load().
void SceneBuilder::clear | ( | ) | [private] |
std::string SceneBuilder::mFileName [private] |
std::stringstream SceneBuilder::mLine [private] |
Current line.
Definition at line 110 of file SceneBuilder.h.
Referenced by addLight(), addObject(), addPhysicsStep(), addShader(), addTexture(), clear(), doInit(), load(), makeCamera(), makeScene(), and nextOperator().
int SceneBuilder::mLineNr [private] |
Current line number.
Definition at line 113 of file SceneBuilder.h.
Referenced by clear(), load(), and nextOperator().
std::map<std::string, Light *> SceneBuilder::mLights [private] |
Mapping name -> light.
Definition at line 116 of file SceneBuilder.h.
Referenced by addLight(), and clear().
std::map<std::string, Texture *> SceneBuilder::mTextures [private] |
Mapping name -> texture.
Definition at line 119 of file SceneBuilder.h.
Referenced by addTexture(), clear(), and SceneBuilder().
std::map<std::string, Shader *> SceneBuilder::mShaders [private] |
Mapping name -> shader.
Definition at line 122 of file SceneBuilder.h.
Referenced by addShader(), clear(), and SceneBuilder().
std::map<std::string, Object *> SceneBuilder::mObjects [private] |
Mapping name -> object.
Definition at line 125 of file SceneBuilder.h.
Referenced by addObject(), clear(), and SceneBuilder().
std::vector<CameraFactory *> SceneBuilder::mCameraParsers [private] |
Camera parsers.
Definition at line 128 of file SceneBuilder.h.
Referenced by makeCamera(), SceneBuilder(), and ~SceneBuilder().
std::vector<LightFactory *> SceneBuilder::mLightParsers [private] |
Light parsers.
Definition at line 131 of file SceneBuilder.h.
Referenced by addLight(), SceneBuilder(), and ~SceneBuilder().
std::vector<ShaderFactory *> SceneBuilder::mShaderParsers [private] |
Shader parsers.
Definition at line 134 of file SceneBuilder.h.
Referenced by addShader(), SceneBuilder(), and ~SceneBuilder().
std::vector<ObjectFactory *> SceneBuilder::mObjectParsers [private] |
Objects parsers.
Definition at line 137 of file SceneBuilder.h.
Referenced by addObject(), SceneBuilder(), and ~SceneBuilder().
std::vector<Transformator *> SceneBuilder::mTransformators [private] |
Transformations parsers.
Definition at line 140 of file SceneBuilder.h.
Referenced by doInit(), SceneBuilder(), and ~SceneBuilder().
std::vector<AnimatorParser * > SceneBuilder::mPhysicsParsers [private] |
Physics parsers.
Definition at line 143 of file SceneBuilder.h.
Referenced by addPhysicsStep(), SceneBuilder(), and ~SceneBuilder().