src/SceneBuilderFactories.h

Go to the documentation of this file.
00001 #ifndef SCENEBUILDERFACTORIES_H
00002 #define SCENEBUILDERFACTORIES_H
00003 
00004 
00005 #include <string>
00006 #include <sstream>
00007 #include <map>
00008 #include <vector>
00009 
00010 
00011 class Camera;
00012 class Light;
00013 class Texture;
00014 class Shader;
00015 class Object;
00016 class Scene;
00017 class Animator;
00018 
00019 
00024 class SceneBuilderFactory
00025 {
00026 public:
00029     SceneBuilderFactory()
00030     {
00031     }
00032 
00035     virtual ~SceneBuilderFactory()
00036     {
00037     }
00038 };
00039 
00040 
00045 class CameraFactory : public SceneBuilderFactory
00046 {
00047 public:
00050     CameraFactory()
00051     {
00052     }
00053 
00060     virtual Camera * create(const std::string & type, std::stringstream & line) = 0;
00061 };
00062 
00063 
00068 class PerspectiveCameraFactory : public CameraFactory
00069 {
00070 public:
00073     PerspectiveCameraFactory()
00074     {
00075     }
00076 
00083     virtual Camera * create(const std::string & type, std::stringstream & line);
00084 };
00085 
00086 
00091 class DepthOfFieldCameraFactory : public CameraFactory
00092 {
00093 public:
00096     DepthOfFieldCameraFactory()
00097     {
00098     }
00099 
00106     virtual Camera * create(const std::string & type, std::stringstream & line);
00107 };
00108 
00109 
00114 class LightFactory : public SceneBuilderFactory
00115 {
00116 public:
00119     LightFactory()
00120     {
00121     }
00122 
00129     virtual Light * create(const std::string & type, std::stringstream & line) = 0;
00130 };
00131 
00132 
00137 class PointLightFactory : public LightFactory
00138 {
00139 public:
00142     PointLightFactory()
00143     {
00144     }
00145 
00152     virtual Light * create(const std::string & type, std::stringstream & line);
00153 };
00154 
00155 
00160 class QuadAreaLightFactory : public LightFactory
00161 {
00162 public:
00165     QuadAreaLightFactory()
00166     {
00167     }
00168 
00175     virtual Light * create(const std::string & type, std::stringstream & line);
00176 };
00177 
00178 
00183 class TextureFactory : public SceneBuilderFactory
00184 {
00185 public:
00188     TextureFactory()
00189     {
00190     }
00191 
00198     virtual Texture * create(const std::string & type, std::stringstream & line) = 0;
00199 };
00200 
00201 
00206 class Texture2DFactory : public TextureFactory
00207 {
00208 public:
00211     Texture2DFactory()
00212     {
00213     }
00214 
00221     virtual Texture * create(const std::string & type, std::stringstream & line);
00222 };
00223 
00224 
00229 class ShaderFactory : public SceneBuilderFactory
00230 {
00231 public:
00234     ShaderFactory()
00235     {
00236     }
00237 
00245     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene) = 0;
00246 };
00247 
00248 
00253 class TexturedShaderFactory : public ShaderFactory
00254 {
00255 public:
00258     TexturedShaderFactory(std::map<std::string, Texture *> & textures)
00259         : mTextures(textures)
00260     {
00261     }
00262 
00263 protected:
00265     std::map<std::string, Texture *> &  mTextures;
00266 
00268     Scene *                             mScene;
00269 
00270 
00276     void readTextures(  std::stringstream &         line,
00277                         std::vector<Texture *> &    texes );
00284     void readBump(  std::stringstream &         line,
00285                     Texture *&                  bump,
00286                     float &                     bumppar );
00287 };
00288 
00289 
00294 class CloudShaderFactory : public TexturedShaderFactory
00295 {
00296 public:
00299     CloudShaderFactory(std::map<std::string, Texture *> & textures)
00300         : TexturedShaderFactory(textures)
00301     {
00302     }
00303 
00311     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00312 };
00313 
00314 
00319 class WoodShaderFactory : public TexturedShaderFactory
00320 {
00321 public:
00324     WoodShaderFactory(std::map<std::string, Texture *> & textures)
00325         : TexturedShaderFactory(textures)
00326     {
00327     }
00328 
00336     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00337 };
00338 
00339 
00344 class MirrorShaderFactory : public TexturedShaderFactory
00345 {
00346 public:
00349     MirrorShaderFactory(std::map<std::string, Texture *> & textures)
00350         : TexturedShaderFactory(textures)
00351     {
00352     }
00353 
00361     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00362 };
00363 
00364 
00369 class PhongShaderFactory : public TexturedShaderFactory
00370 {
00371 public:
00374     PhongShaderFactory(std::map<std::string, Texture *> & textures)
00375         : TexturedShaderFactory(textures)
00376     {
00377     }
00378 
00386     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00387 };
00388 
00389 
00394 class TransparentShaderFactory : public ShaderFactory
00395 {
00396 public:
00399     TransparentShaderFactory()
00400     {
00401     }
00402 
00410     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00411 };
00412 
00413 
00418 class CombineShaderFactory : public TexturedShaderFactory
00419 {
00420 public:
00423     CombineShaderFactory(   std::map<std::string, Shader *> &   shaders,
00424                             std::map<std::string, Texture *> &  textures )
00425         : TexturedShaderFactory(textures),
00426             mShaders(shaders)
00427     {
00428     }
00429 
00437     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00438 
00439 private:
00441     std::map<std::string, Shader *> & mShaders;
00442 };
00443 
00444 
00449 class RefractiveShaderFactory : public TexturedShaderFactory
00450 {
00451 public:
00454     RefractiveShaderFactory(std::map<std::string, Texture *> & textures)
00455         : TexturedShaderFactory(textures)
00456     {
00457     }
00458 
00466     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00467 };
00468 
00469 
00474 class CookTorranceShaderFactory : public TexturedShaderFactory
00475 {
00476 public:
00479     CookTorranceShaderFactory(std::map<std::string, Texture *> & textures)
00480         : TexturedShaderFactory(textures)
00481     {
00482     }
00483 
00491     virtual Shader * create(const std::string & type, std::stringstream & line, Scene * scene);
00492 };
00493 
00494 
00499 class ObjectFactory : public SceneBuilderFactory
00500 {
00501 public:
00504     ObjectFactory()
00505     {
00506     }
00507 
00514     virtual Object * create(const std::string & type, std::stringstream & line) = 0;
00515 };
00516 
00517 
00522 class ShadedObjectFactory : public ObjectFactory
00523 {
00524 public:
00527     ShadedObjectFactory(std::map<std::string, Shader *> & shaders)
00528         : ObjectFactory(),
00529             mShaders(shaders)
00530     {
00531     }
00532 
00533 protected:
00535     std::map<std::string, Shader *> &   mShaders;
00536 };
00537 
00538 
00543 class OBJObjectFactory : public ShadedObjectFactory
00544 {
00545 public:
00548     OBJObjectFactory(std::map<std::string, Shader *> & shaders)
00549         : ShadedObjectFactory(shaders)
00550     {
00551     }
00552 
00559     virtual Object * create(const std::string & type, std::stringstream & line);
00560 };
00561 
00562 
00567 class SphereObjectFactory : public ShadedObjectFactory
00568 {
00569 public:
00572     SphereObjectFactory(std::map<std::string, Shader *> & shaders)
00573         : ShadedObjectFactory(shaders)
00574     {
00575     }
00576 
00583     virtual Object * create(const std::string & type, std::stringstream & line);
00584 };
00585 
00586 
00591 class CopyObjectFactory : public ObjectFactory
00592 {
00593 public:
00596     CopyObjectFactory(std::map<std::string, Object *> & objects)
00597         : ObjectFactory(),
00598             mObjects(objects)
00599     {
00600     }
00601 
00608     virtual Object * create(const std::string & type, std::stringstream & line);
00609 
00610 protected:
00612     std::map<std::string, Object *> &   mObjects;
00613 };
00614 
00615 
00620 class Transformator : public SceneBuilderFactory
00621 {
00622 public:
00625     Transformator(std::map<std::string, Object *> & objects)
00626         : mObjects(objects)
00627     {
00628     }
00629 
00636     virtual bool transform(const std::string & type, std::stringstream & line) = 0;
00637 
00638 protected:
00640     std::map<std::string, Object *> &   mObjects;
00641 };
00642 
00643 
00648 class Translator : public Transformator
00649 {
00650 public:
00653     Translator(std::map<std::string, Object *> & objects)
00654         : Transformator(objects)
00655     {
00656     }
00657 
00664     virtual bool transform(const std::string & type, std::stringstream & line);
00665 };
00666 
00667 
00672 class Rotator : public Transformator
00673 {
00674 public:
00677     Rotator(std::map<std::string, Object *> & objects)
00678         : Transformator(objects)
00679     {
00680     }
00681 
00688     virtual bool transform(const std::string & type, std::stringstream & line);
00689 };
00690 
00691 
00696 class Scaler : public Transformator
00697 {
00698 public:
00701     Scaler(std::map<std::string, Object *> & objects)
00702         : Transformator(objects)
00703     {
00704     }
00705 
00712     virtual bool transform(const std::string & type, std::stringstream & line);
00713 };
00714 
00715 
00720 class AnimatorParser : public SceneBuilderFactory
00721 {
00722 public:
00725     AnimatorParser(std::map<std::string, Object *> & objects)
00726         : mObjects(objects)
00727     {
00728     }
00729 
00736     virtual Animator * create(const std::string & type, std::stringstream & line) = 0;
00737 
00738 protected:
00740     std::map<std::string, Object *> &   mObjects;
00741 };
00742 
00743 
00748 class PhysicsStepParser : public AnimatorParser
00749 {
00750 public:
00753     PhysicsStepParser(std::map<std::string, Object *> & objects)
00754         : AnimatorParser(objects)
00755     {
00756     }
00757 
00764     virtual Animator * create(const std::string & type, std::stringstream & line);
00765 };
00766 
00767 
00768 #endif
00769 

Generated on Fri Feb 1 00:01:42 2008 for Grayfall by  doxygen 1.5.1