From 9d405fde6744402f9202bef7b257887dd79b5ff6 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Mon, 15 Jan 2018 08:36:08 -0800 Subject: [PATCH] PyBullet: free cached textures PyBullet: bool PhysicsServerCommandProcessor::pickBody, disable collision filtering to allow picking of all objects --- .../ImportMeshUtility/b3ImportMeshUtility.cpp | 21 +++++++++++++++++++ .../PhysicsServerCommandProcessor.cpp | 20 ++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp b/examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp index 87495f8b9..26492c182 100644 --- a/examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp +++ b/examples/Importers/ImportMeshUtility/b3ImportMeshUtility.cpp @@ -30,6 +30,27 @@ struct CachedTextureResult }; static b3HashMap gCachedTextureResults; +struct CachedTextureManager +{ + CachedTextureManager() + { + } + virtual ~CachedTextureManager() + { + for (int i=0;im_pixels); + } + } + } +}; +static CachedTextureManager sTexCacheMgr; + + + bool b3ImportMeshUtility::loadAndRegisterMeshFromFileInternal(const std::string& fileName, b3ImportMeshData& meshData) { diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index b3fa04215..7138b18ad 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -9186,6 +9186,22 @@ void PhysicsServerCommandProcessor::physicsDebugDraw(int debugDrawFlags) } +struct MyResultCallback : public btCollisionWorld::ClosestRayResultCallback +{ + MyResultCallback(const btVector3& rayFromWorld,const btVector3& rayToWorld) + :btCollisionWorld::ClosestRayResultCallback(rayFromWorld, rayToWorld) + { + } + + virtual bool needsCollision(btBroadphaseProxy* proxy0) const + { + return true; + } + +}; + + + bool PhysicsServerCommandProcessor::pickBody(const btVector3& rayFromWorld, const btVector3& rayToWorld) { @@ -9193,8 +9209,8 @@ bool PhysicsServerCommandProcessor::pickBody(const btVector3& rayFromWorld, cons if (m_data->m_dynamicsWorld==0) return false; - btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld); - + //btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld); + MyResultCallback rayCallback(rayFromWorld, rayToWorld); m_data->m_dynamicsWorld->rayTest(rayFromWorld, rayToWorld, rayCallback); if (rayCallback.hasHit()) {