Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/physics/src/ogreode/OgreOdeTriangleMeshDataManager.h @ 1919

Last change on this file since 1919 was 1919, checked in by rgrieder, 16 years ago

Added OgreODE to our source repository because already we really need the newest version. And there is no hope to find any packages under linux.
The files included should compile and link with Ogre 1.4/1.6 and ODE 0.9/0.10. I was only able to test Ogre 1.4 and ODE 0.9/.10 under msvc until now.

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1#ifndef __OgreOdeTriangleMeshDataManager_H__
2#define __OgreOdeTriangleMeshDataManager_H__
3
4#include <Ogre.h>
5
6#include "OgreOdePreReqs.h"
7#include "OgreOdeTriangleMeshData.h"
8
9using namespace std;
10
11namespace OgreOde
12{
13
14        /** Each time a new TriangleMeshData is created it is added to this mananger, in TriangleMeshData's
15                destructor it is removed from the manager
16        */
17        class TriangleMeshDataManager : public Ogre::Singleton<TriangleMeshDataManager>
18        {
19       
20        protected:
21
22                struct vectorLess {
23                        bool operator()(const Ogre::Vector3& a, const Ogre::Vector3& b) const
24                        {
25                                if (a.x < b.x) return true;
26                                if (a.x > b.x) return false;
27                                if (a.y < b.y) return true;
28                                if (a.y > b.y) return false;
29                                return a.z < b.z;
30                        }
31                };
32               
33        public:
34       
35                typedef map<Ogre::String, map<Ogre::Vector3, TriangleMeshDataPtr, vectorLess > > TriangleMeshDataPtrMap;
36
37                /**
38                */
39                TriangleMeshDataManager();
40
41                /**
42                */
43                virtual ~TriangleMeshDataManager();
44               
45                /**
46                */
47                static TriangleMeshDataManager* getSingletonPtr();
48               
49                /**
50                */
51                static TriangleMeshDataManager& getSingleton();
52               
53                /**
54                */
55                void addTriangleMeshData(const Ogre::String& name, TriangleMeshDataPtr shape, Ogre::Vector3 scale);
56               
57                /**
58                */
59                void removeTriangleMeshData(const Ogre::String& name, Ogre::Vector3 scale);
60               
61                /**
62                */
63                TriangleMeshDataPtr getTriangleMeshData(const Ogre::String& name, Ogre::Vector3 scale);
64               
65                /**
66                */
67                const TriangleMeshDataPtrMap getTriangleMeshDataPtrMap(){ return mTriangleMeshDataMap; }
68               
69        protected:
70
71                // mesh name, scale, TriangleMeshDataPtr
72                TriangleMeshDataPtrMap mTriangleMeshDataMap;
73
74        };
75}
76
77#endif //__OgreOdeTriangleMeshDataManager_H__
78
79
Note: See TracBrowser for help on using the repository browser.