Revision: 798
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=798&view=rev
Author: andy_miller
Date: 2008-11-17 12:00:04 +0000 (Mon, 17 Nov 2008)
Log Message:
-----------
Patch update
Modified Paths:
--------------
trunk/python-ogre/patch/ogreode.patch
Modified: trunk/python-ogre/patch/ogreode.patch
===================================================================
--- trunk/python-ogre/patch/ogreode.patch 2008-11-17 11:44:30 UTC (rev 797)
+++ trunk/python-ogre/patch/ogreode.patch 2008-11-17 12:00:04 UTC (rev 798)
@@ -1,126 +1,245 @@
-Index: include/OgreOdePreReqs.h
+Index: include/OgreOdeEntityInformer.h
===================================================================
---- include/OgreOdePreReqs.h (revision 2492)
-+++ include/OgreOdePreReqs.h (working copy)
-@@ -2,9 +2,9 @@
- #define _OGREODEPREREQS_H_
+--- include/OgreOdeEntityInformer.h (revision 2510)
++++ include/OgreOdeEntityInformer.h (working copy)
+@@ -36,12 +36,12 @@
+ const TriangleIndex* getIndices();
+ unsigned int getIndexCount();
- #include "Ogre.h"
--#include "OgreNoMemoryMacros.h"
-+//#include "OgreNoMemoryMacros.h"
- #include "ode/ode.h"
--#include "OgreMemoryMacros.h"
-+//#include "OgreMemoryMacros.h"
++ bool getBoneVertices(unsigned char bone,unsigned int &vertex_count, Ogre::Vector3* &vertices);
+ protected:
+ void addVertexData(const Ogre::VertexData *vertex_data,
+ const Ogre::VertexData *blended_data = 0,
+ const Ogre::Mesh::IndexMap *indexMap = 0);
+ void addIndexData(Ogre::IndexData *data, const unsigned int offset = 0);
+- bool getBoneVertices(unsigned char bone,unsigned int &vertex_count, Ogre::Vector3* &vertices);
-
- namespace OgreOde
-Index: src/OgreOdeGeometry.cpp
+ Ogre::Entity* _entity;
+ Ogre::SceneNode* _node;
+Index: src/OgreOdeTriangleMeshDataManager.cpp
===================================================================
---- src/OgreOdeGeometry.cpp (revision 2492)
-+++ src/OgreOdeGeometry.cpp (working copy)
-@@ -900,7 +900,7 @@
+--- src/OgreOdeTriangleMeshDataManager.cpp (revision 2510)
++++ src/OgreOdeTriangleMeshDataManager.cpp (working copy)
+@@ -1,106 +1,106 @@
+-#include "OgreOdePrecompiledHeaders.h"
+-
+-#include "OgreOdeTriangleMeshDataManager.h"
+-
++#include "OgreOdePrecompiledHeaders.h"
- _data = dGeomTriMeshDataCreate();
-
-- dGeomTriMeshDataBuildSimple(_data,(const dReal*)_vertices, (int)vertex_count, _indices, (int) index_count);
-+ dGeomTriMeshDataBuildSimple(_data,(const dReal*)_vertices, (int)vertex_count, /*(const int *)*/_indices, (int) index_count);
-
- _geom = dCreateTriMesh(getSpaceID(space),_data,0,0,0);
- registerGeometry();
-Index: src/OgreOdeEntityInformer.cpp
++#include "OgreOdeTriangleMeshDataManager.h"
++
++
+ using namespace Ogre;
+-using namespace OgreOde;
+-
+-template<> TriangleMeshDataManager *Ogre::Singleton<TriangleMeshDataManager>::ms_Singleton = 0;
+-
+-namespace OgreOde
+-{
+- //-----------------------------------------------------------------------
+- TriangleMeshDataManager::TriangleMeshDataManager()
+- {
+- }
+-
+- //-----------------------------------------------------------------------
+- TriangleMeshDataManager::~TriangleMeshDataManager()
+- {
+- //mTriangleMeshDataMap.clear();
+- }
+-
+- //-----------------------------------------------------------------------
+- TriangleMeshDataManager *TriangleMeshDataManager::getSingletonPtr ()
+- {
+- return ms_Singleton;
+- }
+-
+- //-----------------------------------------------------------------------
+- TriangleMeshDataManager &TriangleMeshDataManager::getSingleton ()
+- {
+- assert (ms_Singleton);
+- return (*ms_Singleton);
+- }
+-
+-
+- //-----------------------------------------------------------------------
+- void TriangleMeshDataManager::addTriangleMeshData(const String& name, TriangleMeshDataPtr shape, Vector3 scale)
+- {
+-
+- mTriangleMeshDataMap[name][scale] = shape;
+-
+- // reduce count so when Ode::Geometry changes its dataPtr or is deleted we arn't
+- // left with this one on a referance count of 1
+- unsigned int* count = shape.useCountPointer();
+- (*count)--;
+-
+- }
+-
+-
+- //-----------------------------------------------------------------------
+- void TriangleMeshDataManager::removeTriangleMeshData(const String& name, Vector3 scale)
+- {
+-
+- TriangleMeshDataPtrMap::iterator itr = mTriangleMeshDataMap.find(name);
+- if(itr != mTriangleMeshDataMap.end())
+- {
+-
+- std::map<Ogre::Vector3, OgreOde::TriangleMeshDataPtr,OgreOde::TriangleMeshDataManager::vectorLess>::iterator itr2;
+-
+- itr2 = itr->second.find(scale);
+-
+- if ( itr2 != itr->second.end() )
+- {
+- //printf ("no TriangleMeshData for scale so erase it\n");
+- itr->second.erase(itr2);
+- itr2->second.setNull();
+- }
+-
+- if (itr->second.size() == 0)
+- {
+- //printf ("have no TriangleMeshData for this mesh so erase it from map\n");
+- mTriangleMeshDataMap.erase(itr);
+- }
+- }
+-
+- }
+-
+-
+- /** looks for mesh name then size or returns a NULL TriangleMeshDataPtr
+- */
+- //-----------------------------------------------------------------------
+- TriangleMeshDataPtr TriangleMeshDataManager::getTriangleMeshData(const String& name, Vector3 scale)
+- {
+-
+- TriangleMeshDataPtrMap::iterator itr = mTriangleMeshDataMap.find(name);
+- if(itr != mTriangleMeshDataMap.end())
+- {
+- std::map<Ogre::Vector3, OgreOde::TriangleMeshDataPtr,OgreOde::TriangleMeshDataManager::vectorLess>::iterator itr2;
+-
+- itr2 = itr->second.find(scale);
+-
+- if ( itr2 != itr->second.end() )
+- {
+- return itr2->second;
+- }
+- }
+-
+- //printf ("TriangleMeshDataManager::getTriangleMeshData not found\n");
+-
+- return NULL;
+-
+- }
+-
+-}
++using namespace OgreOde;
++
++template<> OgreOde::TriangleMeshDataManager * Ogre::Singleton<OgreOde::TriangleMeshDataManager>::ms_Singleton = 0;
++
++namespace OgreOde
++{
++ //-----------------------------------------------------------------------
++ TriangleMeshDataManager::TriangleMeshDataManager()
++ {
++ }
++
++ //-----------------------------------------------------------------------
++ TriangleMeshDataManager::~TriangleMeshDataManager()
++ {
++ //mTriangleMeshDataMap.clear();
++ }
++
++ //-----------------------------------------------------------------------
++ TriangleMeshDataManager *TriangleMeshDataManager::getSingletonPtr ()
++ {
++ return ms_Singleton;
++ }
++
++ //-----------------------------------------------------------------------
++ TriangleMeshDataManager &TriangleMeshDataManager::getSingleton ()
++ {
++ assert (ms_Singleton);
++ return (*ms_Singleton);
++ }
++
++
++ //-----------------------------------------------------------------------
++ void TriangleMeshDataManager::addTriangleMeshData(const String& name, TriangleMeshDataPtr shape, Vector3 scale)
++ {
++
++ mTriangleMeshDataMap[name][scale] = shape;
++
++ // reduce count so when Ode::Geometry changes its dataPtr or is deleted we arn't
++ // left with this one on a referance count of 1
++ unsigned int* count = shape.useCountPointer();
++ (*count)--;
++
++ }
++
++
++ //-----------------------------------------------------------------------
++ void TriangleMeshDataManager::removeTriangleMeshData(const String& name, Vector3 scale)
++ {
++
++ TriangleMeshDataPtrMap::iterator itr = mTriangleMeshDataMap.find(name);
++ if(itr != mTriangleMeshDataMap.end())
++ {
++
++ std::map<Ogre::Vector3, OgreOde::TriangleMeshDataPtr,OgreOde::TriangleMeshDataManager::vectorLess>::iterator itr2;
++
++ itr2 = itr->second.find(scale);
++
++ if ( itr2 != itr->second.end() )
++ {
++ //printf ("no TriangleMeshData for scale so erase it\n");
++ itr->second.erase(itr2);
++ itr2->second.setNull();
++ }
++
++ if (itr->second.size() == 0)
++ {
++ //printf ("have no TriangleMeshData for this mesh so erase it from map\n");
++ mTriangleMeshDataMap.erase(itr);
++ }
++ }
++
++ }
++
++
++ /** looks for mesh name then size or returns a NULL TriangleMeshDataPtr
++ */
++ //-----------------------------------------------------------------------
++ TriangleMeshDataPtr TriangleMeshDataManager::getTriangleMeshData(const String& name, Vector3 scale)
++ {
++
++ TriangleMeshDataPtrMap::iterator itr = mTriangleMeshDataMap.find(name);
++ if(itr != mTriangleMeshDataMap.end())
++ {
++ std::map<Ogre::Vector3, OgreOde::TriangleMeshDataPtr,OgreOde::TriangleMeshDataManager::vectorLess>::iterator itr2;
++
++ itr2 = itr->second.find(scale);
++
++ if ( itr2 != itr->second.end() )
++ {
++ return itr2->second;
++ }
++ }
++
++ //printf ("TriangleMeshDataManager::getTriangleMeshData not found\n");
++
++ return NULL;
++
++ }
++
++}
+Index: prefab/src/OgreOdeRagdoll.cpp
===================================================================
---- src/OgreOdeEntityInformer.cpp (revision 2492)
-+++ src/OgreOdeEntityInformer.cpp (working copy)
-@@ -361,8 +361,8 @@
- SphereGeometry* geom = new SphereGeometry(rad, world, space);
- geom->setBody(body);
+--- prefab/src/OgreOdeRagdoll.cpp (revision 2510)
++++ prefab/src/OgreOdeRagdoll.cpp (working copy)
+@@ -10,6 +10,7 @@
-- body->setPosition(_node->getWorldPosition());
-- body->setOrientation(_node->getWorldOrientation());
-+ body->setPosition(_node->_getDerivedPosition());
-+ body->setOrientation(_node->_getDerivedOrientation());
-
- _node->attachObject(body);
-
-@@ -382,8 +382,8 @@
- BoxGeometry* geom = new BoxGeometry(sz, world, space);
- geom->setBody(body);
-
-- body->setPosition(_node->getWorldPosition());
-- body->setOrientation(_node->getWorldOrientation());
-+ body->setPosition(_node->_getDerivedPosition());
-+ body->setOrientation(_node->_getDerivedOrientation());
-
- _node->attachObject(body);
-
-@@ -402,8 +402,8 @@
- {
- BoxGeometry* geom = new BoxGeometry(getSize(), world, space);
-
-- geom->setPosition(_node->getWorldPosition());
-- geom->setOrientation(_node->getWorldOrientation());
-+ geom->setPosition(_node->_getDerivedPosition());
-+ geom->setOrientation(_node->_getDerivedOrientation());
-
- return geom;
- }
-Index: src/OgreOdeWorld.cpp
-===================================================================
---- src/OgreOdeWorld.cpp (revision 2492)
-+++ src/OgreOdeWorld.cpp (working copy)
-@@ -28,6 +28,7 @@
- _show_debug_contact (false),
- _manager (manager)
- {
-+ dInitODE();
- _world = dWorldCreate();
- _contacts = dJointGroupCreate(0);
-
-Index: loader/include/OgreOde_LoaderPreReqs.h
-===================================================================
---- loader/include/OgreOde_LoaderPreReqs.h (revision 2492)
-+++ loader/include/OgreOde_LoaderPreReqs.h (working copy)
-@@ -3,9 +3,9 @@
-
-
- #include "Ogre.h"
--#include "OgreNoMemoryMacros.h"
-+//#include "OgreNoMemoryMacros.h"
- #include "ode/ode.h"
--#include "OgreMemoryMacros.h"
-+//#include "OgreMemoryMacros.h"
- #include "OgreOde_Core.h"
#include "OgreOde_Prefab.h"
+ #include "OgreOdeRagdoll.h"
++#include "OgreAlignedAllocator.h"
-Index: loader/include/OgreOdeDotLoader.h
-===================================================================
---- loader/include/OgreOdeDotLoader.h (revision 2492)
-+++ loader/include/OgreOdeDotLoader.h (working copy)
-@@ -15,8 +15,8 @@
- DotLoader(OgreOde::World * world = 0, OgreOde::Space * space = 0);
- ~DotLoader(){};
-
-- void setWorld(OgreOde::World * world) {_world = world;};
-- void setSpace(OgreOde::Space * space) {_space = space;};
-+ void setWorld(OgreOde::World * world);// {_world = world;};
-+ void setSpace(OgreOde::Space * space);// {_space = space;};
-
- ObjectList *load(const Ogre::String &filename, const Ogre::StringVector &objects_names, const Ogre::StringVector &instance_names);
- void save(const Ogre::String &filename, const Ogre::StringVector &objects_names, ObjectList *objects);
-Index: loader/src/OgreOdeDotLoader.cpp
-===================================================================
---- loader/src/OgreOdeDotLoader.cpp (revision 2492)
-+++ loader/src/OgreOdeDotLoader.cpp (working copy)
-@@ -62,6 +62,12 @@
- {
-
- }
-+
-+void DotLoader::setWorld(OgreOde::World * world)
-+{_world = world;};
-+void DotLoader::setSpace(OgreOde::Space * space)
-+{_space = space;};
-+
- //------------------------------------------------------------------------------------------------
- ObjectList *DotLoader::load(const String &filename, const StringVector &objects_names, const StringVector &instance_names)
- {
+ using namespace Ogre;
+ using namespace OgreOde;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|