Frapper  1.0a
DotSceneLoader.h
Go to the documentation of this file.
1 #ifndef DOT_SCENELOADER_H
2 #define DOT_SCENELOADER_H
3 
4 // Includes
5 #include <Ogre/OgreString.h>
6 #include <Ogre/OgreVector3.h>
7 #include <Ogre/OgreQuaternion.h>
8 #include <vector>
9 
10 // Forward declarations
11 class TiXmlElement;
12 
13 namespace SceneLoaderNode {
14 using namespace Ogre;
15 
16 // Forward declarations
17 class Ogre::SceneManager;
18 class Ogre::SceneNode;
19 
21 {
22 public:
23  String nodeName;
24  String propertyNm;
25  String valueName;
26  String typeName;
27 
28  nodeProperty(const String &node, const String &propertyName, const String &value, const String &type)
29  : nodeName(node), propertyNm(propertyName), valueName(value), typeName(type) {}
30 };
31 
33 {
34 public:
35  DotSceneLoader() : mSceneMgr(0) {}
36  virtual ~DotSceneLoader() {}
37 
38  void parseDotScene(const String &SceneName, const String &groupName, SceneManager *yourSceneMgr, SceneNode *pAttachNode = NULL, const String &sPrependNode = "");
39  String getProperty(const String &ndNm, const String &prop);
40 
41  std::vector<nodeProperty> nodeProperties;
42  std::vector<String> staticObjects;
43  std::vector<String> dynamicObjects;
44 
45  // Attribute names to parse and to store as key in UserAny
46  std::vector<String> userDataAttributes;
47 
48 protected:
49  void processScene(TiXmlElement *XMLRoot);
50 
51  void processNodes(TiXmlElement *XMLNode);
52  void processExternals(TiXmlElement *XMLNode);
53  void processEnvironment(TiXmlElement *XMLNode);
54  void processTerrain(TiXmlElement *XMLNode);
55  void processUserDataReference(TiXmlElement *XMLNode, SceneNode *pParent = 0);
56  void processUserDataReference(TiXmlElement *XMLNode, Entity *pEntity);
57  void processOctree(TiXmlElement *XMLNode);
58  void processLight(TiXmlElement *XMLNode, SceneNode *pParent = 0);
59  void processCamera(TiXmlElement *XMLNode, SceneNode *pParent = 0);
60 
61  void processNode(TiXmlElement *XMLNode, SceneNode *pParent = 0);
62  void processLookTarget(TiXmlElement *XMLNode, SceneNode *pParent);
63  void processTrackTarget(TiXmlElement *XMLNode, SceneNode *pParent);
64  void processEntity(TiXmlElement *XMLNode, SceneNode *pParent);
65  void processParticleSystem(TiXmlElement *XMLNode, SceneNode *pParent);
66  void processBillboardSet(TiXmlElement *XMLNode, SceneNode *pParent);
67  void processPlane(TiXmlElement *XMLNode, SceneNode *pParent);
68 
69  void processFog(TiXmlElement *XMLNode);
70  void processSkyBox(TiXmlElement *XMLNode);
71  void processSkyDome(TiXmlElement *XMLNode);
72  void processSkyPlane(TiXmlElement *XMLNode);
73  void processClipping(TiXmlElement *XMLNode);
74 
75  void processLightRange(TiXmlElement *XMLNode, Light *pLight);
76  void processLightAttenuation(TiXmlElement *XMLNode, Light *pLight);
77 
78  String getAttrib(TiXmlElement *XMLNode, const String &parameter, const String &defaultValue = "");
79  Real getAttribReal(TiXmlElement *XMLNode, const String &parameter, Real defaultValue = 0);
80  bool getAttribBool(TiXmlElement *XMLNode, const String &parameter, bool defaultValue = false);
81 
82  Vector3 parseVector3(TiXmlElement *XMLNode);
83  Quaternion parseQuaternion(TiXmlElement *XMLNode);
84  ColourValue parseColour(TiXmlElement *XMLNode);
85 
86  SceneManager *mSceneMgr;
88  String m_sGroupName;
90 };
91 
92 } // namespace SceneLoaderNode
93 
94 #endif // DOT_SCENELOADER_H