SceneBuilder Class Reference

#include <SceneBuilder.h>

List of all members.

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)
CameramakeCamera (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


Detailed Description

Loader for .scene file format. Constructs Camera and Scene with all Lights, Textures, Shaders and Objects and sets all needed properties.

Author:
Alex Busenius

Definition at line 30 of file SceneBuilder.h.


Constructor & Destructor Documentation

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.


Member Function Documentation

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

Parameters:
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)
Returns:
New Camera for the scene

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

Parameters:
ifile Input file stream
Returns:
next operator type

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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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.

Parameters:
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]

Definition at line 265 of file SceneBuilder.cpp.

References mFileName, mLights, mLine, mLineNr, mObjects, mShaders, and mTextures.

Referenced by load().


Member Data Documentation

std::string SceneBuilder::mFileName [private]

Current file name.

Definition at line 107 of file SceneBuilder.h.

Referenced by clear(), and load().

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().


The documentation for this class was generated from the following files:
Generated on Fri Feb 1 00:02:28 2008 for Grayfall by  doxygen 1.5.1