diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b0fb1e207ac..d1c40c3b1944 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ endif() option(USE_CHIPMUNK "Use chipmunk for physics library" ON) option(USE_BOX2D "Use box2d for physics library" OFF) +option(USE_BULLET "Use bullet for physics3d library" ON) option(USE_WEBP "Use WebP codec" ${USE_WEBP_DEFAULT}) option(BUILD_SHARED_LIBS "Build shared libraries" OFF) option(DEBUG_MODE "Debug or release?" ON) @@ -248,6 +249,24 @@ else() add_definitions(-DCC_ENABLE_BOX2D_INTEGRATION=0) endif(USE_BOX2D) +# Bullet (not prebuilded, exists as source) +if(USE_BULLET) + if(USE_PREBUILT_LIBS) + add_subdirectory(external/bullet) + set(BULLET_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/bullet) + set(BULLET_LIBRARIES bullet) + else() + cocos_find_package(bullet BULLET REQUIRED) + set(BULLET_LIBRARIES bullet) + endif() + message(STATUS "Bullet include dirs: ${BULLET_INCLUDE_DIRS}") + add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=1) + add_definitions(-DCC_USE_PHYSICS=1) +else() + add_definitions(-DCC_ENABLE_BULLET_INTEGRATION=0) + add_definitions(-DCC_USE_3D_PHYSICS=0) +endif(USE_BULLET) + # Tinyxml2 (not prebuilded, exists as source) if(USE_PREBUILT_LIBS) add_subdirectory(external/tinyxml2) diff --git a/build/cocos2d-win32.vc2013.sln b/build/cocos2d-win32.vc2013.sln index 7df927b80c03..bf1f8bb66ae2 100644 --- a/build/cocos2d-win32.vc2013.sln +++ b/build/cocos2d-win32.vc2013.sln @@ -1,5 +1,5 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 # Visual Studio 2013 VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 12.0.21005.1 @@ -12,6 +12,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua-empty-test", "..\tests\lua-empty-test\project\proj.win32\lua-empty-test.vcxproj", "{13E55395-94A2-4CD9-BFC2-1A051F80C17D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\cocos\2d\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}" + ProjectSection(ProjectDependencies) = postProject + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B} = {012DFF48-A13F-4F52-B07B-F8B9D21CE95B} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libluacocos2d", "..\cocos\scripting\lua-bindings\proj.win32\libluacocos2d.vcxproj", "{9F2D6CE6-C893-4400-B50C-6DB70CC2562F}" EndProject @@ -21,6 +24,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\cocos\editor EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d", "..\external\Box2D\proj.win32\libbox2d.vcxproj", "{929480E7-23C0-4DF6-8456-096D71547116}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -77,6 +82,12 @@ Global {929480E7-23C0-4DF6-8456-096D71547116}.Release|ARM.ActiveCfg = Release|Win32 {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.ActiveCfg = Release|Win32 {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.Build.0 = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|ARM.ActiveCfg = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.ActiveCfg = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.Build.0 = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|ARM.ActiveCfg = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.ActiveCfg = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -84,6 +95,7 @@ Global GlobalSection(NestedProjects) = preSolution {B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {92D54E36-7916-48EF-A951-224DD3B25442} {929480E7-23C0-4DF6-8456-096D71547116} = {92D54E36-7916-48EF-A951-224DD3B25442} + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B} = {92D54E36-7916-48EF-A951-224DD3B25442} EndGlobalSection GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} diff --git a/build/cocos2d_libs.xcodeproj/project.pbxproj b/build/cocos2d_libs.xcodeproj/project.pbxproj index 4e13f59f7ba8..136d453c034e 100644 --- a/build/cocos2d_libs.xcodeproj/project.pbxproj +++ b/build/cocos2d_libs.xcodeproj/project.pbxproj @@ -2613,6 +2613,832 @@ B68779051A8CA82E00643ABF /* CCParticleSystem3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B68778F61A8CA82E00643ABF /* CCParticleSystem3D.cpp */; }; B68779061A8CA82E00643ABF /* CCParticleSystem3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B68778F71A8CA82E00643ABF /* CCParticleSystem3D.h */; }; B68779071A8CA82E00643ABF /* CCParticleSystem3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B68778F71A8CA82E00643ABF /* CCParticleSystem3D.h */; }; + B6CAAFE21AF9A9E100B9B856 /* CCPhysics3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD21AF9A9E100B9B856 /* CCPhysics3D.cpp */; }; + B6CAAFE31AF9A9E100B9B856 /* CCPhysics3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD21AF9A9E100B9B856 /* CCPhysics3D.cpp */; }; + B6CAAFE41AF9A9E100B9B856 /* CCPhysics3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD31AF9A9E100B9B856 /* CCPhysics3D.h */; }; + B6CAAFE51AF9A9E100B9B856 /* CCPhysics3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD31AF9A9E100B9B856 /* CCPhysics3D.h */; }; + B6CAAFE61AF9A9E100B9B856 /* CCPhysics3DComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD41AF9A9E100B9B856 /* CCPhysics3DComponent.cpp */; }; + B6CAAFE71AF9A9E100B9B856 /* CCPhysics3DComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD41AF9A9E100B9B856 /* CCPhysics3DComponent.cpp */; }; + B6CAAFE81AF9A9E100B9B856 /* CCPhysics3DComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD51AF9A9E100B9B856 /* CCPhysics3DComponent.h */; }; + B6CAAFE91AF9A9E100B9B856 /* CCPhysics3DComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD51AF9A9E100B9B856 /* CCPhysics3DComponent.h */; }; + B6CAAFEA1AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD61AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp */; }; + B6CAAFEB1AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD61AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp */; }; + B6CAAFEC1AF9A9E100B9B856 /* CCPhysics3DConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD71AF9A9E100B9B856 /* CCPhysics3DConstraint.h */; }; + B6CAAFED1AF9A9E100B9B856 /* CCPhysics3DConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD71AF9A9E100B9B856 /* CCPhysics3DConstraint.h */; }; + B6CAAFEE1AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD81AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp */; }; + B6CAAFEF1AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFD81AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp */; }; + B6CAAFF01AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD91AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h */; }; + B6CAAFF11AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFD91AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h */; }; + B6CAAFF21AF9A9E100B9B856 /* CCPhysics3DObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDA1AF9A9E100B9B856 /* CCPhysics3DObject.cpp */; }; + B6CAAFF31AF9A9E100B9B856 /* CCPhysics3DObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDA1AF9A9E100B9B856 /* CCPhysics3DObject.cpp */; }; + B6CAAFF41AF9A9E100B9B856 /* CCPhysics3DObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDB1AF9A9E100B9B856 /* CCPhysics3DObject.h */; }; + B6CAAFF51AF9A9E100B9B856 /* CCPhysics3DObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDB1AF9A9E100B9B856 /* CCPhysics3DObject.h */; }; + B6CAAFF61AF9A9E100B9B856 /* CCPhysics3DShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDC1AF9A9E100B9B856 /* CCPhysics3DShape.cpp */; }; + B6CAAFF71AF9A9E100B9B856 /* CCPhysics3DShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDC1AF9A9E100B9B856 /* CCPhysics3DShape.cpp */; }; + B6CAAFF81AF9A9E100B9B856 /* CCPhysics3DShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDD1AF9A9E100B9B856 /* CCPhysics3DShape.h */; }; + B6CAAFF91AF9A9E100B9B856 /* CCPhysics3DShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDD1AF9A9E100B9B856 /* CCPhysics3DShape.h */; }; + B6CAAFFA1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDE1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp */; }; + B6CAAFFB1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFDE1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp */; }; + B6CAAFFC1AF9A9E100B9B856 /* CCPhysics3DWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDF1AF9A9E100B9B856 /* CCPhysics3DWorld.h */; }; + B6CAAFFD1AF9A9E100B9B856 /* CCPhysics3DWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFDF1AF9A9E100B9B856 /* CCPhysics3DWorld.h */; }; + B6CAAFFE1AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFE01AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp */; }; + B6CAAFFF1AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAAFE01AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp */; }; + B6CAB0001AF9A9E100B9B856 /* CCPhysicsSprite3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFE11AF9A9E100B9B856 /* CCPhysicsSprite3D.h */; }; + B6CAB0011AF9A9E100B9B856 /* CCPhysicsSprite3D.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAAFE11AF9A9E100B9B856 /* CCPhysicsSprite3D.h */; }; + B6CAB1E11AF9AA1A00B9B856 /* btBulletCollisionCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0031AF9AA1900B9B856 /* btBulletCollisionCommon.h */; }; + B6CAB1E21AF9AA1A00B9B856 /* btBulletCollisionCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0031AF9AA1900B9B856 /* btBulletCollisionCommon.h */; }; + B6CAB1E31AF9AA1A00B9B856 /* btBulletDynamicsCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0041AF9AA1900B9B856 /* btBulletDynamicsCommon.h */; }; + B6CAB1E41AF9AA1A00B9B856 /* btBulletDynamicsCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0041AF9AA1900B9B856 /* btBulletDynamicsCommon.h */; }; + B6CAB1E51AF9AA1A00B9B856 /* Bullet-C-Api.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0051AF9AA1900B9B856 /* Bullet-C-Api.h */; }; + B6CAB1E61AF9AA1A00B9B856 /* Bullet-C-Api.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0051AF9AA1900B9B856 /* Bullet-C-Api.h */; }; + B6CAB1E71AF9AA1A00B9B856 /* btAxisSweep3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0081AF9AA1900B9B856 /* btAxisSweep3.cpp */; }; + B6CAB1E81AF9AA1A00B9B856 /* btAxisSweep3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0081AF9AA1900B9B856 /* btAxisSweep3.cpp */; }; + B6CAB1E91AF9AA1A00B9B856 /* btAxisSweep3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0091AF9AA1900B9B856 /* btAxisSweep3.h */; }; + B6CAB1EA1AF9AA1A00B9B856 /* btAxisSweep3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0091AF9AA1900B9B856 /* btAxisSweep3.h */; }; + B6CAB1EB1AF9AA1A00B9B856 /* btBroadphaseInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00A1AF9AA1900B9B856 /* btBroadphaseInterface.h */; }; + B6CAB1EC1AF9AA1A00B9B856 /* btBroadphaseInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00A1AF9AA1900B9B856 /* btBroadphaseInterface.h */; }; + B6CAB1ED1AF9AA1A00B9B856 /* btBroadphaseProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00B1AF9AA1900B9B856 /* btBroadphaseProxy.cpp */; }; + B6CAB1EE1AF9AA1A00B9B856 /* btBroadphaseProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00B1AF9AA1900B9B856 /* btBroadphaseProxy.cpp */; }; + B6CAB1EF1AF9AA1A00B9B856 /* btBroadphaseProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00C1AF9AA1900B9B856 /* btBroadphaseProxy.h */; }; + B6CAB1F01AF9AA1A00B9B856 /* btBroadphaseProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00C1AF9AA1900B9B856 /* btBroadphaseProxy.h */; }; + B6CAB1F11AF9AA1A00B9B856 /* btCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00D1AF9AA1900B9B856 /* btCollisionAlgorithm.cpp */; }; + B6CAB1F21AF9AA1A00B9B856 /* btCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00D1AF9AA1900B9B856 /* btCollisionAlgorithm.cpp */; }; + B6CAB1F31AF9AA1A00B9B856 /* btCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00E1AF9AA1900B9B856 /* btCollisionAlgorithm.h */; }; + B6CAB1F41AF9AA1A00B9B856 /* btCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB00E1AF9AA1900B9B856 /* btCollisionAlgorithm.h */; }; + B6CAB1F51AF9AA1A00B9B856 /* btDbvt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00F1AF9AA1900B9B856 /* btDbvt.cpp */; }; + B6CAB1F61AF9AA1A00B9B856 /* btDbvt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB00F1AF9AA1900B9B856 /* btDbvt.cpp */; }; + B6CAB1F71AF9AA1A00B9B856 /* btDbvt.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0101AF9AA1900B9B856 /* btDbvt.h */; }; + B6CAB1F81AF9AA1A00B9B856 /* btDbvt.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0101AF9AA1900B9B856 /* btDbvt.h */; }; + B6CAB1F91AF9AA1A00B9B856 /* btDbvtBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0111AF9AA1900B9B856 /* btDbvtBroadphase.cpp */; }; + B6CAB1FA1AF9AA1A00B9B856 /* btDbvtBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0111AF9AA1900B9B856 /* btDbvtBroadphase.cpp */; }; + B6CAB1FB1AF9AA1A00B9B856 /* btDbvtBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0121AF9AA1900B9B856 /* btDbvtBroadphase.h */; }; + B6CAB1FC1AF9AA1A00B9B856 /* btDbvtBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0121AF9AA1900B9B856 /* btDbvtBroadphase.h */; }; + B6CAB1FD1AF9AA1A00B9B856 /* btDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0131AF9AA1900B9B856 /* btDispatcher.cpp */; }; + B6CAB1FE1AF9AA1A00B9B856 /* btDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0131AF9AA1900B9B856 /* btDispatcher.cpp */; }; + B6CAB1FF1AF9AA1A00B9B856 /* btDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0141AF9AA1900B9B856 /* btDispatcher.h */; }; + B6CAB2001AF9AA1A00B9B856 /* btDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0141AF9AA1900B9B856 /* btDispatcher.h */; }; + B6CAB2011AF9AA1A00B9B856 /* btMultiSapBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0151AF9AA1900B9B856 /* btMultiSapBroadphase.cpp */; }; + B6CAB2021AF9AA1A00B9B856 /* btMultiSapBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0151AF9AA1900B9B856 /* btMultiSapBroadphase.cpp */; }; + B6CAB2031AF9AA1A00B9B856 /* btMultiSapBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0161AF9AA1900B9B856 /* btMultiSapBroadphase.h */; }; + B6CAB2041AF9AA1A00B9B856 /* btMultiSapBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0161AF9AA1900B9B856 /* btMultiSapBroadphase.h */; }; + B6CAB2051AF9AA1A00B9B856 /* btOverlappingPairCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0171AF9AA1900B9B856 /* btOverlappingPairCache.cpp */; }; + B6CAB2061AF9AA1A00B9B856 /* btOverlappingPairCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0171AF9AA1900B9B856 /* btOverlappingPairCache.cpp */; }; + B6CAB2071AF9AA1A00B9B856 /* btOverlappingPairCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0181AF9AA1900B9B856 /* btOverlappingPairCache.h */; }; + B6CAB2081AF9AA1A00B9B856 /* btOverlappingPairCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0181AF9AA1900B9B856 /* btOverlappingPairCache.h */; }; + B6CAB2091AF9AA1A00B9B856 /* btOverlappingPairCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0191AF9AA1900B9B856 /* btOverlappingPairCallback.h */; }; + B6CAB20A1AF9AA1A00B9B856 /* btOverlappingPairCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0191AF9AA1900B9B856 /* btOverlappingPairCallback.h */; }; + B6CAB20B1AF9AA1A00B9B856 /* btQuantizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01A1AF9AA1900B9B856 /* btQuantizedBvh.cpp */; }; + B6CAB20C1AF9AA1A00B9B856 /* btQuantizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01A1AF9AA1900B9B856 /* btQuantizedBvh.cpp */; }; + B6CAB20D1AF9AA1A00B9B856 /* btQuantizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB01B1AF9AA1900B9B856 /* btQuantizedBvh.h */; }; + B6CAB20E1AF9AA1A00B9B856 /* btQuantizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB01B1AF9AA1900B9B856 /* btQuantizedBvh.h */; }; + B6CAB20F1AF9AA1A00B9B856 /* btSimpleBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01C1AF9AA1900B9B856 /* btSimpleBroadphase.cpp */; }; + B6CAB2101AF9AA1A00B9B856 /* btSimpleBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01C1AF9AA1900B9B856 /* btSimpleBroadphase.cpp */; }; + B6CAB2111AF9AA1A00B9B856 /* btSimpleBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB01D1AF9AA1900B9B856 /* btSimpleBroadphase.h */; }; + B6CAB2121AF9AA1A00B9B856 /* btSimpleBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB01D1AF9AA1900B9B856 /* btSimpleBroadphase.h */; }; + B6CAB2131AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01F1AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.cpp */; }; + B6CAB2141AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB01F1AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.cpp */; }; + B6CAB2151AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0201AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.h */; }; + B6CAB2161AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0201AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.h */; }; + B6CAB2171AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0211AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp */; }; + B6CAB2181AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0211AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp */; }; + B6CAB2191AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0221AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.h */; }; + B6CAB21A1AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0221AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.h */; }; + B6CAB21B1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0231AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.cpp */; }; + B6CAB21C1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0231AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.cpp */; }; + B6CAB21D1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0241AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.h */; }; + B6CAB21E1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0241AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.h */; }; + B6CAB21F1AF9AA1A00B9B856 /* btBoxBoxDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0251AF9AA1900B9B856 /* btBoxBoxDetector.cpp */; }; + B6CAB2201AF9AA1A00B9B856 /* btBoxBoxDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0251AF9AA1900B9B856 /* btBoxBoxDetector.cpp */; }; + B6CAB2211AF9AA1A00B9B856 /* btBoxBoxDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0261AF9AA1900B9B856 /* btBoxBoxDetector.h */; }; + B6CAB2221AF9AA1A00B9B856 /* btBoxBoxDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0261AF9AA1900B9B856 /* btBoxBoxDetector.h */; }; + B6CAB2231AF9AA1A00B9B856 /* btCollisionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0271AF9AA1900B9B856 /* btCollisionConfiguration.h */; }; + B6CAB2241AF9AA1A00B9B856 /* btCollisionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0271AF9AA1900B9B856 /* btCollisionConfiguration.h */; }; + B6CAB2251AF9AA1A00B9B856 /* btCollisionCreateFunc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0281AF9AA1900B9B856 /* btCollisionCreateFunc.h */; }; + B6CAB2261AF9AA1A00B9B856 /* btCollisionCreateFunc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0281AF9AA1900B9B856 /* btCollisionCreateFunc.h */; }; + B6CAB2271AF9AA1A00B9B856 /* btCollisionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0291AF9AA1900B9B856 /* btCollisionDispatcher.cpp */; }; + B6CAB2281AF9AA1A00B9B856 /* btCollisionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0291AF9AA1900B9B856 /* btCollisionDispatcher.cpp */; }; + B6CAB2291AF9AA1A00B9B856 /* btCollisionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02A1AF9AA1900B9B856 /* btCollisionDispatcher.h */; }; + B6CAB22A1AF9AA1A00B9B856 /* btCollisionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02A1AF9AA1900B9B856 /* btCollisionDispatcher.h */; }; + B6CAB22B1AF9AA1A00B9B856 /* btCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB02B1AF9AA1900B9B856 /* btCollisionObject.cpp */; }; + B6CAB22C1AF9AA1A00B9B856 /* btCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB02B1AF9AA1900B9B856 /* btCollisionObject.cpp */; }; + B6CAB22D1AF9AA1A00B9B856 /* btCollisionObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02C1AF9AA1900B9B856 /* btCollisionObject.h */; }; + B6CAB22E1AF9AA1A00B9B856 /* btCollisionObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02C1AF9AA1900B9B856 /* btCollisionObject.h */; }; + B6CAB22F1AF9AA1A00B9B856 /* btCollisionObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02D1AF9AA1900B9B856 /* btCollisionObjectWrapper.h */; }; + B6CAB2301AF9AA1A00B9B856 /* btCollisionObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02D1AF9AA1900B9B856 /* btCollisionObjectWrapper.h */; }; + B6CAB2311AF9AA1A00B9B856 /* btCollisionWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB02E1AF9AA1900B9B856 /* btCollisionWorld.cpp */; }; + B6CAB2321AF9AA1A00B9B856 /* btCollisionWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB02E1AF9AA1900B9B856 /* btCollisionWorld.cpp */; }; + B6CAB2331AF9AA1A00B9B856 /* btCollisionWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02F1AF9AA1900B9B856 /* btCollisionWorld.h */; }; + B6CAB2341AF9AA1A00B9B856 /* btCollisionWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB02F1AF9AA1900B9B856 /* btCollisionWorld.h */; }; + B6CAB2351AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0301AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.cpp */; }; + B6CAB2361AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0301AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.cpp */; }; + B6CAB2371AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0311AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.h */; }; + B6CAB2381AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0311AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.h */; }; + B6CAB2391AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0321AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp */; }; + B6CAB23A1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0321AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp */; }; + B6CAB23B1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0331AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.h */; }; + B6CAB23C1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0331AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.h */; }; + B6CAB23D1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0341AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.cpp */; }; + B6CAB23E1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0341AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.cpp */; }; + B6CAB23F1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0351AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.h */; }; + B6CAB2401AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0351AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.h */; }; + B6CAB2411AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0361AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.cpp */; }; + B6CAB2421AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0361AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.cpp */; }; + B6CAB2431AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0371AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.h */; }; + B6CAB2441AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0371AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.h */; }; + B6CAB2451AF9AA1A00B9B856 /* btConvexConvexAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0381AF9AA1900B9B856 /* btConvexConvexAlgorithm.cpp */; }; + B6CAB2461AF9AA1A00B9B856 /* btConvexConvexAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0381AF9AA1900B9B856 /* btConvexConvexAlgorithm.cpp */; }; + B6CAB2471AF9AA1A00B9B856 /* btConvexConvexAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0391AF9AA1900B9B856 /* btConvexConvexAlgorithm.h */; }; + B6CAB2481AF9AA1A00B9B856 /* btConvexConvexAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0391AF9AA1900B9B856 /* btConvexConvexAlgorithm.h */; }; + B6CAB2491AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03A1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.cpp */; }; + B6CAB24A1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03A1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.cpp */; }; + B6CAB24B1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03B1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.h */; }; + B6CAB24C1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03B1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.h */; }; + B6CAB24D1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03C1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.cpp */; }; + B6CAB24E1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03C1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.cpp */; }; + B6CAB24F1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03D1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.h */; }; + B6CAB2501AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03D1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.h */; }; + B6CAB2511AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03E1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.cpp */; }; + B6CAB2521AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB03E1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.cpp */; }; + B6CAB2531AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03F1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.h */; }; + B6CAB2541AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB03F1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.h */; }; + B6CAB2551AF9AA1A00B9B856 /* btGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0401AF9AA1900B9B856 /* btGhostObject.cpp */; }; + B6CAB2561AF9AA1A00B9B856 /* btGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0401AF9AA1900B9B856 /* btGhostObject.cpp */; }; + B6CAB2571AF9AA1A00B9B856 /* btGhostObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0411AF9AA1900B9B856 /* btGhostObject.h */; }; + B6CAB2581AF9AA1A00B9B856 /* btGhostObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0411AF9AA1900B9B856 /* btGhostObject.h */; }; + B6CAB2591AF9AA1A00B9B856 /* btHashedSimplePairCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0421AF9AA1900B9B856 /* btHashedSimplePairCache.cpp */; }; + B6CAB25A1AF9AA1A00B9B856 /* btHashedSimplePairCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0421AF9AA1900B9B856 /* btHashedSimplePairCache.cpp */; }; + B6CAB25B1AF9AA1A00B9B856 /* btHashedSimplePairCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0431AF9AA1900B9B856 /* btHashedSimplePairCache.h */; }; + B6CAB25C1AF9AA1A00B9B856 /* btHashedSimplePairCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0431AF9AA1900B9B856 /* btHashedSimplePairCache.h */; }; + B6CAB25D1AF9AA1A00B9B856 /* btInternalEdgeUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0441AF9AA1900B9B856 /* btInternalEdgeUtility.cpp */; }; + B6CAB25E1AF9AA1A00B9B856 /* btInternalEdgeUtility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0441AF9AA1900B9B856 /* btInternalEdgeUtility.cpp */; }; + B6CAB25F1AF9AA1A00B9B856 /* btInternalEdgeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0451AF9AA1900B9B856 /* btInternalEdgeUtility.h */; }; + B6CAB2601AF9AA1A00B9B856 /* btInternalEdgeUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0451AF9AA1900B9B856 /* btInternalEdgeUtility.h */; }; + B6CAB2611AF9AA1A00B9B856 /* btManifoldResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0461AF9AA1900B9B856 /* btManifoldResult.cpp */; }; + B6CAB2621AF9AA1A00B9B856 /* btManifoldResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0461AF9AA1900B9B856 /* btManifoldResult.cpp */; }; + B6CAB2631AF9AA1A00B9B856 /* btManifoldResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0471AF9AA1900B9B856 /* btManifoldResult.h */; }; + B6CAB2641AF9AA1A00B9B856 /* btManifoldResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0471AF9AA1900B9B856 /* btManifoldResult.h */; }; + B6CAB2651AF9AA1A00B9B856 /* btSimulationIslandManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0481AF9AA1900B9B856 /* btSimulationIslandManager.cpp */; }; + B6CAB2661AF9AA1A00B9B856 /* btSimulationIslandManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0481AF9AA1900B9B856 /* btSimulationIslandManager.cpp */; }; + B6CAB2671AF9AA1A00B9B856 /* btSimulationIslandManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0491AF9AA1900B9B856 /* btSimulationIslandManager.h */; }; + B6CAB2681AF9AA1A00B9B856 /* btSimulationIslandManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0491AF9AA1900B9B856 /* btSimulationIslandManager.h */; }; + B6CAB2691AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04A1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.cpp */; }; + B6CAB26A1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04A1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.cpp */; }; + B6CAB26B1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04B1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.h */; }; + B6CAB26C1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04B1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.h */; }; + B6CAB26D1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04C1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.cpp */; }; + B6CAB26E1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04C1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.cpp */; }; + B6CAB26F1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04D1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.h */; }; + B6CAB2701AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04D1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.h */; }; + B6CAB2711AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04E1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.cpp */; }; + B6CAB2721AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB04E1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.cpp */; }; + B6CAB2731AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04F1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.h */; }; + B6CAB2741AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB04F1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.h */; }; + B6CAB2751AF9AA1A00B9B856 /* btUnionFind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0501AF9AA1900B9B856 /* btUnionFind.cpp */; }; + B6CAB2761AF9AA1A00B9B856 /* btUnionFind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0501AF9AA1900B9B856 /* btUnionFind.cpp */; }; + B6CAB2771AF9AA1A00B9B856 /* btUnionFind.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0511AF9AA1900B9B856 /* btUnionFind.h */; }; + B6CAB2781AF9AA1A00B9B856 /* btUnionFind.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0511AF9AA1900B9B856 /* btUnionFind.h */; }; + B6CAB2791AF9AA1A00B9B856 /* SphereTriangleDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0521AF9AA1900B9B856 /* SphereTriangleDetector.cpp */; }; + B6CAB27A1AF9AA1A00B9B856 /* SphereTriangleDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0521AF9AA1900B9B856 /* SphereTriangleDetector.cpp */; }; + B6CAB27B1AF9AA1A00B9B856 /* SphereTriangleDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0531AF9AA1900B9B856 /* SphereTriangleDetector.h */; }; + B6CAB27C1AF9AA1A00B9B856 /* SphereTriangleDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0531AF9AA1900B9B856 /* SphereTriangleDetector.h */; }; + B6CAB27D1AF9AA1A00B9B856 /* btBox2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0551AF9AA1900B9B856 /* btBox2dShape.cpp */; }; + B6CAB27E1AF9AA1A00B9B856 /* btBox2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0551AF9AA1900B9B856 /* btBox2dShape.cpp */; }; + B6CAB27F1AF9AA1A00B9B856 /* btBox2dShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0561AF9AA1900B9B856 /* btBox2dShape.h */; }; + B6CAB2801AF9AA1A00B9B856 /* btBox2dShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0561AF9AA1900B9B856 /* btBox2dShape.h */; }; + B6CAB2811AF9AA1A00B9B856 /* btBoxShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0571AF9AA1900B9B856 /* btBoxShape.cpp */; }; + B6CAB2821AF9AA1A00B9B856 /* btBoxShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0571AF9AA1900B9B856 /* btBoxShape.cpp */; }; + B6CAB2831AF9AA1A00B9B856 /* btBoxShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0581AF9AA1900B9B856 /* btBoxShape.h */; }; + B6CAB2841AF9AA1A00B9B856 /* btBoxShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0581AF9AA1900B9B856 /* btBoxShape.h */; }; + B6CAB2851AF9AA1A00B9B856 /* btBvhTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0591AF9AA1900B9B856 /* btBvhTriangleMeshShape.cpp */; }; + B6CAB2861AF9AA1A00B9B856 /* btBvhTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0591AF9AA1900B9B856 /* btBvhTriangleMeshShape.cpp */; }; + B6CAB2871AF9AA1A00B9B856 /* btBvhTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05A1AF9AA1900B9B856 /* btBvhTriangleMeshShape.h */; }; + B6CAB2881AF9AA1A00B9B856 /* btBvhTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05A1AF9AA1900B9B856 /* btBvhTriangleMeshShape.h */; }; + B6CAB2891AF9AA1A00B9B856 /* btCapsuleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB05B1AF9AA1900B9B856 /* btCapsuleShape.cpp */; }; + B6CAB28A1AF9AA1A00B9B856 /* btCapsuleShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB05B1AF9AA1900B9B856 /* btCapsuleShape.cpp */; }; + B6CAB28B1AF9AA1A00B9B856 /* btCapsuleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05C1AF9AA1900B9B856 /* btCapsuleShape.h */; }; + B6CAB28C1AF9AA1A00B9B856 /* btCapsuleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05C1AF9AA1900B9B856 /* btCapsuleShape.h */; }; + B6CAB28D1AF9AA1A00B9B856 /* btCollisionMargin.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05D1AF9AA1900B9B856 /* btCollisionMargin.h */; }; + B6CAB28E1AF9AA1A00B9B856 /* btCollisionMargin.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05D1AF9AA1900B9B856 /* btCollisionMargin.h */; }; + B6CAB28F1AF9AA1A00B9B856 /* btCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB05E1AF9AA1900B9B856 /* btCollisionShape.cpp */; }; + B6CAB2901AF9AA1A00B9B856 /* btCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB05E1AF9AA1900B9B856 /* btCollisionShape.cpp */; }; + B6CAB2911AF9AA1A00B9B856 /* btCollisionShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05F1AF9AA1900B9B856 /* btCollisionShape.h */; }; + B6CAB2921AF9AA1A00B9B856 /* btCollisionShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB05F1AF9AA1900B9B856 /* btCollisionShape.h */; }; + B6CAB2931AF9AA1A00B9B856 /* btCompoundShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0601AF9AA1900B9B856 /* btCompoundShape.cpp */; }; + B6CAB2941AF9AA1A00B9B856 /* btCompoundShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0601AF9AA1900B9B856 /* btCompoundShape.cpp */; }; + B6CAB2951AF9AA1A00B9B856 /* btCompoundShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0611AF9AA1900B9B856 /* btCompoundShape.h */; }; + B6CAB2961AF9AA1A00B9B856 /* btCompoundShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0611AF9AA1900B9B856 /* btCompoundShape.h */; }; + B6CAB2971AF9AA1A00B9B856 /* btConcaveShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0621AF9AA1900B9B856 /* btConcaveShape.cpp */; }; + B6CAB2981AF9AA1A00B9B856 /* btConcaveShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0621AF9AA1900B9B856 /* btConcaveShape.cpp */; }; + B6CAB2991AF9AA1A00B9B856 /* btConcaveShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0631AF9AA1900B9B856 /* btConcaveShape.h */; }; + B6CAB29A1AF9AA1A00B9B856 /* btConcaveShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0631AF9AA1900B9B856 /* btConcaveShape.h */; }; + B6CAB29B1AF9AA1A00B9B856 /* btConeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0641AF9AA1900B9B856 /* btConeShape.cpp */; }; + B6CAB29C1AF9AA1A00B9B856 /* btConeShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0641AF9AA1900B9B856 /* btConeShape.cpp */; }; + B6CAB29D1AF9AA1A00B9B856 /* btConeShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0651AF9AA1900B9B856 /* btConeShape.h */; }; + B6CAB29E1AF9AA1A00B9B856 /* btConeShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0651AF9AA1900B9B856 /* btConeShape.h */; }; + B6CAB29F1AF9AA1A00B9B856 /* btConvex2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0661AF9AA1900B9B856 /* btConvex2dShape.cpp */; }; + B6CAB2A01AF9AA1A00B9B856 /* btConvex2dShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0661AF9AA1900B9B856 /* btConvex2dShape.cpp */; }; + B6CAB2A11AF9AA1A00B9B856 /* btConvex2dShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0671AF9AA1900B9B856 /* btConvex2dShape.h */; }; + B6CAB2A21AF9AA1A00B9B856 /* btConvex2dShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0671AF9AA1900B9B856 /* btConvex2dShape.h */; }; + B6CAB2A31AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0681AF9AA1900B9B856 /* btConvexHullShape.cpp */; }; + B6CAB2A41AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0681AF9AA1900B9B856 /* btConvexHullShape.cpp */; }; + B6CAB2A51AF9AA1A00B9B856 /* btConvexHullShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0691AF9AA1900B9B856 /* btConvexHullShape.h */; }; + B6CAB2A61AF9AA1A00B9B856 /* btConvexHullShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0691AF9AA1900B9B856 /* btConvexHullShape.h */; }; + B6CAB2A71AF9AA1A00B9B856 /* btConvexInternalShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06A1AF9AA1900B9B856 /* btConvexInternalShape.cpp */; }; + B6CAB2A81AF9AA1A00B9B856 /* btConvexInternalShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06A1AF9AA1900B9B856 /* btConvexInternalShape.cpp */; }; + B6CAB2A91AF9AA1A00B9B856 /* btConvexInternalShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06B1AF9AA1900B9B856 /* btConvexInternalShape.h */; }; + B6CAB2AA1AF9AA1A00B9B856 /* btConvexInternalShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06B1AF9AA1900B9B856 /* btConvexInternalShape.h */; }; + B6CAB2AB1AF9AA1A00B9B856 /* btConvexPointCloudShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06C1AF9AA1900B9B856 /* btConvexPointCloudShape.cpp */; }; + B6CAB2AC1AF9AA1A00B9B856 /* btConvexPointCloudShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06C1AF9AA1900B9B856 /* btConvexPointCloudShape.cpp */; }; + B6CAB2AD1AF9AA1A00B9B856 /* btConvexPointCloudShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06D1AF9AA1900B9B856 /* btConvexPointCloudShape.h */; }; + B6CAB2AE1AF9AA1A00B9B856 /* btConvexPointCloudShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06D1AF9AA1900B9B856 /* btConvexPointCloudShape.h */; }; + B6CAB2AF1AF9AA1A00B9B856 /* btConvexPolyhedron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06E1AF9AA1900B9B856 /* btConvexPolyhedron.cpp */; }; + B6CAB2B01AF9AA1A00B9B856 /* btConvexPolyhedron.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB06E1AF9AA1900B9B856 /* btConvexPolyhedron.cpp */; }; + B6CAB2B11AF9AA1A00B9B856 /* btConvexPolyhedron.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06F1AF9AA1900B9B856 /* btConvexPolyhedron.h */; }; + B6CAB2B21AF9AA1A00B9B856 /* btConvexPolyhedron.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB06F1AF9AA1900B9B856 /* btConvexPolyhedron.h */; }; + B6CAB2B31AF9AA1A00B9B856 /* btConvexShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0701AF9AA1900B9B856 /* btConvexShape.cpp */; }; + B6CAB2B41AF9AA1A00B9B856 /* btConvexShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0701AF9AA1900B9B856 /* btConvexShape.cpp */; }; + B6CAB2B51AF9AA1A00B9B856 /* btConvexShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0711AF9AA1900B9B856 /* btConvexShape.h */; }; + B6CAB2B61AF9AA1A00B9B856 /* btConvexShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0711AF9AA1900B9B856 /* btConvexShape.h */; }; + B6CAB2B71AF9AA1A00B9B856 /* btConvexTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0721AF9AA1900B9B856 /* btConvexTriangleMeshShape.cpp */; }; + B6CAB2B81AF9AA1A00B9B856 /* btConvexTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0721AF9AA1900B9B856 /* btConvexTriangleMeshShape.cpp */; }; + B6CAB2B91AF9AA1A00B9B856 /* btConvexTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0731AF9AA1900B9B856 /* btConvexTriangleMeshShape.h */; }; + B6CAB2BA1AF9AA1A00B9B856 /* btConvexTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0731AF9AA1900B9B856 /* btConvexTriangleMeshShape.h */; }; + B6CAB2BB1AF9AA1A00B9B856 /* btCylinderShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0741AF9AA1900B9B856 /* btCylinderShape.cpp */; }; + B6CAB2BC1AF9AA1A00B9B856 /* btCylinderShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0741AF9AA1900B9B856 /* btCylinderShape.cpp */; }; + B6CAB2BD1AF9AA1A00B9B856 /* btCylinderShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0751AF9AA1900B9B856 /* btCylinderShape.h */; }; + B6CAB2BE1AF9AA1A00B9B856 /* btCylinderShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0751AF9AA1900B9B856 /* btCylinderShape.h */; }; + B6CAB2BF1AF9AA1A00B9B856 /* btEmptyShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0761AF9AA1900B9B856 /* btEmptyShape.cpp */; }; + B6CAB2C01AF9AA1A00B9B856 /* btEmptyShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0761AF9AA1900B9B856 /* btEmptyShape.cpp */; }; + B6CAB2C11AF9AA1A00B9B856 /* btEmptyShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0771AF9AA1900B9B856 /* btEmptyShape.h */; }; + B6CAB2C21AF9AA1A00B9B856 /* btEmptyShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0771AF9AA1900B9B856 /* btEmptyShape.h */; }; + B6CAB2C31AF9AA1A00B9B856 /* btHeightfieldTerrainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0781AF9AA1900B9B856 /* btHeightfieldTerrainShape.cpp */; }; + B6CAB2C41AF9AA1A00B9B856 /* btHeightfieldTerrainShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0781AF9AA1900B9B856 /* btHeightfieldTerrainShape.cpp */; }; + B6CAB2C51AF9AA1A00B9B856 /* btHeightfieldTerrainShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0791AF9AA1900B9B856 /* btHeightfieldTerrainShape.h */; }; + B6CAB2C61AF9AA1A00B9B856 /* btHeightfieldTerrainShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0791AF9AA1900B9B856 /* btHeightfieldTerrainShape.h */; }; + B6CAB2C71AF9AA1A00B9B856 /* btMaterial.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07A1AF9AA1900B9B856 /* btMaterial.h */; }; + B6CAB2C81AF9AA1A00B9B856 /* btMaterial.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07A1AF9AA1900B9B856 /* btMaterial.h */; }; + B6CAB2C91AF9AA1A00B9B856 /* btMinkowskiSumShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07B1AF9AA1900B9B856 /* btMinkowskiSumShape.cpp */; }; + B6CAB2CA1AF9AA1A00B9B856 /* btMinkowskiSumShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07B1AF9AA1900B9B856 /* btMinkowskiSumShape.cpp */; }; + B6CAB2CB1AF9AA1A00B9B856 /* btMinkowskiSumShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07C1AF9AA1900B9B856 /* btMinkowskiSumShape.h */; }; + B6CAB2CC1AF9AA1A00B9B856 /* btMinkowskiSumShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07C1AF9AA1900B9B856 /* btMinkowskiSumShape.h */; }; + B6CAB2CD1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07D1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.cpp */; }; + B6CAB2CE1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07D1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.cpp */; }; + B6CAB2CF1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07E1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.h */; }; + B6CAB2D01AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB07E1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.h */; }; + B6CAB2D11AF9AA1A00B9B856 /* btMultiSphereShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07F1AF9AA1900B9B856 /* btMultiSphereShape.cpp */; }; + B6CAB2D21AF9AA1A00B9B856 /* btMultiSphereShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB07F1AF9AA1900B9B856 /* btMultiSphereShape.cpp */; }; + B6CAB2D31AF9AA1A00B9B856 /* btMultiSphereShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0801AF9AA1900B9B856 /* btMultiSphereShape.h */; }; + B6CAB2D41AF9AA1A00B9B856 /* btMultiSphereShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0801AF9AA1900B9B856 /* btMultiSphereShape.h */; }; + B6CAB2D51AF9AA1A00B9B856 /* btOptimizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0811AF9AA1900B9B856 /* btOptimizedBvh.cpp */; }; + B6CAB2D61AF9AA1A00B9B856 /* btOptimizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0811AF9AA1900B9B856 /* btOptimizedBvh.cpp */; }; + B6CAB2D71AF9AA1A00B9B856 /* btOptimizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0821AF9AA1900B9B856 /* btOptimizedBvh.h */; }; + B6CAB2D81AF9AA1A00B9B856 /* btOptimizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0821AF9AA1900B9B856 /* btOptimizedBvh.h */; }; + B6CAB2D91AF9AA1A00B9B856 /* btPolyhedralConvexShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0831AF9AA1900B9B856 /* btPolyhedralConvexShape.cpp */; }; + B6CAB2DA1AF9AA1A00B9B856 /* btPolyhedralConvexShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0831AF9AA1900B9B856 /* btPolyhedralConvexShape.cpp */; }; + B6CAB2DB1AF9AA1A00B9B856 /* btPolyhedralConvexShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0841AF9AA1900B9B856 /* btPolyhedralConvexShape.h */; }; + B6CAB2DC1AF9AA1A00B9B856 /* btPolyhedralConvexShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0841AF9AA1900B9B856 /* btPolyhedralConvexShape.h */; }; + B6CAB2DD1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0851AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.cpp */; }; + B6CAB2DE1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0851AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.cpp */; }; + B6CAB2DF1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0861AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.h */; }; + B6CAB2E01AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0861AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.h */; }; + B6CAB2E11AF9AA1A00B9B856 /* btShapeHull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0871AF9AA1900B9B856 /* btShapeHull.cpp */; }; + B6CAB2E21AF9AA1A00B9B856 /* btShapeHull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0871AF9AA1900B9B856 /* btShapeHull.cpp */; }; + B6CAB2E31AF9AA1A00B9B856 /* btShapeHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0881AF9AA1900B9B856 /* btShapeHull.h */; }; + B6CAB2E41AF9AA1A00B9B856 /* btShapeHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0881AF9AA1900B9B856 /* btShapeHull.h */; }; + B6CAB2E51AF9AA1A00B9B856 /* btSphereShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0891AF9AA1900B9B856 /* btSphereShape.cpp */; }; + B6CAB2E61AF9AA1A00B9B856 /* btSphereShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0891AF9AA1900B9B856 /* btSphereShape.cpp */; }; + B6CAB2E71AF9AA1A00B9B856 /* btSphereShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08A1AF9AA1900B9B856 /* btSphereShape.h */; }; + B6CAB2E81AF9AA1A00B9B856 /* btSphereShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08A1AF9AA1900B9B856 /* btSphereShape.h */; }; + B6CAB2E91AF9AA1A00B9B856 /* btStaticPlaneShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08B1AF9AA1900B9B856 /* btStaticPlaneShape.cpp */; }; + B6CAB2EA1AF9AA1A00B9B856 /* btStaticPlaneShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08B1AF9AA1900B9B856 /* btStaticPlaneShape.cpp */; }; + B6CAB2EB1AF9AA1A00B9B856 /* btStaticPlaneShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08C1AF9AA1900B9B856 /* btStaticPlaneShape.h */; }; + B6CAB2EC1AF9AA1A00B9B856 /* btStaticPlaneShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08C1AF9AA1900B9B856 /* btStaticPlaneShape.h */; }; + B6CAB2ED1AF9AA1A00B9B856 /* btStridingMeshInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08D1AF9AA1900B9B856 /* btStridingMeshInterface.cpp */; }; + B6CAB2EE1AF9AA1A00B9B856 /* btStridingMeshInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08D1AF9AA1900B9B856 /* btStridingMeshInterface.cpp */; }; + B6CAB2EF1AF9AA1A00B9B856 /* btStridingMeshInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08E1AF9AA1900B9B856 /* btStridingMeshInterface.h */; }; + B6CAB2F01AF9AA1A00B9B856 /* btStridingMeshInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB08E1AF9AA1900B9B856 /* btStridingMeshInterface.h */; }; + B6CAB2F11AF9AA1A00B9B856 /* btTetrahedronShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08F1AF9AA1900B9B856 /* btTetrahedronShape.cpp */; }; + B6CAB2F21AF9AA1A00B9B856 /* btTetrahedronShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB08F1AF9AA1900B9B856 /* btTetrahedronShape.cpp */; }; + B6CAB2F31AF9AA1A00B9B856 /* btTetrahedronShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0901AF9AA1900B9B856 /* btTetrahedronShape.h */; }; + B6CAB2F41AF9AA1A00B9B856 /* btTetrahedronShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0901AF9AA1900B9B856 /* btTetrahedronShape.h */; }; + B6CAB2F51AF9AA1A00B9B856 /* btTriangleBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0911AF9AA1900B9B856 /* btTriangleBuffer.cpp */; }; + B6CAB2F61AF9AA1A00B9B856 /* btTriangleBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0911AF9AA1900B9B856 /* btTriangleBuffer.cpp */; }; + B6CAB2F71AF9AA1A00B9B856 /* btTriangleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0921AF9AA1900B9B856 /* btTriangleBuffer.h */; }; + B6CAB2F81AF9AA1A00B9B856 /* btTriangleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0921AF9AA1900B9B856 /* btTriangleBuffer.h */; }; + B6CAB2F91AF9AA1A00B9B856 /* btTriangleCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0931AF9AA1900B9B856 /* btTriangleCallback.cpp */; }; + B6CAB2FA1AF9AA1A00B9B856 /* btTriangleCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0931AF9AA1900B9B856 /* btTriangleCallback.cpp */; }; + B6CAB2FB1AF9AA1A00B9B856 /* btTriangleCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0941AF9AA1900B9B856 /* btTriangleCallback.h */; }; + B6CAB2FC1AF9AA1A00B9B856 /* btTriangleCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0941AF9AA1900B9B856 /* btTriangleCallback.h */; }; + B6CAB2FD1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0951AF9AA1900B9B856 /* btTriangleIndexVertexArray.cpp */; }; + B6CAB2FE1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0951AF9AA1900B9B856 /* btTriangleIndexVertexArray.cpp */; }; + B6CAB2FF1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0961AF9AA1900B9B856 /* btTriangleIndexVertexArray.h */; }; + B6CAB3001AF9AA1A00B9B856 /* btTriangleIndexVertexArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0961AF9AA1900B9B856 /* btTriangleIndexVertexArray.h */; }; + B6CAB3011AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0971AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.cpp */; }; + B6CAB3021AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0971AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.cpp */; }; + B6CAB3031AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0981AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.h */; }; + B6CAB3041AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0981AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.h */; }; + B6CAB3051AF9AA1A00B9B856 /* btTriangleInfoMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0991AF9AA1900B9B856 /* btTriangleInfoMap.h */; }; + B6CAB3061AF9AA1A00B9B856 /* btTriangleInfoMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0991AF9AA1900B9B856 /* btTriangleInfoMap.h */; }; + B6CAB3071AF9AA1A00B9B856 /* btTriangleMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09A1AF9AA1900B9B856 /* btTriangleMesh.cpp */; }; + B6CAB3081AF9AA1A00B9B856 /* btTriangleMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09A1AF9AA1900B9B856 /* btTriangleMesh.cpp */; }; + B6CAB3091AF9AA1A00B9B856 /* btTriangleMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09B1AF9AA1900B9B856 /* btTriangleMesh.h */; }; + B6CAB30A1AF9AA1A00B9B856 /* btTriangleMesh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09B1AF9AA1900B9B856 /* btTriangleMesh.h */; }; + B6CAB30B1AF9AA1A00B9B856 /* btTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09C1AF9AA1900B9B856 /* btTriangleMeshShape.cpp */; }; + B6CAB30C1AF9AA1A00B9B856 /* btTriangleMeshShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09C1AF9AA1900B9B856 /* btTriangleMeshShape.cpp */; }; + B6CAB30D1AF9AA1A00B9B856 /* btTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09D1AF9AA1900B9B856 /* btTriangleMeshShape.h */; }; + B6CAB30E1AF9AA1A00B9B856 /* btTriangleMeshShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09D1AF9AA1900B9B856 /* btTriangleMeshShape.h */; }; + B6CAB30F1AF9AA1A00B9B856 /* btTriangleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09E1AF9AA1900B9B856 /* btTriangleShape.h */; }; + B6CAB3101AF9AA1A00B9B856 /* btTriangleShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB09E1AF9AA1900B9B856 /* btTriangleShape.h */; }; + B6CAB3111AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09F1AF9AA1900B9B856 /* btUniformScalingShape.cpp */; }; + B6CAB3121AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB09F1AF9AA1900B9B856 /* btUniformScalingShape.cpp */; }; + B6CAB3131AF9AA1A00B9B856 /* btUniformScalingShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A01AF9AA1900B9B856 /* btUniformScalingShape.h */; }; + B6CAB3141AF9AA1A00B9B856 /* btUniformScalingShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A01AF9AA1900B9B856 /* btUniformScalingShape.h */; }; + B6CAB3151AF9AA1A00B9B856 /* btBoxCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A21AF9AA1900B9B856 /* btBoxCollision.h */; }; + B6CAB3161AF9AA1A00B9B856 /* btBoxCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A21AF9AA1900B9B856 /* btBoxCollision.h */; }; + B6CAB3171AF9AA1A00B9B856 /* btClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A31AF9AA1900B9B856 /* btClipPolygon.h */; }; + B6CAB3181AF9AA1A00B9B856 /* btClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A31AF9AA1900B9B856 /* btClipPolygon.h */; }; + B6CAB3191AF9AA1A00B9B856 /* btCompoundFromGimpact.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A41AF9AA1900B9B856 /* btCompoundFromGimpact.h */; }; + B6CAB31A1AF9AA1A00B9B856 /* btCompoundFromGimpact.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A41AF9AA1900B9B856 /* btCompoundFromGimpact.h */; }; + B6CAB31B1AF9AA1A00B9B856 /* btContactProcessing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0A51AF9AA1900B9B856 /* btContactProcessing.cpp */; }; + B6CAB31C1AF9AA1A00B9B856 /* btContactProcessing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0A51AF9AA1900B9B856 /* btContactProcessing.cpp */; }; + B6CAB31D1AF9AA1A00B9B856 /* btContactProcessing.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A61AF9AA1900B9B856 /* btContactProcessing.h */; }; + B6CAB31E1AF9AA1A00B9B856 /* btContactProcessing.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A61AF9AA1900B9B856 /* btContactProcessing.h */; }; + B6CAB31F1AF9AA1A00B9B856 /* btGenericPoolAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0A71AF9AA1900B9B856 /* btGenericPoolAllocator.cpp */; }; + B6CAB3201AF9AA1A00B9B856 /* btGenericPoolAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0A71AF9AA1900B9B856 /* btGenericPoolAllocator.cpp */; }; + B6CAB3211AF9AA1A00B9B856 /* btGenericPoolAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A81AF9AA1900B9B856 /* btGenericPoolAllocator.h */; }; + B6CAB3221AF9AA1A00B9B856 /* btGenericPoolAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A81AF9AA1900B9B856 /* btGenericPoolAllocator.h */; }; + B6CAB3231AF9AA1A00B9B856 /* btGeometryOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A91AF9AA1900B9B856 /* btGeometryOperations.h */; }; + B6CAB3241AF9AA1A00B9B856 /* btGeometryOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0A91AF9AA1900B9B856 /* btGeometryOperations.h */; }; + B6CAB3251AF9AA1A00B9B856 /* btGImpactBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AA1AF9AA1900B9B856 /* btGImpactBvh.cpp */; }; + B6CAB3261AF9AA1A00B9B856 /* btGImpactBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AA1AF9AA1900B9B856 /* btGImpactBvh.cpp */; }; + B6CAB3271AF9AA1A00B9B856 /* btGImpactBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AB1AF9AA1900B9B856 /* btGImpactBvh.h */; }; + B6CAB3281AF9AA1A00B9B856 /* btGImpactBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AB1AF9AA1900B9B856 /* btGImpactBvh.h */; }; + B6CAB3291AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AC1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.cpp */; }; + B6CAB32A1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AC1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.cpp */; }; + B6CAB32B1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AD1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.h */; }; + B6CAB32C1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AD1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.h */; }; + B6CAB32D1AF9AA1A00B9B856 /* btGImpactMassUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AE1AF9AA1900B9B856 /* btGImpactMassUtil.h */; }; + B6CAB32E1AF9AA1A00B9B856 /* btGImpactMassUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0AE1AF9AA1900B9B856 /* btGImpactMassUtil.h */; }; + B6CAB32F1AF9AA1A00B9B856 /* btGImpactQuantizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AF1AF9AA1900B9B856 /* btGImpactQuantizedBvh.cpp */; }; + B6CAB3301AF9AA1A00B9B856 /* btGImpactQuantizedBvh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0AF1AF9AA1900B9B856 /* btGImpactQuantizedBvh.cpp */; }; + B6CAB3311AF9AA1A00B9B856 /* btGImpactQuantizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B01AF9AA1900B9B856 /* btGImpactQuantizedBvh.h */; }; + B6CAB3321AF9AA1A00B9B856 /* btGImpactQuantizedBvh.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B01AF9AA1900B9B856 /* btGImpactQuantizedBvh.h */; }; + B6CAB3331AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0B11AF9AA1900B9B856 /* btGImpactShape.cpp */; }; + B6CAB3341AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0B11AF9AA1900B9B856 /* btGImpactShape.cpp */; }; + B6CAB3351AF9AA1A00B9B856 /* btGImpactShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B21AF9AA1900B9B856 /* btGImpactShape.h */; }; + B6CAB3361AF9AA1A00B9B856 /* btGImpactShape.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B21AF9AA1900B9B856 /* btGImpactShape.h */; }; + B6CAB3371AF9AA1A00B9B856 /* btQuantization.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B31AF9AA1900B9B856 /* btQuantization.h */; }; + B6CAB3381AF9AA1A00B9B856 /* btQuantization.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B31AF9AA1900B9B856 /* btQuantization.h */; }; + B6CAB3391AF9AA1A00B9B856 /* btTriangleShapeEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0B41AF9AA1900B9B856 /* btTriangleShapeEx.cpp */; }; + B6CAB33A1AF9AA1A00B9B856 /* btTriangleShapeEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0B41AF9AA1900B9B856 /* btTriangleShapeEx.cpp */; }; + B6CAB33B1AF9AA1A00B9B856 /* btTriangleShapeEx.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B51AF9AA1900B9B856 /* btTriangleShapeEx.h */; }; + B6CAB33C1AF9AA1A00B9B856 /* btTriangleShapeEx.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B51AF9AA1900B9B856 /* btTriangleShapeEx.h */; }; + B6CAB33D1AF9AA1A00B9B856 /* gim_array.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B61AF9AA1900B9B856 /* gim_array.h */; }; + B6CAB33E1AF9AA1A00B9B856 /* gim_array.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B61AF9AA1900B9B856 /* gim_array.h */; }; + B6CAB33F1AF9AA1A00B9B856 /* gim_basic_geometry_operations.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B71AF9AA1900B9B856 /* gim_basic_geometry_operations.h */; }; + B6CAB3401AF9AA1A00B9B856 /* gim_basic_geometry_operations.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B71AF9AA1900B9B856 /* gim_basic_geometry_operations.h */; }; + B6CAB3411AF9AA1A00B9B856 /* gim_bitset.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B81AF9AA1900B9B856 /* gim_bitset.h */; }; + B6CAB3421AF9AA1A00B9B856 /* gim_bitset.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B81AF9AA1900B9B856 /* gim_bitset.h */; }; + B6CAB3431AF9AA1A00B9B856 /* gim_box_collision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B91AF9AA1900B9B856 /* gim_box_collision.h */; }; + B6CAB3441AF9AA1A00B9B856 /* gim_box_collision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0B91AF9AA1900B9B856 /* gim_box_collision.h */; }; + B6CAB3451AF9AA1A00B9B856 /* gim_box_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0BA1AF9AA1900B9B856 /* gim_box_set.cpp */; }; + B6CAB3461AF9AA1A00B9B856 /* gim_box_set.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0BA1AF9AA1900B9B856 /* gim_box_set.cpp */; }; + B6CAB3471AF9AA1A00B9B856 /* gim_box_set.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BB1AF9AA1900B9B856 /* gim_box_set.h */; }; + B6CAB3481AF9AA1A00B9B856 /* gim_box_set.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BB1AF9AA1900B9B856 /* gim_box_set.h */; }; + B6CAB3491AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BC1AF9AA1900B9B856 /* gim_clip_polygon.h */; }; + B6CAB34A1AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BC1AF9AA1900B9B856 /* gim_clip_polygon.h */; }; + B6CAB34B1AF9AA1A00B9B856 /* gim_contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0BD1AF9AA1900B9B856 /* gim_contact.cpp */; }; + B6CAB34C1AF9AA1A00B9B856 /* gim_contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0BD1AF9AA1900B9B856 /* gim_contact.cpp */; }; + B6CAB34D1AF9AA1A00B9B856 /* gim_contact.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BE1AF9AA1900B9B856 /* gim_contact.h */; }; + B6CAB34E1AF9AA1A00B9B856 /* gim_contact.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BE1AF9AA1900B9B856 /* gim_contact.h */; }; + B6CAB34F1AF9AA1A00B9B856 /* gim_geom_types.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BF1AF9AA1900B9B856 /* gim_geom_types.h */; }; + B6CAB3501AF9AA1A00B9B856 /* gim_geom_types.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0BF1AF9AA1900B9B856 /* gim_geom_types.h */; }; + B6CAB3511AF9AA1A00B9B856 /* gim_geometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C01AF9AA1900B9B856 /* gim_geometry.h */; }; + B6CAB3521AF9AA1A00B9B856 /* gim_geometry.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C01AF9AA1900B9B856 /* gim_geometry.h */; }; + B6CAB3531AF9AA1A00B9B856 /* gim_hash_table.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C11AF9AA1900B9B856 /* gim_hash_table.h */; }; + B6CAB3541AF9AA1A00B9B856 /* gim_hash_table.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C11AF9AA1900B9B856 /* gim_hash_table.h */; }; + B6CAB3551AF9AA1A00B9B856 /* gim_linear_math.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C21AF9AA1900B9B856 /* gim_linear_math.h */; }; + B6CAB3561AF9AA1A00B9B856 /* gim_linear_math.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C21AF9AA1900B9B856 /* gim_linear_math.h */; }; + B6CAB3571AF9AA1A00B9B856 /* gim_math.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C31AF9AA1900B9B856 /* gim_math.h */; }; + B6CAB3581AF9AA1A00B9B856 /* gim_math.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C31AF9AA1900B9B856 /* gim_math.h */; }; + B6CAB3591AF9AA1A00B9B856 /* gim_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0C41AF9AA1900B9B856 /* gim_memory.cpp */; }; + B6CAB35A1AF9AA1A00B9B856 /* gim_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0C41AF9AA1900B9B856 /* gim_memory.cpp */; }; + B6CAB35B1AF9AA1A00B9B856 /* gim_memory.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C51AF9AA1900B9B856 /* gim_memory.h */; }; + B6CAB35C1AF9AA1A00B9B856 /* gim_memory.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C51AF9AA1900B9B856 /* gim_memory.h */; }; + B6CAB35D1AF9AA1A00B9B856 /* gim_radixsort.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C61AF9AA1900B9B856 /* gim_radixsort.h */; }; + B6CAB35E1AF9AA1A00B9B856 /* gim_radixsort.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C61AF9AA1900B9B856 /* gim_radixsort.h */; }; + B6CAB35F1AF9AA1A00B9B856 /* gim_tri_collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0C71AF9AA1900B9B856 /* gim_tri_collision.cpp */; }; + B6CAB3601AF9AA1A00B9B856 /* gim_tri_collision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0C71AF9AA1900B9B856 /* gim_tri_collision.cpp */; }; + B6CAB3611AF9AA1A00B9B856 /* gim_tri_collision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C81AF9AA1900B9B856 /* gim_tri_collision.h */; }; + B6CAB3621AF9AA1A00B9B856 /* gim_tri_collision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0C81AF9AA1900B9B856 /* gim_tri_collision.h */; }; + B6CAB3631AF9AA1A00B9B856 /* btContinuousConvexCollision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0CA1AF9AA1900B9B856 /* btContinuousConvexCollision.cpp */; }; + B6CAB3641AF9AA1A00B9B856 /* btContinuousConvexCollision.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0CA1AF9AA1900B9B856 /* btContinuousConvexCollision.cpp */; }; + B6CAB3651AF9AA1A00B9B856 /* btContinuousConvexCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CB1AF9AA1900B9B856 /* btContinuousConvexCollision.h */; }; + B6CAB3661AF9AA1A00B9B856 /* btContinuousConvexCollision.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CB1AF9AA1900B9B856 /* btContinuousConvexCollision.h */; }; + B6CAB3671AF9AA1A00B9B856 /* btConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0CC1AF9AA1900B9B856 /* btConvexCast.cpp */; }; + B6CAB3681AF9AA1A00B9B856 /* btConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0CC1AF9AA1900B9B856 /* btConvexCast.cpp */; }; + B6CAB3691AF9AA1A00B9B856 /* btConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CD1AF9AA1900B9B856 /* btConvexCast.h */; }; + B6CAB36A1AF9AA1A00B9B856 /* btConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CD1AF9AA1900B9B856 /* btConvexCast.h */; }; + B6CAB36B1AF9AA1A00B9B856 /* btConvexPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CE1AF9AA1900B9B856 /* btConvexPenetrationDepthSolver.h */; }; + B6CAB36C1AF9AA1A00B9B856 /* btConvexPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CE1AF9AA1900B9B856 /* btConvexPenetrationDepthSolver.h */; }; + B6CAB36D1AF9AA1A00B9B856 /* btDiscreteCollisionDetectorInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CF1AF9AA1900B9B856 /* btDiscreteCollisionDetectorInterface.h */; }; + B6CAB36E1AF9AA1A00B9B856 /* btDiscreteCollisionDetectorInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0CF1AF9AA1900B9B856 /* btDiscreteCollisionDetectorInterface.h */; }; + B6CAB36F1AF9AA1A00B9B856 /* btGjkConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D01AF9AA1900B9B856 /* btGjkConvexCast.cpp */; }; + B6CAB3701AF9AA1A00B9B856 /* btGjkConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D01AF9AA1900B9B856 /* btGjkConvexCast.cpp */; }; + B6CAB3711AF9AA1A00B9B856 /* btGjkConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D11AF9AA1900B9B856 /* btGjkConvexCast.h */; }; + B6CAB3721AF9AA1A00B9B856 /* btGjkConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D11AF9AA1900B9B856 /* btGjkConvexCast.h */; }; + B6CAB3731AF9AA1A00B9B856 /* btGjkEpa2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D21AF9AA1900B9B856 /* btGjkEpa2.cpp */; }; + B6CAB3741AF9AA1A00B9B856 /* btGjkEpa2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D21AF9AA1900B9B856 /* btGjkEpa2.cpp */; }; + B6CAB3751AF9AA1A00B9B856 /* btGjkEpa2.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D31AF9AA1900B9B856 /* btGjkEpa2.h */; }; + B6CAB3761AF9AA1A00B9B856 /* btGjkEpa2.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D31AF9AA1900B9B856 /* btGjkEpa2.h */; }; + B6CAB3771AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D41AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.cpp */; }; + B6CAB3781AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D41AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.cpp */; }; + B6CAB3791AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D51AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.h */; }; + B6CAB37A1AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D51AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.h */; }; + B6CAB37B1AF9AA1A00B9B856 /* btGjkPairDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D61AF9AA1900B9B856 /* btGjkPairDetector.cpp */; }; + B6CAB37C1AF9AA1A00B9B856 /* btGjkPairDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D61AF9AA1900B9B856 /* btGjkPairDetector.cpp */; }; + B6CAB37D1AF9AA1A00B9B856 /* btGjkPairDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D71AF9AA1900B9B856 /* btGjkPairDetector.h */; }; + B6CAB37E1AF9AA1A00B9B856 /* btGjkPairDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D71AF9AA1900B9B856 /* btGjkPairDetector.h */; }; + B6CAB37F1AF9AA1A00B9B856 /* btManifoldPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D81AF9AA1900B9B856 /* btManifoldPoint.h */; }; + B6CAB3801AF9AA1A00B9B856 /* btManifoldPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0D81AF9AA1900B9B856 /* btManifoldPoint.h */; }; + B6CAB3811AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D91AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.cpp */; }; + B6CAB3821AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0D91AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.cpp */; }; + B6CAB3831AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DA1AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.h */; }; + B6CAB3841AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DA1AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.h */; }; + B6CAB3851AF9AA1A00B9B856 /* btPersistentManifold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0DB1AF9AA1900B9B856 /* btPersistentManifold.cpp */; }; + B6CAB3861AF9AA1A00B9B856 /* btPersistentManifold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0DB1AF9AA1900B9B856 /* btPersistentManifold.cpp */; }; + B6CAB3871AF9AA1A00B9B856 /* btPersistentManifold.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DC1AF9AA1900B9B856 /* btPersistentManifold.h */; }; + B6CAB3881AF9AA1A00B9B856 /* btPersistentManifold.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DC1AF9AA1900B9B856 /* btPersistentManifold.h */; }; + B6CAB3891AF9AA1A00B9B856 /* btPointCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DD1AF9AA1900B9B856 /* btPointCollector.h */; }; + B6CAB38A1AF9AA1A00B9B856 /* btPointCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DD1AF9AA1900B9B856 /* btPointCollector.h */; }; + B6CAB38B1AF9AA1A00B9B856 /* btPolyhedralContactClipping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0DE1AF9AA1900B9B856 /* btPolyhedralContactClipping.cpp */; }; + B6CAB38C1AF9AA1A00B9B856 /* btPolyhedralContactClipping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0DE1AF9AA1900B9B856 /* btPolyhedralContactClipping.cpp */; }; + B6CAB38D1AF9AA1A00B9B856 /* btPolyhedralContactClipping.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DF1AF9AA1900B9B856 /* btPolyhedralContactClipping.h */; }; + B6CAB38E1AF9AA1A00B9B856 /* btPolyhedralContactClipping.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0DF1AF9AA1900B9B856 /* btPolyhedralContactClipping.h */; }; + B6CAB38F1AF9AA1A00B9B856 /* btRaycastCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E01AF9AA1900B9B856 /* btRaycastCallback.cpp */; }; + B6CAB3901AF9AA1A00B9B856 /* btRaycastCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E01AF9AA1900B9B856 /* btRaycastCallback.cpp */; }; + B6CAB3911AF9AA1A00B9B856 /* btRaycastCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E11AF9AA1900B9B856 /* btRaycastCallback.h */; }; + B6CAB3921AF9AA1A00B9B856 /* btRaycastCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E11AF9AA1900B9B856 /* btRaycastCallback.h */; }; + B6CAB3931AF9AA1A00B9B856 /* btSimplexSolverInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E21AF9AA1900B9B856 /* btSimplexSolverInterface.h */; }; + B6CAB3941AF9AA1A00B9B856 /* btSimplexSolverInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E21AF9AA1900B9B856 /* btSimplexSolverInterface.h */; }; + B6CAB3951AF9AA1A00B9B856 /* btSubSimplexConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E31AF9AA1900B9B856 /* btSubSimplexConvexCast.cpp */; }; + B6CAB3961AF9AA1A00B9B856 /* btSubSimplexConvexCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E31AF9AA1900B9B856 /* btSubSimplexConvexCast.cpp */; }; + B6CAB3971AF9AA1A00B9B856 /* btSubSimplexConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E41AF9AA1900B9B856 /* btSubSimplexConvexCast.h */; }; + B6CAB3981AF9AA1A00B9B856 /* btSubSimplexConvexCast.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E41AF9AA1900B9B856 /* btSubSimplexConvexCast.h */; }; + B6CAB3991AF9AA1A00B9B856 /* btVoronoiSimplexSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E51AF9AA1900B9B856 /* btVoronoiSimplexSolver.cpp */; }; + B6CAB39A1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0E51AF9AA1900B9B856 /* btVoronoiSimplexSolver.cpp */; }; + B6CAB39B1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E61AF9AA1900B9B856 /* btVoronoiSimplexSolver.h */; }; + B6CAB39C1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E61AF9AA1900B9B856 /* btVoronoiSimplexSolver.h */; }; + B6CAB39D1AF9AA1A00B9B856 /* btCharacterControllerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E91AF9AA1900B9B856 /* btCharacterControllerInterface.h */; }; + B6CAB39E1AF9AA1A00B9B856 /* btCharacterControllerInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0E91AF9AA1900B9B856 /* btCharacterControllerInterface.h */; }; + B6CAB39F1AF9AA1A00B9B856 /* btKinematicCharacterController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0EA1AF9AA1900B9B856 /* btKinematicCharacterController.cpp */; }; + B6CAB3A01AF9AA1A00B9B856 /* btKinematicCharacterController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0EA1AF9AA1900B9B856 /* btKinematicCharacterController.cpp */; }; + B6CAB3A11AF9AA1A00B9B856 /* btKinematicCharacterController.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EB1AF9AA1900B9B856 /* btKinematicCharacterController.h */; }; + B6CAB3A21AF9AA1A00B9B856 /* btKinematicCharacterController.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EB1AF9AA1900B9B856 /* btKinematicCharacterController.h */; }; + B6CAB3A31AF9AA1A00B9B856 /* btConeTwistConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0ED1AF9AA1900B9B856 /* btConeTwistConstraint.cpp */; }; + B6CAB3A41AF9AA1A00B9B856 /* btConeTwistConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0ED1AF9AA1900B9B856 /* btConeTwistConstraint.cpp */; }; + B6CAB3A51AF9AA1A00B9B856 /* btConeTwistConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EE1AF9AA1900B9B856 /* btConeTwistConstraint.h */; }; + B6CAB3A61AF9AA1A00B9B856 /* btConeTwistConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EE1AF9AA1900B9B856 /* btConeTwistConstraint.h */; }; + B6CAB3A71AF9AA1A00B9B856 /* btConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EF1AF9AA1900B9B856 /* btConstraintSolver.h */; }; + B6CAB3A81AF9AA1A00B9B856 /* btConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0EF1AF9AA1900B9B856 /* btConstraintSolver.h */; }; + B6CAB3A91AF9AA1A00B9B856 /* btContactConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F01AF9AA1900B9B856 /* btContactConstraint.cpp */; }; + B6CAB3AA1AF9AA1A00B9B856 /* btContactConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F01AF9AA1900B9B856 /* btContactConstraint.cpp */; }; + B6CAB3AB1AF9AA1A00B9B856 /* btContactConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F11AF9AA1900B9B856 /* btContactConstraint.h */; }; + B6CAB3AC1AF9AA1A00B9B856 /* btContactConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F11AF9AA1900B9B856 /* btContactConstraint.h */; }; + B6CAB3AD1AF9AA1A00B9B856 /* btContactSolverInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F21AF9AA1900B9B856 /* btContactSolverInfo.h */; }; + B6CAB3AE1AF9AA1A00B9B856 /* btContactSolverInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F21AF9AA1900B9B856 /* btContactSolverInfo.h */; }; + B6CAB3AF1AF9AA1A00B9B856 /* btFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F31AF9AA1900B9B856 /* btFixedConstraint.cpp */; }; + B6CAB3B01AF9AA1A00B9B856 /* btFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F31AF9AA1900B9B856 /* btFixedConstraint.cpp */; }; + B6CAB3B11AF9AA1A00B9B856 /* btFixedConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F41AF9AA1900B9B856 /* btFixedConstraint.h */; }; + B6CAB3B21AF9AA1A00B9B856 /* btFixedConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F41AF9AA1900B9B856 /* btFixedConstraint.h */; }; + B6CAB3B31AF9AA1A00B9B856 /* btGearConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F51AF9AA1900B9B856 /* btGearConstraint.cpp */; }; + B6CAB3B41AF9AA1A00B9B856 /* btGearConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F51AF9AA1900B9B856 /* btGearConstraint.cpp */; }; + B6CAB3B51AF9AA1A00B9B856 /* btGearConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F61AF9AA1900B9B856 /* btGearConstraint.h */; }; + B6CAB3B61AF9AA1A00B9B856 /* btGearConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F61AF9AA1900B9B856 /* btGearConstraint.h */; }; + B6CAB3B71AF9AA1A00B9B856 /* btGeneric6DofConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F71AF9AA1900B9B856 /* btGeneric6DofConstraint.cpp */; }; + B6CAB3B81AF9AA1A00B9B856 /* btGeneric6DofConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F71AF9AA1900B9B856 /* btGeneric6DofConstraint.cpp */; }; + B6CAB3B91AF9AA1A00B9B856 /* btGeneric6DofConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F81AF9AA1900B9B856 /* btGeneric6DofConstraint.h */; }; + B6CAB3BA1AF9AA1A00B9B856 /* btGeneric6DofConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0F81AF9AA1900B9B856 /* btGeneric6DofConstraint.h */; }; + B6CAB3BB1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F91AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.cpp */; }; + B6CAB3BC1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0F91AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.cpp */; }; + B6CAB3BD1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FA1AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.h */; }; + B6CAB3BE1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FA1AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.h */; }; + B6CAB3BF1AF9AA1A00B9B856 /* btHinge2Constraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0FB1AF9AA1900B9B856 /* btHinge2Constraint.cpp */; }; + B6CAB3C01AF9AA1A00B9B856 /* btHinge2Constraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0FB1AF9AA1900B9B856 /* btHinge2Constraint.cpp */; }; + B6CAB3C11AF9AA1A00B9B856 /* btHinge2Constraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FC1AF9AA1900B9B856 /* btHinge2Constraint.h */; }; + B6CAB3C21AF9AA1A00B9B856 /* btHinge2Constraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FC1AF9AA1900B9B856 /* btHinge2Constraint.h */; }; + B6CAB3C31AF9AA1A00B9B856 /* btHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0FD1AF9AA1900B9B856 /* btHingeConstraint.cpp */; }; + B6CAB3C41AF9AA1A00B9B856 /* btHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB0FD1AF9AA1900B9B856 /* btHingeConstraint.cpp */; }; + B6CAB3C51AF9AA1A00B9B856 /* btHingeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FE1AF9AA1900B9B856 /* btHingeConstraint.h */; }; + B6CAB3C61AF9AA1A00B9B856 /* btHingeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FE1AF9AA1900B9B856 /* btHingeConstraint.h */; }; + B6CAB3C71AF9AA1A00B9B856 /* btJacobianEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FF1AF9AA1900B9B856 /* btJacobianEntry.h */; }; + B6CAB3C81AF9AA1A00B9B856 /* btJacobianEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB0FF1AF9AA1900B9B856 /* btJacobianEntry.h */; }; + B6CAB3C91AF9AA1A00B9B856 /* btPoint2PointConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1001AF9AA1900B9B856 /* btPoint2PointConstraint.cpp */; }; + B6CAB3CA1AF9AA1A00B9B856 /* btPoint2PointConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1001AF9AA1900B9B856 /* btPoint2PointConstraint.cpp */; }; + B6CAB3CB1AF9AA1A00B9B856 /* btPoint2PointConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1011AF9AA1900B9B856 /* btPoint2PointConstraint.h */; }; + B6CAB3CC1AF9AA1A00B9B856 /* btPoint2PointConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1011AF9AA1900B9B856 /* btPoint2PointConstraint.h */; }; + B6CAB3CD1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1021AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.cpp */; }; + B6CAB3CE1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1021AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.cpp */; }; + B6CAB3CF1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1031AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.h */; }; + B6CAB3D01AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1031AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.h */; }; + B6CAB3D11AF9AA1A00B9B856 /* btSliderConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1041AF9AA1900B9B856 /* btSliderConstraint.cpp */; }; + B6CAB3D21AF9AA1A00B9B856 /* btSliderConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1041AF9AA1900B9B856 /* btSliderConstraint.cpp */; }; + B6CAB3D31AF9AA1A00B9B856 /* btSliderConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1051AF9AA1900B9B856 /* btSliderConstraint.h */; }; + B6CAB3D41AF9AA1A00B9B856 /* btSliderConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1051AF9AA1900B9B856 /* btSliderConstraint.h */; }; + B6CAB3D51AF9AA1A00B9B856 /* btSolve2LinearConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1061AF9AA1900B9B856 /* btSolve2LinearConstraint.cpp */; }; + B6CAB3D61AF9AA1A00B9B856 /* btSolve2LinearConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1061AF9AA1900B9B856 /* btSolve2LinearConstraint.cpp */; }; + B6CAB3D71AF9AA1A00B9B856 /* btSolve2LinearConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1071AF9AA1900B9B856 /* btSolve2LinearConstraint.h */; }; + B6CAB3D81AF9AA1A00B9B856 /* btSolve2LinearConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1071AF9AA1900B9B856 /* btSolve2LinearConstraint.h */; }; + B6CAB3D91AF9AA1A00B9B856 /* btSolverBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1081AF9AA1900B9B856 /* btSolverBody.h */; }; + B6CAB3DA1AF9AA1A00B9B856 /* btSolverBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1081AF9AA1900B9B856 /* btSolverBody.h */; }; + B6CAB3DB1AF9AA1A00B9B856 /* btSolverConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1091AF9AA1900B9B856 /* btSolverConstraint.h */; }; + B6CAB3DC1AF9AA1A00B9B856 /* btSolverConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1091AF9AA1900B9B856 /* btSolverConstraint.h */; }; + B6CAB3DD1AF9AA1A00B9B856 /* btTypedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB10A1AF9AA1900B9B856 /* btTypedConstraint.cpp */; }; + B6CAB3DE1AF9AA1A00B9B856 /* btTypedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB10A1AF9AA1900B9B856 /* btTypedConstraint.cpp */; }; + B6CAB3DF1AF9AA1A00B9B856 /* btTypedConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10B1AF9AA1900B9B856 /* btTypedConstraint.h */; }; + B6CAB3E01AF9AA1A00B9B856 /* btTypedConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10B1AF9AA1900B9B856 /* btTypedConstraint.h */; }; + B6CAB3E11AF9AA1A00B9B856 /* btUniversalConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB10C1AF9AA1900B9B856 /* btUniversalConstraint.cpp */; }; + B6CAB3E21AF9AA1A00B9B856 /* btUniversalConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB10C1AF9AA1900B9B856 /* btUniversalConstraint.cpp */; }; + B6CAB3E31AF9AA1A00B9B856 /* btUniversalConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10D1AF9AA1900B9B856 /* btUniversalConstraint.h */; }; + B6CAB3E41AF9AA1A00B9B856 /* btUniversalConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10D1AF9AA1900B9B856 /* btUniversalConstraint.h */; }; + B6CAB3E51AF9AA1A00B9B856 /* btActionInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10F1AF9AA1900B9B856 /* btActionInterface.h */; }; + B6CAB3E61AF9AA1A00B9B856 /* btActionInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB10F1AF9AA1900B9B856 /* btActionInterface.h */; }; + B6CAB3E71AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1101AF9AA1900B9B856 /* btDiscreteDynamicsWorld.cpp */; }; + B6CAB3E81AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1101AF9AA1900B9B856 /* btDiscreteDynamicsWorld.cpp */; }; + B6CAB3E91AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1111AF9AA1900B9B856 /* btDiscreteDynamicsWorld.h */; }; + B6CAB3EA1AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1111AF9AA1900B9B856 /* btDiscreteDynamicsWorld.h */; }; + B6CAB3EB1AF9AA1A00B9B856 /* btDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1121AF9AA1900B9B856 /* btDynamicsWorld.h */; }; + B6CAB3EC1AF9AA1A00B9B856 /* btDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1121AF9AA1900B9B856 /* btDynamicsWorld.h */; }; + B6CAB3ED1AF9AA1A00B9B856 /* btRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1131AF9AA1900B9B856 /* btRigidBody.cpp */; }; + B6CAB3EE1AF9AA1A00B9B856 /* btRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1131AF9AA1900B9B856 /* btRigidBody.cpp */; }; + B6CAB3EF1AF9AA1A00B9B856 /* btRigidBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1141AF9AA1900B9B856 /* btRigidBody.h */; }; + B6CAB3F01AF9AA1A00B9B856 /* btRigidBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1141AF9AA1900B9B856 /* btRigidBody.h */; }; + B6CAB3F11AF9AA1A00B9B856 /* btSimpleDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1151AF9AA1900B9B856 /* btSimpleDynamicsWorld.cpp */; }; + B6CAB3F21AF9AA1A00B9B856 /* btSimpleDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1151AF9AA1900B9B856 /* btSimpleDynamicsWorld.cpp */; }; + B6CAB3F31AF9AA1A00B9B856 /* btSimpleDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1161AF9AA1900B9B856 /* btSimpleDynamicsWorld.h */; }; + B6CAB3F41AF9AA1A00B9B856 /* btSimpleDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1161AF9AA1900B9B856 /* btSimpleDynamicsWorld.h */; }; + B6CAB3F51AF9AA1A00B9B856 /* Bullet-C-API.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1171AF9AA1900B9B856 /* Bullet-C-API.cpp */; }; + B6CAB3F61AF9AA1A00B9B856 /* Bullet-C-API.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1171AF9AA1900B9B856 /* Bullet-C-API.cpp */; }; + B6CAB3F71AF9AA1A00B9B856 /* btMultiBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1191AF9AA1900B9B856 /* btMultiBody.cpp */; }; + B6CAB3F81AF9AA1A00B9B856 /* btMultiBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1191AF9AA1900B9B856 /* btMultiBody.cpp */; }; + B6CAB3F91AF9AA1A00B9B856 /* btMultiBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11A1AF9AA1900B9B856 /* btMultiBody.h */; }; + B6CAB3FA1AF9AA1A00B9B856 /* btMultiBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11A1AF9AA1900B9B856 /* btMultiBody.h */; }; + B6CAB3FB1AF9AA1A00B9B856 /* btMultiBodyConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11B1AF9AA1900B9B856 /* btMultiBodyConstraint.cpp */; }; + B6CAB3FC1AF9AA1A00B9B856 /* btMultiBodyConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11B1AF9AA1900B9B856 /* btMultiBodyConstraint.cpp */; }; + B6CAB3FD1AF9AA1A00B9B856 /* btMultiBodyConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11C1AF9AA1900B9B856 /* btMultiBodyConstraint.h */; }; + B6CAB3FE1AF9AA1A00B9B856 /* btMultiBodyConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11C1AF9AA1900B9B856 /* btMultiBodyConstraint.h */; }; + B6CAB3FF1AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11D1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.cpp */; }; + B6CAB4001AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11D1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.cpp */; }; + B6CAB4011AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11E1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.h */; }; + B6CAB4021AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB11E1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.h */; }; + B6CAB4031AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11F1AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.cpp */; }; + B6CAB4041AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB11F1AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.cpp */; }; + B6CAB4051AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1201AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.h */; }; + B6CAB4061AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1201AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.h */; }; + B6CAB4071AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1211AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.cpp */; }; + B6CAB4081AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1211AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.cpp */; }; + B6CAB4091AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1221AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.h */; }; + B6CAB40A1AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1221AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.h */; }; + B6CAB40B1AF9AA1A00B9B856 /* btMultiBodyJointMotor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1231AF9AA1900B9B856 /* btMultiBodyJointMotor.cpp */; }; + B6CAB40C1AF9AA1A00B9B856 /* btMultiBodyJointMotor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1231AF9AA1900B9B856 /* btMultiBodyJointMotor.cpp */; }; + B6CAB40D1AF9AA1A00B9B856 /* btMultiBodyJointMotor.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1241AF9AA1900B9B856 /* btMultiBodyJointMotor.h */; }; + B6CAB40E1AF9AA1A00B9B856 /* btMultiBodyJointMotor.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1241AF9AA1900B9B856 /* btMultiBodyJointMotor.h */; }; + B6CAB40F1AF9AA1A00B9B856 /* btMultiBodyLink.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1251AF9AA1900B9B856 /* btMultiBodyLink.h */; }; + B6CAB4101AF9AA1A00B9B856 /* btMultiBodyLink.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1251AF9AA1900B9B856 /* btMultiBodyLink.h */; }; + B6CAB4111AF9AA1A00B9B856 /* btMultiBodyLinkCollider.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1261AF9AA1900B9B856 /* btMultiBodyLinkCollider.h */; }; + B6CAB4121AF9AA1A00B9B856 /* btMultiBodyLinkCollider.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1261AF9AA1900B9B856 /* btMultiBodyLinkCollider.h */; }; + B6CAB4131AF9AA1A00B9B856 /* btMultiBodyPoint2Point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1271AF9AA1900B9B856 /* btMultiBodyPoint2Point.cpp */; }; + B6CAB4141AF9AA1A00B9B856 /* btMultiBodyPoint2Point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1271AF9AA1900B9B856 /* btMultiBodyPoint2Point.cpp */; }; + B6CAB4151AF9AA1A00B9B856 /* btMultiBodyPoint2Point.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1281AF9AA1900B9B856 /* btMultiBodyPoint2Point.h */; }; + B6CAB4161AF9AA1A00B9B856 /* btMultiBodyPoint2Point.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1281AF9AA1900B9B856 /* btMultiBodyPoint2Point.h */; }; + B6CAB4171AF9AA1A00B9B856 /* btMultiBodySolverConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1291AF9AA1900B9B856 /* btMultiBodySolverConstraint.h */; }; + B6CAB4181AF9AA1A00B9B856 /* btMultiBodySolverConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1291AF9AA1900B9B856 /* btMultiBodySolverConstraint.h */; }; + B6CAB4191AF9AA1A00B9B856 /* btDantzigLCP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB12B1AF9AA1900B9B856 /* btDantzigLCP.cpp */; }; + B6CAB41A1AF9AA1A00B9B856 /* btDantzigLCP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB12B1AF9AA1900B9B856 /* btDantzigLCP.cpp */; }; + B6CAB41B1AF9AA1A00B9B856 /* btDantzigLCP.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12C1AF9AA1900B9B856 /* btDantzigLCP.h */; }; + B6CAB41C1AF9AA1A00B9B856 /* btDantzigLCP.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12C1AF9AA1900B9B856 /* btDantzigLCP.h */; }; + B6CAB41D1AF9AA1A00B9B856 /* btDantzigSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12D1AF9AA1900B9B856 /* btDantzigSolver.h */; }; + B6CAB41E1AF9AA1A00B9B856 /* btDantzigSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12D1AF9AA1900B9B856 /* btDantzigSolver.h */; }; + B6CAB41F1AF9AA1A00B9B856 /* btMLCPSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB12E1AF9AA1900B9B856 /* btMLCPSolver.cpp */; }; + B6CAB4201AF9AA1A00B9B856 /* btMLCPSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB12E1AF9AA1900B9B856 /* btMLCPSolver.cpp */; }; + B6CAB4211AF9AA1A00B9B856 /* btMLCPSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12F1AF9AA1900B9B856 /* btMLCPSolver.h */; }; + B6CAB4221AF9AA1A00B9B856 /* btMLCPSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB12F1AF9AA1900B9B856 /* btMLCPSolver.h */; }; + B6CAB4231AF9AA1A00B9B856 /* btMLCPSolverInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1301AF9AA1900B9B856 /* btMLCPSolverInterface.h */; }; + B6CAB4241AF9AA1A00B9B856 /* btMLCPSolverInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1301AF9AA1900B9B856 /* btMLCPSolverInterface.h */; }; + B6CAB4251AF9AA1A00B9B856 /* btPATHSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1311AF9AA1900B9B856 /* btPATHSolver.h */; }; + B6CAB4261AF9AA1A00B9B856 /* btPATHSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1311AF9AA1900B9B856 /* btPATHSolver.h */; }; + B6CAB4271AF9AA1A00B9B856 /* btSolveProjectedGaussSeidel.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1321AF9AA1900B9B856 /* btSolveProjectedGaussSeidel.h */; }; + B6CAB4281AF9AA1A00B9B856 /* btSolveProjectedGaussSeidel.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1321AF9AA1900B9B856 /* btSolveProjectedGaussSeidel.h */; }; + B6CAB4291AF9AA1A00B9B856 /* btRaycastVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1341AF9AA1900B9B856 /* btRaycastVehicle.cpp */; }; + B6CAB42A1AF9AA1A00B9B856 /* btRaycastVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1341AF9AA1900B9B856 /* btRaycastVehicle.cpp */; }; + B6CAB42B1AF9AA1A00B9B856 /* btRaycastVehicle.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1351AF9AA1900B9B856 /* btRaycastVehicle.h */; }; + B6CAB42C1AF9AA1A00B9B856 /* btRaycastVehicle.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1351AF9AA1900B9B856 /* btRaycastVehicle.h */; }; + B6CAB42D1AF9AA1A00B9B856 /* btVehicleRaycaster.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1361AF9AA1900B9B856 /* btVehicleRaycaster.h */; }; + B6CAB42E1AF9AA1A00B9B856 /* btVehicleRaycaster.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1361AF9AA1900B9B856 /* btVehicleRaycaster.h */; }; + B6CAB42F1AF9AA1A00B9B856 /* btWheelInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1371AF9AA1900B9B856 /* btWheelInfo.cpp */; }; + B6CAB4301AF9AA1A00B9B856 /* btWheelInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1371AF9AA1900B9B856 /* btWheelInfo.cpp */; }; + B6CAB4311AF9AA1A00B9B856 /* btWheelInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1381AF9AA1900B9B856 /* btWheelInfo.h */; }; + B6CAB4321AF9AA1A00B9B856 /* btWheelInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1381AF9AA1900B9B856 /* btWheelInfo.h */; }; + B6CAB4331AF9AA1A00B9B856 /* btGpu3DGridBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB13A1AF9AA1900B9B856 /* btGpu3DGridBroadphase.cpp */; }; + B6CAB4341AF9AA1A00B9B856 /* btGpu3DGridBroadphase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB13A1AF9AA1900B9B856 /* btGpu3DGridBroadphase.cpp */; }; + B6CAB4351AF9AA1A00B9B856 /* btGpu3DGridBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13B1AF9AA1900B9B856 /* btGpu3DGridBroadphase.h */; }; + B6CAB4361AF9AA1A00B9B856 /* btGpu3DGridBroadphase.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13B1AF9AA1900B9B856 /* btGpu3DGridBroadphase.h */; }; + B6CAB4371AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13C1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedCode.h */; }; + B6CAB4381AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13C1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedCode.h */; }; + B6CAB4391AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13D1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedDefs.h */; }; + B6CAB43A1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13D1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedDefs.h */; }; + B6CAB43B1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13E1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedTypes.h */; }; + B6CAB43C1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13E1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedTypes.h */; }; + B6CAB43D1AF9AA1A00B9B856 /* btGpuDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13F1AF9AA1900B9B856 /* btGpuDefines.h */; }; + B6CAB43E1AF9AA1A00B9B856 /* btGpuDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB13F1AF9AA1900B9B856 /* btGpuDefines.h */; }; + B6CAB43F1AF9AA1A00B9B856 /* btGpuUtilsSharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1401AF9AA1900B9B856 /* btGpuUtilsSharedCode.h */; }; + B6CAB4401AF9AA1A00B9B856 /* btGpuUtilsSharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1401AF9AA1900B9B856 /* btGpuUtilsSharedCode.h */; }; + B6CAB4411AF9AA1A00B9B856 /* btGpuUtilsSharedDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1411AF9AA1900B9B856 /* btGpuUtilsSharedDefs.h */; }; + B6CAB4421AF9AA1A00B9B856 /* btGpuUtilsSharedDefs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1411AF9AA1900B9B856 /* btGpuUtilsSharedDefs.h */; }; + B6CAB4431AF9AA1A00B9B856 /* btParallelConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1421AF9AA1900B9B856 /* btParallelConstraintSolver.cpp */; }; + B6CAB4441AF9AA1A00B9B856 /* btParallelConstraintSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1421AF9AA1900B9B856 /* btParallelConstraintSolver.cpp */; }; + B6CAB4451AF9AA1A00B9B856 /* btParallelConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1431AF9AA1900B9B856 /* btParallelConstraintSolver.h */; }; + B6CAB4461AF9AA1A00B9B856 /* btParallelConstraintSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1431AF9AA1900B9B856 /* btParallelConstraintSolver.h */; }; + B6CAB4471AF9AA1A00B9B856 /* btThreadSupportInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1441AF9AA1900B9B856 /* btThreadSupportInterface.cpp */; }; + B6CAB4481AF9AA1A00B9B856 /* btThreadSupportInterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1441AF9AA1900B9B856 /* btThreadSupportInterface.cpp */; }; + B6CAB4491AF9AA1A00B9B856 /* btThreadSupportInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1451AF9AA1900B9B856 /* btThreadSupportInterface.h */; }; + B6CAB44A1AF9AA1A00B9B856 /* btThreadSupportInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1451AF9AA1900B9B856 /* btThreadSupportInterface.h */; }; + B6CAB49B1AF9AA1A00B9B856 /* HeapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1841AF9AA1A00B9B856 /* HeapManager.h */; }; + B6CAB49C1AF9AA1A00B9B856 /* HeapManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1841AF9AA1A00B9B856 /* HeapManager.h */; }; + B6CAB49D1AF9AA1A00B9B856 /* PlatformDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1851AF9AA1A00B9B856 /* PlatformDefinitions.h */; }; + B6CAB49E1AF9AA1A00B9B856 /* PlatformDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1851AF9AA1A00B9B856 /* PlatformDefinitions.h */; }; + B6CAB49F1AF9AA1A00B9B856 /* PosixThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1861AF9AA1A00B9B856 /* PosixThreadSupport.cpp */; }; + B6CAB4A01AF9AA1A00B9B856 /* PosixThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1861AF9AA1A00B9B856 /* PosixThreadSupport.cpp */; }; + B6CAB4A11AF9AA1A00B9B856 /* PosixThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1871AF9AA1A00B9B856 /* PosixThreadSupport.h */; }; + B6CAB4A21AF9AA1A00B9B856 /* PosixThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1871AF9AA1A00B9B856 /* PosixThreadSupport.h */; }; + B6CAB4A31AF9AA1A00B9B856 /* PpuAddressSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1881AF9AA1A00B9B856 /* PpuAddressSpace.h */; }; + B6CAB4A41AF9AA1A00B9B856 /* PpuAddressSpace.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1881AF9AA1A00B9B856 /* PpuAddressSpace.h */; }; + B6CAB4A51AF9AA1A00B9B856 /* SequentialThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1891AF9AA1A00B9B856 /* SequentialThreadSupport.cpp */; }; + B6CAB4A61AF9AA1A00B9B856 /* SequentialThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1891AF9AA1A00B9B856 /* SequentialThreadSupport.cpp */; }; + B6CAB4A71AF9AA1A00B9B856 /* SequentialThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18A1AF9AA1A00B9B856 /* SequentialThreadSupport.h */; }; + B6CAB4A81AF9AA1A00B9B856 /* SequentialThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18A1AF9AA1A00B9B856 /* SequentialThreadSupport.h */; }; + B6CAB4A91AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18B1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp */; }; + B6CAB4AA1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18B1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp */; }; + B6CAB4AB1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18C1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h */; }; + B6CAB4AC1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18C1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h */; }; + B6CAB4AD1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18D1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp */; }; + B6CAB4AE1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18D1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp */; }; + B6CAB4AF1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18E1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h */; }; + B6CAB4B01AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB18E1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h */; }; + B6CAB4B11AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18F1AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp */; }; + B6CAB4B21AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB18F1AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp */; }; + B6CAB4B31AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1901AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h */; }; + B6CAB4B41AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1901AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h */; }; + B6CAB4B51AF9AA1A00B9B856 /* SpuDoubleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1911AF9AA1A00B9B856 /* SpuDoubleBuffer.h */; }; + B6CAB4B61AF9AA1A00B9B856 /* SpuDoubleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1911AF9AA1A00B9B856 /* SpuDoubleBuffer.h */; }; + B6CAB4B71AF9AA1A00B9B856 /* SpuFakeDma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1921AF9AA1A00B9B856 /* SpuFakeDma.cpp */; }; + B6CAB4B81AF9AA1A00B9B856 /* SpuFakeDma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1921AF9AA1A00B9B856 /* SpuFakeDma.cpp */; }; + B6CAB4B91AF9AA1A00B9B856 /* SpuFakeDma.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1931AF9AA1A00B9B856 /* SpuFakeDma.h */; }; + B6CAB4BA1AF9AA1A00B9B856 /* SpuFakeDma.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1931AF9AA1A00B9B856 /* SpuFakeDma.h */; }; + B6CAB4BB1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1941AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp */; }; + B6CAB4BC1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1941AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp */; }; + B6CAB4BD1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1951AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h */; }; + B6CAB4BE1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1951AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h */; }; + B6CAB4BF1AF9AA1A00B9B856 /* SpuLibspe2Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1961AF9AA1A00B9B856 /* SpuLibspe2Support.cpp */; }; + B6CAB4C01AF9AA1A00B9B856 /* SpuLibspe2Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1961AF9AA1A00B9B856 /* SpuLibspe2Support.cpp */; }; + B6CAB4C11AF9AA1A00B9B856 /* SpuLibspe2Support.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1971AF9AA1A00B9B856 /* SpuLibspe2Support.h */; }; + B6CAB4C21AF9AA1A00B9B856 /* SpuLibspe2Support.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1971AF9AA1A00B9B856 /* SpuLibspe2Support.h */; }; + B6CAB4C31AF9AA1A00B9B856 /* Box.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1991AF9AA1A00B9B856 /* Box.h */; }; + B6CAB4C41AF9AA1A00B9B856 /* Box.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1991AF9AA1A00B9B856 /* Box.h */; }; + B6CAB4C51AF9AA1A00B9B856 /* boxBoxDistance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19A1AF9AA1A00B9B856 /* boxBoxDistance.cpp */; }; + B6CAB4C61AF9AA1A00B9B856 /* boxBoxDistance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19A1AF9AA1A00B9B856 /* boxBoxDistance.cpp */; }; + B6CAB4C71AF9AA1A00B9B856 /* boxBoxDistance.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19B1AF9AA1A00B9B856 /* boxBoxDistance.h */; }; + B6CAB4C81AF9AA1A00B9B856 /* boxBoxDistance.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19B1AF9AA1A00B9B856 /* boxBoxDistance.h */; }; + B6CAB4C91AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19C1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp */; }; + B6CAB4CA1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19C1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp */; }; + B6CAB4CB1AF9AA1A00B9B856 /* SpuCollisionShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19D1AF9AA1A00B9B856 /* SpuCollisionShapes.h */; }; + B6CAB4CC1AF9AA1A00B9B856 /* SpuCollisionShapes.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19D1AF9AA1A00B9B856 /* SpuCollisionShapes.h */; }; + B6CAB4CD1AF9AA1A00B9B856 /* SpuContactResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19E1AF9AA1A00B9B856 /* SpuContactResult.cpp */; }; + B6CAB4CE1AF9AA1A00B9B856 /* SpuContactResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB19E1AF9AA1A00B9B856 /* SpuContactResult.cpp */; }; + B6CAB4CF1AF9AA1A00B9B856 /* SpuContactResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19F1AF9AA1A00B9B856 /* SpuContactResult.h */; }; + B6CAB4D01AF9AA1A00B9B856 /* SpuContactResult.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB19F1AF9AA1A00B9B856 /* SpuContactResult.h */; }; + B6CAB4D11AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A01AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h */; }; + B6CAB4D21AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A01AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h */; }; + B6CAB4D31AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A11AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp */; }; + B6CAB4D41AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A11AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp */; }; + B6CAB4D51AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A21AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h */; }; + B6CAB4D61AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A21AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h */; }; + B6CAB4D71AF9AA1A00B9B856 /* SpuLocalSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A31AF9AA1A00B9B856 /* SpuLocalSupport.h */; }; + B6CAB4D81AF9AA1A00B9B856 /* SpuLocalSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A31AF9AA1A00B9B856 /* SpuLocalSupport.h */; }; + B6CAB4D91AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A41AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp */; }; + B6CAB4DA1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A41AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp */; }; + B6CAB4DB1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A51AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h */; }; + B6CAB4DC1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A51AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h */; }; + B6CAB4DD1AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A61AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h */; }; + B6CAB4DE1AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A61AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h */; }; + B6CAB4DF1AF9AA1A00B9B856 /* SpuSampleTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A81AF9AA1A00B9B856 /* SpuSampleTask.cpp */; }; + B6CAB4E01AF9AA1A00B9B856 /* SpuSampleTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1A81AF9AA1A00B9B856 /* SpuSampleTask.cpp */; }; + B6CAB4E11AF9AA1A00B9B856 /* SpuSampleTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A91AF9AA1A00B9B856 /* SpuSampleTask.h */; }; + B6CAB4E21AF9AA1A00B9B856 /* SpuSampleTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1A91AF9AA1A00B9B856 /* SpuSampleTask.h */; }; + B6CAB4E31AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1AA1AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp */; }; + B6CAB4E41AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1AA1AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp */; }; + B6CAB4E51AF9AA1A00B9B856 /* SpuSampleTaskProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AB1AF9AA1A00B9B856 /* SpuSampleTaskProcess.h */; }; + B6CAB4E61AF9AA1A00B9B856 /* SpuSampleTaskProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AB1AF9AA1A00B9B856 /* SpuSampleTaskProcess.h */; }; + B6CAB4E71AF9AA1A00B9B856 /* SpuSync.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AC1AF9AA1A00B9B856 /* SpuSync.h */; }; + B6CAB4E81AF9AA1A00B9B856 /* SpuSync.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AC1AF9AA1A00B9B856 /* SpuSync.h */; }; + B6CAB4E91AF9AA1A00B9B856 /* TrbDynBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AD1AF9AA1A00B9B856 /* TrbDynBody.h */; }; + B6CAB4EA1AF9AA1A00B9B856 /* TrbDynBody.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AD1AF9AA1A00B9B856 /* TrbDynBody.h */; }; + B6CAB4EB1AF9AA1A00B9B856 /* TrbStateVec.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AE1AF9AA1A00B9B856 /* TrbStateVec.h */; }; + B6CAB4EC1AF9AA1A00B9B856 /* TrbStateVec.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AE1AF9AA1A00B9B856 /* TrbStateVec.h */; }; + B6CAB4ED1AF9AA1A00B9B856 /* vectormath2bullet.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AF1AF9AA1A00B9B856 /* vectormath2bullet.h */; }; + B6CAB4EE1AF9AA1A00B9B856 /* vectormath2bullet.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1AF1AF9AA1A00B9B856 /* vectormath2bullet.h */; }; + B6CAB4EF1AF9AA1A00B9B856 /* Win32ThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp */; }; + B6CAB4F01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp */; }; + B6CAB4F11AF9AA1A00B9B856 /* Win32ThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B11AF9AA1A00B9B856 /* Win32ThreadSupport.h */; }; + B6CAB4F21AF9AA1A00B9B856 /* Win32ThreadSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B11AF9AA1A00B9B856 /* Win32ThreadSupport.h */; }; + B6CAB4F31AF9AA1A00B9B856 /* btAabbUtil2.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B31AF9AA1A00B9B856 /* btAabbUtil2.h */; }; + B6CAB4F41AF9AA1A00B9B856 /* btAabbUtil2.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B31AF9AA1A00B9B856 /* btAabbUtil2.h */; }; + B6CAB4F51AF9AA1A00B9B856 /* btAlignedAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B41AF9AA1A00B9B856 /* btAlignedAllocator.cpp */; }; + B6CAB4F61AF9AA1A00B9B856 /* btAlignedAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B41AF9AA1A00B9B856 /* btAlignedAllocator.cpp */; }; + B6CAB4F71AF9AA1A00B9B856 /* btAlignedAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B51AF9AA1A00B9B856 /* btAlignedAllocator.h */; }; + B6CAB4F81AF9AA1A00B9B856 /* btAlignedAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B51AF9AA1A00B9B856 /* btAlignedAllocator.h */; }; + B6CAB4F91AF9AA1A00B9B856 /* btAlignedObjectArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B61AF9AA1A00B9B856 /* btAlignedObjectArray.h */; }; + B6CAB4FA1AF9AA1A00B9B856 /* btAlignedObjectArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B61AF9AA1A00B9B856 /* btAlignedObjectArray.h */; }; + B6CAB4FB1AF9AA1A00B9B856 /* btConvexHull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B71AF9AA1A00B9B856 /* btConvexHull.cpp */; }; + B6CAB4FC1AF9AA1A00B9B856 /* btConvexHull.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B71AF9AA1A00B9B856 /* btConvexHull.cpp */; }; + B6CAB4FD1AF9AA1A00B9B856 /* btConvexHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B81AF9AA1A00B9B856 /* btConvexHull.h */; }; + B6CAB4FE1AF9AA1A00B9B856 /* btConvexHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1B81AF9AA1A00B9B856 /* btConvexHull.h */; }; + B6CAB4FF1AF9AA1A00B9B856 /* btConvexHullComputer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B91AF9AA1A00B9B856 /* btConvexHullComputer.cpp */; }; + B6CAB5001AF9AA1A00B9B856 /* btConvexHullComputer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1B91AF9AA1A00B9B856 /* btConvexHullComputer.cpp */; }; + B6CAB5011AF9AA1A00B9B856 /* btConvexHullComputer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BA1AF9AA1A00B9B856 /* btConvexHullComputer.h */; }; + B6CAB5021AF9AA1A00B9B856 /* btConvexHullComputer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BA1AF9AA1A00B9B856 /* btConvexHullComputer.h */; }; + B6CAB5031AF9AA1A00B9B856 /* btDefaultMotionState.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BB1AF9AA1A00B9B856 /* btDefaultMotionState.h */; }; + B6CAB5041AF9AA1A00B9B856 /* btDefaultMotionState.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BB1AF9AA1A00B9B856 /* btDefaultMotionState.h */; }; + B6CAB5051AF9AA1A00B9B856 /* btGeometryUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1BC1AF9AA1A00B9B856 /* btGeometryUtil.cpp */; }; + B6CAB5061AF9AA1A00B9B856 /* btGeometryUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1BC1AF9AA1A00B9B856 /* btGeometryUtil.cpp */; }; + B6CAB5071AF9AA1A00B9B856 /* btGeometryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BD1AF9AA1A00B9B856 /* btGeometryUtil.h */; }; + B6CAB5081AF9AA1A00B9B856 /* btGeometryUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BD1AF9AA1A00B9B856 /* btGeometryUtil.h */; }; + B6CAB5091AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BE1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h */; }; + B6CAB50A1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BE1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h */; }; + B6CAB50B1AF9AA1A00B9B856 /* btHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BF1AF9AA1A00B9B856 /* btHashMap.h */; }; + B6CAB50C1AF9AA1A00B9B856 /* btHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1BF1AF9AA1A00B9B856 /* btHashMap.h */; }; + B6CAB50D1AF9AA1A00B9B856 /* btIDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C01AF9AA1A00B9B856 /* btIDebugDraw.h */; }; + B6CAB50E1AF9AA1A00B9B856 /* btIDebugDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C01AF9AA1A00B9B856 /* btIDebugDraw.h */; }; + B6CAB50F1AF9AA1A00B9B856 /* btList.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C11AF9AA1A00B9B856 /* btList.h */; }; + B6CAB5101AF9AA1A00B9B856 /* btList.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C11AF9AA1A00B9B856 /* btList.h */; }; + B6CAB5111AF9AA1A00B9B856 /* btMatrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C21AF9AA1A00B9B856 /* btMatrix3x3.h */; }; + B6CAB5121AF9AA1A00B9B856 /* btMatrix3x3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C21AF9AA1A00B9B856 /* btMatrix3x3.h */; }; + B6CAB5131AF9AA1A00B9B856 /* btMatrixX.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C31AF9AA1A00B9B856 /* btMatrixX.h */; }; + B6CAB5141AF9AA1A00B9B856 /* btMatrixX.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C31AF9AA1A00B9B856 /* btMatrixX.h */; }; + B6CAB5151AF9AA1A00B9B856 /* btMinMax.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C41AF9AA1A00B9B856 /* btMinMax.h */; }; + B6CAB5161AF9AA1A00B9B856 /* btMinMax.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C41AF9AA1A00B9B856 /* btMinMax.h */; }; + B6CAB5171AF9AA1A00B9B856 /* btMotionState.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C51AF9AA1A00B9B856 /* btMotionState.h */; }; + B6CAB5181AF9AA1A00B9B856 /* btMotionState.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C51AF9AA1A00B9B856 /* btMotionState.h */; }; + B6CAB5191AF9AA1A00B9B856 /* btPolarDecomposition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1C61AF9AA1A00B9B856 /* btPolarDecomposition.cpp */; }; + B6CAB51A1AF9AA1A00B9B856 /* btPolarDecomposition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1C61AF9AA1A00B9B856 /* btPolarDecomposition.cpp */; }; + B6CAB51B1AF9AA1A00B9B856 /* btPolarDecomposition.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C71AF9AA1A00B9B856 /* btPolarDecomposition.h */; }; + B6CAB51C1AF9AA1A00B9B856 /* btPolarDecomposition.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C71AF9AA1A00B9B856 /* btPolarDecomposition.h */; }; + B6CAB51D1AF9AA1A00B9B856 /* btPoolAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C81AF9AA1A00B9B856 /* btPoolAllocator.h */; }; + B6CAB51E1AF9AA1A00B9B856 /* btPoolAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C81AF9AA1A00B9B856 /* btPoolAllocator.h */; }; + B6CAB51F1AF9AA1A00B9B856 /* btQuadWord.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C91AF9AA1A00B9B856 /* btQuadWord.h */; }; + B6CAB5201AF9AA1A00B9B856 /* btQuadWord.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1C91AF9AA1A00B9B856 /* btQuadWord.h */; }; + B6CAB5211AF9AA1A00B9B856 /* btQuaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CA1AF9AA1A00B9B856 /* btQuaternion.h */; }; + B6CAB5221AF9AA1A00B9B856 /* btQuaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CA1AF9AA1A00B9B856 /* btQuaternion.h */; }; + B6CAB5231AF9AA1A00B9B856 /* btQuickprof.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1CB1AF9AA1A00B9B856 /* btQuickprof.cpp */; }; + B6CAB5241AF9AA1A00B9B856 /* btQuickprof.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1CB1AF9AA1A00B9B856 /* btQuickprof.cpp */; }; + B6CAB5251AF9AA1A00B9B856 /* btQuickprof.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CC1AF9AA1A00B9B856 /* btQuickprof.h */; }; + B6CAB5261AF9AA1A00B9B856 /* btQuickprof.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CC1AF9AA1A00B9B856 /* btQuickprof.h */; }; + B6CAB5271AF9AA1A00B9B856 /* btRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CD1AF9AA1A00B9B856 /* btRandom.h */; }; + B6CAB5281AF9AA1A00B9B856 /* btRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CD1AF9AA1A00B9B856 /* btRandom.h */; }; + B6CAB5291AF9AA1A00B9B856 /* btScalar.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CE1AF9AA1A00B9B856 /* btScalar.h */; }; + B6CAB52A1AF9AA1A00B9B856 /* btScalar.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1CE1AF9AA1A00B9B856 /* btScalar.h */; }; + B6CAB52B1AF9AA1A00B9B856 /* btSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1CF1AF9AA1A00B9B856 /* btSerializer.cpp */; }; + B6CAB52C1AF9AA1A00B9B856 /* btSerializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1CF1AF9AA1A00B9B856 /* btSerializer.cpp */; }; + B6CAB52D1AF9AA1A00B9B856 /* btSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D01AF9AA1A00B9B856 /* btSerializer.h */; }; + B6CAB52E1AF9AA1A00B9B856 /* btSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D01AF9AA1A00B9B856 /* btSerializer.h */; }; + B6CAB52F1AF9AA1A00B9B856 /* btStackAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D11AF9AA1A00B9B856 /* btStackAlloc.h */; }; + B6CAB5301AF9AA1A00B9B856 /* btStackAlloc.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D11AF9AA1A00B9B856 /* btStackAlloc.h */; }; + B6CAB5311AF9AA1A00B9B856 /* btTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D21AF9AA1A00B9B856 /* btTransform.h */; }; + B6CAB5321AF9AA1A00B9B856 /* btTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D21AF9AA1A00B9B856 /* btTransform.h */; }; + B6CAB5331AF9AA1A00B9B856 /* btTransformUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D31AF9AA1A00B9B856 /* btTransformUtil.h */; }; + B6CAB5341AF9AA1A00B9B856 /* btTransformUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D31AF9AA1A00B9B856 /* btTransformUtil.h */; }; + B6CAB5351AF9AA1A00B9B856 /* btVector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1D41AF9AA1A00B9B856 /* btVector3.cpp */; }; + B6CAB5361AF9AA1A00B9B856 /* btVector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1D41AF9AA1A00B9B856 /* btVector3.cpp */; }; + B6CAB5371AF9AA1A00B9B856 /* btVector3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D51AF9AA1A00B9B856 /* btVector3.h */; }; + B6CAB5381AF9AA1A00B9B856 /* btVector3.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D51AF9AA1A00B9B856 /* btVector3.h */; }; + B6CAB5391AF9AA1A00B9B856 /* cl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D71AF9AA1A00B9B856 /* cl.h */; }; + B6CAB53A1AF9AA1A00B9B856 /* cl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D71AF9AA1A00B9B856 /* cl.h */; }; + B6CAB53B1AF9AA1A00B9B856 /* cl_gl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D81AF9AA1A00B9B856 /* cl_gl.h */; }; + B6CAB53C1AF9AA1A00B9B856 /* cl_gl.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D81AF9AA1A00B9B856 /* cl_gl.h */; }; + B6CAB53D1AF9AA1A00B9B856 /* cl_MiniCL_Defs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D91AF9AA1A00B9B856 /* cl_MiniCL_Defs.h */; }; + B6CAB53E1AF9AA1A00B9B856 /* cl_MiniCL_Defs.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1D91AF9AA1A00B9B856 /* cl_MiniCL_Defs.h */; }; + B6CAB53F1AF9AA1A00B9B856 /* cl_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1DA1AF9AA1A00B9B856 /* cl_platform.h */; }; + B6CAB5401AF9AA1A00B9B856 /* cl_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1DA1AF9AA1A00B9B856 /* cl_platform.h */; }; + B6CAB5411AF9AA1A00B9B856 /* MiniCL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DB1AF9AA1A00B9B856 /* MiniCL.cpp */; }; + B6CAB5421AF9AA1A00B9B856 /* MiniCL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DB1AF9AA1A00B9B856 /* MiniCL.cpp */; }; + B6CAB5431AF9AA1A00B9B856 /* MiniCLTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DD1AF9AA1A00B9B856 /* MiniCLTask.cpp */; }; + B6CAB5441AF9AA1A00B9B856 /* MiniCLTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DD1AF9AA1A00B9B856 /* MiniCLTask.cpp */; }; + B6CAB5451AF9AA1A00B9B856 /* MiniCLTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1DE1AF9AA1A00B9B856 /* MiniCLTask.h */; }; + B6CAB5461AF9AA1A00B9B856 /* MiniCLTask.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1DE1AF9AA1A00B9B856 /* MiniCLTask.h */; }; + B6CAB5471AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DF1AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp */; }; + B6CAB5481AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB1DF1AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp */; }; + B6CAB5491AF9AA1A00B9B856 /* MiniCLTaskScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1E01AF9AA1A00B9B856 /* MiniCLTaskScheduler.h */; }; + B6CAB54A1AF9AA1A00B9B856 /* MiniCLTaskScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CAB1E01AF9AA1A00B9B856 /* MiniCLTaskScheduler.h */; }; B6D38B8A1AC3AFAC00043997 /* CCSkybox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D38B861AC3AFAC00043997 /* CCSkybox.cpp */; }; B6D38B8B1AC3AFAC00043997 /* CCSkybox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6D38B861AC3AFAC00043997 /* CCSkybox.cpp */; }; B6D38B8C1AC3AFAC00043997 /* CCSkybox.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D38B871AC3AFAC00043997 /* CCSkybox.h */; }; @@ -4057,6 +4883,419 @@ B68778F51A8CA82E00643ABF /* CCParticle3DRender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCParticle3DRender.h; path = Particle3D/CCParticle3DRender.h; sourceTree = ""; }; B68778F61A8CA82E00643ABF /* CCParticleSystem3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCParticleSystem3D.cpp; path = Particle3D/CCParticleSystem3D.cpp; sourceTree = ""; }; B68778F71A8CA82E00643ABF /* CCParticleSystem3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCParticleSystem3D.h; path = Particle3D/CCParticleSystem3D.h; sourceTree = ""; }; + B6CAAFD21AF9A9E100B9B856 /* CCPhysics3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3D.cpp; path = ../cocos/physics3d/CCPhysics3D.cpp; sourceTree = ""; }; + B6CAAFD31AF9A9E100B9B856 /* CCPhysics3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3D.h; path = ../cocos/physics3d/CCPhysics3D.h; sourceTree = ""; }; + B6CAAFD41AF9A9E100B9B856 /* CCPhysics3DComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DComponent.cpp; path = ../cocos/physics3d/CCPhysics3DComponent.cpp; sourceTree = ""; }; + B6CAAFD51AF9A9E100B9B856 /* CCPhysics3DComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DComponent.h; path = ../cocos/physics3d/CCPhysics3DComponent.h; sourceTree = ""; }; + B6CAAFD61AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DConstraint.cpp; path = ../cocos/physics3d/CCPhysics3DConstraint.cpp; sourceTree = ""; }; + B6CAAFD71AF9A9E100B9B856 /* CCPhysics3DConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DConstraint.h; path = ../cocos/physics3d/CCPhysics3DConstraint.h; sourceTree = ""; }; + B6CAAFD81AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DDebugDrawer.cpp; path = ../cocos/physics3d/CCPhysics3DDebugDrawer.cpp; sourceTree = ""; }; + B6CAAFD91AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DDebugDrawer.h; path = ../cocos/physics3d/CCPhysics3DDebugDrawer.h; sourceTree = ""; }; + B6CAAFDA1AF9A9E100B9B856 /* CCPhysics3DObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DObject.cpp; path = ../cocos/physics3d/CCPhysics3DObject.cpp; sourceTree = ""; }; + B6CAAFDB1AF9A9E100B9B856 /* CCPhysics3DObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DObject.h; path = ../cocos/physics3d/CCPhysics3DObject.h; sourceTree = ""; }; + B6CAAFDC1AF9A9E100B9B856 /* CCPhysics3DShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DShape.cpp; path = ../cocos/physics3d/CCPhysics3DShape.cpp; sourceTree = ""; }; + B6CAAFDD1AF9A9E100B9B856 /* CCPhysics3DShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DShape.h; path = ../cocos/physics3d/CCPhysics3DShape.h; sourceTree = ""; }; + B6CAAFDE1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysics3DWorld.cpp; path = ../cocos/physics3d/CCPhysics3DWorld.cpp; sourceTree = ""; }; + B6CAAFDF1AF9A9E100B9B856 /* CCPhysics3DWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysics3DWorld.h; path = ../cocos/physics3d/CCPhysics3DWorld.h; sourceTree = ""; }; + B6CAAFE01AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCPhysicsSprite3D.cpp; path = ../cocos/physics3d/CCPhysicsSprite3D.cpp; sourceTree = ""; }; + B6CAAFE11AF9A9E100B9B856 /* CCPhysicsSprite3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCPhysicsSprite3D.h; path = ../cocos/physics3d/CCPhysicsSprite3D.h; sourceTree = ""; }; + B6CAB0031AF9AA1900B9B856 /* btBulletCollisionCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = btBulletCollisionCommon.h; path = ../external/bullet/btBulletCollisionCommon.h; sourceTree = ""; }; + B6CAB0041AF9AA1900B9B856 /* btBulletDynamicsCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = btBulletDynamicsCommon.h; path = ../external/bullet/btBulletDynamicsCommon.h; sourceTree = ""; }; + B6CAB0051AF9AA1900B9B856 /* Bullet-C-Api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Bullet-C-Api.h"; path = "../external/bullet/Bullet-C-Api.h"; sourceTree = ""; }; + B6CAB0081AF9AA1900B9B856 /* btAxisSweep3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btAxisSweep3.cpp; sourceTree = ""; }; + B6CAB0091AF9AA1900B9B856 /* btAxisSweep3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btAxisSweep3.h; sourceTree = ""; }; + B6CAB00A1AF9AA1900B9B856 /* btBroadphaseInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBroadphaseInterface.h; sourceTree = ""; }; + B6CAB00B1AF9AA1900B9B856 /* btBroadphaseProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBroadphaseProxy.cpp; sourceTree = ""; }; + B6CAB00C1AF9AA1900B9B856 /* btBroadphaseProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBroadphaseProxy.h; sourceTree = ""; }; + B6CAB00D1AF9AA1900B9B856 /* btCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB00E1AF9AA1900B9B856 /* btCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB00F1AF9AA1900B9B856 /* btDbvt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDbvt.cpp; sourceTree = ""; }; + B6CAB0101AF9AA1900B9B856 /* btDbvt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDbvt.h; sourceTree = ""; }; + B6CAB0111AF9AA1900B9B856 /* btDbvtBroadphase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDbvtBroadphase.cpp; sourceTree = ""; }; + B6CAB0121AF9AA1900B9B856 /* btDbvtBroadphase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDbvtBroadphase.h; sourceTree = ""; }; + B6CAB0131AF9AA1900B9B856 /* btDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDispatcher.cpp; sourceTree = ""; }; + B6CAB0141AF9AA1900B9B856 /* btDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDispatcher.h; sourceTree = ""; }; + B6CAB0151AF9AA1900B9B856 /* btMultiSapBroadphase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiSapBroadphase.cpp; sourceTree = ""; }; + B6CAB0161AF9AA1900B9B856 /* btMultiSapBroadphase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiSapBroadphase.h; sourceTree = ""; }; + B6CAB0171AF9AA1900B9B856 /* btOverlappingPairCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btOverlappingPairCache.cpp; sourceTree = ""; }; + B6CAB0181AF9AA1900B9B856 /* btOverlappingPairCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btOverlappingPairCache.h; sourceTree = ""; }; + B6CAB0191AF9AA1900B9B856 /* btOverlappingPairCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btOverlappingPairCallback.h; sourceTree = ""; }; + B6CAB01A1AF9AA1900B9B856 /* btQuantizedBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btQuantizedBvh.cpp; sourceTree = ""; }; + B6CAB01B1AF9AA1900B9B856 /* btQuantizedBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btQuantizedBvh.h; sourceTree = ""; }; + B6CAB01C1AF9AA1900B9B856 /* btSimpleBroadphase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSimpleBroadphase.cpp; sourceTree = ""; }; + B6CAB01D1AF9AA1900B9B856 /* btSimpleBroadphase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSimpleBroadphase.h; sourceTree = ""; }; + B6CAB01F1AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btActivatingCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0201AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btActivatingCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0211AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBox2dBox2dCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0221AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBox2dBox2dCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0231AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBoxBoxCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0241AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBoxBoxCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0251AF9AA1900B9B856 /* btBoxBoxDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBoxBoxDetector.cpp; sourceTree = ""; }; + B6CAB0261AF9AA1900B9B856 /* btBoxBoxDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBoxBoxDetector.h; sourceTree = ""; }; + B6CAB0271AF9AA1900B9B856 /* btCollisionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionConfiguration.h; sourceTree = ""; }; + B6CAB0281AF9AA1900B9B856 /* btCollisionCreateFunc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionCreateFunc.h; sourceTree = ""; }; + B6CAB0291AF9AA1900B9B856 /* btCollisionDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCollisionDispatcher.cpp; sourceTree = ""; }; + B6CAB02A1AF9AA1900B9B856 /* btCollisionDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionDispatcher.h; sourceTree = ""; }; + B6CAB02B1AF9AA1900B9B856 /* btCollisionObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCollisionObject.cpp; sourceTree = ""; }; + B6CAB02C1AF9AA1900B9B856 /* btCollisionObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionObject.h; sourceTree = ""; }; + B6CAB02D1AF9AA1900B9B856 /* btCollisionObjectWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionObjectWrapper.h; sourceTree = ""; }; + B6CAB02E1AF9AA1900B9B856 /* btCollisionWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCollisionWorld.cpp; sourceTree = ""; }; + B6CAB02F1AF9AA1900B9B856 /* btCollisionWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionWorld.h; sourceTree = ""; }; + B6CAB0301AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCompoundCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0311AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCompoundCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0321AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCompoundCompoundCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0331AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCompoundCompoundCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0341AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvex2dConvex2dAlgorithm.cpp; sourceTree = ""; }; + B6CAB0351AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvex2dConvex2dAlgorithm.h; sourceTree = ""; }; + B6CAB0361AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexConcaveCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0371AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexConcaveCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0381AF9AA1900B9B856 /* btConvexConvexAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexConvexAlgorithm.cpp; sourceTree = ""; }; + B6CAB0391AF9AA1900B9B856 /* btConvexConvexAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexConvexAlgorithm.h; sourceTree = ""; }; + B6CAB03A1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexPlaneCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB03B1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexPlaneCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB03C1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDefaultCollisionConfiguration.cpp; sourceTree = ""; }; + B6CAB03D1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDefaultCollisionConfiguration.h; sourceTree = ""; }; + B6CAB03E1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btEmptyCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB03F1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btEmptyCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0401AF9AA1900B9B856 /* btGhostObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGhostObject.cpp; sourceTree = ""; }; + B6CAB0411AF9AA1900B9B856 /* btGhostObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGhostObject.h; sourceTree = ""; }; + B6CAB0421AF9AA1900B9B856 /* btHashedSimplePairCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btHashedSimplePairCache.cpp; sourceTree = ""; }; + B6CAB0431AF9AA1900B9B856 /* btHashedSimplePairCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btHashedSimplePairCache.h; sourceTree = ""; }; + B6CAB0441AF9AA1900B9B856 /* btInternalEdgeUtility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btInternalEdgeUtility.cpp; sourceTree = ""; }; + B6CAB0451AF9AA1900B9B856 /* btInternalEdgeUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btInternalEdgeUtility.h; sourceTree = ""; }; + B6CAB0461AF9AA1900B9B856 /* btManifoldResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btManifoldResult.cpp; sourceTree = ""; }; + B6CAB0471AF9AA1900B9B856 /* btManifoldResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btManifoldResult.h; sourceTree = ""; }; + B6CAB0481AF9AA1900B9B856 /* btSimulationIslandManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSimulationIslandManager.cpp; sourceTree = ""; }; + B6CAB0491AF9AA1900B9B856 /* btSimulationIslandManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSimulationIslandManager.h; sourceTree = ""; }; + B6CAB04A1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSphereBoxCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB04B1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSphereBoxCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB04C1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSphereSphereCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB04D1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSphereSphereCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB04E1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSphereTriangleCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB04F1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSphereTriangleCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0501AF9AA1900B9B856 /* btUnionFind.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btUnionFind.cpp; sourceTree = ""; }; + B6CAB0511AF9AA1900B9B856 /* btUnionFind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btUnionFind.h; sourceTree = ""; }; + B6CAB0521AF9AA1900B9B856 /* SphereTriangleDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SphereTriangleDetector.cpp; sourceTree = ""; }; + B6CAB0531AF9AA1900B9B856 /* SphereTriangleDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SphereTriangleDetector.h; sourceTree = ""; }; + B6CAB0551AF9AA1900B9B856 /* btBox2dShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBox2dShape.cpp; sourceTree = ""; }; + B6CAB0561AF9AA1900B9B856 /* btBox2dShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBox2dShape.h; sourceTree = ""; }; + B6CAB0571AF9AA1900B9B856 /* btBoxShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBoxShape.cpp; sourceTree = ""; }; + B6CAB0581AF9AA1900B9B856 /* btBoxShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBoxShape.h; sourceTree = ""; }; + B6CAB0591AF9AA1900B9B856 /* btBvhTriangleMeshShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btBvhTriangleMeshShape.cpp; sourceTree = ""; }; + B6CAB05A1AF9AA1900B9B856 /* btBvhTriangleMeshShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBvhTriangleMeshShape.h; sourceTree = ""; }; + B6CAB05B1AF9AA1900B9B856 /* btCapsuleShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCapsuleShape.cpp; sourceTree = ""; }; + B6CAB05C1AF9AA1900B9B856 /* btCapsuleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCapsuleShape.h; sourceTree = ""; }; + B6CAB05D1AF9AA1900B9B856 /* btCollisionMargin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionMargin.h; sourceTree = ""; }; + B6CAB05E1AF9AA1900B9B856 /* btCollisionShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCollisionShape.cpp; sourceTree = ""; }; + B6CAB05F1AF9AA1900B9B856 /* btCollisionShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCollisionShape.h; sourceTree = ""; }; + B6CAB0601AF9AA1900B9B856 /* btCompoundShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCompoundShape.cpp; sourceTree = ""; }; + B6CAB0611AF9AA1900B9B856 /* btCompoundShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCompoundShape.h; sourceTree = ""; }; + B6CAB0621AF9AA1900B9B856 /* btConcaveShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConcaveShape.cpp; sourceTree = ""; }; + B6CAB0631AF9AA1900B9B856 /* btConcaveShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConcaveShape.h; sourceTree = ""; }; + B6CAB0641AF9AA1900B9B856 /* btConeShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConeShape.cpp; sourceTree = ""; }; + B6CAB0651AF9AA1900B9B856 /* btConeShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConeShape.h; sourceTree = ""; }; + B6CAB0661AF9AA1900B9B856 /* btConvex2dShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvex2dShape.cpp; sourceTree = ""; }; + B6CAB0671AF9AA1900B9B856 /* btConvex2dShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvex2dShape.h; sourceTree = ""; }; + B6CAB0681AF9AA1900B9B856 /* btConvexHullShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexHullShape.cpp; sourceTree = ""; }; + B6CAB0691AF9AA1900B9B856 /* btConvexHullShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexHullShape.h; sourceTree = ""; }; + B6CAB06A1AF9AA1900B9B856 /* btConvexInternalShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexInternalShape.cpp; sourceTree = ""; }; + B6CAB06B1AF9AA1900B9B856 /* btConvexInternalShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexInternalShape.h; sourceTree = ""; }; + B6CAB06C1AF9AA1900B9B856 /* btConvexPointCloudShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexPointCloudShape.cpp; sourceTree = ""; }; + B6CAB06D1AF9AA1900B9B856 /* btConvexPointCloudShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexPointCloudShape.h; sourceTree = ""; }; + B6CAB06E1AF9AA1900B9B856 /* btConvexPolyhedron.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexPolyhedron.cpp; sourceTree = ""; }; + B6CAB06F1AF9AA1900B9B856 /* btConvexPolyhedron.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexPolyhedron.h; sourceTree = ""; }; + B6CAB0701AF9AA1900B9B856 /* btConvexShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexShape.cpp; sourceTree = ""; }; + B6CAB0711AF9AA1900B9B856 /* btConvexShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexShape.h; sourceTree = ""; }; + B6CAB0721AF9AA1900B9B856 /* btConvexTriangleMeshShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexTriangleMeshShape.cpp; sourceTree = ""; }; + B6CAB0731AF9AA1900B9B856 /* btConvexTriangleMeshShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexTriangleMeshShape.h; sourceTree = ""; }; + B6CAB0741AF9AA1900B9B856 /* btCylinderShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btCylinderShape.cpp; sourceTree = ""; }; + B6CAB0751AF9AA1900B9B856 /* btCylinderShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCylinderShape.h; sourceTree = ""; }; + B6CAB0761AF9AA1900B9B856 /* btEmptyShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btEmptyShape.cpp; sourceTree = ""; }; + B6CAB0771AF9AA1900B9B856 /* btEmptyShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btEmptyShape.h; sourceTree = ""; }; + B6CAB0781AF9AA1900B9B856 /* btHeightfieldTerrainShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btHeightfieldTerrainShape.cpp; sourceTree = ""; }; + B6CAB0791AF9AA1900B9B856 /* btHeightfieldTerrainShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btHeightfieldTerrainShape.h; sourceTree = ""; }; + B6CAB07A1AF9AA1900B9B856 /* btMaterial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMaterial.h; sourceTree = ""; }; + B6CAB07B1AF9AA1900B9B856 /* btMinkowskiSumShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMinkowskiSumShape.cpp; sourceTree = ""; }; + B6CAB07C1AF9AA1900B9B856 /* btMinkowskiSumShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMinkowskiSumShape.h; sourceTree = ""; }; + B6CAB07D1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultimaterialTriangleMeshShape.cpp; sourceTree = ""; }; + B6CAB07E1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultimaterialTriangleMeshShape.h; sourceTree = ""; }; + B6CAB07F1AF9AA1900B9B856 /* btMultiSphereShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiSphereShape.cpp; sourceTree = ""; }; + B6CAB0801AF9AA1900B9B856 /* btMultiSphereShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiSphereShape.h; sourceTree = ""; }; + B6CAB0811AF9AA1900B9B856 /* btOptimizedBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btOptimizedBvh.cpp; sourceTree = ""; }; + B6CAB0821AF9AA1900B9B856 /* btOptimizedBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btOptimizedBvh.h; sourceTree = ""; }; + B6CAB0831AF9AA1900B9B856 /* btPolyhedralConvexShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPolyhedralConvexShape.cpp; sourceTree = ""; }; + B6CAB0841AF9AA1900B9B856 /* btPolyhedralConvexShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPolyhedralConvexShape.h; sourceTree = ""; }; + B6CAB0851AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btScaledBvhTriangleMeshShape.cpp; sourceTree = ""; }; + B6CAB0861AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btScaledBvhTriangleMeshShape.h; sourceTree = ""; }; + B6CAB0871AF9AA1900B9B856 /* btShapeHull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btShapeHull.cpp; sourceTree = ""; }; + B6CAB0881AF9AA1900B9B856 /* btShapeHull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btShapeHull.h; sourceTree = ""; }; + B6CAB0891AF9AA1900B9B856 /* btSphereShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSphereShape.cpp; sourceTree = ""; }; + B6CAB08A1AF9AA1900B9B856 /* btSphereShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSphereShape.h; sourceTree = ""; }; + B6CAB08B1AF9AA1900B9B856 /* btStaticPlaneShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btStaticPlaneShape.cpp; sourceTree = ""; }; + B6CAB08C1AF9AA1900B9B856 /* btStaticPlaneShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btStaticPlaneShape.h; sourceTree = ""; }; + B6CAB08D1AF9AA1900B9B856 /* btStridingMeshInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btStridingMeshInterface.cpp; sourceTree = ""; }; + B6CAB08E1AF9AA1900B9B856 /* btStridingMeshInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btStridingMeshInterface.h; sourceTree = ""; }; + B6CAB08F1AF9AA1900B9B856 /* btTetrahedronShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTetrahedronShape.cpp; sourceTree = ""; }; + B6CAB0901AF9AA1900B9B856 /* btTetrahedronShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTetrahedronShape.h; sourceTree = ""; }; + B6CAB0911AF9AA1900B9B856 /* btTriangleBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleBuffer.cpp; sourceTree = ""; }; + B6CAB0921AF9AA1900B9B856 /* btTriangleBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleBuffer.h; sourceTree = ""; }; + B6CAB0931AF9AA1900B9B856 /* btTriangleCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleCallback.cpp; sourceTree = ""; }; + B6CAB0941AF9AA1900B9B856 /* btTriangleCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleCallback.h; sourceTree = ""; }; + B6CAB0951AF9AA1900B9B856 /* btTriangleIndexVertexArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleIndexVertexArray.cpp; sourceTree = ""; }; + B6CAB0961AF9AA1900B9B856 /* btTriangleIndexVertexArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleIndexVertexArray.h; sourceTree = ""; }; + B6CAB0971AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleIndexVertexMaterialArray.cpp; sourceTree = ""; }; + B6CAB0981AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleIndexVertexMaterialArray.h; sourceTree = ""; }; + B6CAB0991AF9AA1900B9B856 /* btTriangleInfoMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleInfoMap.h; sourceTree = ""; }; + B6CAB09A1AF9AA1900B9B856 /* btTriangleMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleMesh.cpp; sourceTree = ""; }; + B6CAB09B1AF9AA1900B9B856 /* btTriangleMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleMesh.h; sourceTree = ""; }; + B6CAB09C1AF9AA1900B9B856 /* btTriangleMeshShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleMeshShape.cpp; sourceTree = ""; }; + B6CAB09D1AF9AA1900B9B856 /* btTriangleMeshShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleMeshShape.h; sourceTree = ""; }; + B6CAB09E1AF9AA1900B9B856 /* btTriangleShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleShape.h; sourceTree = ""; }; + B6CAB09F1AF9AA1900B9B856 /* btUniformScalingShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btUniformScalingShape.cpp; sourceTree = ""; }; + B6CAB0A01AF9AA1900B9B856 /* btUniformScalingShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btUniformScalingShape.h; sourceTree = ""; }; + B6CAB0A21AF9AA1900B9B856 /* btBoxCollision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btBoxCollision.h; sourceTree = ""; }; + B6CAB0A31AF9AA1900B9B856 /* btClipPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btClipPolygon.h; sourceTree = ""; }; + B6CAB0A41AF9AA1900B9B856 /* btCompoundFromGimpact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCompoundFromGimpact.h; sourceTree = ""; }; + B6CAB0A51AF9AA1900B9B856 /* btContactProcessing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btContactProcessing.cpp; sourceTree = ""; }; + B6CAB0A61AF9AA1900B9B856 /* btContactProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btContactProcessing.h; sourceTree = ""; }; + B6CAB0A71AF9AA1900B9B856 /* btGenericPoolAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGenericPoolAllocator.cpp; sourceTree = ""; }; + B6CAB0A81AF9AA1900B9B856 /* btGenericPoolAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGenericPoolAllocator.h; sourceTree = ""; }; + B6CAB0A91AF9AA1900B9B856 /* btGeometryOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGeometryOperations.h; sourceTree = ""; }; + B6CAB0AA1AF9AA1900B9B856 /* btGImpactBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGImpactBvh.cpp; sourceTree = ""; }; + B6CAB0AB1AF9AA1900B9B856 /* btGImpactBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGImpactBvh.h; sourceTree = ""; }; + B6CAB0AC1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGImpactCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB0AD1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGImpactCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB0AE1AF9AA1900B9B856 /* btGImpactMassUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGImpactMassUtil.h; sourceTree = ""; }; + B6CAB0AF1AF9AA1900B9B856 /* btGImpactQuantizedBvh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGImpactQuantizedBvh.cpp; sourceTree = ""; }; + B6CAB0B01AF9AA1900B9B856 /* btGImpactQuantizedBvh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGImpactQuantizedBvh.h; sourceTree = ""; }; + B6CAB0B11AF9AA1900B9B856 /* btGImpactShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGImpactShape.cpp; sourceTree = ""; }; + B6CAB0B21AF9AA1900B9B856 /* btGImpactShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGImpactShape.h; sourceTree = ""; }; + B6CAB0B31AF9AA1900B9B856 /* btQuantization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btQuantization.h; sourceTree = ""; }; + B6CAB0B41AF9AA1900B9B856 /* btTriangleShapeEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTriangleShapeEx.cpp; sourceTree = ""; }; + B6CAB0B51AF9AA1900B9B856 /* btTriangleShapeEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTriangleShapeEx.h; sourceTree = ""; }; + B6CAB0B61AF9AA1900B9B856 /* gim_array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_array.h; sourceTree = ""; }; + B6CAB0B71AF9AA1900B9B856 /* gim_basic_geometry_operations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_basic_geometry_operations.h; sourceTree = ""; }; + B6CAB0B81AF9AA1900B9B856 /* gim_bitset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_bitset.h; sourceTree = ""; }; + B6CAB0B91AF9AA1900B9B856 /* gim_box_collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_box_collision.h; sourceTree = ""; }; + B6CAB0BA1AF9AA1900B9B856 /* gim_box_set.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gim_box_set.cpp; sourceTree = ""; }; + B6CAB0BB1AF9AA1900B9B856 /* gim_box_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_box_set.h; sourceTree = ""; }; + B6CAB0BC1AF9AA1900B9B856 /* gim_clip_polygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_clip_polygon.h; sourceTree = ""; }; + B6CAB0BD1AF9AA1900B9B856 /* gim_contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gim_contact.cpp; sourceTree = ""; }; + B6CAB0BE1AF9AA1900B9B856 /* gim_contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_contact.h; sourceTree = ""; }; + B6CAB0BF1AF9AA1900B9B856 /* gim_geom_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_geom_types.h; sourceTree = ""; }; + B6CAB0C01AF9AA1900B9B856 /* gim_geometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_geometry.h; sourceTree = ""; }; + B6CAB0C11AF9AA1900B9B856 /* gim_hash_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_hash_table.h; sourceTree = ""; }; + B6CAB0C21AF9AA1900B9B856 /* gim_linear_math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_linear_math.h; sourceTree = ""; }; + B6CAB0C31AF9AA1900B9B856 /* gim_math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_math.h; sourceTree = ""; }; + B6CAB0C41AF9AA1900B9B856 /* gim_memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gim_memory.cpp; sourceTree = ""; }; + B6CAB0C51AF9AA1900B9B856 /* gim_memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_memory.h; sourceTree = ""; }; + B6CAB0C61AF9AA1900B9B856 /* gim_radixsort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_radixsort.h; sourceTree = ""; }; + B6CAB0C71AF9AA1900B9B856 /* gim_tri_collision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gim_tri_collision.cpp; sourceTree = ""; }; + B6CAB0C81AF9AA1900B9B856 /* gim_tri_collision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gim_tri_collision.h; sourceTree = ""; }; + B6CAB0CA1AF9AA1900B9B856 /* btContinuousConvexCollision.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btContinuousConvexCollision.cpp; sourceTree = ""; }; + B6CAB0CB1AF9AA1900B9B856 /* btContinuousConvexCollision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btContinuousConvexCollision.h; sourceTree = ""; }; + B6CAB0CC1AF9AA1900B9B856 /* btConvexCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexCast.cpp; sourceTree = ""; }; + B6CAB0CD1AF9AA1900B9B856 /* btConvexCast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexCast.h; sourceTree = ""; }; + B6CAB0CE1AF9AA1900B9B856 /* btConvexPenetrationDepthSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexPenetrationDepthSolver.h; sourceTree = ""; }; + B6CAB0CF1AF9AA1900B9B856 /* btDiscreteCollisionDetectorInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDiscreteCollisionDetectorInterface.h; sourceTree = ""; }; + B6CAB0D01AF9AA1900B9B856 /* btGjkConvexCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGjkConvexCast.cpp; sourceTree = ""; }; + B6CAB0D11AF9AA1900B9B856 /* btGjkConvexCast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGjkConvexCast.h; sourceTree = ""; }; + B6CAB0D21AF9AA1900B9B856 /* btGjkEpa2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGjkEpa2.cpp; sourceTree = ""; }; + B6CAB0D31AF9AA1900B9B856 /* btGjkEpa2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGjkEpa2.h; sourceTree = ""; }; + B6CAB0D41AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGjkEpaPenetrationDepthSolver.cpp; sourceTree = ""; }; + B6CAB0D51AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGjkEpaPenetrationDepthSolver.h; sourceTree = ""; }; + B6CAB0D61AF9AA1900B9B856 /* btGjkPairDetector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGjkPairDetector.cpp; sourceTree = ""; }; + B6CAB0D71AF9AA1900B9B856 /* btGjkPairDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGjkPairDetector.h; sourceTree = ""; }; + B6CAB0D81AF9AA1900B9B856 /* btManifoldPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btManifoldPoint.h; sourceTree = ""; }; + B6CAB0D91AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMinkowskiPenetrationDepthSolver.cpp; sourceTree = ""; }; + B6CAB0DA1AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMinkowskiPenetrationDepthSolver.h; sourceTree = ""; }; + B6CAB0DB1AF9AA1900B9B856 /* btPersistentManifold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPersistentManifold.cpp; sourceTree = ""; }; + B6CAB0DC1AF9AA1900B9B856 /* btPersistentManifold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPersistentManifold.h; sourceTree = ""; }; + B6CAB0DD1AF9AA1900B9B856 /* btPointCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPointCollector.h; sourceTree = ""; }; + B6CAB0DE1AF9AA1900B9B856 /* btPolyhedralContactClipping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPolyhedralContactClipping.cpp; sourceTree = ""; }; + B6CAB0DF1AF9AA1900B9B856 /* btPolyhedralContactClipping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPolyhedralContactClipping.h; sourceTree = ""; }; + B6CAB0E01AF9AA1900B9B856 /* btRaycastCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btRaycastCallback.cpp; sourceTree = ""; }; + B6CAB0E11AF9AA1900B9B856 /* btRaycastCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btRaycastCallback.h; sourceTree = ""; }; + B6CAB0E21AF9AA1900B9B856 /* btSimplexSolverInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSimplexSolverInterface.h; sourceTree = ""; }; + B6CAB0E31AF9AA1900B9B856 /* btSubSimplexConvexCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSubSimplexConvexCast.cpp; sourceTree = ""; }; + B6CAB0E41AF9AA1900B9B856 /* btSubSimplexConvexCast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSubSimplexConvexCast.h; sourceTree = ""; }; + B6CAB0E51AF9AA1900B9B856 /* btVoronoiSimplexSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btVoronoiSimplexSolver.cpp; sourceTree = ""; }; + B6CAB0E61AF9AA1900B9B856 /* btVoronoiSimplexSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btVoronoiSimplexSolver.h; sourceTree = ""; }; + B6CAB0E91AF9AA1900B9B856 /* btCharacterControllerInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btCharacterControllerInterface.h; sourceTree = ""; }; + B6CAB0EA1AF9AA1900B9B856 /* btKinematicCharacterController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btKinematicCharacterController.cpp; sourceTree = ""; }; + B6CAB0EB1AF9AA1900B9B856 /* btKinematicCharacterController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btKinematicCharacterController.h; sourceTree = ""; }; + B6CAB0ED1AF9AA1900B9B856 /* btConeTwistConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConeTwistConstraint.cpp; sourceTree = ""; }; + B6CAB0EE1AF9AA1900B9B856 /* btConeTwistConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConeTwistConstraint.h; sourceTree = ""; }; + B6CAB0EF1AF9AA1900B9B856 /* btConstraintSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConstraintSolver.h; sourceTree = ""; }; + B6CAB0F01AF9AA1900B9B856 /* btContactConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btContactConstraint.cpp; sourceTree = ""; }; + B6CAB0F11AF9AA1900B9B856 /* btContactConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btContactConstraint.h; sourceTree = ""; }; + B6CAB0F21AF9AA1900B9B856 /* btContactSolverInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btContactSolverInfo.h; sourceTree = ""; }; + B6CAB0F31AF9AA1900B9B856 /* btFixedConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btFixedConstraint.cpp; sourceTree = ""; }; + B6CAB0F41AF9AA1900B9B856 /* btFixedConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btFixedConstraint.h; sourceTree = ""; }; + B6CAB0F51AF9AA1900B9B856 /* btGearConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGearConstraint.cpp; sourceTree = ""; }; + B6CAB0F61AF9AA1900B9B856 /* btGearConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGearConstraint.h; sourceTree = ""; }; + B6CAB0F71AF9AA1900B9B856 /* btGeneric6DofConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGeneric6DofConstraint.cpp; sourceTree = ""; }; + B6CAB0F81AF9AA1900B9B856 /* btGeneric6DofConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGeneric6DofConstraint.h; sourceTree = ""; }; + B6CAB0F91AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGeneric6DofSpringConstraint.cpp; sourceTree = ""; }; + B6CAB0FA1AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGeneric6DofSpringConstraint.h; sourceTree = ""; }; + B6CAB0FB1AF9AA1900B9B856 /* btHinge2Constraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btHinge2Constraint.cpp; sourceTree = ""; }; + B6CAB0FC1AF9AA1900B9B856 /* btHinge2Constraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btHinge2Constraint.h; sourceTree = ""; }; + B6CAB0FD1AF9AA1900B9B856 /* btHingeConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btHingeConstraint.cpp; sourceTree = ""; }; + B6CAB0FE1AF9AA1900B9B856 /* btHingeConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btHingeConstraint.h; sourceTree = ""; }; + B6CAB0FF1AF9AA1900B9B856 /* btJacobianEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btJacobianEntry.h; sourceTree = ""; }; + B6CAB1001AF9AA1900B9B856 /* btPoint2PointConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPoint2PointConstraint.cpp; sourceTree = ""; }; + B6CAB1011AF9AA1900B9B856 /* btPoint2PointConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPoint2PointConstraint.h; sourceTree = ""; }; + B6CAB1021AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSequentialImpulseConstraintSolver.cpp; sourceTree = ""; }; + B6CAB1031AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSequentialImpulseConstraintSolver.h; sourceTree = ""; }; + B6CAB1041AF9AA1900B9B856 /* btSliderConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSliderConstraint.cpp; sourceTree = ""; }; + B6CAB1051AF9AA1900B9B856 /* btSliderConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSliderConstraint.h; sourceTree = ""; }; + B6CAB1061AF9AA1900B9B856 /* btSolve2LinearConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSolve2LinearConstraint.cpp; sourceTree = ""; }; + B6CAB1071AF9AA1900B9B856 /* btSolve2LinearConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSolve2LinearConstraint.h; sourceTree = ""; }; + B6CAB1081AF9AA1900B9B856 /* btSolverBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSolverBody.h; sourceTree = ""; }; + B6CAB1091AF9AA1900B9B856 /* btSolverConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSolverConstraint.h; sourceTree = ""; }; + B6CAB10A1AF9AA1900B9B856 /* btTypedConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btTypedConstraint.cpp; sourceTree = ""; }; + B6CAB10B1AF9AA1900B9B856 /* btTypedConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTypedConstraint.h; sourceTree = ""; }; + B6CAB10C1AF9AA1900B9B856 /* btUniversalConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btUniversalConstraint.cpp; sourceTree = ""; }; + B6CAB10D1AF9AA1900B9B856 /* btUniversalConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btUniversalConstraint.h; sourceTree = ""; }; + B6CAB10F1AF9AA1900B9B856 /* btActionInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btActionInterface.h; sourceTree = ""; }; + B6CAB1101AF9AA1900B9B856 /* btDiscreteDynamicsWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDiscreteDynamicsWorld.cpp; sourceTree = ""; }; + B6CAB1111AF9AA1900B9B856 /* btDiscreteDynamicsWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDiscreteDynamicsWorld.h; sourceTree = ""; }; + B6CAB1121AF9AA1900B9B856 /* btDynamicsWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDynamicsWorld.h; sourceTree = ""; }; + B6CAB1131AF9AA1900B9B856 /* btRigidBody.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btRigidBody.cpp; sourceTree = ""; }; + B6CAB1141AF9AA1900B9B856 /* btRigidBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btRigidBody.h; sourceTree = ""; }; + B6CAB1151AF9AA1900B9B856 /* btSimpleDynamicsWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSimpleDynamicsWorld.cpp; sourceTree = ""; }; + B6CAB1161AF9AA1900B9B856 /* btSimpleDynamicsWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSimpleDynamicsWorld.h; sourceTree = ""; }; + B6CAB1171AF9AA1900B9B856 /* Bullet-C-API.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "Bullet-C-API.cpp"; sourceTree = ""; }; + B6CAB1191AF9AA1900B9B856 /* btMultiBody.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBody.cpp; sourceTree = ""; }; + B6CAB11A1AF9AA1900B9B856 /* btMultiBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBody.h; sourceTree = ""; }; + B6CAB11B1AF9AA1900B9B856 /* btMultiBodyConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyConstraint.cpp; sourceTree = ""; }; + B6CAB11C1AF9AA1900B9B856 /* btMultiBodyConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyConstraint.h; sourceTree = ""; }; + B6CAB11D1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyConstraintSolver.cpp; sourceTree = ""; }; + B6CAB11E1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyConstraintSolver.h; sourceTree = ""; }; + B6CAB11F1AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyDynamicsWorld.cpp; sourceTree = ""; }; + B6CAB1201AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyDynamicsWorld.h; sourceTree = ""; }; + B6CAB1211AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyJointLimitConstraint.cpp; sourceTree = ""; }; + B6CAB1221AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyJointLimitConstraint.h; sourceTree = ""; }; + B6CAB1231AF9AA1900B9B856 /* btMultiBodyJointMotor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyJointMotor.cpp; sourceTree = ""; }; + B6CAB1241AF9AA1900B9B856 /* btMultiBodyJointMotor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyJointMotor.h; sourceTree = ""; }; + B6CAB1251AF9AA1900B9B856 /* btMultiBodyLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyLink.h; sourceTree = ""; }; + B6CAB1261AF9AA1900B9B856 /* btMultiBodyLinkCollider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyLinkCollider.h; sourceTree = ""; }; + B6CAB1271AF9AA1900B9B856 /* btMultiBodyPoint2Point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMultiBodyPoint2Point.cpp; sourceTree = ""; }; + B6CAB1281AF9AA1900B9B856 /* btMultiBodyPoint2Point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodyPoint2Point.h; sourceTree = ""; }; + B6CAB1291AF9AA1900B9B856 /* btMultiBodySolverConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMultiBodySolverConstraint.h; sourceTree = ""; }; + B6CAB12B1AF9AA1900B9B856 /* btDantzigLCP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btDantzigLCP.cpp; sourceTree = ""; }; + B6CAB12C1AF9AA1900B9B856 /* btDantzigLCP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDantzigLCP.h; sourceTree = ""; }; + B6CAB12D1AF9AA1900B9B856 /* btDantzigSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDantzigSolver.h; sourceTree = ""; }; + B6CAB12E1AF9AA1900B9B856 /* btMLCPSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btMLCPSolver.cpp; sourceTree = ""; }; + B6CAB12F1AF9AA1900B9B856 /* btMLCPSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMLCPSolver.h; sourceTree = ""; }; + B6CAB1301AF9AA1900B9B856 /* btMLCPSolverInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMLCPSolverInterface.h; sourceTree = ""; }; + B6CAB1311AF9AA1900B9B856 /* btPATHSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPATHSolver.h; sourceTree = ""; }; + B6CAB1321AF9AA1900B9B856 /* btSolveProjectedGaussSeidel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSolveProjectedGaussSeidel.h; sourceTree = ""; }; + B6CAB1341AF9AA1900B9B856 /* btRaycastVehicle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btRaycastVehicle.cpp; sourceTree = ""; }; + B6CAB1351AF9AA1900B9B856 /* btRaycastVehicle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btRaycastVehicle.h; sourceTree = ""; }; + B6CAB1361AF9AA1900B9B856 /* btVehicleRaycaster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btVehicleRaycaster.h; sourceTree = ""; }; + B6CAB1371AF9AA1900B9B856 /* btWheelInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btWheelInfo.cpp; sourceTree = ""; }; + B6CAB1381AF9AA1900B9B856 /* btWheelInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btWheelInfo.h; sourceTree = ""; }; + B6CAB13A1AF9AA1900B9B856 /* btGpu3DGridBroadphase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGpu3DGridBroadphase.cpp; sourceTree = ""; }; + B6CAB13B1AF9AA1900B9B856 /* btGpu3DGridBroadphase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpu3DGridBroadphase.h; sourceTree = ""; }; + B6CAB13C1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpu3DGridBroadphaseSharedCode.h; sourceTree = ""; }; + B6CAB13D1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpu3DGridBroadphaseSharedDefs.h; sourceTree = ""; }; + B6CAB13E1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpu3DGridBroadphaseSharedTypes.h; sourceTree = ""; }; + B6CAB13F1AF9AA1900B9B856 /* btGpuDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpuDefines.h; sourceTree = ""; }; + B6CAB1401AF9AA1900B9B856 /* btGpuUtilsSharedCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpuUtilsSharedCode.h; sourceTree = ""; }; + B6CAB1411AF9AA1900B9B856 /* btGpuUtilsSharedDefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGpuUtilsSharedDefs.h; sourceTree = ""; }; + B6CAB1421AF9AA1900B9B856 /* btParallelConstraintSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btParallelConstraintSolver.cpp; sourceTree = ""; }; + B6CAB1431AF9AA1900B9B856 /* btParallelConstraintSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btParallelConstraintSolver.h; sourceTree = ""; }; + B6CAB1441AF9AA1900B9B856 /* btThreadSupportInterface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btThreadSupportInterface.cpp; sourceTree = ""; }; + B6CAB1451AF9AA1900B9B856 /* btThreadSupportInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btThreadSupportInterface.h; sourceTree = ""; }; + B6CAB1841AF9AA1A00B9B856 /* HeapManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapManager.h; sourceTree = ""; }; + B6CAB1851AF9AA1A00B9B856 /* PlatformDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformDefinitions.h; sourceTree = ""; }; + B6CAB1861AF9AA1A00B9B856 /* PosixThreadSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PosixThreadSupport.cpp; sourceTree = ""; }; + B6CAB1871AF9AA1A00B9B856 /* PosixThreadSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PosixThreadSupport.h; sourceTree = ""; }; + B6CAB1881AF9AA1A00B9B856 /* PpuAddressSpace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PpuAddressSpace.h; sourceTree = ""; }; + B6CAB1891AF9AA1A00B9B856 /* SequentialThreadSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SequentialThreadSupport.cpp; sourceTree = ""; }; + B6CAB18A1AF9AA1A00B9B856 /* SequentialThreadSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SequentialThreadSupport.h; sourceTree = ""; }; + B6CAB18B1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuCollisionObjectWrapper.cpp; sourceTree = ""; }; + B6CAB18C1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuCollisionObjectWrapper.h; sourceTree = ""; }; + B6CAB18D1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuCollisionTaskProcess.cpp; sourceTree = ""; }; + B6CAB18E1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuCollisionTaskProcess.h; sourceTree = ""; }; + B6CAB18F1AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuContactManifoldCollisionAlgorithm.cpp; sourceTree = ""; }; + B6CAB1901AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuContactManifoldCollisionAlgorithm.h; sourceTree = ""; }; + B6CAB1911AF9AA1A00B9B856 /* SpuDoubleBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuDoubleBuffer.h; sourceTree = ""; }; + B6CAB1921AF9AA1A00B9B856 /* SpuFakeDma.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuFakeDma.cpp; sourceTree = ""; }; + B6CAB1931AF9AA1A00B9B856 /* SpuFakeDma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuFakeDma.h; sourceTree = ""; }; + B6CAB1941AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuGatheringCollisionDispatcher.cpp; sourceTree = ""; }; + B6CAB1951AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuGatheringCollisionDispatcher.h; sourceTree = ""; }; + B6CAB1961AF9AA1A00B9B856 /* SpuLibspe2Support.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuLibspe2Support.cpp; sourceTree = ""; }; + B6CAB1971AF9AA1A00B9B856 /* SpuLibspe2Support.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuLibspe2Support.h; sourceTree = ""; }; + B6CAB1991AF9AA1A00B9B856 /* Box.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Box.h; sourceTree = ""; }; + B6CAB19A1AF9AA1A00B9B856 /* boxBoxDistance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boxBoxDistance.cpp; sourceTree = ""; }; + B6CAB19B1AF9AA1A00B9B856 /* boxBoxDistance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boxBoxDistance.h; sourceTree = ""; }; + B6CAB19C1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuCollisionShapes.cpp; sourceTree = ""; }; + B6CAB19D1AF9AA1A00B9B856 /* SpuCollisionShapes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuCollisionShapes.h; sourceTree = ""; }; + B6CAB19E1AF9AA1A00B9B856 /* SpuContactResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuContactResult.cpp; sourceTree = ""; }; + B6CAB19F1AF9AA1A00B9B856 /* SpuContactResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuContactResult.h; sourceTree = ""; }; + B6CAB1A01AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuConvexPenetrationDepthSolver.h; sourceTree = ""; }; + B6CAB1A11AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuGatheringCollisionTask.cpp; sourceTree = ""; }; + B6CAB1A21AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuGatheringCollisionTask.h; sourceTree = ""; }; + B6CAB1A31AF9AA1A00B9B856 /* SpuLocalSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuLocalSupport.h; sourceTree = ""; }; + B6CAB1A41AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuMinkowskiPenetrationDepthSolver.cpp; sourceTree = ""; }; + B6CAB1A51AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuMinkowskiPenetrationDepthSolver.h; sourceTree = ""; }; + B6CAB1A61AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuPreferredPenetrationDirections.h; sourceTree = ""; }; + B6CAB1A81AF9AA1A00B9B856 /* SpuSampleTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuSampleTask.cpp; sourceTree = ""; }; + B6CAB1A91AF9AA1A00B9B856 /* SpuSampleTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuSampleTask.h; sourceTree = ""; }; + B6CAB1AA1AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpuSampleTaskProcess.cpp; sourceTree = ""; }; + B6CAB1AB1AF9AA1A00B9B856 /* SpuSampleTaskProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuSampleTaskProcess.h; sourceTree = ""; }; + B6CAB1AC1AF9AA1A00B9B856 /* SpuSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpuSync.h; sourceTree = ""; }; + B6CAB1AD1AF9AA1A00B9B856 /* TrbDynBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrbDynBody.h; sourceTree = ""; }; + B6CAB1AE1AF9AA1A00B9B856 /* TrbStateVec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrbStateVec.h; sourceTree = ""; }; + B6CAB1AF1AF9AA1A00B9B856 /* vectormath2bullet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vectormath2bullet.h; sourceTree = ""; }; + B6CAB1B01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Win32ThreadSupport.cpp; sourceTree = ""; }; + B6CAB1B11AF9AA1A00B9B856 /* Win32ThreadSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Win32ThreadSupport.h; sourceTree = ""; }; + B6CAB1B31AF9AA1A00B9B856 /* btAabbUtil2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btAabbUtil2.h; sourceTree = ""; }; + B6CAB1B41AF9AA1A00B9B856 /* btAlignedAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btAlignedAllocator.cpp; sourceTree = ""; }; + B6CAB1B51AF9AA1A00B9B856 /* btAlignedAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btAlignedAllocator.h; sourceTree = ""; }; + B6CAB1B61AF9AA1A00B9B856 /* btAlignedObjectArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btAlignedObjectArray.h; sourceTree = ""; }; + B6CAB1B71AF9AA1A00B9B856 /* btConvexHull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexHull.cpp; sourceTree = ""; }; + B6CAB1B81AF9AA1A00B9B856 /* btConvexHull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexHull.h; sourceTree = ""; }; + B6CAB1B91AF9AA1A00B9B856 /* btConvexHullComputer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btConvexHullComputer.cpp; sourceTree = ""; }; + B6CAB1BA1AF9AA1A00B9B856 /* btConvexHullComputer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btConvexHullComputer.h; sourceTree = ""; }; + B6CAB1BB1AF9AA1A00B9B856 /* btDefaultMotionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btDefaultMotionState.h; sourceTree = ""; }; + B6CAB1BC1AF9AA1A00B9B856 /* btGeometryUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btGeometryUtil.cpp; sourceTree = ""; }; + B6CAB1BD1AF9AA1A00B9B856 /* btGeometryUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGeometryUtil.h; sourceTree = ""; }; + B6CAB1BE1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btGrahamScan2dConvexHull.h; sourceTree = ""; }; + B6CAB1BF1AF9AA1A00B9B856 /* btHashMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btHashMap.h; sourceTree = ""; }; + B6CAB1C01AF9AA1A00B9B856 /* btIDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btIDebugDraw.h; sourceTree = ""; }; + B6CAB1C11AF9AA1A00B9B856 /* btList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btList.h; sourceTree = ""; }; + B6CAB1C21AF9AA1A00B9B856 /* btMatrix3x3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMatrix3x3.h; sourceTree = ""; }; + B6CAB1C31AF9AA1A00B9B856 /* btMatrixX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMatrixX.h; sourceTree = ""; }; + B6CAB1C41AF9AA1A00B9B856 /* btMinMax.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMinMax.h; sourceTree = ""; }; + B6CAB1C51AF9AA1A00B9B856 /* btMotionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btMotionState.h; sourceTree = ""; }; + B6CAB1C61AF9AA1A00B9B856 /* btPolarDecomposition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btPolarDecomposition.cpp; sourceTree = ""; }; + B6CAB1C71AF9AA1A00B9B856 /* btPolarDecomposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPolarDecomposition.h; sourceTree = ""; }; + B6CAB1C81AF9AA1A00B9B856 /* btPoolAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btPoolAllocator.h; sourceTree = ""; }; + B6CAB1C91AF9AA1A00B9B856 /* btQuadWord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btQuadWord.h; sourceTree = ""; }; + B6CAB1CA1AF9AA1A00B9B856 /* btQuaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btQuaternion.h; sourceTree = ""; }; + B6CAB1CB1AF9AA1A00B9B856 /* btQuickprof.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btQuickprof.cpp; sourceTree = ""; }; + B6CAB1CC1AF9AA1A00B9B856 /* btQuickprof.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btQuickprof.h; sourceTree = ""; }; + B6CAB1CD1AF9AA1A00B9B856 /* btRandom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btRandom.h; sourceTree = ""; }; + B6CAB1CE1AF9AA1A00B9B856 /* btScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btScalar.h; sourceTree = ""; }; + B6CAB1CF1AF9AA1A00B9B856 /* btSerializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btSerializer.cpp; sourceTree = ""; }; + B6CAB1D01AF9AA1A00B9B856 /* btSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btSerializer.h; sourceTree = ""; }; + B6CAB1D11AF9AA1A00B9B856 /* btStackAlloc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btStackAlloc.h; sourceTree = ""; }; + B6CAB1D21AF9AA1A00B9B856 /* btTransform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTransform.h; sourceTree = ""; }; + B6CAB1D31AF9AA1A00B9B856 /* btTransformUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btTransformUtil.h; sourceTree = ""; }; + B6CAB1D41AF9AA1A00B9B856 /* btVector3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = btVector3.cpp; sourceTree = ""; }; + B6CAB1D51AF9AA1A00B9B856 /* btVector3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = btVector3.h; sourceTree = ""; }; + B6CAB1D71AF9AA1A00B9B856 /* cl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cl.h; sourceTree = ""; }; + B6CAB1D81AF9AA1A00B9B856 /* cl_gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cl_gl.h; sourceTree = ""; }; + B6CAB1D91AF9AA1A00B9B856 /* cl_MiniCL_Defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cl_MiniCL_Defs.h; sourceTree = ""; }; + B6CAB1DA1AF9AA1A00B9B856 /* cl_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cl_platform.h; sourceTree = ""; }; + B6CAB1DB1AF9AA1A00B9B856 /* MiniCL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MiniCL.cpp; sourceTree = ""; }; + B6CAB1DD1AF9AA1A00B9B856 /* MiniCLTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MiniCLTask.cpp; sourceTree = ""; }; + B6CAB1DE1AF9AA1A00B9B856 /* MiniCLTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MiniCLTask.h; sourceTree = ""; }; + B6CAB1DF1AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MiniCLTaskScheduler.cpp; sourceTree = ""; }; + B6CAB1E01AF9AA1A00B9B856 /* MiniCLTaskScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MiniCLTaskScheduler.h; sourceTree = ""; }; B6D38B861AC3AFAC00043997 /* CCSkybox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCSkybox.cpp; sourceTree = ""; }; B6D38B871AC3AFAC00043997 /* CCSkybox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSkybox.h; sourceTree = ""; }; B6D38B881AC3AFAC00043997 /* CCTextureCube.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCTextureCube.cpp; sourceTree = ""; }; @@ -4173,6 +5412,7 @@ 46A170851807CE87005B8026 /* math */, 1AAF5360180E3374000584C8 /* network */, 46A170611807CE7A005B8026 /* physics */, + B6CAAFD11AF9A98E00B9B856 /* physics3d */, 50ABBEDB1926664700A911A9 /* platform */, 1551A340158F2AB200E66CFE /* Products */, 500DC89819105D41007B91BF /* renderer */, @@ -4667,6 +5907,7 @@ 1A57033E180BD0490088DEC7 /* external */ = { isa = PBXGroup; children = ( + B6CAB0021AF9A9EE00B9B856 /* bullet */, 15FB20781AE7C57D00C31518 /* poly2tri */, 382383E11A258FA7002C4610 /* flatbuffers */, 1AC026971914068200FA920D /* ConvertUTF */, @@ -6658,6 +7899,590 @@ name = ParticleUniverse; sourceTree = ""; }; + B6CAAFD11AF9A98E00B9B856 /* physics3d */ = { + isa = PBXGroup; + children = ( + B6CAAFD21AF9A9E100B9B856 /* CCPhysics3D.cpp */, + B6CAAFD31AF9A9E100B9B856 /* CCPhysics3D.h */, + B6CAAFD41AF9A9E100B9B856 /* CCPhysics3DComponent.cpp */, + B6CAAFD51AF9A9E100B9B856 /* CCPhysics3DComponent.h */, + B6CAAFD61AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp */, + B6CAAFD71AF9A9E100B9B856 /* CCPhysics3DConstraint.h */, + B6CAAFD81AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp */, + B6CAAFD91AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h */, + B6CAAFDA1AF9A9E100B9B856 /* CCPhysics3DObject.cpp */, + B6CAAFDB1AF9A9E100B9B856 /* CCPhysics3DObject.h */, + B6CAAFDC1AF9A9E100B9B856 /* CCPhysics3DShape.cpp */, + B6CAAFDD1AF9A9E100B9B856 /* CCPhysics3DShape.h */, + B6CAAFDE1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp */, + B6CAAFDF1AF9A9E100B9B856 /* CCPhysics3DWorld.h */, + B6CAAFE01AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp */, + B6CAAFE11AF9A9E100B9B856 /* CCPhysicsSprite3D.h */, + ); + name = physics3d; + sourceTree = ""; + }; + B6CAB0021AF9A9EE00B9B856 /* bullet */ = { + isa = PBXGroup; + children = ( + B6CAB0031AF9AA1900B9B856 /* btBulletCollisionCommon.h */, + B6CAB0041AF9AA1900B9B856 /* btBulletDynamicsCommon.h */, + B6CAB0051AF9AA1900B9B856 /* Bullet-C-Api.h */, + B6CAB0061AF9AA1900B9B856 /* BulletCollision */, + B6CAB0E71AF9AA1900B9B856 /* BulletDynamics */, + B6CAB1391AF9AA1900B9B856 /* BulletMultiThreaded */, + B6CAB1B21AF9AA1A00B9B856 /* LinearMath */, + B6CAB1D61AF9AA1A00B9B856 /* MiniCL */, + ); + name = bullet; + sourceTree = ""; + }; + B6CAB0061AF9AA1900B9B856 /* BulletCollision */ = { + isa = PBXGroup; + children = ( + B6CAB0071AF9AA1900B9B856 /* BroadphaseCollision */, + B6CAB01E1AF9AA1900B9B856 /* CollisionDispatch */, + B6CAB0541AF9AA1900B9B856 /* CollisionShapes */, + B6CAB0A11AF9AA1900B9B856 /* Gimpact */, + B6CAB0C91AF9AA1900B9B856 /* NarrowPhaseCollision */, + ); + name = BulletCollision; + path = ../external/bullet/BulletCollision; + sourceTree = ""; + }; + B6CAB0071AF9AA1900B9B856 /* BroadphaseCollision */ = { + isa = PBXGroup; + children = ( + B6CAB0081AF9AA1900B9B856 /* btAxisSweep3.cpp */, + B6CAB0091AF9AA1900B9B856 /* btAxisSweep3.h */, + B6CAB00A1AF9AA1900B9B856 /* btBroadphaseInterface.h */, + B6CAB00B1AF9AA1900B9B856 /* btBroadphaseProxy.cpp */, + B6CAB00C1AF9AA1900B9B856 /* btBroadphaseProxy.h */, + B6CAB00D1AF9AA1900B9B856 /* btCollisionAlgorithm.cpp */, + B6CAB00E1AF9AA1900B9B856 /* btCollisionAlgorithm.h */, + B6CAB00F1AF9AA1900B9B856 /* btDbvt.cpp */, + B6CAB0101AF9AA1900B9B856 /* btDbvt.h */, + B6CAB0111AF9AA1900B9B856 /* btDbvtBroadphase.cpp */, + B6CAB0121AF9AA1900B9B856 /* btDbvtBroadphase.h */, + B6CAB0131AF9AA1900B9B856 /* btDispatcher.cpp */, + B6CAB0141AF9AA1900B9B856 /* btDispatcher.h */, + B6CAB0151AF9AA1900B9B856 /* btMultiSapBroadphase.cpp */, + B6CAB0161AF9AA1900B9B856 /* btMultiSapBroadphase.h */, + B6CAB0171AF9AA1900B9B856 /* btOverlappingPairCache.cpp */, + B6CAB0181AF9AA1900B9B856 /* btOverlappingPairCache.h */, + B6CAB0191AF9AA1900B9B856 /* btOverlappingPairCallback.h */, + B6CAB01A1AF9AA1900B9B856 /* btQuantizedBvh.cpp */, + B6CAB01B1AF9AA1900B9B856 /* btQuantizedBvh.h */, + B6CAB01C1AF9AA1900B9B856 /* btSimpleBroadphase.cpp */, + B6CAB01D1AF9AA1900B9B856 /* btSimpleBroadphase.h */, + ); + path = BroadphaseCollision; + sourceTree = ""; + }; + B6CAB01E1AF9AA1900B9B856 /* CollisionDispatch */ = { + isa = PBXGroup; + children = ( + B6CAB01F1AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.cpp */, + B6CAB0201AF9AA1900B9B856 /* btActivatingCollisionAlgorithm.h */, + B6CAB0211AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp */, + B6CAB0221AF9AA1900B9B856 /* btBox2dBox2dCollisionAlgorithm.h */, + B6CAB0231AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.cpp */, + B6CAB0241AF9AA1900B9B856 /* btBoxBoxCollisionAlgorithm.h */, + B6CAB0251AF9AA1900B9B856 /* btBoxBoxDetector.cpp */, + B6CAB0261AF9AA1900B9B856 /* btBoxBoxDetector.h */, + B6CAB0271AF9AA1900B9B856 /* btCollisionConfiguration.h */, + B6CAB0281AF9AA1900B9B856 /* btCollisionCreateFunc.h */, + B6CAB0291AF9AA1900B9B856 /* btCollisionDispatcher.cpp */, + B6CAB02A1AF9AA1900B9B856 /* btCollisionDispatcher.h */, + B6CAB02B1AF9AA1900B9B856 /* btCollisionObject.cpp */, + B6CAB02C1AF9AA1900B9B856 /* btCollisionObject.h */, + B6CAB02D1AF9AA1900B9B856 /* btCollisionObjectWrapper.h */, + B6CAB02E1AF9AA1900B9B856 /* btCollisionWorld.cpp */, + B6CAB02F1AF9AA1900B9B856 /* btCollisionWorld.h */, + B6CAB0301AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.cpp */, + B6CAB0311AF9AA1900B9B856 /* btCompoundCollisionAlgorithm.h */, + B6CAB0321AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp */, + B6CAB0331AF9AA1900B9B856 /* btCompoundCompoundCollisionAlgorithm.h */, + B6CAB0341AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.cpp */, + B6CAB0351AF9AA1900B9B856 /* btConvex2dConvex2dAlgorithm.h */, + B6CAB0361AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.cpp */, + B6CAB0371AF9AA1900B9B856 /* btConvexConcaveCollisionAlgorithm.h */, + B6CAB0381AF9AA1900B9B856 /* btConvexConvexAlgorithm.cpp */, + B6CAB0391AF9AA1900B9B856 /* btConvexConvexAlgorithm.h */, + B6CAB03A1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.cpp */, + B6CAB03B1AF9AA1900B9B856 /* btConvexPlaneCollisionAlgorithm.h */, + B6CAB03C1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.cpp */, + B6CAB03D1AF9AA1900B9B856 /* btDefaultCollisionConfiguration.h */, + B6CAB03E1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.cpp */, + B6CAB03F1AF9AA1900B9B856 /* btEmptyCollisionAlgorithm.h */, + B6CAB0401AF9AA1900B9B856 /* btGhostObject.cpp */, + B6CAB0411AF9AA1900B9B856 /* btGhostObject.h */, + B6CAB0421AF9AA1900B9B856 /* btHashedSimplePairCache.cpp */, + B6CAB0431AF9AA1900B9B856 /* btHashedSimplePairCache.h */, + B6CAB0441AF9AA1900B9B856 /* btInternalEdgeUtility.cpp */, + B6CAB0451AF9AA1900B9B856 /* btInternalEdgeUtility.h */, + B6CAB0461AF9AA1900B9B856 /* btManifoldResult.cpp */, + B6CAB0471AF9AA1900B9B856 /* btManifoldResult.h */, + B6CAB0481AF9AA1900B9B856 /* btSimulationIslandManager.cpp */, + B6CAB0491AF9AA1900B9B856 /* btSimulationIslandManager.h */, + B6CAB04A1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.cpp */, + B6CAB04B1AF9AA1900B9B856 /* btSphereBoxCollisionAlgorithm.h */, + B6CAB04C1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.cpp */, + B6CAB04D1AF9AA1900B9B856 /* btSphereSphereCollisionAlgorithm.h */, + B6CAB04E1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.cpp */, + B6CAB04F1AF9AA1900B9B856 /* btSphereTriangleCollisionAlgorithm.h */, + B6CAB0501AF9AA1900B9B856 /* btUnionFind.cpp */, + B6CAB0511AF9AA1900B9B856 /* btUnionFind.h */, + B6CAB0521AF9AA1900B9B856 /* SphereTriangleDetector.cpp */, + B6CAB0531AF9AA1900B9B856 /* SphereTriangleDetector.h */, + ); + path = CollisionDispatch; + sourceTree = ""; + }; + B6CAB0541AF9AA1900B9B856 /* CollisionShapes */ = { + isa = PBXGroup; + children = ( + B6CAB0551AF9AA1900B9B856 /* btBox2dShape.cpp */, + B6CAB0561AF9AA1900B9B856 /* btBox2dShape.h */, + B6CAB0571AF9AA1900B9B856 /* btBoxShape.cpp */, + B6CAB0581AF9AA1900B9B856 /* btBoxShape.h */, + B6CAB0591AF9AA1900B9B856 /* btBvhTriangleMeshShape.cpp */, + B6CAB05A1AF9AA1900B9B856 /* btBvhTriangleMeshShape.h */, + B6CAB05B1AF9AA1900B9B856 /* btCapsuleShape.cpp */, + B6CAB05C1AF9AA1900B9B856 /* btCapsuleShape.h */, + B6CAB05D1AF9AA1900B9B856 /* btCollisionMargin.h */, + B6CAB05E1AF9AA1900B9B856 /* btCollisionShape.cpp */, + B6CAB05F1AF9AA1900B9B856 /* btCollisionShape.h */, + B6CAB0601AF9AA1900B9B856 /* btCompoundShape.cpp */, + B6CAB0611AF9AA1900B9B856 /* btCompoundShape.h */, + B6CAB0621AF9AA1900B9B856 /* btConcaveShape.cpp */, + B6CAB0631AF9AA1900B9B856 /* btConcaveShape.h */, + B6CAB0641AF9AA1900B9B856 /* btConeShape.cpp */, + B6CAB0651AF9AA1900B9B856 /* btConeShape.h */, + B6CAB0661AF9AA1900B9B856 /* btConvex2dShape.cpp */, + B6CAB0671AF9AA1900B9B856 /* btConvex2dShape.h */, + B6CAB0681AF9AA1900B9B856 /* btConvexHullShape.cpp */, + B6CAB0691AF9AA1900B9B856 /* btConvexHullShape.h */, + B6CAB06A1AF9AA1900B9B856 /* btConvexInternalShape.cpp */, + B6CAB06B1AF9AA1900B9B856 /* btConvexInternalShape.h */, + B6CAB06C1AF9AA1900B9B856 /* btConvexPointCloudShape.cpp */, + B6CAB06D1AF9AA1900B9B856 /* btConvexPointCloudShape.h */, + B6CAB06E1AF9AA1900B9B856 /* btConvexPolyhedron.cpp */, + B6CAB06F1AF9AA1900B9B856 /* btConvexPolyhedron.h */, + B6CAB0701AF9AA1900B9B856 /* btConvexShape.cpp */, + B6CAB0711AF9AA1900B9B856 /* btConvexShape.h */, + B6CAB0721AF9AA1900B9B856 /* btConvexTriangleMeshShape.cpp */, + B6CAB0731AF9AA1900B9B856 /* btConvexTriangleMeshShape.h */, + B6CAB0741AF9AA1900B9B856 /* btCylinderShape.cpp */, + B6CAB0751AF9AA1900B9B856 /* btCylinderShape.h */, + B6CAB0761AF9AA1900B9B856 /* btEmptyShape.cpp */, + B6CAB0771AF9AA1900B9B856 /* btEmptyShape.h */, + B6CAB0781AF9AA1900B9B856 /* btHeightfieldTerrainShape.cpp */, + B6CAB0791AF9AA1900B9B856 /* btHeightfieldTerrainShape.h */, + B6CAB07A1AF9AA1900B9B856 /* btMaterial.h */, + B6CAB07B1AF9AA1900B9B856 /* btMinkowskiSumShape.cpp */, + B6CAB07C1AF9AA1900B9B856 /* btMinkowskiSumShape.h */, + B6CAB07D1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.cpp */, + B6CAB07E1AF9AA1900B9B856 /* btMultimaterialTriangleMeshShape.h */, + B6CAB07F1AF9AA1900B9B856 /* btMultiSphereShape.cpp */, + B6CAB0801AF9AA1900B9B856 /* btMultiSphereShape.h */, + B6CAB0811AF9AA1900B9B856 /* btOptimizedBvh.cpp */, + B6CAB0821AF9AA1900B9B856 /* btOptimizedBvh.h */, + B6CAB0831AF9AA1900B9B856 /* btPolyhedralConvexShape.cpp */, + B6CAB0841AF9AA1900B9B856 /* btPolyhedralConvexShape.h */, + B6CAB0851AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.cpp */, + B6CAB0861AF9AA1900B9B856 /* btScaledBvhTriangleMeshShape.h */, + B6CAB0871AF9AA1900B9B856 /* btShapeHull.cpp */, + B6CAB0881AF9AA1900B9B856 /* btShapeHull.h */, + B6CAB0891AF9AA1900B9B856 /* btSphereShape.cpp */, + B6CAB08A1AF9AA1900B9B856 /* btSphereShape.h */, + B6CAB08B1AF9AA1900B9B856 /* btStaticPlaneShape.cpp */, + B6CAB08C1AF9AA1900B9B856 /* btStaticPlaneShape.h */, + B6CAB08D1AF9AA1900B9B856 /* btStridingMeshInterface.cpp */, + B6CAB08E1AF9AA1900B9B856 /* btStridingMeshInterface.h */, + B6CAB08F1AF9AA1900B9B856 /* btTetrahedronShape.cpp */, + B6CAB0901AF9AA1900B9B856 /* btTetrahedronShape.h */, + B6CAB0911AF9AA1900B9B856 /* btTriangleBuffer.cpp */, + B6CAB0921AF9AA1900B9B856 /* btTriangleBuffer.h */, + B6CAB0931AF9AA1900B9B856 /* btTriangleCallback.cpp */, + B6CAB0941AF9AA1900B9B856 /* btTriangleCallback.h */, + B6CAB0951AF9AA1900B9B856 /* btTriangleIndexVertexArray.cpp */, + B6CAB0961AF9AA1900B9B856 /* btTriangleIndexVertexArray.h */, + B6CAB0971AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.cpp */, + B6CAB0981AF9AA1900B9B856 /* btTriangleIndexVertexMaterialArray.h */, + B6CAB0991AF9AA1900B9B856 /* btTriangleInfoMap.h */, + B6CAB09A1AF9AA1900B9B856 /* btTriangleMesh.cpp */, + B6CAB09B1AF9AA1900B9B856 /* btTriangleMesh.h */, + B6CAB09C1AF9AA1900B9B856 /* btTriangleMeshShape.cpp */, + B6CAB09D1AF9AA1900B9B856 /* btTriangleMeshShape.h */, + B6CAB09E1AF9AA1900B9B856 /* btTriangleShape.h */, + B6CAB09F1AF9AA1900B9B856 /* btUniformScalingShape.cpp */, + B6CAB0A01AF9AA1900B9B856 /* btUniformScalingShape.h */, + ); + path = CollisionShapes; + sourceTree = ""; + }; + B6CAB0A11AF9AA1900B9B856 /* Gimpact */ = { + isa = PBXGroup; + children = ( + B6CAB0A21AF9AA1900B9B856 /* btBoxCollision.h */, + B6CAB0A31AF9AA1900B9B856 /* btClipPolygon.h */, + B6CAB0A41AF9AA1900B9B856 /* btCompoundFromGimpact.h */, + B6CAB0A51AF9AA1900B9B856 /* btContactProcessing.cpp */, + B6CAB0A61AF9AA1900B9B856 /* btContactProcessing.h */, + B6CAB0A71AF9AA1900B9B856 /* btGenericPoolAllocator.cpp */, + B6CAB0A81AF9AA1900B9B856 /* btGenericPoolAllocator.h */, + B6CAB0A91AF9AA1900B9B856 /* btGeometryOperations.h */, + B6CAB0AA1AF9AA1900B9B856 /* btGImpactBvh.cpp */, + B6CAB0AB1AF9AA1900B9B856 /* btGImpactBvh.h */, + B6CAB0AC1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.cpp */, + B6CAB0AD1AF9AA1900B9B856 /* btGImpactCollisionAlgorithm.h */, + B6CAB0AE1AF9AA1900B9B856 /* btGImpactMassUtil.h */, + B6CAB0AF1AF9AA1900B9B856 /* btGImpactQuantizedBvh.cpp */, + B6CAB0B01AF9AA1900B9B856 /* btGImpactQuantizedBvh.h */, + B6CAB0B11AF9AA1900B9B856 /* btGImpactShape.cpp */, + B6CAB0B21AF9AA1900B9B856 /* btGImpactShape.h */, + B6CAB0B31AF9AA1900B9B856 /* btQuantization.h */, + B6CAB0B41AF9AA1900B9B856 /* btTriangleShapeEx.cpp */, + B6CAB0B51AF9AA1900B9B856 /* btTriangleShapeEx.h */, + B6CAB0B61AF9AA1900B9B856 /* gim_array.h */, + B6CAB0B71AF9AA1900B9B856 /* gim_basic_geometry_operations.h */, + B6CAB0B81AF9AA1900B9B856 /* gim_bitset.h */, + B6CAB0B91AF9AA1900B9B856 /* gim_box_collision.h */, + B6CAB0BA1AF9AA1900B9B856 /* gim_box_set.cpp */, + B6CAB0BB1AF9AA1900B9B856 /* gim_box_set.h */, + B6CAB0BC1AF9AA1900B9B856 /* gim_clip_polygon.h */, + B6CAB0BD1AF9AA1900B9B856 /* gim_contact.cpp */, + B6CAB0BE1AF9AA1900B9B856 /* gim_contact.h */, + B6CAB0BF1AF9AA1900B9B856 /* gim_geom_types.h */, + B6CAB0C01AF9AA1900B9B856 /* gim_geometry.h */, + B6CAB0C11AF9AA1900B9B856 /* gim_hash_table.h */, + B6CAB0C21AF9AA1900B9B856 /* gim_linear_math.h */, + B6CAB0C31AF9AA1900B9B856 /* gim_math.h */, + B6CAB0C41AF9AA1900B9B856 /* gim_memory.cpp */, + B6CAB0C51AF9AA1900B9B856 /* gim_memory.h */, + B6CAB0C61AF9AA1900B9B856 /* gim_radixsort.h */, + B6CAB0C71AF9AA1900B9B856 /* gim_tri_collision.cpp */, + B6CAB0C81AF9AA1900B9B856 /* gim_tri_collision.h */, + ); + path = Gimpact; + sourceTree = ""; + }; + B6CAB0C91AF9AA1900B9B856 /* NarrowPhaseCollision */ = { + isa = PBXGroup; + children = ( + B6CAB0CA1AF9AA1900B9B856 /* btContinuousConvexCollision.cpp */, + B6CAB0CB1AF9AA1900B9B856 /* btContinuousConvexCollision.h */, + B6CAB0CC1AF9AA1900B9B856 /* btConvexCast.cpp */, + B6CAB0CD1AF9AA1900B9B856 /* btConvexCast.h */, + B6CAB0CE1AF9AA1900B9B856 /* btConvexPenetrationDepthSolver.h */, + B6CAB0CF1AF9AA1900B9B856 /* btDiscreteCollisionDetectorInterface.h */, + B6CAB0D01AF9AA1900B9B856 /* btGjkConvexCast.cpp */, + B6CAB0D11AF9AA1900B9B856 /* btGjkConvexCast.h */, + B6CAB0D21AF9AA1900B9B856 /* btGjkEpa2.cpp */, + B6CAB0D31AF9AA1900B9B856 /* btGjkEpa2.h */, + B6CAB0D41AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.cpp */, + B6CAB0D51AF9AA1900B9B856 /* btGjkEpaPenetrationDepthSolver.h */, + B6CAB0D61AF9AA1900B9B856 /* btGjkPairDetector.cpp */, + B6CAB0D71AF9AA1900B9B856 /* btGjkPairDetector.h */, + B6CAB0D81AF9AA1900B9B856 /* btManifoldPoint.h */, + B6CAB0D91AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.cpp */, + B6CAB0DA1AF9AA1900B9B856 /* btMinkowskiPenetrationDepthSolver.h */, + B6CAB0DB1AF9AA1900B9B856 /* btPersistentManifold.cpp */, + B6CAB0DC1AF9AA1900B9B856 /* btPersistentManifold.h */, + B6CAB0DD1AF9AA1900B9B856 /* btPointCollector.h */, + B6CAB0DE1AF9AA1900B9B856 /* btPolyhedralContactClipping.cpp */, + B6CAB0DF1AF9AA1900B9B856 /* btPolyhedralContactClipping.h */, + B6CAB0E01AF9AA1900B9B856 /* btRaycastCallback.cpp */, + B6CAB0E11AF9AA1900B9B856 /* btRaycastCallback.h */, + B6CAB0E21AF9AA1900B9B856 /* btSimplexSolverInterface.h */, + B6CAB0E31AF9AA1900B9B856 /* btSubSimplexConvexCast.cpp */, + B6CAB0E41AF9AA1900B9B856 /* btSubSimplexConvexCast.h */, + B6CAB0E51AF9AA1900B9B856 /* btVoronoiSimplexSolver.cpp */, + B6CAB0E61AF9AA1900B9B856 /* btVoronoiSimplexSolver.h */, + ); + path = NarrowPhaseCollision; + sourceTree = ""; + }; + B6CAB0E71AF9AA1900B9B856 /* BulletDynamics */ = { + isa = PBXGroup; + children = ( + B6CAB0E81AF9AA1900B9B856 /* Character */, + B6CAB0EC1AF9AA1900B9B856 /* ConstraintSolver */, + B6CAB10E1AF9AA1900B9B856 /* Dynamics */, + B6CAB1181AF9AA1900B9B856 /* Featherstone */, + B6CAB12A1AF9AA1900B9B856 /* MLCPSolvers */, + B6CAB1331AF9AA1900B9B856 /* Vehicle */, + ); + name = BulletDynamics; + path = ../external/bullet/BulletDynamics; + sourceTree = ""; + }; + B6CAB0E81AF9AA1900B9B856 /* Character */ = { + isa = PBXGroup; + children = ( + B6CAB0E91AF9AA1900B9B856 /* btCharacterControllerInterface.h */, + B6CAB0EA1AF9AA1900B9B856 /* btKinematicCharacterController.cpp */, + B6CAB0EB1AF9AA1900B9B856 /* btKinematicCharacterController.h */, + ); + path = Character; + sourceTree = ""; + }; + B6CAB0EC1AF9AA1900B9B856 /* ConstraintSolver */ = { + isa = PBXGroup; + children = ( + B6CAB0ED1AF9AA1900B9B856 /* btConeTwistConstraint.cpp */, + B6CAB0EE1AF9AA1900B9B856 /* btConeTwistConstraint.h */, + B6CAB0EF1AF9AA1900B9B856 /* btConstraintSolver.h */, + B6CAB0F01AF9AA1900B9B856 /* btContactConstraint.cpp */, + B6CAB0F11AF9AA1900B9B856 /* btContactConstraint.h */, + B6CAB0F21AF9AA1900B9B856 /* btContactSolverInfo.h */, + B6CAB0F31AF9AA1900B9B856 /* btFixedConstraint.cpp */, + B6CAB0F41AF9AA1900B9B856 /* btFixedConstraint.h */, + B6CAB0F51AF9AA1900B9B856 /* btGearConstraint.cpp */, + B6CAB0F61AF9AA1900B9B856 /* btGearConstraint.h */, + B6CAB0F71AF9AA1900B9B856 /* btGeneric6DofConstraint.cpp */, + B6CAB0F81AF9AA1900B9B856 /* btGeneric6DofConstraint.h */, + B6CAB0F91AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.cpp */, + B6CAB0FA1AF9AA1900B9B856 /* btGeneric6DofSpringConstraint.h */, + B6CAB0FB1AF9AA1900B9B856 /* btHinge2Constraint.cpp */, + B6CAB0FC1AF9AA1900B9B856 /* btHinge2Constraint.h */, + B6CAB0FD1AF9AA1900B9B856 /* btHingeConstraint.cpp */, + B6CAB0FE1AF9AA1900B9B856 /* btHingeConstraint.h */, + B6CAB0FF1AF9AA1900B9B856 /* btJacobianEntry.h */, + B6CAB1001AF9AA1900B9B856 /* btPoint2PointConstraint.cpp */, + B6CAB1011AF9AA1900B9B856 /* btPoint2PointConstraint.h */, + B6CAB1021AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.cpp */, + B6CAB1031AF9AA1900B9B856 /* btSequentialImpulseConstraintSolver.h */, + B6CAB1041AF9AA1900B9B856 /* btSliderConstraint.cpp */, + B6CAB1051AF9AA1900B9B856 /* btSliderConstraint.h */, + B6CAB1061AF9AA1900B9B856 /* btSolve2LinearConstraint.cpp */, + B6CAB1071AF9AA1900B9B856 /* btSolve2LinearConstraint.h */, + B6CAB1081AF9AA1900B9B856 /* btSolverBody.h */, + B6CAB1091AF9AA1900B9B856 /* btSolverConstraint.h */, + B6CAB10A1AF9AA1900B9B856 /* btTypedConstraint.cpp */, + B6CAB10B1AF9AA1900B9B856 /* btTypedConstraint.h */, + B6CAB10C1AF9AA1900B9B856 /* btUniversalConstraint.cpp */, + B6CAB10D1AF9AA1900B9B856 /* btUniversalConstraint.h */, + ); + path = ConstraintSolver; + sourceTree = ""; + }; + B6CAB10E1AF9AA1900B9B856 /* Dynamics */ = { + isa = PBXGroup; + children = ( + B6CAB10F1AF9AA1900B9B856 /* btActionInterface.h */, + B6CAB1101AF9AA1900B9B856 /* btDiscreteDynamicsWorld.cpp */, + B6CAB1111AF9AA1900B9B856 /* btDiscreteDynamicsWorld.h */, + B6CAB1121AF9AA1900B9B856 /* btDynamicsWorld.h */, + B6CAB1131AF9AA1900B9B856 /* btRigidBody.cpp */, + B6CAB1141AF9AA1900B9B856 /* btRigidBody.h */, + B6CAB1151AF9AA1900B9B856 /* btSimpleDynamicsWorld.cpp */, + B6CAB1161AF9AA1900B9B856 /* btSimpleDynamicsWorld.h */, + B6CAB1171AF9AA1900B9B856 /* Bullet-C-API.cpp */, + ); + path = Dynamics; + sourceTree = ""; + }; + B6CAB1181AF9AA1900B9B856 /* Featherstone */ = { + isa = PBXGroup; + children = ( + B6CAB1191AF9AA1900B9B856 /* btMultiBody.cpp */, + B6CAB11A1AF9AA1900B9B856 /* btMultiBody.h */, + B6CAB11B1AF9AA1900B9B856 /* btMultiBodyConstraint.cpp */, + B6CAB11C1AF9AA1900B9B856 /* btMultiBodyConstraint.h */, + B6CAB11D1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.cpp */, + B6CAB11E1AF9AA1900B9B856 /* btMultiBodyConstraintSolver.h */, + B6CAB11F1AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.cpp */, + B6CAB1201AF9AA1900B9B856 /* btMultiBodyDynamicsWorld.h */, + B6CAB1211AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.cpp */, + B6CAB1221AF9AA1900B9B856 /* btMultiBodyJointLimitConstraint.h */, + B6CAB1231AF9AA1900B9B856 /* btMultiBodyJointMotor.cpp */, + B6CAB1241AF9AA1900B9B856 /* btMultiBodyJointMotor.h */, + B6CAB1251AF9AA1900B9B856 /* btMultiBodyLink.h */, + B6CAB1261AF9AA1900B9B856 /* btMultiBodyLinkCollider.h */, + B6CAB1271AF9AA1900B9B856 /* btMultiBodyPoint2Point.cpp */, + B6CAB1281AF9AA1900B9B856 /* btMultiBodyPoint2Point.h */, + B6CAB1291AF9AA1900B9B856 /* btMultiBodySolverConstraint.h */, + ); + path = Featherstone; + sourceTree = ""; + }; + B6CAB12A1AF9AA1900B9B856 /* MLCPSolvers */ = { + isa = PBXGroup; + children = ( + B6CAB12B1AF9AA1900B9B856 /* btDantzigLCP.cpp */, + B6CAB12C1AF9AA1900B9B856 /* btDantzigLCP.h */, + B6CAB12D1AF9AA1900B9B856 /* btDantzigSolver.h */, + B6CAB12E1AF9AA1900B9B856 /* btMLCPSolver.cpp */, + B6CAB12F1AF9AA1900B9B856 /* btMLCPSolver.h */, + B6CAB1301AF9AA1900B9B856 /* btMLCPSolverInterface.h */, + B6CAB1311AF9AA1900B9B856 /* btPATHSolver.h */, + B6CAB1321AF9AA1900B9B856 /* btSolveProjectedGaussSeidel.h */, + ); + path = MLCPSolvers; + sourceTree = ""; + }; + B6CAB1331AF9AA1900B9B856 /* Vehicle */ = { + isa = PBXGroup; + children = ( + B6CAB1341AF9AA1900B9B856 /* btRaycastVehicle.cpp */, + B6CAB1351AF9AA1900B9B856 /* btRaycastVehicle.h */, + B6CAB1361AF9AA1900B9B856 /* btVehicleRaycaster.h */, + B6CAB1371AF9AA1900B9B856 /* btWheelInfo.cpp */, + B6CAB1381AF9AA1900B9B856 /* btWheelInfo.h */, + ); + path = Vehicle; + sourceTree = ""; + }; + B6CAB1391AF9AA1900B9B856 /* BulletMultiThreaded */ = { + isa = PBXGroup; + children = ( + B6CAB13A1AF9AA1900B9B856 /* btGpu3DGridBroadphase.cpp */, + B6CAB13B1AF9AA1900B9B856 /* btGpu3DGridBroadphase.h */, + B6CAB13C1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedCode.h */, + B6CAB13D1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedDefs.h */, + B6CAB13E1AF9AA1900B9B856 /* btGpu3DGridBroadphaseSharedTypes.h */, + B6CAB13F1AF9AA1900B9B856 /* btGpuDefines.h */, + B6CAB1401AF9AA1900B9B856 /* btGpuUtilsSharedCode.h */, + B6CAB1411AF9AA1900B9B856 /* btGpuUtilsSharedDefs.h */, + B6CAB1421AF9AA1900B9B856 /* btParallelConstraintSolver.cpp */, + B6CAB1431AF9AA1900B9B856 /* btParallelConstraintSolver.h */, + B6CAB1441AF9AA1900B9B856 /* btThreadSupportInterface.cpp */, + B6CAB1451AF9AA1900B9B856 /* btThreadSupportInterface.h */, + B6CAB1841AF9AA1A00B9B856 /* HeapManager.h */, + B6CAB1851AF9AA1A00B9B856 /* PlatformDefinitions.h */, + B6CAB1861AF9AA1A00B9B856 /* PosixThreadSupport.cpp */, + B6CAB1871AF9AA1A00B9B856 /* PosixThreadSupport.h */, + B6CAB1881AF9AA1A00B9B856 /* PpuAddressSpace.h */, + B6CAB1891AF9AA1A00B9B856 /* SequentialThreadSupport.cpp */, + B6CAB18A1AF9AA1A00B9B856 /* SequentialThreadSupport.h */, + B6CAB18B1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp */, + B6CAB18C1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h */, + B6CAB18D1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp */, + B6CAB18E1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h */, + B6CAB18F1AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp */, + B6CAB1901AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h */, + B6CAB1911AF9AA1A00B9B856 /* SpuDoubleBuffer.h */, + B6CAB1921AF9AA1A00B9B856 /* SpuFakeDma.cpp */, + B6CAB1931AF9AA1A00B9B856 /* SpuFakeDma.h */, + B6CAB1941AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp */, + B6CAB1951AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h */, + B6CAB1961AF9AA1A00B9B856 /* SpuLibspe2Support.cpp */, + B6CAB1971AF9AA1A00B9B856 /* SpuLibspe2Support.h */, + B6CAB1981AF9AA1A00B9B856 /* SpuNarrowPhaseCollisionTask */, + B6CAB1A71AF9AA1A00B9B856 /* SpuSampleTask */, + B6CAB1AA1AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp */, + B6CAB1AB1AF9AA1A00B9B856 /* SpuSampleTaskProcess.h */, + B6CAB1AC1AF9AA1A00B9B856 /* SpuSync.h */, + B6CAB1AD1AF9AA1A00B9B856 /* TrbDynBody.h */, + B6CAB1AE1AF9AA1A00B9B856 /* TrbStateVec.h */, + B6CAB1AF1AF9AA1A00B9B856 /* vectormath2bullet.h */, + B6CAB1B01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp */, + B6CAB1B11AF9AA1A00B9B856 /* Win32ThreadSupport.h */, + ); + name = BulletMultiThreaded; + path = ../external/bullet/BulletMultiThreaded; + sourceTree = ""; + }; + B6CAB1981AF9AA1A00B9B856 /* SpuNarrowPhaseCollisionTask */ = { + isa = PBXGroup; + children = ( + B6CAB1991AF9AA1A00B9B856 /* Box.h */, + B6CAB19A1AF9AA1A00B9B856 /* boxBoxDistance.cpp */, + B6CAB19B1AF9AA1A00B9B856 /* boxBoxDistance.h */, + B6CAB19C1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp */, + B6CAB19D1AF9AA1A00B9B856 /* SpuCollisionShapes.h */, + B6CAB19E1AF9AA1A00B9B856 /* SpuContactResult.cpp */, + B6CAB19F1AF9AA1A00B9B856 /* SpuContactResult.h */, + B6CAB1A01AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h */, + B6CAB1A11AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp */, + B6CAB1A21AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h */, + B6CAB1A31AF9AA1A00B9B856 /* SpuLocalSupport.h */, + B6CAB1A41AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp */, + B6CAB1A51AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h */, + B6CAB1A61AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h */, + ); + path = SpuNarrowPhaseCollisionTask; + sourceTree = ""; + }; + B6CAB1A71AF9AA1A00B9B856 /* SpuSampleTask */ = { + isa = PBXGroup; + children = ( + B6CAB1A81AF9AA1A00B9B856 /* SpuSampleTask.cpp */, + B6CAB1A91AF9AA1A00B9B856 /* SpuSampleTask.h */, + ); + path = SpuSampleTask; + sourceTree = ""; + }; + B6CAB1B21AF9AA1A00B9B856 /* LinearMath */ = { + isa = PBXGroup; + children = ( + B6CAB1B31AF9AA1A00B9B856 /* btAabbUtil2.h */, + B6CAB1B41AF9AA1A00B9B856 /* btAlignedAllocator.cpp */, + B6CAB1B51AF9AA1A00B9B856 /* btAlignedAllocator.h */, + B6CAB1B61AF9AA1A00B9B856 /* btAlignedObjectArray.h */, + B6CAB1B71AF9AA1A00B9B856 /* btConvexHull.cpp */, + B6CAB1B81AF9AA1A00B9B856 /* btConvexHull.h */, + B6CAB1B91AF9AA1A00B9B856 /* btConvexHullComputer.cpp */, + B6CAB1BA1AF9AA1A00B9B856 /* btConvexHullComputer.h */, + B6CAB1BB1AF9AA1A00B9B856 /* btDefaultMotionState.h */, + B6CAB1BC1AF9AA1A00B9B856 /* btGeometryUtil.cpp */, + B6CAB1BD1AF9AA1A00B9B856 /* btGeometryUtil.h */, + B6CAB1BE1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h */, + B6CAB1BF1AF9AA1A00B9B856 /* btHashMap.h */, + B6CAB1C01AF9AA1A00B9B856 /* btIDebugDraw.h */, + B6CAB1C11AF9AA1A00B9B856 /* btList.h */, + B6CAB1C21AF9AA1A00B9B856 /* btMatrix3x3.h */, + B6CAB1C31AF9AA1A00B9B856 /* btMatrixX.h */, + B6CAB1C41AF9AA1A00B9B856 /* btMinMax.h */, + B6CAB1C51AF9AA1A00B9B856 /* btMotionState.h */, + B6CAB1C61AF9AA1A00B9B856 /* btPolarDecomposition.cpp */, + B6CAB1C71AF9AA1A00B9B856 /* btPolarDecomposition.h */, + B6CAB1C81AF9AA1A00B9B856 /* btPoolAllocator.h */, + B6CAB1C91AF9AA1A00B9B856 /* btQuadWord.h */, + B6CAB1CA1AF9AA1A00B9B856 /* btQuaternion.h */, + B6CAB1CB1AF9AA1A00B9B856 /* btQuickprof.cpp */, + B6CAB1CC1AF9AA1A00B9B856 /* btQuickprof.h */, + B6CAB1CD1AF9AA1A00B9B856 /* btRandom.h */, + B6CAB1CE1AF9AA1A00B9B856 /* btScalar.h */, + B6CAB1CF1AF9AA1A00B9B856 /* btSerializer.cpp */, + B6CAB1D01AF9AA1A00B9B856 /* btSerializer.h */, + B6CAB1D11AF9AA1A00B9B856 /* btStackAlloc.h */, + B6CAB1D21AF9AA1A00B9B856 /* btTransform.h */, + B6CAB1D31AF9AA1A00B9B856 /* btTransformUtil.h */, + B6CAB1D41AF9AA1A00B9B856 /* btVector3.cpp */, + B6CAB1D51AF9AA1A00B9B856 /* btVector3.h */, + ); + name = LinearMath; + path = ../external/bullet/LinearMath; + sourceTree = ""; + }; + B6CAB1D61AF9AA1A00B9B856 /* MiniCL */ = { + isa = PBXGroup; + children = ( + B6CAB1D71AF9AA1A00B9B856 /* cl.h */, + B6CAB1D81AF9AA1A00B9B856 /* cl_gl.h */, + B6CAB1D91AF9AA1A00B9B856 /* cl_MiniCL_Defs.h */, + B6CAB1DA1AF9AA1A00B9B856 /* cl_platform.h */, + B6CAB1DB1AF9AA1A00B9B856 /* MiniCL.cpp */, + B6CAB1DC1AF9AA1A00B9B856 /* MiniCLTask */, + B6CAB1DF1AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp */, + B6CAB1E01AF9AA1A00B9B856 /* MiniCLTaskScheduler.h */, + ); + name = MiniCL; + path = ../external/bullet/MiniCL; + sourceTree = ""; + }; + B6CAB1DC1AF9AA1A00B9B856 /* MiniCLTask */ = { + isa = PBXGroup; + children = ( + B6CAB1DD1AF9AA1A00B9B856 /* MiniCLTask.cpp */, + B6CAB1DE1AF9AA1A00B9B856 /* MiniCLTask.h */, + ); + path = MiniCLTask; + sourceTree = ""; + }; D0FD03391A3B51AA00825BB5 /* allocator */ = { isa = PBXGroup; children = ( @@ -6688,17 +8513,26 @@ 50ABBE9B1925AB6F00A911A9 /* CCRef.h in Headers */, 50ABBE851925AB6F00A911A9 /* ccFPSImages.h in Headers */, B665E2701AA80A6500DDB1C5 /* CCPUDoFreezeEventHandlerTranslator.h in Headers */, + B6CAB4251AF9AA1A00B9B856 /* btPATHSolver.h in Headers */, 15AE1A5319AAD40300C27E9E /* b2Draw.h in Headers */, B665E25C1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandler.h in Headers */, + B6CAB33B1AF9AA1A00B9B856 /* btTriangleShapeEx.h in Headers */, + B6CAB4C71AF9AA1A00B9B856 /* boxBoxDistance.h in Headers */, 38B8E2E319E671D2002D7CE7 /* UILayoutComponent.h in Headers */, B6D38B8C1AC3AFAC00043997 /* CCSkybox.h in Headers */, 5034CA39191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, 292DB14B19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */, + B6CAB39D1AF9AA1A00B9B856 /* btCharacterControllerInterface.h in Headers */, B29A7E3F19EE1B7700872B35 /* AnimationState.h in Headers */, + B6CAB50F1AF9AA1A00B9B856 /* btList.h in Headers */, D0FD03591A3B51AA00825BB5 /* CCAllocatorStrategyDefault.h in Headers */, B665E2901AA80A6500DDB1C5 /* CCPUDynamicAttributeTranslator.h in Headers */, + B6CAB3531AF9AA1A00B9B856 /* gim_hash_table.h in Headers */, 50ABBE891925AB6F00A911A9 /* CCMap.h in Headers */, + B6CAB3131AF9AA1A00B9B856 /* btUniformScalingShape.h in Headers */, 50ABBE8D1925AB6F00A911A9 /* CCNS.h in Headers */, + B6CAB1E91AF9AA1A00B9B856 /* btAxisSweep3.h in Headers */, + B6CAB2331AF9AA1A00B9B856 /* btCollisionWorld.h in Headers */, B29A7DFD19EE1B7700872B35 /* IkConstraintData.h in Headers */, 50ABBEA51925AB6F00A911A9 /* CCScriptSupport.h in Headers */, 292DB14519B4574100A80320 /* UIEditBoxImpl-android.h in Headers */, @@ -6706,30 +8540,40 @@ B665E2E41AA80A6500DDB1C5 /* CCPULineAffectorTranslator.h in Headers */, B665E2781AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandlerTranslator.h in Headers */, 15AE18EB19AAD35000C27E9E /* CCActionNode.h in Headers */, + B6CAB2151AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.h in Headers */, B665E2501AA80A6500DDB1C5 /* CCPUColorAffectorTranslator.h in Headers */, B665E3901AA80A6500DDB1C5 /* CCPUPlaneCollider.h in Headers */, + B6CAB4A71AF9AA1A00B9B856 /* SequentialThreadSupport.h in Headers */, + B6CAB31D1AF9AA1A00B9B856 /* btContactProcessing.h in Headers */, 15AE1A3819AAD3D500C27E9E /* b2Shape.h in Headers */, 15AE18FC19AAD35000C27E9E /* CCComBase.h in Headers */, 1ABA68B01888D700007D1BB4 /* CCFontCharMap.h in Headers */, 15AE1B5219AADA9900C27E9E /* UIPageView.h in Headers */, + B6CAB3911AF9AA1A00B9B856 /* btRaycastCallback.h in Headers */, 5091A7A319BFABA800AC8789 /* CCPlatformDefine.h in Headers */, + B6CAB4F71AF9AA1A00B9B856 /* btAlignedAllocator.h in Headers */, 5034CA3F191D591100CE6051 /* ccShader_Position_uColor.vert in Headers */, B665E4381AA80A6600DDB1C5 /* CCPUVortexAffector.h in Headers */, B29A7DD319EE1B7700872B35 /* Skin.h in Headers */, 50ABBD461925AB0000A911A9 /* CCVertex.h in Headers */, B63990CE1A490AFE00B07923 /* CCAsyncTaskPool.h in Headers */, + B6CAAFF81AF9A9E100B9B856 /* CCPhysics3DShape.h in Headers */, B665E2201AA80A6500DDB1C5 /* CCPUBehaviourManager.h in Headers */, 15AE180A19AAD2F700C27E9E /* CCAABB.h in Headers */, B665E28C1AA80A6500DDB1C5 /* CCPUDynamicAttribute.h in Headers */, B665E3941AA80A6500DDB1C5 /* CCPUPlaneColliderTranslator.h in Headers */, 46A170E71807CECA005B8026 /* CCPhysicsBody.h in Headers */, B665E22C1AA80A6500DDB1C5 /* CCPUBoxCollider.h in Headers */, + B6CAB4011AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.h in Headers */, + B6CAB2FB1AF9AA1A00B9B856 /* btTriangleCallback.h in Headers */, 15AE1A5A19AAD40300C27E9E /* b2StackAllocator.h in Headers */, B665E4101AA80A6600DDB1C5 /* CCPUTechniqueTranslator.h in Headers */, + B6CAB3691AF9AA1A00B9B856 /* btConvexCast.h in Headers */, 38F526401A48363B000DB7F7 /* ArmatureNodeReader.h in Headers */, B665E2E81AA80A6500DDB1C5 /* CCPULinearForceAffector.h in Headers */, B29A7E3119EE1B7700872B35 /* SkinnedMeshAttachment.h in Headers */, 15AE1B6F19AADA9900C27E9E /* GUIDefine.h in Headers */, + B6CAB25F1AF9AA1A00B9B856 /* btInternalEdgeUtility.h in Headers */, 15AE1A8119AAD40300C27E9E /* b2FrictionJoint.h in Headers */, 15AE18DD19AAD35000C27E9E /* CocoLoader.h in Headers */, 46A170EB1807CECA005B8026 /* CCPhysicsJoint.h in Headers */, @@ -6738,6 +8582,7 @@ 15AE184619AAD2F700C27E9E /* CCSprite3DMaterial.h in Headers */, B68779061A8CA82E00643ABF /* CCParticleSystem3D.h in Headers */, 50ABBD3E1925AB0000A911A9 /* CCGeometry.h in Headers */, + B6CAB34F1AF9AA1A00B9B856 /* gim_geom_types.h in Headers */, 15AE1A7719AAD40300C27E9E /* b2EdgeAndPolygonContact.h in Headers */, 15AE18F719AAD35000C27E9E /* CCBatchNode.h in Headers */, 15AE181419AAD2F700C27E9E /* CCAnimationCurve.h in Headers */, @@ -6746,14 +8591,17 @@ B665E2601AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandlerTranslator.h in Headers */, 15AE1C1419AAE2C600C27E9E /* CCPhysicsSprite.h in Headers */, 46A170EE1807CECA005B8026 /* CCPhysicsShape.h in Headers */, + B6CAB3D91AF9AA1A00B9B856 /* btSolverBody.h in Headers */, 15AE1A5C19AAD40300C27E9E /* b2Timer.h in Headers */, B665E1FC1AA80A6500DDB1C5 /* CCPUAffectorTranslator.h in Headers */, 50ABBED31925AB6F00A911A9 /* uthash.h in Headers */, + B6CAB4B51AF9AA1A00B9B856 /* SpuDoubleBuffer.h in Headers */, 46A170E91807CECA005B8026 /* CCPhysicsContact.h in Headers */, 15AE1A2219AAD3D500C27E9E /* Box2D.h in Headers */, 15AE191419AAD35000C27E9E /* CCSGUIReader.h in Headers */, B29A7E0119EE1B7700872B35 /* extension.h in Headers */, 15AE196D19AAD35700C27E9E /* CCActionTimeline.h in Headers */, + B6CAB2BD1AF9AA1A00B9B856 /* btCylinderShape.h in Headers */, 15AE1A6D19AAD40300C27E9E /* b2ChainAndPolygonContact.h in Headers */, 3E2F27A719CFBFE400E7C490 /* AudioEngine.h in Headers */, 15AE183A19AAD2F700C27E9E /* CCRay.h in Headers */, @@ -6762,6 +8610,7 @@ B665E2C41AA80A6500DDB1C5 /* CCPUGeometryRotatorTranslator.h in Headers */, 46A170F01807CECA005B8026 /* CCPhysicsWorld.h in Headers */, 15AE199D19AAD39600C27E9E /* ScrollViewReader.h in Headers */, + B6CAB3471AF9AA1A00B9B856 /* gim_box_set.h in Headers */, DABC9FAB19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */, B68778FE1A8CA82E00643ABF /* CCParticle3DEmitter.h in Headers */, 50ABBEC11925AB6F00A911A9 /* CCValue.h in Headers */, @@ -6772,19 +8621,25 @@ 15B3708A19EE414C00ABE682 /* Manifest.h in Headers */, 50ABBE731925AB6F00A911A9 /* CCEventListenerMouse.h in Headers */, 1A570063180BC5A10088DEC7 /* CCAction.h in Headers */, + B6CAB40F1AF9AA1A00B9B856 /* btMultiBodyLink.h in Headers */, 1A570067180BC5A10088DEC7 /* CCActionCamera.h in Headers */, 15AE1AD919AAD41000C27E9E /* b2Rope.h in Headers */, 15AE187B19AAD33D00C27E9E /* CCBAnimationManager.h in Headers */, B665E2841AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandler.h in Headers */, + B6CAB52D1AF9AA1A00B9B856 /* btSerializer.h in Headers */, B665E3E01AA80A6600DDB1C5 /* CCPUSimpleSpline.h in Headers */, B665E42C1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffector.h in Headers */, B665E3B41AA80A6500DDB1C5 /* CCPURendererTranslator.h in Headers */, + B6CAAFF01AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h in Headers */, 1A57006B180BC5A10088DEC7 /* CCActionCatmullRom.h in Headers */, B665E3BC1AA80A6500DDB1C5 /* CCPURibbonTrailRender.h in Headers */, + B6CAB3371AF9AA1A00B9B856 /* btQuantization.h in Headers */, + B6CAB4371AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedCode.h in Headers */, B665E2A81AA80A6500DDB1C5 /* CCPUEventHandlerTranslator.h in Headers */, 4D76BE3C1A4AAF0A00102962 /* CCActionTimelineNode.h in Headers */, B665E27C1AA80A6500DDB1C5 /* CCPUDoScaleEventHandler.h in Headers */, 1A57006F180BC5A10088DEC7 /* CCActionEase.h in Headers */, + B6CAB2CB1AF9AA1A00B9B856 /* btMinkowskiSumShape.h in Headers */, B665E29C1AA80A6500DDB1C5 /* CCPUEmitterTranslator.h in Headers */, 15AE1BD719AAE01E00C27E9E /* CCControlSlider.h in Headers */, 15AE1BE519AAE01E00C27E9E /* CCTableView.h in Headers */, @@ -6792,18 +8647,25 @@ 15AE1BD319AAE01E00C27E9E /* CCControlPotentiometer.h in Headers */, 15AE1B6E19AADA9900C27E9E /* UIHelper.h in Headers */, B230ED7319B417AE00364AA8 /* CCTrianglesCommand.h in Headers */, + B6CAB2F71AF9AA1A00B9B856 /* btTriangleBuffer.h in Headers */, B665E2D41AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.h in Headers */, 15AE187F19AAD33D00C27E9E /* CCBKeyframe.h in Headers */, B665E2B41AA80A6500DDB1C5 /* CCPUForceField.h in Headers */, 1A570073180BC5A10088DEC7 /* CCActionGrid.h in Headers */, 15AE1BCC19AAE01E00C27E9E /* CCControlButton.h in Headers */, + B6CAB3D71AF9AA1A00B9B856 /* btSolve2LinearConstraint.h in Headers */, + B6CAB3E51AF9AA1A00B9B856 /* btActionInterface.h in Headers */, 5034CA3B191D591100CE6051 /* ccShader_PositionColor.vert in Headers */, B665E3101AA80A6500DDB1C5 /* CCPUObserver.h in Headers */, + B6CAB2071AF9AA1A00B9B856 /* btOverlappingPairCache.h in Headers */, 1A570077180BC5A10088DEC7 /* CCActionGrid3D.h in Headers */, 1A57007B180BC5A10088DEC7 /* CCActionInstant.h in Headers */, + B6CAB38D1AF9AA1A00B9B856 /* btPolyhedralContactClipping.h in Headers */, 15AE182A19AAD2F700C27E9E /* CCMeshSkin.h in Headers */, B276EF5F1988D1D500CD400F /* CCVertexIndexData.h in Headers */, 1A57007F180BC5A10088DEC7 /* CCActionInterval.h in Headers */, + B6CAB3491AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */, + B6CAAFE41AF9A9E100B9B856 /* CCPhysics3D.h in Headers */, 15AE1A7F19AAD40300C27E9E /* b2DistanceJoint.h in Headers */, B665E3301AA80A6500DDB1C5 /* CCPUOnCountObserverTranslator.h in Headers */, 15AE188719AAD33D00C27E9E /* CCBSequenceProperty.h in Headers */, @@ -6811,25 +8673,40 @@ 1A01C69A18F57BE800EFE3A6 /* CCSet.h in Headers */, 182C5CB31A95964700C30D34 /* Node3DReader.h in Headers */, 1A570083180BC5A10088DEC7 /* CCActionManager.h in Headers */, + B6CAB2251AF9AA1A00B9B856 /* btCollisionCreateFunc.h in Headers */, 1A570087180BC5A10088DEC7 /* CCActionPageTurn3D.h in Headers */, 50ABBD911925AB4100A911A9 /* CCGLProgramCache.h in Headers */, 50ED2BDA19BE76D300A0AB90 /* UIVideoPlayer.h in Headers */, + B6CAB3AB1AF9AA1A00B9B856 /* btContactConstraint.h in Headers */, + B6CAB4391AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedDefs.h in Headers */, 15AE199919AAD39600C27E9E /* LoadingBarReader.h in Headers */, + B6CAB4E71AF9AA1A00B9B856 /* SpuSync.h in Headers */, 15AE1A8F19AAD40300C27E9E /* b2RopeJoint.h in Headers */, 15AE18ED19AAD35000C27E9E /* CCActionObject.h in Headers */, + B6CAB4F31AF9AA1A00B9B856 /* btAabbUtil2.h in Headers */, ED9C6A9618599AD8000A5232 /* CCNodeGrid.h in Headers */, + B6CAB4151AF9AA1A00B9B856 /* btMultiBodyPoint2Point.h in Headers */, + B6CAB4491AF9AA1A00B9B856 /* btThreadSupportInterface.h in Headers */, 15AE18A719AAD33D00C27E9E /* CCScrollViewLoader.h in Headers */, 15FB20891AE7C57D00C31518 /* shapes.h in Headers */, 15AE184819AAD2F700C27E9E /* cocos3d.h in Headers */, + B6CAB2531AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.h in Headers */, 50ABBEC31925AB6F00A911A9 /* CCVector.h in Headers */, 1A57008B180BC5A10088DEC7 /* CCActionProgressTimer.h in Headers */, + B6CAB2A51AF9AA1A00B9B856 /* btConvexHullShape.h in Headers */, B665E2EC1AA80A6500DDB1C5 /* CCPULinearForceAffectorTranslator.h in Headers */, 382384151A259092002C4610 /* NodeReaderProtocol.h in Headers */, B665E2DC1AA80A6500DDB1C5 /* CCPUJetAffectorTranslator.h in Headers */, 382384111A259092002C4610 /* NodeReaderDefine.h in Headers */, 50ABBD8D1925AB4100A911A9 /* CCGLProgram.h in Headers */, 50ABBEA11925AB6F00A911A9 /* CCScheduler.h in Headers */, + B6CAB2211AF9AA1A00B9B856 /* btBoxBoxDetector.h in Headers */, + B6CAB5271AF9AA1A00B9B856 /* btRandom.h in Headers */, + B6CAB28D1AF9AA1A00B9B856 /* btCollisionMargin.h in Headers */, + B6CAB1FB1AF9AA1A00B9B856 /* btDbvtBroadphase.h in Headers */, 15AE1B6219AADA9900C27E9E /* UIButton.h in Headers */, + B6CAB4CF1AF9AA1A00B9B856 /* SpuContactResult.h in Headers */, + B6CAB4E11AF9AA1A00B9B856 /* SpuSampleTask.h in Headers */, 50ABBDB71925AB4100A911A9 /* CCTexture2D.h in Headers */, 50ABBE811925AB6F00A911A9 /* CCEventType.h in Headers */, B665E2B81AA80A6500DDB1C5 /* CCPUForceFieldAffector.h in Headers */, @@ -6841,33 +8718,44 @@ B665E2F41AA80A6500DDB1C5 /* CCPULineEmitterTranslator.h in Headers */, B665E2D81AA80A6500DDB1C5 /* CCPUJetAffector.h in Headers */, 1A570093180BC5A10088DEC7 /* CCActionTween.h in Headers */, + B6CAB3CF1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.h in Headers */, 50ABBD4A1925AB0000A911A9 /* Mat4.h in Headers */, + B6CAB36B1AF9AA1A00B9B856 /* btConvexPenetrationDepthSolver.h in Headers */, 15AE1A6919AAD40300C27E9E /* b2WorldCallbacks.h in Headers */, 29394CF419B01DBA00D2DE1A /* UIWebViewImpl-ios.h in Headers */, B665E3C01AA80A6500DDB1C5 /* CCPUScaleAffector.h in Headers */, B665E2401AA80A6500DDB1C5 /* CCPUCircleEmitterTranslator.h in Headers */, + B6CAB3C71AF9AA1A00B9B856 /* btJacobianEntry.h in Headers */, B29A7E1719EE1B7700872B35 /* Atlas.h in Headers */, + B6CAB30D1AF9AA1A00B9B856 /* btTriangleMeshShape.h in Headers */, 1A57009A180BC5C10088DEC7 /* CCAtlasNode.h in Headers */, + B6CAB3211AF9AA1A00B9B856 /* btGenericPoolAllocator.h in Headers */, D0FD035B1A3B51AA00825BB5 /* CCAllocatorStrategyFixedBlock.h in Headers */, + B6CAB5031AF9AA1A00B9B856 /* btDefaultMotionState.h in Headers */, 15AE190819AAD35000C27E9E /* CCDatas.h in Headers */, B665E3281AA80A6500DDB1C5 /* CCPUOnCollisionObserverTranslator.h in Headers */, B29A7E1119EE1B7700872B35 /* EventData.h in Headers */, 1A5700A0180BC5D20088DEC7 /* CCNode.h in Headers */, 50ABC0671926664800A911A9 /* CCPlatformDefine-mac.h in Headers */, + B6CAB34D1AF9AA1A00B9B856 /* gim_contact.h in Headers */, B665E40C1AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitterTranslator.h in Headers */, 15AE189A19AAD33D00C27E9E /* CCMenuLoader.h in Headers */, 46C02E0918E91123004B7456 /* xxhash.h in Headers */, 15AE1A6B19AAD40300C27E9E /* b2ChainAndCircleContact.h in Headers */, + B6CAB4451AF9AA1A00B9B856 /* btParallelConstraintSolver.h in Headers */, 1A570110180BC8EE0088DEC7 /* CCDrawingPrimitives.h in Headers */, + B6CAB5091AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h in Headers */, 50CB247D19D9C5A100687767 /* AudioPlayer.h in Headers */, 1A570114180BC8EE0088DEC7 /* CCDrawNode.h in Headers */, B665E3141AA80A6500DDB1C5 /* CCPUObserverManager.h in Headers */, B665E2E01AA80A6500DDB1C5 /* CCPULineAffector.h in Headers */, 15AE1A6019AAD40300C27E9E /* b2ContactManager.h in Headers */, 15B3707A19EE414C00ABE682 /* AssetsManagerEx.h in Headers */, + B6CAB2A11AF9AA1A00B9B856 /* btConvex2dShape.h in Headers */, 15AE188319AAD33D00C27E9E /* CCBSelectorResolver.h in Headers */, B29A7E2719EE1B7700872B35 /* spine-cocos2dx.h in Headers */, B665E2F01AA80A6500DDB1C5 /* CCPULineEmitter.h in Headers */, + B6CAB49D1AF9AA1A00B9B856 /* PlatformDefinitions.h in Headers */, 15AE1B5819AADA9900C27E9E /* UISlider.h in Headers */, 1A57011D180BC90D0088DEC7 /* CCGrabber.h in Headers */, B665E3C81AA80A6600DDB1C5 /* CCPUScaleVelocityAffector.h in Headers */, @@ -6882,29 +8770,44 @@ B29A7E2919EE1B7700872B35 /* SkeletonData.h in Headers */, 1AC0269C1914068200FA920D /* ConvertUTF.h in Headers */, 15AE1A7119AAD40300C27E9E /* b2Contact.h in Headers */, + B6CAB23B1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.h in Headers */, 50ABBED11925AB6F00A911A9 /* TGAlib.h in Headers */, 1A57019F180BCB590088DEC7 /* CCFont.h in Headers */, + B6CAB20D1AF9AA1A00B9B856 /* btQuantizedBvh.h in Headers */, DA8C62A419E52C6400000516 /* ioapi_mem.h in Headers */, + B6CAB53B1AF9AA1A00B9B856 /* cl_gl.h in Headers */, 1A5701A3180BCB590088DEC7 /* CCFontAtlas.h in Headers */, 15AE18E919AAD35000C27E9E /* CCActionManagerEx.h in Headers */, 1A01C68618F57BE800EFE3A6 /* CCArray.h in Headers */, 1A5701A7180BCB590088DEC7 /* CCFontAtlasCache.h in Headers */, + B6CAB3D31AF9AA1A00B9B856 /* btSliderConstraint.h in Headers */, 15AE1A7D19AAD40300C27E9E /* b2MotorJoint.h in Headers */, B68779021A8CA82E00643ABF /* CCParticle3DRender.h in Headers */, + B6CAB2471AF9AA1A00B9B856 /* btConvexConvexAlgorithm.h in Headers */, + B6CAB3A71AF9AA1A00B9B856 /* btConstraintSolver.h in Headers */, + B6CAB3EF1AF9AA1A00B9B856 /* btRigidBody.h in Headers */, 15AE1B6C19AADA9900C27E9E /* UIWidget.h in Headers */, B665E2681AA80A6500DDB1C5 /* CCPUDoExpireEventHandlerTranslator.h in Headers */, 15FB208B1AE7C57D00C31518 /* utils.h in Headers */, + B6CAB3411AF9AA1A00B9B856 /* gim_bitset.h in Headers */, 15AE180E19AAD2F700C27E9E /* CCAnimate3D.h in Headers */, 1A5701B3180BCB590088DEC7 /* CCFontFNT.h in Headers */, 38F526421A48363B000DB7F7 /* CSArmatureNode_generated.h in Headers */, + B6CAB2771AF9AA1A00B9B856 /* btUnionFind.h in Headers */, + B6CAB2111AF9AA1A00B9B856 /* btSimpleBroadphase.h in Headers */, 15AE1BD919AAE01E00C27E9E /* CCControlStepper.h in Headers */, 15AE192119AAD35000C27E9E /* CocoStudio.h in Headers */, + B6CAB3891AF9AA1A00B9B856 /* btPointCollector.h in Headers */, 15AE18A119AAD33D00C27E9E /* CCNodeLoaderListener.h in Headers */, 5034CA47191D591100CE6051 /* ccShader_Label_normal.frag in Headers */, 15AE182219AAD2F700C27E9E /* CCBundleReader.h in Headers */, 15AE18A519AAD33D00C27E9E /* CCScale9SpriteLoader.h in Headers */, 5E9F61281A3FFE3D0038DE01 /* CCFrustum.h in Headers */, + B6CAB3E91AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.h in Headers */, + B6CAB2F31AF9AA1A00B9B856 /* btTetrahedronShape.h in Headers */, + B6CAB4231AF9AA1A00B9B856 /* btMLCPSolverInterface.h in Headers */, 50ED2BE019BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */, + B6CAB5011AF9AA1A00B9B856 /* btConvexHullComputer.h in Headers */, 15AE197119AAD35700C27E9E /* CCFrame.h in Headers */, 15AE1A6519AAD40300C27E9E /* b2TimeStep.h in Headers */, 15AE182E19AAD2F700C27E9E /* CCMeshVertexIndexData.h in Headers */, @@ -6913,59 +8816,79 @@ B665E3B81AA80A6500DDB1C5 /* CCPURibbonTrail.h in Headers */, 1A5701B7180BCB5A0088DEC7 /* CCFontFreeType.h in Headers */, B665E20C1AA80A6500DDB1C5 /* CCPUBaseColliderTranslator.h in Headers */, + B6CAB3711AF9AA1A00B9B856 /* btGjkConvexCast.h in Headers */, D0FD03551A3B51AA00825BB5 /* CCAllocatorMacros.h in Headers */, 3823842A1A2590F9002C4610 /* NodeReader.h in Headers */, 1A5701BB180BCB5A0088DEC7 /* CCLabel.h in Headers */, + B6CAB3231AF9AA1A00B9B856 /* btGeometryOperations.h in Headers */, D0FD035D1A3B51AA00825BB5 /* CCAllocatorStrategyGlobalSmallBlock.h in Headers */, + B6CAB41B1AF9AA1A00B9B856 /* btDantzigLCP.h in Headers */, 15AE182619AAD2F700C27E9E /* CCMesh.h in Headers */, 15AE192019AAD35000C27E9E /* CCUtilMath.h in Headers */, + B6CAB25B1AF9AA1A00B9B856 /* btHashedSimplePairCache.h in Headers */, B665E4201AA80A6600DDB1C5 /* CCPUTextureRotatorTranslator.h in Headers */, 15AE1BC119AADFFB00C27E9E /* cocos-ext.h in Headers */, 1A5701BF180BCB5A0088DEC7 /* CCLabelAtlas.h in Headers */, 50ABBED91925AB6F00A911A9 /* ZipUtils.h in Headers */, 50643BDB19BFAF4400EF68ED /* CCStdC.h in Headers */, 1A5701C3180BCB5A0088DEC7 /* CCLabelBMFont.h in Headers */, + B6CAB33F1AF9AA1A00B9B856 /* gim_basic_geometry_operations.h in Headers */, + B6CAAFFC1AF9A9E100B9B856 /* CCPhysics3DWorld.h in Headers */, 50ABBE5F1925AB6F00A911A9 /* CCEventListener.h in Headers */, 15AE197519AAD35700C27E9E /* CCTimeLine.h in Headers */, 1A5701C9180BCB5A0088DEC7 /* CCLabelTextFormatter.h in Headers */, 5034CA37191D591100CE6051 /* ccShader_PositionColorLengthTexture.vert in Headers */, + B6CAB32D1AF9AA1A00B9B856 /* btGImpactMassUtil.h in Headers */, 15AE1B6419AADA9900C27E9E /* UICheckBox.h in Headers */, 1A5701CD180BCB5A0088DEC7 /* CCLabelTTF.h in Headers */, 15AE1A3319AAD3D500C27E9E /* b2CircleShape.h in Headers */, 1A5701E0180BCB8C0088DEC7 /* CCLayer.h in Headers */, 1A5701E4180BCB8C0088DEC7 /* CCScene.h in Headers */, 15FB20701AE7BE7400C31518 /* SpritePolygonCache.h in Headers */, + B6CAB2C11AF9AA1A00B9B856 /* btEmptyShape.h in Headers */, B665E3D81AA80A6600DDB1C5 /* CCPUScriptParser.h in Headers */, 382384091A25900F002C4610 /* FlatBuffersSerialize.h in Headers */, + B6CAB2A91AF9AA1A00B9B856 /* btConvexInternalShape.h in Headers */, 15AE1BDD19AAE01E00C27E9E /* CCControlUtils.h in Headers */, + B6CAB3271AF9AA1A00B9B856 /* btGImpactBvh.h in Headers */, 15AE198D19AAD36E00C27E9E /* CheckBoxReader.h in Headers */, B29A7E0919EE1B7700872B35 /* AttachmentLoader.h in Headers */, 1A01C68818F57BE800EFE3A6 /* CCBool.h in Headers */, B29A7E3319EE1B7700872B35 /* SlotData.h in Headers */, B665E2741AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.h in Headers */, + B6CAB2FF1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.h in Headers */, 15AE18E519AAD35000C27E9E /* CCActionFrame.h in Headers */, 50ABBEAD1925AB6F00A911A9 /* ccTypes.h in Headers */, 1A087AEA1860400400196EF5 /* edtaa3func.h in Headers */, + B6CAB43D1AF9AA1A00B9B856 /* btGpuDefines.h in Headers */, 15AE181C19AAD2F700C27E9E /* CCBundle3D.h in Headers */, 15AE189919AAD33D00C27E9E /* CCMenuItemLoader.h in Headers */, + B6CAB35D1AF9AA1A00B9B856 /* gim_radixsort.h in Headers */, + B6CAB4AB1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h in Headers */, 15AE1B5E19AADA9900C27E9E /* UITextBMFont.h in Headers */, B665E3601AA80A6500DDB1C5 /* CCPUOnRandomObserverTranslator.h in Headers */, 15AE18E719AAD35000C27E9E /* CCActionFrameEasing.h in Headers */, + B6CAB3511AF9AA1A00B9B856 /* gim_geometry.h in Headers */, 1A5701E8180BCB8C0088DEC7 /* CCTransition.h in Headers */, 1A5701EC180BCB8C0088DEC7 /* CCTransitionPageTurn.h in Headers */, + B6CAB37D1AF9AA1A00B9B856 /* btGjkPairDetector.h in Headers */, + B6CAB3031AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.h in Headers */, B665E35C1AA80A6500DDB1C5 /* CCPUOnRandomObserver.h in Headers */, 15AE196F19AAD35700C27E9E /* CCActionTimelineCache.h in Headers */, 1A5701F0180BCB8C0088DEC7 /* CCTransitionProgress.h in Headers */, 1A5701F9180BCBAD0088DEC7 /* CCMenu.h in Headers */, + B6CAB4A11AF9AA1A00B9B856 /* PosixThreadSupport.h in Headers */, B665E3001AA80A6500DDB1C5 /* CCPUMaterialTranslator.h in Headers */, B665E33C1AA80A6500DDB1C5 /* CCPUOnEventFlagObserver.h in Headers */, 50ABBD401925AB0000A911A9 /* CCMath.h in Headers */, B29A7E1F19EE1B7700872B35 /* BoneData.h in Headers */, + B6CAB3191AF9AA1A00B9B856 /* btCompoundFromGimpact.h in Headers */, 15AE1A9319AAD40300C27E9E /* b2WheelJoint.h in Headers */, ED74D7691A5B8A2600157FD4 /* CCPhysicsHelper.h in Headers */, B665E3F01AA80A6600DDB1C5 /* CCPUSlaveBehaviourTranslator.h in Headers */, 15AE1A3119AAD3D500C27E9E /* b2ChainShape.h in Headers */, 1A5701FD180BCBAD0088DEC7 /* CCMenuItem.h in Headers */, + B6CAB2AD1AF9AA1A00B9B856 /* btConvexPointCloudShape.h in Headers */, 1A570204180BCBD40088DEC7 /* CCClippingNode.h in Headers */, 15AE1A7B19AAD40300C27E9E /* b2PolygonContact.h in Headers */, 15AE1A2919AAD3D500C27E9E /* b2Collision.h in Headers */, @@ -6975,39 +8898,54 @@ B665E3081AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitterTranslator.h in Headers */, 15AE184219AAD2F700C27E9E /* CCSprite3D.h in Headers */, B665E3181AA80A6500DDB1C5 /* CCPUObserverTranslator.h in Headers */, + B6CAB5111AF9AA1A00B9B856 /* btMatrix3x3.h in Headers */, B665E3201AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.h in Headers */, B665E2A01AA80A6500DDB1C5 /* CCPUEventHandler.h in Headers */, + B6CAB5291AF9AA1A00B9B856 /* btScalar.h in Headers */, 15AE18A019AAD33D00C27E9E /* CCNodeLoaderLibrary.h in Headers */, + B6CAB3311AF9AA1A00B9B856 /* btGImpactQuantizedBvh.h in Headers */, B665E3B01AA80A6500DDB1C5 /* CCPURender.h in Headers */, + B6CAB2291AF9AA1A00B9B856 /* btCollisionDispatcher.h in Headers */, 1A01C6A618F58F7500EFE3A6 /* CCNotificationCenter.h in Headers */, B665E3A81AA80A6500DDB1C5 /* CCPURandomiser.h in Headers */, 1A57020A180BCBDF0088DEC7 /* CCMotionStreak.h in Headers */, 1A570212180BCBF40088DEC7 /* CCProgressTimer.h in Headers */, + B6CAB2E71AF9AA1A00B9B856 /* btSphereShape.h in Headers */, 1A570216180BCBF40088DEC7 /* CCRenderTexture.h in Headers */, 1A01C69618F57BE800EFE3A6 /* CCInteger.h in Headers */, B665E3F41AA80A6600DDB1C5 /* CCPUSlaveEmitter.h in Headers */, 15AE1B6919AADA9900C27E9E /* UIDeprecated.h in Headers */, 1A570223180BCC1A0088DEC7 /* CCParticleBatchNode.h in Headers */, + B6CAB53F1AF9AA1A00B9B856 /* cl_platform.h in Headers */, 15AE1A8319AAD40300C27E9E /* b2GearJoint.h in Headers */, 15AE1BD519AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.h in Headers */, + B6CAB30F1AF9AA1A00B9B856 /* btTriangleShape.h in Headers */, 15AE186919AAD31D00C27E9E /* CocosDenshion.h in Headers */, B29A7DE719EE1B7700872B35 /* spine.h in Headers */, B665E3841AA80A6500DDB1C5 /* CCPUPathFollower.h in Headers */, B665E3F81AA80A6600DDB1C5 /* CCPUSlaveEmitterTranslator.h in Headers */, 50ABBD891925AB4100A911A9 /* CCCustomCommand.h in Headers */, 15AE1A8719AAD40300C27E9E /* b2MouseJoint.h in Headers */, + B6CAB5171AF9AA1A00B9B856 /* btMotionState.h in Headers */, + B6CAB4D11AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h in Headers */, + B6CAB3171AF9AA1A00B9B856 /* btClipPolygon.h in Headers */, 5034CA43191D591100CE6051 /* ccShader_Label.vert in Headers */, + B6CAB1E11AF9AA1A00B9B856 /* btBulletCollisionCommon.h in Headers */, 15AE189719AAD33D00C27E9E /* CCMenuItemImageLoader.h in Headers */, B665E2001AA80A6500DDB1C5 /* CCPUAlignAffector.h in Headers */, 15AE189319AAD33D00C27E9E /* CCLayerGradientLoader.h in Headers */, B29A7DF919EE1B7700872B35 /* Json.h in Headers */, + B6CAB3971AF9AA1A00B9B856 /* btSubSimplexConvexCast.h in Headers */, 15AE18EF19AAD35000C27E9E /* CCArmature.h in Headers */, B665E3981AA80A6500DDB1C5 /* CCPUPointEmitter.h in Headers */, 15AE19A719AAD39600C27E9E /* TextReader.h in Headers */, + B6CAB27F1AF9AA1A00B9B856 /* btBox2dShape.h in Headers */, 1A570227180BCC1A0088DEC7 /* CCParticleExamples.h in Headers */, 1A57022B180BCC1A0088DEC7 /* CCParticleSystem.h in Headers */, 15AE190E19AAD35000C27E9E /* CCDisplayManager.h in Headers */, + B6CAB50B1AF9AA1A00B9B856 /* btHashMap.h in Headers */, 15AE1A6719AAD40300C27E9E /* b2World.h in Headers */, + B6CAB3571AF9AA1A00B9B856 /* gim_math.h in Headers */, 15AE199B19AAD39600C27E9E /* PageViewReader.h in Headers */, B665E2A41AA80A6500DDB1C5 /* CCPUEventHandlerManager.h in Headers */, 15AE1A6219AAD40300C27E9E /* b2Fixture.h in Headers */, @@ -7023,63 +8961,97 @@ 50ABBE4F1925AB6F00A911A9 /* CCEventCustom.h in Headers */, 50ABBD521925AB0000A911A9 /* Quaternion.h in Headers */, 15AE186219AAD31D00C27E9E /* CDAudioManager.h in Headers */, + B6CAB3931AF9AA1A00B9B856 /* btSimplexSolverInterface.h in Headers */, + B6CAB22D1AF9AA1A00B9B856 /* btCollisionObject.h in Headers */, + B6CAB2CF1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.h in Headers */, 15AE18F119AAD35000C27E9E /* CCArmatureAnimation.h in Headers */, 1A57022F180BCC1A0088DEC7 /* CCParticleSystemQuad.h in Headers */, + B6CAB4EB1AF9AA1A00B9B856 /* TrbStateVec.h in Headers */, + B6CAB2831AF9AA1A00B9B856 /* btBoxShape.h in Headers */, B665E37C1AA80A6500DDB1C5 /* CCPUParticleSystem3D.h in Headers */, 15AE188519AAD33D00C27E9E /* CCBSequence.h in Headers */, 15FB20951AE7C57D00C31518 /* cdt.h in Headers */, B665E3541AA80A6500DDB1C5 /* CCPUOnQuotaObserver.h in Headers */, + B6CAB4F11AF9AA1A00B9B856 /* Win32ThreadSupport.h in Headers */, 50643BE219BFCF1800EF68ED /* CCPlatformConfig.h in Headers */, B29A7DF519EE1B7700872B35 /* Skeleton.h in Headers */, + B6CAB4DB1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h in Headers */, 382384031A259005002C4610 /* CSParseBinary_generated.h in Headers */, + B6CAB4F91AF9AA1A00B9B856 /* btAlignedObjectArray.h in Headers */, 5034CA49191D591100CE6051 /* ccShader_Label_df.frag in Headers */, 292DB14119B4574100A80320 /* UIEditBoxImpl.h in Headers */, B29A7DD919EE1B7700872B35 /* SkeletonRenderer.h in Headers */, 50CB247919D9C5A100687767 /* AudioEngine-inl.h in Headers */, 1A01C68C18F57BE800EFE3A6 /* CCDeprecated.h in Headers */, + B6CAB0001AF9A9E100B9B856 /* CCPhysicsSprite3D.h in Headers */, + B6CAB4411AF9AA1A00B9B856 /* btGpuUtilsSharedDefs.h in Headers */, 50ABBD561925AB0000A911A9 /* TransformUtils.h in Headers */, + B6CAB4DD1AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h in Headers */, + B6CAB2431AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.h in Headers */, 299754F6193EC95400A54AC3 /* ObjectFactory.h in Headers */, 38ACD1FE1A27111900C3093D /* WidgetCallBackHandlerProtocol.h in Headers */, 50ABBD991925AB4100A911A9 /* CCGLProgramStateCache.h in Headers */, B665E41C1AA80A6600DDB1C5 /* CCPUTextureRotator.h in Headers */, + B6CAB2231AF9AA1A00B9B856 /* btCollisionConfiguration.h in Headers */, + B6CAB2191AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.h in Headers */, 5034CA3D191D591100CE6051 /* ccShader_PositionColor.frag in Headers */, 15AE18FB19AAD35000C27E9E /* CCColliderDetector.h in Headers */, 1A570280180BCC900088DEC7 /* CCSprite.h in Headers */, 292DB14719B4574100A80320 /* UIEditBoxImpl-ios.h in Headers */, B665E3FC1AA80A6600DDB1C5 /* CCPUSphere.h in Headers */, + B6CAB51B1AF9AA1A00B9B856 /* btPolarDecomposition.h in Headers */, 15AE1A9119AAD40300C27E9E /* b2WeldJoint.h in Headers */, 15AE1A5419AAD40300C27E9E /* b2GrowableStack.h in Headers */, 15AE1B4E19AADA9900C27E9E /* UIListView.h in Headers */, 1A570284180BCC900088DEC7 /* CCSpriteBatchNode.h in Headers */, 5034CA2B191D591100CE6051 /* ccShader_PositionTextureA8Color.vert in Headers */, B665E2041AA80A6500DDB1C5 /* CCPUAlignAffectorTranslator.h in Headers */, + B6CAB3A11AF9AA1A00B9B856 /* btKinematicCharacterController.h in Headers */, 15AE1BCE19AAE01E00C27E9E /* CCControlColourPicker.h in Headers */, 382384461A25915C002C4610 /* SpriteReader.h in Headers */, B665E2481AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffectorTranslator.h in Headers */, 1A570288180BCC900088DEC7 /* CCSpriteFrame.h in Headers */, + B6CAB43B1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedTypes.h in Headers */, B665E3AC1AA80A6500DDB1C5 /* CCPURandomiserTranslator.h in Headers */, B665E2CC1AA80A6500DDB1C5 /* CCPUGravityAffectorTranslator.h in Headers */, 15AE189519AAD33D00C27E9E /* CCLayerLoader.h in Headers */, 1A57028C180BCC900088DEC7 /* CCSpriteFrameCache.h in Headers */, + B6CAB21D1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.h in Headers */, + B6CAAFEC1AF9A9E100B9B856 /* CCPhysics3DConstraint.h in Headers */, 5027253A190BF1B900AAF4ED /* cocos2d.h in Headers */, B665E3041AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitter.h in Headers */, 15AE1B5A19AADA9900C27E9E /* UIText.h in Headers */, B665E21C1AA80A6500DDB1C5 /* CCPUBehaviour.h in Headers */, 15AE184A19AAD30500C27E9E /* Export.h in Headers */, + B6CAB3051AF9AA1A00B9B856 /* btTriangleInfoMap.h in Headers */, + B6CAB2C51AF9AA1A00B9B856 /* btHeightfieldTerrainShape.h in Headers */, B665E3501AA80A6500DDB1C5 /* CCPUOnPositionObserverTranslator.h in Headers */, B68778FA1A8CA82E00643ABF /* CCParticle3DAffector.h in Headers */, 15AE1BA019AADFDF00C27E9E /* UILayout.h in Headers */, 1A570294180BCCAB0088DEC7 /* CCAnimation.h in Headers */, B665E4081AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitter.h in Headers */, + B6CAB28B1AF9AA1A00B9B856 /* btCapsuleShape.h in Headers */, 382384001A258FA7002C4610 /* util.h in Headers */, 50ABBD421925AB0000A911A9 /* CCMathBase.h in Headers */, + B6CAB5491AF9AA1A00B9B856 /* MiniCLTaskScheduler.h in Headers */, + B6CAB2031AF9AA1A00B9B856 /* btMultiSapBroadphase.h in Headers */, 1A570298180BCCAB0088DEC7 /* CCAnimationCache.h in Headers */, + B6CAB43F1AF9AA1A00B9B856 /* btGpuUtilsSharedCode.h in Headers */, B665E4181AA80A6600DDB1C5 /* CCPUTextureAnimatorTranslator.h in Headers */, + B6CAB3CB1AF9AA1A00B9B856 /* btPoint2PointConstraint.h in Headers */, B665E2C81AA80A6500DDB1C5 /* CCPUGravityAffector.h in Headers */, 501216A21AC473AD009A4BEA /* CCMaterial.h in Headers */, 50ABC05D1926664800A911A9 /* CCApplication-mac.h in Headers */, + B6CAB2871AF9AA1A00B9B856 /* btBvhTriangleMeshShape.h in Headers */, + B6CAB51D1AF9AA1A00B9B856 /* btPoolAllocator.h in Headers */, + B6CAB3EB1AF9AA1A00B9B856 /* btDynamicsWorld.h in Headers */, + B6CAB29D1AF9AA1A00B9B856 /* btConeShape.h in Headers */, + B6CAB4A31AF9AA1A00B9B856 /* PpuAddressSpace.h in Headers */, 15AE190019AAD35000C27E9E /* CCComAudio.h in Headers */, + B6CAB3DB1AF9AA1A00B9B856 /* btSolverConstraint.h in Headers */, + B6CAB2911AF9AA1A00B9B856 /* btCollisionShape.h in Headers */, B665E3481AA80A6500DDB1C5 /* CCPUOnExpireObserverTranslator.h in Headers */, + B6CAB2B11AF9AA1A00B9B856 /* btConvexPolyhedron.h in Headers */, 15AE190419AAD35000C27E9E /* CCComRender.h in Headers */, B29A7E1919EE1B7700872B35 /* Event.h in Headers */, 15AE18AA19AAD33D00C27E9E /* CocosBuilder.h in Headers */, @@ -7087,20 +9059,28 @@ B665E2181AA80A6500DDB1C5 /* CCPUBeamRender.h in Headers */, 15AE1A7919AAD40300C27E9E /* b2PolygonAndCircleContact.h in Headers */, B665E2081AA80A6500DDB1C5 /* CCPUBaseCollider.h in Headers */, + B6CAB40D1AF9AA1A00B9B856 /* btMultiBodyJointMotor.h in Headers */, 15AE199719AAD39600C27E9E /* ListViewReader.h in Headers */, B29A7E1D19EE1B7700872B35 /* PolygonBatch.h in Headers */, B665E3441AA80A6500DDB1C5 /* CCPUOnExpireObserver.h in Headers */, 50ABBD4E1925AB0000A911A9 /* MathUtil.h in Headers */, 15AE1A7319AAD40300C27E9E /* b2ContactSolver.h in Headers */, + B6CAB3B91AF9AA1A00B9B856 /* btGeneric6DofConstraint.h in Headers */, + B6CAB24B1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.h in Headers */, + B6CAB5391AF9AA1A00B9B856 /* cl.h in Headers */, 15AE1BC219AADFFB00C27E9E /* ExtensionMacros.h in Headers */, B665E4001AA80A6600DDB1C5 /* CCPUSphereCollider.h in Headers */, + B6CAB42D1AF9AA1A00B9B856 /* btVehicleRaycaster.h in Headers */, 15AE1BDF19AAE01E00C27E9E /* CCInvocation.h in Headers */, 50ABBE431925AB6F00A911A9 /* CCDirector.h in Headers */, 15AE1A5819AAD40300C27E9E /* b2Settings.h in Headers */, 15AE181819AAD2F700C27E9E /* CCAttachNode.h in Headers */, + B6CAB4CB1AF9AA1A00B9B856 /* SpuCollisionShapes.h in Headers */, 1A12775B18DFCC540005F345 /* CCTweenFunction.h in Headers */, + B6CAB4271AF9AA1A00B9B856 /* btSolveProjectedGaussSeidel.h in Headers */, 1A5702CA180BCE370088DEC7 /* CCTextFieldTTF.h in Headers */, 15EFA213198A2BB5000C57D3 /* CCProtectedNode.h in Headers */, + B6CAB3551AF9AA1A00B9B856 /* gim_linear_math.h in Headers */, 1A5702EC180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */, 15AE18E019AAD35000C27E9E /* TriggerBase.h in Headers */, 15AE187D19AAD33D00C27E9E /* CCBFileLoader.h in Headers */, @@ -7111,19 +9091,26 @@ 50ABC01B1926664800A911A9 /* CCSAXParser.h in Headers */, 50ABBED51925AB6F00A911A9 /* utlist.h in Headers */, 1A5702F4180BCE750088DEC7 /* CCTMXObjectGroup.h in Headers */, + B6CAB1EF1AF9AA1A00B9B856 /* btBroadphaseProxy.h in Headers */, + B6CAB3871AF9AA1A00B9B856 /* btPersistentManifold.h in Headers */, 50ABBDAF1925AB4100A911A9 /* CCRenderer.h in Headers */, B665E30C1AA80A6500DDB1C5 /* CCPUNoise.h in Headers */, + B6CAB3A51AF9AA1A00B9B856 /* btConeTwistConstraint.h in Headers */, 15AE181E19AAD2F700C27E9E /* CCBundle3DData.h in Headers */, 1A5702F8180BCE750088DEC7 /* CCTMXTiledMap.h in Headers */, B665E2801AA80A6500DDB1C5 /* CCPUDoScaleEventHandlerTranslator.h in Headers */, 5034CA21191D591100CE6051 /* ccShader_PositionTextureColorAlphaTest.frag in Headers */, D0FD03491A3B51AA00825BB5 /* CCAllocatorBase.h in Headers */, + B6CAB4FD1AF9AA1A00B9B856 /* btConvexHull.h in Headers */, 15AE1A2419AAD3D500C27E9E /* b2BroadPhase.h in Headers */, B29A7E3919EE1B7700872B35 /* Animation.h in Headers */, B665E2B01AA80A6500DDB1C5 /* CCPUFlockCenteringAffectorTranslator.h in Headers */, + B6CAB2EF1AF9AA1A00B9B856 /* btStridingMeshInterface.h in Headers */, + B6CAB23F1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.h in Headers */, 382384381A259126002C4610 /* ProjectNodeReader.h in Headers */, 15FB20991AE7C57D00C31518 /* sweep.h in Headers */, B665E3C41AA80A6600DDB1C5 /* CCPUScaleAffectorTranslator.h in Headers */, + B6CAB2631AF9AA1A00B9B856 /* btManifoldResult.h in Headers */, 15AE191019AAD35000C27E9E /* CCInputDelegate.h in Headers */, B665E4301AA80A6600DDB1C5 /* CCPUVelocityMatchingAffectorTranslator.h in Headers */, 15AE184C19AAD30800C27E9E /* SimpleAudioEngine.h in Headers */, @@ -7131,26 +9118,45 @@ B665E24C1AA80A6500DDB1C5 /* CCPUColorAffector.h in Headers */, 29394CF019B01DBA00D2DE1A /* UIWebView.h in Headers */, 15AE186519AAD31D00C27E9E /* CDOpenALSupport.h in Headers */, + B6CAAFE81AF9A9E100B9B856 /* CCPhysics3DComponent.h in Headers */, 15AE1B5C19AADA9900C27E9E /* UITextAtlas.h in Headers */, 1A5702FC180BCE750088DEC7 /* CCTMXXMLParser.h in Headers */, 15AE1B6019AADA9900C27E9E /* UITextField.h in Headers */, 15AE190619AAD35000C27E9E /* CCDataReaderHelper.h in Headers */, 15AE1A6419AAD40300C27E9E /* b2Island.h in Headers */, 382383EE1A258FA7002C4610 /* flatbuffers.h in Headers */, + B6CAB4B31AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h in Headers */, 15AE1B5619AADA9900C27E9E /* UIScrollView.h in Headers */, + B6CAB2731AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.h in Headers */, + B6CAB3AD1AF9AA1A00B9B856 /* btContactSolverInfo.h in Headers */, 50ABBDBB1925AB4100A911A9 /* CCTextureAtlas.h in Headers */, 15FB20911AE7C57D00C31518 /* advancing_front.h in Headers */, 1A570302180BCE890088DEC7 /* CCParallaxNode.h in Headers */, 50ABBE4B1925AB6F00A911A9 /* CCEventAcceleration.h in Headers */, + B6CAB5151AF9AA1A00B9B856 /* btMinMax.h in Headers */, + B6CAB5311AF9AA1A00B9B856 /* btTransform.h in Headers */, + B6CAB2571AF9AA1A00B9B856 /* btGhostObject.h in Headers */, + B6CAB4BD1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h in Headers */, 1A57030E180BCF190088DEC7 /* CCComponent.h in Headers */, + B6CAB33D1AF9AA1A00B9B856 /* gim_array.h in Headers */, + B6CAB2DB1AF9AA1A00B9B856 /* btPolyhedralConvexShape.h in Headers */, + B6CAB5251AF9AA1A00B9B856 /* btQuickprof.h in Headers */, B665E2AC1AA80A6500DDB1C5 /* CCPUFlockCenteringAffector.h in Headers */, + B6CAB4E91AF9AA1A00B9B856 /* TrbDynBody.h in Headers */, 1A570312180BCF190088DEC7 /* CCComponentContainer.h in Headers */, 15AE1B7119AADA9900C27E9E /* CocosGUI.h in Headers */, B665E2381AA80A6500DDB1C5 /* CCPUBoxEmitterTranslator.h in Headers */, + B6CAB4211AF9AA1A00B9B856 /* btMLCPSolver.h in Headers */, 15AE1A2D19AAD3D500C27E9E /* b2DynamicTree.h in Headers */, + B6CAB3E31AF9AA1A00B9B856 /* btUniversalConstraint.h in Headers */, B665E39C1AA80A6500DDB1C5 /* CCPUPointEmitterTranslator.h in Headers */, + B6CAB41D1AF9AA1A00B9B856 /* btDantzigSolver.h in Headers */, 50ABBD851925AB4100A911A9 /* CCBatchCommand.h in Headers */, + B6CAB3351AF9AA1A00B9B856 /* btGImpactShape.h in Headers */, 15AE1A6F19AAD40300C27E9E /* b2CircleContact.h in Headers */, + B6CAB3431AF9AA1A00B9B856 /* gim_box_collision.h in Headers */, + B6CAB39B1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.h in Headers */, + B6CAB1EB1AF9AA1A00B9B856 /* btBroadphaseInterface.h in Headers */, B665E3E81AA80A6600DDB1C5 /* CCPUSineForceAffectorTranslator.h in Headers */, 15AE191619AAD35000C27E9E /* CCSkin.h in Headers */, 50ABC0651926664800A911A9 /* CCGL-mac.h in Headers */, @@ -7159,23 +9165,29 @@ 15AE1A8B19AAD40300C27E9E /* b2PulleyJoint.h in Headers */, 15AE1A5119AAD40300C27E9E /* b2BlockAllocator.h in Headers */, 15AE199119AAD37200C27E9E /* ImageViewReader.h in Headers */, + B6CAB42B1AF9AA1A00B9B856 /* btRaycastVehicle.h in Headers */, 15AE18FE19AAD35000C27E9E /* CCComAttribute.h in Headers */, B665E38C1AA80A6500DDB1C5 /* CCPUPlane.h in Headers */, B665E3801AA80A6500DDB1C5 /* CCPUParticleSystem3DTranslator.h in Headers */, 50ABBD621925AB0000A911A9 /* Vec4.h in Headers */, + B6CAB4E51AF9AA1A00B9B856 /* SpuSampleTaskProcess.h in Headers */, + B6CAB2B51AF9AA1A00B9B856 /* btConvexShape.h in Headers */, B60C5BD619AC68B10056FBDE /* CCBillBoard.h in Headers */, 15AE1BA419AADFDF00C27E9E /* UILayoutManager.h in Headers */, B6D38B901AC3AFAC00043997 /* CCTextureCube.h in Headers */, 1A01C69418F57BE800EFE3A6 /* CCFloat.h in Headers */, 1A57034D180BD09B0088DEC7 /* tinyxml2.h in Headers */, + B6CAB4C31AF9AA1A00B9B856 /* Box.h in Headers */, 15AE18F519AAD35000C27E9E /* CCArmatureDefine.h in Headers */, 15AE188219AAD33D00C27E9E /* CCBReader.h in Headers */, 1A570356180BD0B00088DEC7 /* ioapi.h in Headers */, 15AE191819AAD35000C27E9E /* CCSpriteFrameCacheHelper.h in Headers */, 15AE1BA219AADFDF00C27E9E /* UILayoutParameter.h in Headers */, + B6CAB4351AF9AA1A00B9B856 /* btGpu3DGridBroadphase.h in Headers */, 50ABBE331925AB6F00A911A9 /* CCConfiguration.h in Headers */, B665E2101AA80A6500DDB1C5 /* CCPUBaseForceAffector.h in Headers */, 382F7ADE1AB1292A002EBECF /* CCObjectExtensionData.h in Headers */, + B6CAB4D51AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h in Headers */, 15AE199519AAD39600C27E9E /* LayoutReader.h in Headers */, 15AE183219AAD2F700C27E9E /* CCOBB.h in Headers */, 15AE1BE319AAE01E00C27E9E /* CCScrollView.h in Headers */, @@ -7185,23 +9197,36 @@ 3823841C1A2590D2002C4610 /* ComAudioReader.h in Headers */, 50ABC01F1926664800A911A9 /* CCThread.h in Headers */, B665E4141AA80A6600DDB1C5 /* CCPUTextureAnimator.h in Headers */, + B6CAB3F31AF9AA1A00B9B856 /* btSimpleDynamicsWorld.h in Headers */, 1A57035A180BD0B00088DEC7 /* unzip.h in Headers */, + B6CAB1FF1AF9AA1A00B9B856 /* btDispatcher.h in Headers */, 15AE188B19AAD33D00C27E9E /* CCControlLoader.h in Headers */, B29A7DF719EE1B7700872B35 /* Attachment.h in Headers */, 15FB208D1AE7C57D00C31518 /* poly2tri.h in Headers */, + B6CAB3091AF9AA1A00B9B856 /* btTriangleMesh.h in Headers */, + B6CAB4AF1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h in Headers */, 15AE1BCA19AAE01E00C27E9E /* CCControl.h in Headers */, + B6CAB3C11AF9AA1A00B9B856 /* btHinge2Constraint.h in Headers */, 50ABBDBF1925AB4100A911A9 /* CCTextureCache.h in Headers */, + B6CAB2E31AF9AA1A00B9B856 /* btShapeHull.h in Headers */, B29A7E0D19EE1B7700872B35 /* Bone.h in Headers */, 15AE186719AAD31D00C27E9E /* CDXMacOSXSupport.h in Headers */, + B6CAB5131AF9AA1A00B9B856 /* btMatrixX.h in Headers */, + B6CAB4091AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.h in Headers */, + B6CAB4B91AF9AA1A00B9B856 /* SpuFakeDma.h in Headers */, B29A7DCD19EE1B7700872B35 /* Slot.h in Headers */, + B6CAB1E31AF9AA1A00B9B856 /* btBulletDynamicsCommon.h in Headers */, 382384311A259112002C4610 /* ParticleReader.h in Headers */, + B6CAB3BD1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.h in Headers */, B665E3D01AA80A6600DDB1C5 /* CCPUScriptCompiler.h in Headers */, 5034CA35191D591100CE6051 /* ccShader_PositionTexture.frag in Headers */, 15AE1BB219AADFEF00C27E9E /* HttpClient.h in Headers */, + B6CAB3FD1AF9AA1A00B9B856 /* btMultiBodyConstraint.h in Headers */, 15AE197619AAD35700C27E9E /* CCTimelineMacro.h in Headers */, 50ABBE6F1925AB6F00A911A9 /* CCEventListenerKeyboard.h in Headers */, 15AE1A5619AAD40300C27E9E /* b2Math.h in Headers */, 18956BB41A9DFBFD006E9155 /* Particle3DReader.h in Headers */, + B6CAB5071AF9AA1A00B9B856 /* btGeometryUtil.h in Headers */, 50ABBE9D1925AB6F00A911A9 /* CCRefPtr.h in Headers */, 15AE198319AAD36400C27E9E /* WidgetReader.h in Headers */, B257B461198A353E00D9A687 /* CCPrimitiveCommand.h in Headers */, @@ -7217,6 +9242,7 @@ 15AE1A8D19AAD40300C27E9E /* b2RevoluteJoint.h in Headers */, 50ABBE291925AB6F00A911A9 /* CCAutoreleasePool.h in Headers */, 299CF1FD19A434BC00C378C1 /* ccRandom.h in Headers */, + B6CAB5451AF9AA1A00B9B856 /* MiniCLTask.h in Headers */, 15AE1A2F19AAD3D500C27E9E /* b2TimeOfImpact.h in Headers */, 15AE18F319AAD35000C27E9E /* CCArmatureDataManager.h in Headers */, B665E2C01AA80A6500DDB1C5 /* CCPUGeometryRotator.h in Headers */, @@ -7224,27 +9250,44 @@ 5012169C1AC473A3009A4BEA /* CCTechnique.h in Headers */, 15AE1B9E19AADFDF00C27E9E /* UIVBox.h in Headers */, 15AE192319AAD35000C27E9E /* DictionaryHelper.h in Headers */, + B6CAB2DF1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.h in Headers */, + B6CAB3B51AF9AA1A00B9B856 /* btGearConstraint.h in Headers */, + B6CAB4051AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.h in Headers */, B665E3D41AA80A6600DDB1C5 /* CCPUScriptLexer.h in Headers */, B257B4501989D5E800D9A687 /* CCPrimitive.h in Headers */, + B6CAB2C71AF9AA1A00B9B856 /* btMaterial.h in Headers */, B29A7DCF19EE1B7700872B35 /* RegionAttachment.h in Headers */, 15B3707E19EE414C00ABE682 /* CCEventAssetsManagerEx.h in Headers */, 50ABBE6B1925AB6F00A911A9 /* CCEventListenerFocus.h in Headers */, + B6CAAFF41AF9A9E100B9B856 /* CCPhysics3DObject.h in Headers */, + B6CAB4D71AF9AA1A00B9B856 /* SpuLocalSupport.h in Headers */, + B6CAB2671AF9AA1A00B9B856 /* btSimulationIslandManager.h in Headers */, 50ABBDA51925AB4100A911A9 /* CCQuadCommand.h in Headers */, + B6CAB3751AF9AA1A00B9B856 /* btGjkEpa2.h in Headers */, 15AE1BCF19AAE01E00C27E9E /* CCControlExtensions.h in Headers */, + B6CAB1F31AF9AA1A00B9B856 /* btCollisionAlgorithm.h in Headers */, 15AE1A3519AAD3D500C27E9E /* b2EdgeShape.h in Headers */, + B6CAB3151AF9AA1A00B9B856 /* btBoxCollision.h in Headers */, 50643BD919BFAF4400EF68ED /* CCApplication.h in Headers */, B665E3581AA80A6500DDB1C5 /* CCPUOnQuotaObserverTranslator.h in Headers */, + B6CAB2371AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.h in Headers */, B665E3DC1AA80A6600DDB1C5 /* CCPUScriptTranslator.h in Headers */, + B6CAB49B1AF9AA1A00B9B856 /* HeapManager.h in Headers */, 15AE183619AAD2F700C27E9E /* CCObjLoader.h in Headers */, 15AE1BE719AAE01E00C27E9E /* CCTableViewCell.h in Headers */, 15AE1A8919AAD40300C27E9E /* b2PrismaticJoint.h in Headers */, + B6CAB5211AF9AA1A00B9B856 /* btQuaternion.h in Headers */, B665E2341AA80A6500DDB1C5 /* CCPUBoxEmitter.h in Headers */, + B6CAB26F1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.h in Headers */, B665E3EC1AA80A6600DDB1C5 /* CCPUSlaveBehaviour.h in Headers */, 50ABBD3A1925AB0000A911A9 /* CCAffineTransform.h in Headers */, 15AE186C19AAD31D00C27E9E /* SimpleAudioEngine_objc.h in Headers */, B29A7E2319EE1B7700872B35 /* IkConstraint.h in Headers */, 15AE1BB319AADFEF00C27E9E /* HttpRequest.h in Headers */, + B6CAB3B11AF9AA1A00B9B856 /* btFixedConstraint.h in Headers */, 3823843F1A259140002C4610 /* SingleNodeReader.h in Headers */, + B6CAB35B1AF9AA1A00B9B856 /* gim_memory.h in Headers */, + B6CAB3DF1AF9AA1A00B9B856 /* btTypedConstraint.h in Headers */, 50ABBE571925AB6F00A911A9 /* CCEventFocus.h in Headers */, 1A01C69218F57BE800EFE3A6 /* CCDouble.h in Headers */, 15AE18F919AAD35000C27E9E /* CCBone.h in Headers */, @@ -7257,17 +9300,21 @@ B665E2281AA80A6500DDB1C5 /* CCPUBillboardChain.h in Headers */, 15AE18A919AAD33D00C27E9E /* CCSpriteLoader.h in Headers */, 15AE198419AAD36400C27E9E /* WidgetReaderProtocol.h in Headers */, + B6CAB53D1AF9AA1A00B9B856 /* cl_MiniCL_Defs.h in Headers */, 50ABBEC91925AB6F00A911A9 /* firePngData.h in Headers */, 292DB16119B461CA00A80320 /* ExtensionDeprecated.h in Headers */, 503DD8F51926B0DB00CD74DD /* CCIMEDelegate.h in Headers */, 3EACC9A619F5014D00EB3C5E /* CCLight.h in Headers */, 50ABBD5A1925AB0000A911A9 /* Vec2.h in Headers */, B665E2581AA80A6500DDB1C5 /* CCPUDoAffectorEventHandlerTranslator.h in Headers */, + B6CAB50D1AF9AA1A00B9B856 /* btIDebugDraw.h in Headers */, B665E2F81AA80A6500DDB1C5 /* CCPUListener.h in Headers */, + B6CAB3F91AF9AA1A00B9B856 /* btMultiBody.h in Headers */, 15AE1BDB19AAE01E00C27E9E /* CCControlSwitch.h in Headers */, B24AA987195A675C007B4522 /* CCFastTMXLayer.h in Headers */, 15AE188F19AAD33D00C27E9E /* CCLabelTTFLoader.h in Headers */, 50ABBEBD1925AB6F00A911A9 /* ccUtils.h in Headers */, + B6CAB4171AF9AA1A00B9B856 /* btMultiBodySolverConstraint.h in Headers */, 15AE19A119AAD39600C27E9E /* TextAtlasReader.h in Headers */, 50ABC0231926664800A911A9 /* CCGLViewImpl-desktop.h in Headers */, 382384231A2590DA002C4610 /* GameMapReader.h in Headers */, @@ -7278,14 +9325,19 @@ 15AE1B5019AADA9900C27E9E /* UILoadingBar.h in Headers */, 50ABBFFD1926664800A911A9 /* CCFileUtils-apple.h in Headers */, 15B3708219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */, + B6CAB2951AF9AA1A00B9B856 /* btCompoundShape.h in Headers */, B665E23C1AA80A6500DDB1C5 /* CCPUCircleEmitter.h in Headers */, + B6CAB2991AF9AA1A00B9B856 /* btConcaveShape.h in Headers */, + B6CAB1E51AF9AA1A00B9B856 /* Bullet-C-Api.h in Headers */, 15B3708619EE414C00ABE682 /* Downloader.h in Headers */, + B6CAB4111AF9AA1A00B9B856 /* btMultiBodyLinkCollider.h in Headers */, B665E36C1AA80A6500DDB1C5 /* CCPUOnVelocityObserver.h in Headers */, B665E26C1AA80A6500DDB1C5 /* CCPUDoFreezeEventHandler.h in Headers */, 5E9F612C1A3FFE3D0038DE01 /* CCPlane.h in Headers */, 5034CA41191D591100CE6051 /* ccShader_Position_uColor.frag in Headers */, 50ABBE7F1925AB6F00A911A9 /* CCEventTouch.h in Headers */, 50ABBE5B1925AB6F00A911A9 /* CCEventKeyboard.h in Headers */, + B6CAB2D31AF9AA1A00B9B856 /* btMultiSphereShape.h in Headers */, B665E1F41AA80A6500DDB1C5 /* CCPUAffector.h in Headers */, 1A01C69E18F57BE800EFE3A6 /* CCString.h in Headers */, 15FB206C1AE7BE7400C31518 /* SpritePolygon.h in Headers */, @@ -7301,10 +9353,16 @@ 50ABBE3F1925AB6F00A911A9 /* CCDataVisitor.h in Headers */, 15AE199F19AAD39600C27E9E /* SliderReader.h in Headers */, B665E2641AA80A6500DDB1C5 /* CCPUDoExpireEventHandler.h in Headers */, + B6CAB2B91AF9AA1A00B9B856 /* btConvexTriangleMeshShape.h in Headers */, + B6CAB32B1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.h in Headers */, + B6CAB24F1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.h in Headers */, 50ABBD9D1925AB4100A911A9 /* ccGLStateCache.h in Headers */, B665E3241AA80A6500DDB1C5 /* CCPUOnCollisionObserver.h in Headers */, + B6CAB4C11AF9AA1A00B9B856 /* SpuLibspe2Support.h in Headers */, + B6CAB26B1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.h in Headers */, B29A7E0319EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */, 50ABBEB91925AB6F00A911A9 /* ccUTF8.h in Headers */, + B6CAB3C51AF9AA1A00B9B856 /* btHingeConstraint.h in Headers */, 15AE191A19AAD35000C27E9E /* CCSSceneReader.h in Headers */, B665E2241AA80A6500DDB1C5 /* CCPUBehaviourTranslator.h in Headers */, 292DB13F19B4574100A80320 /* UIEditBox.h in Headers */, @@ -7313,10 +9371,12 @@ 50ABBE671925AB6F00A911A9 /* CCEventListenerCustom.h in Headers */, 15AE18E219AAD35000C27E9E /* TriggerMng.h in Headers */, B665E3CC1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.h in Headers */, + B6CAB2D71AF9AA1A00B9B856 /* btOptimizedBvh.h in Headers */, 50ABBE2F1925AB6F00A911A9 /* ccConfig.h in Headers */, 15AE188019AAD33D00C27E9E /* CCBMemberVariableAssigner.h in Headers */, 1AAF5851180E40B9000584C8 /* LocalStorage.h in Headers */, 1A01C69018F57BE800EFE3A6 /* CCDictionary.h in Headers */, + B6CAB4ED1AF9AA1A00B9B856 /* vectormath2bullet.h in Headers */, 1A9DCA29180E6955007A3AD4 /* CCGLBufferedNode.h in Headers */, 50ABC0031926664800A911A9 /* CCLock-apple.h in Headers */, 50ABBE2D1925AB6F00A911A9 /* ccCArray.h in Headers */, @@ -7335,37 +9395,53 @@ 15AE189C19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.h in Headers */, 15AE190A19AAD35000C27E9E /* CCDecorativeDisplay.h in Headers */, 50ABBDB31925AB4100A911A9 /* ccShaders.h in Headers */, + B6CAB3831AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.h in Headers */, 50ABBDAB1925AB4100A911A9 /* CCRenderCommandPool.h in Headers */, 5034CA45191D591100CE6051 /* ccShader_Label_outline.frag in Headers */, + B6CAB4311AF9AA1A00B9B856 /* btWheelInfo.h in Headers */, D0FD035F1A3B51AA00825BB5 /* CCAllocatorStrategyPool.h in Headers */, + B6CAB3611AF9AA1A00B9B856 /* gim_tri_collision.h in Headers */, B665E3741AA80A6500DDB1C5 /* CCPUParticleFollower.h in Headers */, 50ABBEB11925AB6F00A911A9 /* CCUserDefault.h in Headers */, B29A7DEF19EE1B7700872B35 /* SkeletonBounds.h in Headers */, D0FD034D1A3B51AA00825BB5 /* CCAllocatorDiagnostics.h in Headers */, 50ABBEC71925AB6F00A911A9 /* etc1.h in Headers */, + B6CAB27B1AF9AA1A00B9B856 /* SphereTriangleDetector.h in Headers */, B29A7E3519EE1B7700872B35 /* AnimationStateData.h in Headers */, B665E2FC1AA80A6500DDB1C5 /* CCPUMaterialManager.h in Headers */, 15AE1BC619AAE00000C27E9E /* AssetsManager.h in Headers */, 50ABBEA91925AB6F00A911A9 /* CCTouch.h in Headers */, + B6CAB51F1AF9AA1A00B9B856 /* btQuadWord.h in Headers */, 15AE1A5E19AAD40300C27E9E /* b2Body.h in Headers */, + B6CAB22F1AF9AA1A00B9B856 /* btCollisionObjectWrapper.h in Headers */, 50ABBE971925AB6F00A911A9 /* CCProtocols.h in Headers */, 50ABC0691926664800A911A9 /* CCStdC-mac.h in Headers */, + B6CAB52F1AF9AA1A00B9B856 /* btStackAlloc.h in Headers */, + B6CAB1F71AF9AA1A00B9B856 /* btDbvt.h in Headers */, B665E34C1AA80A6500DDB1C5 /* CCPUOnPositionObserver.h in Headers */, 501216901AC47380009A4BEA /* CCRenderState.h in Headers */, + B6CAB2091AF9AA1A00B9B856 /* btOverlappingPairCallback.h in Headers */, 15AE1A2B19AAD3D500C27E9E /* b2Distance.h in Headers */, 15AE198919AAD36A00C27E9E /* ButtonReader.h in Headers */, 15AE190219AAD35000C27E9E /* CCComController.h in Headers */, + B6CAB37F1AF9AA1A00B9B856 /* btManifoldPoint.h in Headers */, 15AE18DE19AAD35000C27E9E /* TriggerObj.h in Headers */, 15AE183E19AAD2F700C27E9E /* CCSkeleton3D.h in Headers */, + B6CAB5371AF9AA1A00B9B856 /* btVector3.h in Headers */, + B6CAB2EB1AF9AA1A00B9B856 /* btStaticPlaneShape.h in Headers */, 3EACC9A219F5014D00EB3C5E /* CCCamera.h in Headers */, + B6CAB5331AF9AA1A00B9B856 /* btTransformUtil.h in Headers */, 50ABBECD1925AB6F00A911A9 /* s3tc.h in Headers */, + B6CAB3651AF9AA1A00B9B856 /* btContinuousConvexCollision.h in Headers */, 15AE1BD119AAE01E00C27E9E /* CCControlHuePicker.h in Headers */, D0FD03571A3B51AA00825BB5 /* CCAllocatorMutex.h in Headers */, + B6CAB36D1AF9AA1A00B9B856 /* btDiscreteCollisionDetectorInterface.h in Headers */, 50ABBE771925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */, 5034CA33191D591100CE6051 /* ccShader_PositionTexture_uColor.frag in Headers */, B665E4341AA80A6600DDB1C5 /* CCPUVertexEmitter.h in Headers */, 50ABC0171926664800A911A9 /* CCImage.h in Headers */, 50ABBDA91925AB4100A911A9 /* CCRenderCommand.h in Headers */, + B6CAB3791AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */, 50ABBD951925AB4100A911A9 /* CCGLProgramState.h in Headers */, 50ABC0091926664800A911A9 /* CCCommon.h in Headers */, 50ABBE531925AB6F00A911A9 /* CCEventDispatcher.h in Headers */, @@ -7380,23 +9456,32 @@ files = ( 503DD8F01926736A00CD74DD /* CCStdC-ios.h in Headers */, 15AE1A9A19AAD40300C27E9E /* b2Math.h in Headers */, + B6CAB3221AF9AA1A00B9B856 /* btGenericPoolAllocator.h in Headers */, B665E3851AA80A6500DDB1C5 /* CCPUPathFollower.h in Headers */, 46A170FF1807CECB005B8026 /* CCPhysicsContact.h in Headers */, + B6CAB37E1AF9AA1A00B9B856 /* btGjkPairDetector.h in Headers */, + B6CAB3101AF9AA1A00B9B856 /* btTriangleShape.h in Headers */, + B6CAB5141AF9AA1A00B9B856 /* btMatrixX.h in Headers */, 3EACC9A319F5014D00EB3C5E /* CCCamera.h in Headers */, B29A7E1A19EE1B7700872B35 /* Event.h in Headers */, 15AE1AC719AAD40300C27E9E /* b2GearJoint.h in Headers */, B665E2ED1AA80A6500DDB1C5 /* CCPULinearForceAffectorTranslator.h in Headers */, + B6CAB20A1AF9AA1A00B9B856 /* btOverlappingPairCallback.h in Headers */, 50ABBDA21925AB4100A911A9 /* CCGroupCommand.h in Headers */, 15AE18C219AAD33D00C27E9E /* CCLayerColorLoader.h in Headers */, 50643BDA19BFAF4400EF68ED /* CCApplication.h in Headers */, + B6CAB53A1AF9AA1A00B9B856 /* cl.h in Headers */, 15AE181519AAD2F700C27E9E /* CCAnimationCurve.h in Headers */, + B6CAB28C1AF9AA1A00B9B856 /* btCapsuleShape.h in Headers */, B665E4191AA80A6600DDB1C5 /* CCPUTextureAnimatorTranslator.h in Headers */, 503DD8EF1926736A00CD74DD /* CCPlatformDefine-ios.h in Headers */, 15AE196919AAD35100C27E9E /* CocoStudio.h in Headers */, 46A171041807CECB005B8026 /* CCPhysicsShape.h in Headers */, 15AE183319AAD2F700C27E9E /* CCOBB.h in Headers */, + B6CAB3E61AF9AA1A00B9B856 /* btActionInterface.h in Headers */, B665E33D1AA80A6500DDB1C5 /* CCPUOnEventFlagObserver.h in Headers */, 15AE18B119AAD33D00C27E9E /* CCBMemberVariableAssigner.h in Headers */, + B6CAB2AA1AF9AA1A00B9B856 /* btConvexInternalShape.h in Headers */, B665E3791AA80A6500DDB1C5 /* CCPUParticleFollowerTranslator.h in Headers */, 292DB14019B4574100A80320 /* UIEditBox.h in Headers */, 50ABBD3B1925AB0000A911A9 /* CCAffineTransform.h in Headers */, @@ -7405,9 +9490,13 @@ B29A7E3A19EE1B7700872B35 /* Animation.h in Headers */, 15FB208C1AE7C57D00C31518 /* utils.h in Headers */, B665E2B51AA80A6500DDB1C5 /* CCPUForceField.h in Headers */, + B6CAB36E1AF9AA1A00B9B856 /* btDiscreteCollisionDetectorInterface.h in Headers */, B665E2D91AA80A6500DDB1C5 /* CCPUJetAffector.h in Headers */, 15B3708319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */, + B6CAB4361AF9AA1A00B9B856 /* btGpu3DGridBroadphase.h in Headers */, D0FD03521A3B51AA00825BB5 /* CCAllocatorGlobal.h in Headers */, + B6CAB3DC1AF9AA1A00B9B856 /* btSolverConstraint.h in Headers */, + B6CAB4B61AF9AA1A00B9B856 /* SpuDoubleBuffer.h in Headers */, B665E3D11AA80A6600DDB1C5 /* CCPUScriptCompiler.h in Headers */, B665E3B91AA80A6500DDB1C5 /* CCPURibbonTrail.h in Headers */, 50ABBE7C1925AB6F00A911A9 /* CCEventMouse.h in Headers */, @@ -7427,54 +9516,81 @@ 15AE19B319AAD39700C27E9E /* SliderReader.h in Headers */, 15AE1B7919AADA9A00C27E9E /* UIRichText.h in Headers */, B665E3C11AA80A6500DDB1C5 /* CCPUScaleAffector.h in Headers */, + B6CAB3BA1AF9AA1A00B9B856 /* btGeneric6DofConstraint.h in Headers */, + B6CAB2F81AF9AA1A00B9B856 /* btTriangleBuffer.h in Headers */, 15AE1A4A19AAD3D500C27E9E /* b2CircleShape.h in Headers */, + B6CAB2A61AF9AA1A00B9B856 /* btConvexHullShape.h in Headers */, 50ABBE861925AB6F00A911A9 /* ccFPSImages.h in Headers */, 15B3708719EE414C00ABE682 /* Downloader.h in Headers */, + B6CAB2BE1AF9AA1A00B9B856 /* btCylinderShape.h in Headers */, + B6CAB3F01AF9AA1A00B9B856 /* btRigidBody.h in Headers */, 15AE192619AAD35100C27E9E /* TriggerObj.h in Headers */, B665E2E51AA80A6500DDB1C5 /* CCPULineAffectorTranslator.h in Headers */, 50ABBE2E1925AB6F00A911A9 /* ccCArray.h in Headers */, + B6CAB2C81AF9AA1A00B9B856 /* btMaterial.h in Headers */, 15B3707B19EE414C00ABE682 /* AssetsManagerEx.h in Headers */, B665E3E91AA80A6600DDB1C5 /* CCPUSineForceAffectorTranslator.h in Headers */, + B6CAB2001AF9AA1A00B9B856 /* btDispatcher.h in Headers */, + B6CAB2641AF9AA1A00B9B856 /* btManifoldResult.h in Headers */, + B6CAB5161AF9AA1A00B9B856 /* btMinMax.h in Headers */, 15AE1B9119AADA9A00C27E9E /* UIWidget.h in Headers */, + B6CAB4CC1AF9AA1A00B9B856 /* SpuCollisionShapes.h in Headers */, B665E2611AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandlerTranslator.h in Headers */, 50ABC0041926664800A911A9 /* CCLock-apple.h in Headers */, B29A7DFE19EE1B7700872B35 /* IkConstraintData.h in Headers */, 382384401A259140002C4610 /* SingleNodeReader.h in Headers */, B665E2751AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.h in Headers */, + B6CAB35C1AF9AA1A00B9B856 /* gim_memory.h in Headers */, + B6CAB43A1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedDefs.h in Headers */, 15AE1A4019AAD3D500C27E9E /* b2Collision.h in Headers */, B665E36D1AA80A6500DDB1C5 /* CCPUOnVelocityObserver.h in Headers */, + B6CAB4061AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.h in Headers */, ED74D76A1A5B8A2600157FD4 /* CCPhysicsHelper.h in Headers */, 5034CA40191D591100CE6051 /* ccShader_Position_uColor.vert in Headers */, B665E2891AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandlerTranslator.h in Headers */, 15AE184719AAD2F700C27E9E /* CCSprite3DMaterial.h in Headers */, + B6CAB5101AF9AA1A00B9B856 /* btList.h in Headers */, 15AE1BFC19AAE01E00C27E9E /* CCControlUtils.h in Headers */, 15AE193519AAD35100C27E9E /* CCActionObject.h in Headers */, 15AE1AA919AAD40300C27E9E /* b2TimeStep.h in Headers */, B665E2C91AA80A6500DDB1C5 /* CCPUGravityAffector.h in Headers */, 15AE197A19AAD35700C27E9E /* CCActionTimelineCache.h in Headers */, + B6CAB5301AF9AA1A00B9B856 /* btStackAlloc.h in Headers */, 15AE19B919AAD39700C27E9E /* TextFieldReader.h in Headers */, 15AE181319AAD2F700C27E9E /* CCAnimation3D.h in Headers */, 50ABBEC21925AB6F00A911A9 /* CCValue.h in Headers */, + B6CAB4FE1AF9AA1A00B9B856 /* btConvexHull.h in Headers */, 50ABBECA1925AB6F00A911A9 /* firePngData.h in Headers */, B257B4511989D5E800D9A687 /* CCPrimitive.h in Headers */, 50643BE319BFCF1800EF68ED /* CCPlatformConfig.h in Headers */, B665E27D1AA80A6500DDB1C5 /* CCPUDoScaleEventHandler.h in Headers */, + B6CAB29E1AF9AA1A00B9B856 /* btConeShape.h in Headers */, 15AE181F19AAD2F700C27E9E /* CCBundle3DData.h in Headers */, 15AE193119AAD35100C27E9E /* CCActionManagerEx.h in Headers */, 15AE185B19AAD31200C27E9E /* CDOpenALSupport.h in Headers */, 50ABBE401925AB6F00A911A9 /* CCDataVisitor.h in Headers */, + B6CAB3401AF9AA1A00B9B856 /* gim_basic_geometry_operations.h in Headers */, 15AE19B719AAD39700C27E9E /* TextBMFontReader.h in Headers */, 1A570064180BC5A10088DEC7 /* CCAction.h in Headers */, + B6CAB4BA1AF9AA1A00B9B856 /* SpuFakeDma.h in Headers */, + B6CAB4BE1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.h in Headers */, 15AE1BA819AADFDF00C27E9E /* UIRelativeBox.h in Headers */, 503DD8EC1926736A00CD74DD /* CCGLViewImpl-ios.h in Headers */, 15AE18D819AAD33D00C27E9E /* CCScrollViewLoader.h in Headers */, + B6CAB4B41AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.h in Headers */, 15AE18DB19AAD33D00C27E9E /* CocosBuilder.h in Headers */, + B6CAB2601AF9AA1A00B9B856 /* btInternalEdgeUtility.h in Headers */, B665E1F51AA80A6500DDB1C5 /* CCPUAffector.h in Headers */, 15AE1ACD19AAD40300C27E9E /* b2PrismaticJoint.h in Headers */, + B6CAB2B21AF9AA1A00B9B856 /* btConvexPolyhedron.h in Headers */, 50ABBEBA1925AB6F00A911A9 /* ccUTF8.h in Headers */, + B6CAB3A61AF9AA1A00B9B856 /* btConeTwistConstraint.h in Headers */, + B6CAB32E1AF9AA1A00B9B856 /* btGImpactMassUtil.h in Headers */, + B6CAB43C1AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedTypes.h in Headers */, 50643BD619BFAEDA00EF68ED /* CCPlatformDefine.h in Headers */, 1A570068180BC5A10088DEC7 /* CCActionCamera.h in Headers */, B29A7E1E19EE1B7700872B35 /* PolygonBatch.h in Headers */, + B6CAB4E61AF9AA1A00B9B856 /* SpuSampleTaskProcess.h in Headers */, 15AE18BC19AAD33D00C27E9E /* CCControlLoader.h in Headers */, 15AE18C019AAD33D00C27E9E /* CCLabelTTFLoader.h in Headers */, 1A57006C180BC5A10088DEC7 /* CCActionCatmullRom.h in Headers */, @@ -7482,16 +9598,20 @@ 5034CA3A191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, D0FD034E1A3B51AA00825BB5 /* CCAllocatorDiagnostics.h in Headers */, B665E2A51AA80A6500DDB1C5 /* CCPUEventHandlerManager.h in Headers */, + B6CAB1FC1AF9AA1A00B9B856 /* btDbvtBroadphase.h in Headers */, DABC9FAC19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */, B665E4311AA80A6600DDB1C5 /* CCPUVelocityMatchingAffectorTranslator.h in Headers */, + B6CAB2C21AF9AA1A00B9B856 /* btEmptyShape.h in Headers */, B665E3C51AA80A6600DDB1C5 /* CCPUScaleAffectorTranslator.h in Headers */, B665E4351AA80A6600DDB1C5 /* CCPUVertexEmitter.h in Headers */, B665E2451AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffector.h in Headers */, + B6CAB3381AF9AA1A00B9B856 /* btQuantization.h in Headers */, 50ABBEC41925AB6F00A911A9 /* CCVector.h in Headers */, 15FB20711AE7BE7400C31518 /* SpritePolygonCache.h in Headers */, 50ABBE501925AB6F00A911A9 /* CCEventCustom.h in Headers */, 15AE1AD719AAD40300C27E9E /* b2WheelJoint.h in Headers */, B665E3311AA80A6500DDB1C5 /* CCPUOnCountObserverTranslator.h in Headers */, + B6CAB41C1AF9AA1A00B9B856 /* btDantzigLCP.h in Headers */, B665E2051AA80A6500DDB1C5 /* CCPUAlignAffectorTranslator.h in Headers */, 1A570070180BC5A10088DEC7 /* CCActionEase.h in Headers */, 1A570074180BC5A10088DEC7 /* CCActionGrid.h in Headers */, @@ -7502,7 +9622,10 @@ 50ABBD631925AB0000A911A9 /* Vec4.h in Headers */, B665E3A91AA80A6500DDB1C5 /* CCPURandomiser.h in Headers */, 15AE19AF19AAD39700C27E9E /* PageViewReader.h in Headers */, + B6CAB29A1AF9AA1A00B9B856 /* btConcaveShape.h in Headers */, + B6CAB2AE1AF9AA1A00B9B856 /* btConvexPointCloudShape.h in Headers */, B29A7DD419EE1B7700872B35 /* Skin.h in Headers */, + B6CAB2221AF9AA1A00B9B856 /* btBoxBoxDetector.h in Headers */, B29A7E2419EE1B7700872B35 /* IkConstraint.h in Headers */, 1A01C68918F57BE800EFE3A6 /* CCBool.h in Headers */, B665E2851AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandler.h in Headers */, @@ -7515,8 +9638,10 @@ 382384121A259092002C4610 /* NodeReaderDefine.h in Headers */, 50ABBE781925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */, 15AE1BC019AADFF000C27E9E /* WebSocket.h in Headers */, + B6CAB1E21AF9AA1A00B9B856 /* btBulletCollisionCommon.h in Headers */, B665E2FD1AA80A6500DDB1C5 /* CCPUMaterialManager.h in Headers */, 3823840A1A25900F002C4610 /* FlatBuffersSerialize.h in Headers */, + B6CAB3C61AF9AA1A00B9B856 /* btHingeConstraint.h in Headers */, 1A570080180BC5A10088DEC7 /* CCActionInterval.h in Headers */, B665E2A11AA80A6500DDB1C5 /* CCPUEventHandler.h in Headers */, 15AE192D19AAD35100C27E9E /* CCActionFrame.h in Headers */, @@ -7524,8 +9649,15 @@ 1A570084180BC5A10088DEC7 /* CCActionManager.h in Headers */, B665E3151AA80A6500DDB1C5 /* CCPUObserverManager.h in Headers */, 15AE18C619AAD33D00C27E9E /* CCLayerLoader.h in Headers */, + B6CAB4A41AF9AA1A00B9B856 /* PpuAddressSpace.h in Headers */, + B6CAB2041AF9AA1A00B9B856 /* btMultiSapBroadphase.h in Headers */, B665E2C51AA80A6500DDB1C5 /* CCPUGeometryRotatorTranslator.h in Headers */, + B6CAB2781AF9AA1A00B9B856 /* btUnionFind.h in Headers */, + B6CAB4A81AF9AA1A00B9B856 /* SequentialThreadSupport.h in Headers */, + B6CAB2D81AF9AA1A00B9B856 /* btOptimizedBvh.h in Headers */, + B6CAB3DA1AF9AA1A00B9B856 /* btSolverBody.h in Headers */, 50ABC0141926664800A911A9 /* CCGLView.h in Headers */, + B6CAB5341AF9AA1A00B9B856 /* btTransformUtil.h in Headers */, 1A570088180BC5A10088DEC7 /* CCActionPageTurn3D.h in Headers */, 15AE1B9319AADA9A00C27E9E /* UIHelper.h in Headers */, 50ABBD9E1925AB4100A911A9 /* ccGLStateCache.h in Headers */, @@ -7533,25 +9665,32 @@ B665E30D1AA80A6500DDB1C5 /* CCPUNoise.h in Headers */, 15AE1B9619AADA9A00C27E9E /* CocosGUI.h in Headers */, 1A57008C180BC5A10088DEC7 /* CCActionProgressTimer.h in Headers */, + B6CAB3FE1AF9AA1A00B9B856 /* btMultiBodyConstraint.h in Headers */, B665E21D1AA80A6500DDB1C5 /* CCPUBehaviour.h in Headers */, 1A570090180BC5A10088DEC7 /* CCActionTiledGrid.h in Headers */, B665E2A91AA80A6500DDB1C5 /* CCPUEventHandlerTranslator.h in Headers */, + B6CAB41E1AF9AA1A00B9B856 /* btDantzigSolver.h in Headers */, DA8C62A519E52C6400000516 /* ioapi_mem.h in Headers */, + B6CAB2B61AF9AA1A00B9B856 /* btConvexShape.h in Headers */, 1A570094180BC5A10088DEC7 /* CCActionTween.h in Headers */, 1A57009B180BC5C10088DEC7 /* CCAtlasNode.h in Headers */, 15AE184919AAD2F700C27E9E /* cocos3d.h in Headers */, 1A5700A1180BC5D20088DEC7 /* CCNode.h in Headers */, 15AE181919AAD2F700C27E9E /* CCAttachNode.h in Headers */, + B6CAB23C1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.h in Headers */, 292DB14C19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */, 15AE1BF019AAE01E00C27E9E /* CCControlHuePicker.h in Headers */, B665E3611AA80A6500DDB1C5 /* CCPUOnRandomObserverTranslator.h in Headers */, B665E3111AA80A6500DDB1C5 /* CCPUObserver.h in Headers */, 15AE18B819AAD33D00C27E9E /* CCBSequenceProperty.h in Headers */, B665E2311AA80A6500DDB1C5 /* CCPUBoxColliderTranslator.h in Headers */, + B6CAB4DE1AF9AA1A00B9B856 /* SpuPreferredPenetrationDirections.h in Headers */, 503DD8E41926736A00CD74DD /* CCDirectorCaller-ios.h in Headers */, 15AE198119AAD35700C27E9E /* CCTimelineMacro.h in Headers */, B29A7E0219EE1B7700872B35 /* extension.h in Headers */, + B6CAB2A21AF9AA1A00B9B856 /* btConvex2dShape.h in Headers */, B665E24D1AA80A6500DDB1C5 /* CCPUColorAffector.h in Headers */, + B6CAB4D61AF9AA1A00B9B856 /* SpuGatheringCollisionTask.h in Headers */, 15AE1B7719AADA9A00C27E9E /* UIPageView.h in Headers */, 50ABBD8A1925AB4100A911A9 /* CCCustomCommand.h in Headers */, 299754F7193EC95400A54AC3 /* ObjectFactory.h in Headers */, @@ -7560,32 +9699,45 @@ B665E3991AA80A6500DDB1C5 /* CCPUPointEmitter.h in Headers */, B29A7E4019EE1B7700872B35 /* AnimationState.h in Headers */, 50ABC0101926664800A911A9 /* CCFileUtils.h in Headers */, + B6CAB53C1AF9AA1A00B9B856 /* cl_gl.h in Headers */, 15AE19A919AAD39700C27E9E /* LayoutReader.h in Headers */, B665E29D1AA80A6500DDB1C5 /* CCPUEmitterTranslator.h in Headers */, 15AE1B7B19AADA9A00C27E9E /* UIScrollView.h in Headers */, 5034CA30191D591100CE6051 /* ccShader_PositionTexture.vert in Headers */, 382384391A259126002C4610 /* ProjectNodeReader.h in Headers */, 1A570111180BC8EE0088DEC7 /* CCDrawingPrimitives.h in Headers */, + B6CAB5121AF9AA1A00B9B856 /* btMatrix3x3.h in Headers */, 50ABBE381925AB6F00A911A9 /* CCConsole.h in Headers */, + B6CAB3EA1AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.h in Headers */, 50ABBE8A1925AB6F00A911A9 /* CCMap.h in Headers */, B665E32D1AA80A6500DDB1C5 /* CCPUOnCountObserver.h in Headers */, 503DD8E61926736A00CD74DD /* CCEAGLView-ios.h in Headers */, 50ABBE4C1925AB6F00A911A9 /* CCEventAcceleration.h in Headers */, B665E2F91AA80A6500DDB1C5 /* CCPUListener.h in Headers */, + B6CAB4F41AF9AA1A00B9B856 /* btAabbUtil2.h in Headers */, 50ABBD571925AB0000A911A9 /* TransformUtils.h in Headers */, B665E2711AA80A6500DDB1C5 /* CCPUDoFreezeEventHandlerTranslator.h in Headers */, 1A570115180BC8EE0088DEC7 /* CCDrawNode.h in Headers */, + B6CAB2341AF9AA1A00B9B856 /* btCollisionWorld.h in Headers */, 1A57011E180BC90D0088DEC7 /* CCGrabber.h in Headers */, + B6CAB4A21AF9AA1A00B9B856 /* PosixThreadSupport.h in Headers */, + B6CAB3061AF9AA1A00B9B856 /* btTriangleInfoMap.h in Headers */, 1A570122180BC90D0088DEC7 /* CCGrid.h in Headers */, 15AE1AB319AAD40300C27E9E /* b2CircleContact.h in Headers */, + B6CAB3161AF9AA1A00B9B856 /* btBoxCollision.h in Headers */, 5034CA2E191D591100CE6051 /* ccShader_PositionTextureA8Color.frag in Headers */, + B6CAB31A1AF9AA1A00B9B856 /* btCompoundFromGimpact.h in Headers */, 15AE1A4F19AAD3D500C27E9E /* b2Shape.h in Headers */, 29394CF519B01DBA00D2DE1A /* UIWebViewImpl-ios.h in Headers */, 50ABBD5B1925AB0000A911A9 /* Vec2.h in Headers */, D0FD035E1A3B51AA00825BB5 /* CCAllocatorStrategyGlobalSmallBlock.h in Headers */, 50ABBD411925AB0000A911A9 /* CCMath.h in Headers */, 1A5701A0180BCB590088DEC7 /* CCFont.h in Headers */, + B6CAB2EC1AF9AA1A00B9B856 /* btStaticPlaneShape.h in Headers */, + B6CAB2DC1AF9AA1A00B9B856 /* btPolyhedralConvexShape.h in Headers */, 292DB14819B4574100A80320 /* UIEditBoxImpl-ios.h in Headers */, + B6CAB54A1AF9AA1A00B9B856 /* MiniCLTaskScheduler.h in Headers */, + B6CAB3621AF9AA1A00B9B856 /* gim_tri_collision.h in Headers */, 3E2BDADE19C030ED0055CDCD /* AudioEngine.h in Headers */, B665E3011AA80A6500DDB1C5 /* CCPUMaterialTranslator.h in Headers */, 50ABBD9A1925AB4100A911A9 /* CCGLProgramStateCache.h in Headers */, @@ -7597,35 +9749,47 @@ B60C5BD719AC68B10056FBDE /* CCBillBoard.h in Headers */, B230ED7419B417AE00364AA8 /* CCTrianglesCommand.h in Headers */, B665E2911AA80A6500DDB1C5 /* CCPUDynamicAttributeTranslator.h in Headers */, + B6CAB3D01AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.h in Headers */, 50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */, 15AE1ACB19AAD40300C27E9E /* b2MouseJoint.h in Headers */, B665E3491AA80A6500DDB1C5 /* CCPUOnExpireObserverTranslator.h in Headers */, 50ABBD3F1925AB0000A911A9 /* CCGeometry.h in Headers */, + B6CAB4F21AF9AA1A00B9B856 /* Win32ThreadSupport.h in Headers */, B665E3291AA80A6500DDB1C5 /* CCPUOnCollisionObserverTranslator.h in Headers */, B29A7DD019EE1B7700872B35 /* RegionAttachment.h in Headers */, D0FD034A1A3B51AA00825BB5 /* CCAllocatorBase.h in Headers */, + B6CAB51E1AF9AA1A00B9B856 /* btPoolAllocator.h in Headers */, 15AE1AD319AAD40300C27E9E /* b2RopeJoint.h in Headers */, + B6CAB3581AF9AA1A00B9B856 /* gim_math.h in Headers */, 50ABBFFE1926664800A911A9 /* CCFileUtils-apple.h in Headers */, 15AE1AAD19AAD40300C27E9E /* b2WorldCallbacks.h in Headers */, 1A5701A4180BCB590088DEC7 /* CCFontAtlas.h in Headers */, + B6CAB4C41AF9AA1A00B9B856 /* Box.h in Headers */, 15AE1C0219AAE01E00C27E9E /* CCScrollView.h in Headers */, 1A5701A8180BCB590088DEC7 /* CCFontAtlasCache.h in Headers */, B665E3E51AA80A6600DDB1C5 /* CCPUSineForceAffector.h in Headers */, 182C5CE81A9D725400C30D34 /* UserCameraReader.h in Headers */, 15AE1A4C19AAD3D500C27E9E /* b2EdgeShape.h in Headers */, + B6CAB39C1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.h in Headers */, + B6CAB2701AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.h in Headers */, 1A5701B4180BCB590088DEC7 /* CCFontFNT.h in Headers */, 15AE18D419AAD33D00C27E9E /* CCParticleSystemQuadLoader.h in Headers */, B665E3411AA80A6500DDB1C5 /* CCPUOnEventFlagObserverTranslator.h in Headers */, + B6CAB5041AF9AA1A00B9B856 /* btDefaultMotionState.h in Headers */, + B6CAB52A1AF9AA1A00B9B856 /* btScalar.h in Headers */, B29A7DFA19EE1B7700872B35 /* Json.h in Headers */, 3823842B1A2590F9002C4610 /* NodeReader.h in Headers */, + B6CAB3241AF9AA1A00B9B856 /* btGeometryOperations.h in Headers */, 1A5701B8180BCB5A0088DEC7 /* CCFontFreeType.h in Headers */, 15AE182719AAD2F700C27E9E /* CCMesh.h in Headers */, + B6CAB1EC1AF9AA1A00B9B856 /* btBroadphaseInterface.h in Headers */, 15AE199319AAD37300C27E9E /* ImageViewReader.h in Headers */, B665E2791AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandlerTranslator.h in Headers */, 15AE1A4819AAD3D500C27E9E /* b2ChainShape.h in Headers */, B665E3091AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitterTranslator.h in Headers */, 15AE18CB19AAD33D00C27E9E /* CCMenuLoader.h in Headers */, B665E4011AA80A6600DDB1C5 /* CCPUSphereCollider.h in Headers */, + B6CAB31E1AF9AA1A00B9B856 /* btContactProcessing.h in Headers */, 1A5701BC180BCB5A0088DEC7 /* CCLabel.h in Headers */, B665E2D51AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.h in Headers */, 1A5701C0180BCB5A0088DEC7 /* CCLabelAtlas.h in Headers */, @@ -7633,34 +9797,55 @@ 50ABBE681925AB6F00A911A9 /* CCEventListenerCustom.h in Headers */, B665E2AD1AA80A6500DDB1C5 /* CCPUFlockCenteringAffector.h in Headers */, 15AE196B19AAD35100C27E9E /* DictionaryHelper.h in Headers */, + B6CAB4C21AF9AA1A00B9B856 /* SpuLibspe2Support.h in Headers */, + B6CAB5021AF9AA1A00B9B856 /* btConvexHullComputer.h in Headers */, B665E2411AA80A6500DDB1C5 /* CCPUCircleEmitterTranslator.h in Headers */, + B6CAB2BA1AF9AA1A00B9B856 /* btConvexTriangleMeshShape.h in Headers */, 15AE1AA619AAD40300C27E9E /* b2Fixture.h in Headers */, + B6CAB3C21AF9AA1A00B9B856 /* btHinge2Constraint.h in Headers */, + B6CAB2121AF9AA1A00B9B856 /* btSimpleBroadphase.h in Headers */, + B6CAB4EE1AF9AA1A00B9B856 /* vectormath2bullet.h in Headers */, 15AE1BBA19AADFF000C27E9E /* HttpClient.h in Headers */, + B6CAB2241AF9AA1A00B9B856 /* btCollisionConfiguration.h in Headers */, 292DB14619B4574100A80320 /* UIEditBoxImpl-android.h in Headers */, + B6CAB49E1AF9AA1A00B9B856 /* PlatformDefinitions.h in Headers */, B665E2DD1AA80A6500DDB1C5 /* CCPUJetAffectorTranslator.h in Headers */, 15AE1B9419AADA9A00C27E9E /* GUIDefine.h in Headers */, + B6CAB3E41AF9AA1A00B9B856 /* btUniversalConstraint.h in Headers */, 15AE183B19AAD2F700C27E9E /* CCRay.h in Headers */, 5034CA42191D591100CE6051 /* ccShader_Position_uColor.frag in Headers */, 1A5701C4180BCB5A0088DEC7 /* CCLabelBMFont.h in Headers */, + B6CAB4D01AF9AA1A00B9B856 /* SpuContactResult.h in Headers */, 15AE193F19AAD35100C27E9E /* CCBatchNode.h in Headers */, B665E37D1AA80A6500DDB1C5 /* CCPUParticleSystem3D.h in Headers */, B665E25D1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandler.h in Headers */, + B6CAB3141AF9AA1A00B9B856 /* btUniformScalingShape.h in Headers */, B665E39D1AA80A6500DDB1C5 /* CCPUPointEmitterTranslator.h in Headers */, + B6CAB4261AF9AA1A00B9B856 /* btPATHSolver.h in Headers */, 15AE1C1819AAE2C700C27E9E /* CCPhysicsSprite.h in Headers */, 15AE1BC819AAE00000C27E9E /* AssetsManager.h in Headers */, B665E2E11AA80A6500DDB1C5 /* CCPULineAffector.h in Headers */, B29A7E0419EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */, + B6CAB51C1AF9AA1A00B9B856 /* btPolarDecomposition.h in Headers */, 52B47A2E1A5349A3004E4C60 /* HttpAsynConnection.h in Headers */, + B6CAB2E41AF9AA1A00B9B856 /* btShapeHull.h in Headers */, 15AE1BBC19AADFF000C27E9E /* HttpResponse.h in Headers */, 15AE186019AAD31200C27E9E /* SimpleAudioEngine_objc.h in Headers */, 50ABBDA61925AB4100A911A9 /* CCQuadCommand.h in Headers */, 15AE1BB019AADFDF00C27E9E /* UILayoutManager.h in Headers */, + B6CAB2E01AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.h in Headers */, 50ABBE9E1925AB6F00A911A9 /* CCRefPtr.h in Headers */, 15AE18DA19AAD33D00C27E9E /* CCSpriteLoader.h in Headers */, + B6CAB4401AF9AA1A00B9B856 /* btGpuUtilsSharedCode.h in Headers */, 15AE196219AAD35100C27E9E /* CCSSceneReader.h in Headers */, 1A01C69518F57BE800EFE3A6 /* CCFloat.h in Headers */, B665E2011AA80A6500DDB1C5 /* CCPUAlignAffector.h in Headers */, + B6CAB49C1AF9AA1A00B9B856 /* HeapManager.h in Headers */, 1A5701CA180BCB5A0088DEC7 /* CCLabelTextFormatter.h in Headers */, + B6CAB25C1AF9AA1A00B9B856 /* btHashedSimplePairCache.h in Headers */, + B6CAB5201AF9AA1A00B9B856 /* btQuadWord.h in Headers */, + B6CAB4E21AF9AA1A00B9B856 /* SpuSampleTask.h in Headers */, + B6CAB5221AF9AA1A00B9B856 /* btQuaternion.h in Headers */, 50643BDC19BFAF4400EF68ED /* CCStdC.h in Headers */, 5034CA22191D591100CE6051 /* ccShader_PositionTextureColorAlphaTest.frag in Headers */, 15AE1B8E19AADA9A00C27E9E /* UIDeprecated.h in Headers */, @@ -7682,17 +9867,24 @@ 15AE1AB119AAD40300C27E9E /* b2ChainAndPolygonContact.h in Headers */, B665E4211AA80A6600DDB1C5 /* CCPUTextureRotatorTranslator.h in Headers */, 501216911AC47380009A4BEA /* CCRenderState.h in Headers */, + B6CAB2081AF9AA1A00B9B856 /* btOverlappingPairCache.h in Headers */, 1A5701E1180BCB8C0088DEC7 /* CCLayer.h in Headers */, + B6CAB40E1AF9AA1A00B9B856 /* btMultiBodyJointMotor.h in Headers */, + B6CAB2801AF9AA1A00B9B856 /* btBox2dShape.h in Headers */, + B6CAB2541AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.h in Headers */, B665E3691AA80A6500DDB1C5 /* CCPUOnTimeObserverTranslator.h in Headers */, 15AE1BEE19AAE01E00C27E9E /* CCControlExtensions.h in Headers */, 1A5701E5180BCB8C0088DEC7 /* CCScene.h in Headers */, + B6CAB2F41AF9AA1A00B9B856 /* btTetrahedronShape.h in Headers */, 1A5701E9180BCB8C0088DEC7 /* CCTransition.h in Headers */, 15AE198F19AAD36E00C27E9E /* CheckBoxReader.h in Headers */, B665E3911AA80A6500DDB1C5 /* CCPUPlaneCollider.h in Headers */, 382384011A258FA7002C4610 /* util.h in Headers */, 18956BB51A9DFBFD006E9155 /* Particle3DReader.h in Headers */, + B6CAB34A1AF9AA1A00B9B856 /* gim_clip_polygon.h in Headers */, B665E3F91AA80A6600DDB1C5 /* CCPUSlaveEmitterTranslator.h in Headers */, B665E2551AA80A6500DDB1C5 /* CCPUDoAffectorEventHandler.h in Headers */, + B6CAB4161AF9AA1A00B9B856 /* btMultiBodyPoint2Point.h in Headers */, 50ABBED41925AB6F00A911A9 /* uthash.h in Headers */, B665E3AD1AA80A6500DDB1C5 /* CCPURandomiserTranslator.h in Headers */, B29A7E0A19EE1B7700872B35 /* AttachmentLoader.h in Headers */, @@ -7705,9 +9897,12 @@ 1A5701FE180BCBAD0088DEC7 /* CCMenuItem.h in Headers */, 50ABC00C1926664800A911A9 /* CCDevice.h in Headers */, 1A570205180BCBD40088DEC7 /* CCClippingNode.h in Headers */, + B6CAB3041AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.h in Headers */, 15AE1B8919AADA9A00C27E9E /* UICheckBox.h in Headers */, + B6CAB2161AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.h in Headers */, 5034CA34191D591100CE6051 /* ccShader_PositionTexture_uColor.frag in Headers */, B665E40D1AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitterTranslator.h in Headers */, + B6CAB38A1AF9AA1A00B9B856 /* btPointCollector.h in Headers */, B29A7DF819EE1B7700872B35 /* Attachment.h in Headers */, 15AE197C19AAD35700C27E9E /* CCFrame.h in Headers */, B665E31D1AA80A6500DDB1C5 /* CCPUOnClearObserver.h in Headers */, @@ -7718,11 +9913,15 @@ B665E2651AA80A6500DDB1C5 /* CCPUDoExpireEventHandler.h in Headers */, 15FB208A1AE7C57D00C31518 /* shapes.h in Headers */, 50ABBEA21925AB6F00A911A9 /* CCScheduler.h in Headers */, + B6CAB38E1AF9AA1A00B9B856 /* btPolyhedralContactClipping.h in Headers */, 1A57020B180BCBDF0088DEC7 /* CCMotionStreak.h in Headers */, B665E2211AA80A6500DDB1C5 /* CCPUBehaviourManager.h in Headers */, 15AE195219AAD35100C27E9E /* CCDecorativeDisplay.h in Headers */, 15AE196619AAD35100C27E9E /* CCTween.h in Headers */, 15AE194619AAD35100C27E9E /* CCComAttribute.h in Headers */, + B6CAB5181AF9AA1A00B9B856 /* btMotionState.h in Headers */, + B6CAAFE51AF9A9E100B9B856 /* CCPhysics3D.h in Headers */, + B6CAB1F41AF9AA1A00B9B856 /* btCollisionAlgorithm.h in Headers */, 382384241A2590DA002C4610 /* GameMapReader.h in Headers */, 15AE1ABD19AAD40300C27E9E /* b2PolygonAndCircleContact.h in Headers */, 15AE1AA819AAD40300C27E9E /* b2Island.h in Headers */, @@ -7733,11 +9932,14 @@ 38F526431A48363B000DB7F7 /* CSArmatureNode_generated.h in Headers */, 1A570217180BCBF40088DEC7 /* CCRenderTexture.h in Headers */, B603F1AB1AC8EA0900A9579C /* CCTerrain.h in Headers */, + B6CAB5461AF9AA1A00B9B856 /* MiniCLTask.h in Headers */, 15AE1ABB19AAD40300C27E9E /* b2EdgeAndPolygonContact.h in Headers */, 15AE198719AAD36400C27E9E /* WidgetReaderProtocol.h in Headers */, B665E3ED1AA80A6600DDB1C5 /* CCPUSlaveBehaviour.h in Headers */, + B6CAB42C1AF9AA1A00B9B856 /* btRaycastVehicle.h in Headers */, 15AE198619AAD36400C27E9E /* WidgetReader.h in Headers */, 1A570224180BCC1A0088DEC7 /* CCParticleBatchNode.h in Headers */, + B6CAB32C1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.h in Headers */, 15FB20961AE7C57D00C31518 /* cdt.h in Headers */, 15AE1AC919AAD40300C27E9E /* b2Joint.h in Headers */, 382383EF1A258FA7002C4610 /* flatbuffers.h in Headers */, @@ -7746,38 +9948,53 @@ 15AE196819AAD35100C27E9E /* CCUtilMath.h in Headers */, B29A7E2019EE1B7700872B35 /* BoneData.h in Headers */, 503DD8F61926B0DB00CD74DD /* CCIMEDelegate.h in Headers */, + B6CAAFED1AF9A9E100B9B856 /* CCPhysics3DConstraint.h in Headers */, 1A570228180BCC1A0088DEC7 /* CCParticleExamples.h in Headers */, B665E4391AA80A6600DDB1C5 /* CCPUVortexAffector.h in Headers */, 1A57022C180BCC1A0088DEC7 /* CCParticleSystem.h in Headers */, + B6CAB26C1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.h in Headers */, B665E4291AA80A6600DDB1C5 /* CCPUUtil.h in Headers */, 15AE1BAC19AADFDF00C27E9E /* UILayout.h in Headers */, 1A570230180BCC1A0088DEC7 /* CCParticleSystemQuad.h in Headers */, 382383F31A258FA7002C4610 /* idl.h in Headers */, 29394CF119B01DBA00D2DE1A /* UIWebView.h in Headers */, + B6CAB4EC1AF9AA1A00B9B856 /* TrbStateVec.h in Headers */, 15AE18B419AAD33D00C27E9E /* CCBSelectorResolver.h in Headers */, B24AA988195A675C007B4522 /* CCFastTMXLayer.h in Headers */, 15AE1AB919AAD40300C27E9E /* b2EdgeAndCircleContact.h in Headers */, 15AE1B7319AADA9A00C27E9E /* UIListView.h in Headers */, 15AE192A19AAD35100C27E9E /* TriggerMng.h in Headers */, 5034CA2C191D591100CE6051 /* ccShader_PositionTextureA8Color.vert in Headers */, + B6CAB2741AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.h in Headers */, 50ABBE981925AB6F00A911A9 /* CCProtocols.h in Headers */, + B6CAB3801AF9AA1A00B9B856 /* btManifoldPoint.h in Headers */, 50CB247A19D9C5A100687767 /* AudioEngine-inl.h in Headers */, 52B47A321A5349A3004E4C60 /* HttpCookie.h in Headers */, 50ABBD431925AB0000A911A9 /* CCMathBase.h in Headers */, 15EFA214198A2BB5000C57D3 /* CCProtectedNode.h in Headers */, + B6CAB2261AF9AA1A00B9B856 /* btCollisionCreateFunc.h in Headers */, 15AE194419AAD35100C27E9E /* CCComBase.h in Headers */, 15AE1A3B19AAD3D500C27E9E /* b2BroadPhase.h in Headers */, 15AE195619AAD35100C27E9E /* CCDisplayManager.h in Headers */, 15AE1B8719AADA9A00C27E9E /* UIButton.h in Headers */, 38F526411A48363B000DB7F7 /* ArmatureNodeReader.h in Headers */, + B6CAB3981AF9AA1A00B9B856 /* btSubSimplexConvexCast.h in Headers */, 50ABBE441925AB6F00A911A9 /* CCDirector.h in Headers */, + B6CAB3321AF9AA1A00B9B856 /* btGImpactQuantizedBvh.h in Headers */, 5034CA4A191D591100CE6051 /* ccShader_Label_df.frag in Headers */, + B6CAB1E41AF9AA1A00B9B856 /* btBulletDynamicsCommon.h in Headers */, + B6CAB2301AF9AA1A00B9B856 /* btCollisionObjectWrapper.h in Headers */, + B6CAB3B61AF9AA1A00B9B856 /* btGearConstraint.h in Headers */, + B6CAB20E1AF9AA1A00B9B856 /* btQuantizedBvh.h in Headers */, B665E2591AA80A6500DDB1C5 /* CCPUDoAffectorEventHandlerTranslator.h in Headers */, B665E1F91AA80A6500DDB1C5 /* CCPUAffectorManager.h in Headers */, B665E2351AA80A6500DDB1C5 /* CCPUBoxEmitter.h in Headers */, + B6CAB36C1AF9AA1A00B9B856 /* btConvexPenetrationDepthSolver.h in Headers */, + B6CAB4281AF9AA1A00B9B856 /* btSolveProjectedGaussSeidel.h in Headers */, 15AE1B7519AADA9A00C27E9E /* UILoadingBar.h in Headers */, 15AE1BF219AAE01E00C27E9E /* CCControlPotentiometer.h in Headers */, 15AE1BEB19AAE01E00C27E9E /* CCControlButton.h in Headers */, + B6CAB1F81AF9AA1A00B9B856 /* btDbvt.h in Headers */, B665E35D1AA80A6500DDB1C5 /* CCPUOnRandomObserver.h in Headers */, 1A570281180BCC900088DEC7 /* CCSprite.h in Headers */, 1A570285180BCC900088DEC7 /* CCSpriteBatchNode.h in Headers */, @@ -7785,37 +10002,51 @@ 1A570289180BCC900088DEC7 /* CCSpriteFrame.h in Headers */, 15AE1B7F19AADA9A00C27E9E /* UIText.h in Headers */, B29A7E3419EE1B7700872B35 /* SlotData.h in Headers */, + B6CAAFF91AF9A9E100B9B856 /* CCPhysics3DShape.h in Headers */, B665E3D51AA80A6600DDB1C5 /* CCPUScriptLexer.h in Headers */, 50ABBE701925AB6F00A911A9 /* CCEventListenerKeyboard.h in Headers */, 15AE18B619AAD33D00C27E9E /* CCBSequence.h in Headers */, 15AE1A9819AAD40300C27E9E /* b2GrowableStack.h in Headers */, 1A57028D180BCC900088DEC7 /* CCSpriteFrameCache.h in Headers */, 1A570295180BCCAB0088DEC7 /* CCAnimation.h in Headers */, + B6CAB21E1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.h in Headers */, + B6CAB50A1AF9AA1A00B9B856 /* btGrahamScan2dConvexHull.h in Headers */, B665E2D11AA80A6500DDB1C5 /* CCPUInterParticleCollider.h in Headers */, 50ABBDB81925AB4100A911A9 /* CCTexture2D.h in Headers */, + B6CAB2581AF9AA1A00B9B856 /* btGhostObject.h in Headers */, 15AE1AAB19AAD40300C27E9E /* b2World.h in Headers */, 15AE180F19AAD2F700C27E9E /* CCAnimate3D.h in Headers */, 50ABBE341925AB6F00A911A9 /* CCConfiguration.h in Headers */, B68778FF1A8CA82E00643ABF /* CCParticle3DEmitter.h in Headers */, 1A570299180BCCAB0088DEC7 /* CCAnimationCache.h in Headers */, + B6CAB42E1AF9AA1A00B9B856 /* btVehicleRaycaster.h in Headers */, B665E2B11AA80A6500DDB1C5 /* CCPUFlockCenteringAffectorTranslator.h in Headers */, + B6CAB2E81AF9AA1A00B9B856 /* btSphereShape.h in Headers */, 15AE1ABF19AAD40300C27E9E /* b2PolygonContact.h in Headers */, 50ABBEAA1925AB6F00A911A9 /* CCTouch.h in Headers */, 15AE1BAE19AADFDF00C27E9E /* UILayoutParameter.h in Headers */, 15AE18C819AAD33D00C27E9E /* CCMenuItemImageLoader.h in Headers */, + B6CAB3AC1AF9AA1A00B9B856 /* btContactConstraint.h in Headers */, B665E2491AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffectorTranslator.h in Headers */, + B6CAB4461AF9AA1A00B9B856 /* btParallelConstraintSolver.h in Headers */, 15AE18D119AAD33D00C27E9E /* CCNodeLoaderLibrary.h in Headers */, 15AE1AC319AAD40300C27E9E /* b2DistanceJoint.h in Headers */, + B6CAB5261AF9AA1A00B9B856 /* btQuickprof.h in Headers */, 50ABBE741925AB6F00A911A9 /* CCEventListenerMouse.h in Headers */, D0FD03581A3B51AA00825BB5 /* CCAllocatorMutex.h in Headers */, B29A7E1219EE1B7700872B35 /* EventData.h in Headers */, 1A5702CB180BCE370088DEC7 /* CCTextFieldTTF.h in Headers */, 1A5702ED180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */, 15AE195E19AAD35100C27E9E /* CCSkin.h in Headers */, + B6CAB3CC1AF9AA1A00B9B856 /* btPoint2PointConstraint.h in Headers */, + B6CAB5081AF9AA1A00B9B856 /* btGeometryUtil.h in Headers */, 1A5702F1180BCE750088DEC7 /* CCTMXLayer.h in Headers */, 15FB20771AE7BF8600C31518 /* MarchingSquare.h in Headers */, + B6CAB4F81AF9AA1A00B9B856 /* btAlignedAllocator.h in Headers */, 15AE18AE19AAD33D00C27E9E /* CCBFileLoader.h in Headers */, + B6CAB2D41AF9AA1A00B9B856 /* btMultiSphereShape.h in Headers */, 15AE197819AAD35700C27E9E /* CCActionTimeline.h in Headers */, + B6CAAFF11AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.h in Headers */, 15FB206D1AE7BE7400C31518 /* SpritePolygon.h in Headers */, 15AE1AA019AAD40300C27E9E /* b2Timer.h in Headers */, 5034CA44191D591100CE6051 /* ccShader_Label.vert in Headers */, @@ -7830,102 +10061,152 @@ 15AE1AC519AAD40300C27E9E /* b2FrictionJoint.h in Headers */, 15AE1B8D19AADA9A00C27E9E /* UIScale9Sprite.h in Headers */, 15AE18AC19AAD33D00C27E9E /* CCBAnimationManager.h in Headers */, + B6CAB2841AF9AA1A00B9B856 /* btBoxShape.h in Headers */, 292DB14219B4574100A80320 /* UIEditBoxImpl.h in Headers */, + B6CAB5321AF9AA1A00B9B856 /* btTransform.h in Headers */, 1A570303180BCE890088DEC7 /* CCParallaxNode.h in Headers */, 50ABBE2A1925AB6F00A911A9 /* CCAutoreleasePool.h in Headers */, + B6CAAFFD1AF9A9E100B9B856 /* CCPhysics3DWorld.h in Headers */, 501216971AC47393009A4BEA /* CCPass.h in Headers */, 1A57030F180BCF190088DEC7 /* CCComponent.h in Headers */, B665E22D1AA80A6500DDB1C5 /* CCPUBoxCollider.h in Headers */, + B6CAB22E1AF9AA1A00B9B856 /* btCollisionObject.h in Headers */, 15AE1AD519AAD40300C27E9E /* b2WeldJoint.h in Headers */, 15AE18B019AAD33D00C27E9E /* CCBKeyframe.h in Headers */, 15AE18C419AAD33D00C27E9E /* CCLayerGradientLoader.h in Headers */, + B6CAB1EA1AF9AA1A00B9B856 /* btAxisSweep3.h in Headers */, B665E3511AA80A6500DDB1C5 /* CCPUOnPositionObserverTranslator.h in Headers */, + B6CAB3A21AF9AA1A00B9B856 /* btKinematicCharacterController.h in Headers */, 1A570313180BCF190088DEC7 /* CCComponentContainer.h in Headers */, + B6CAB5381AF9AA1A00B9B856 /* btVector3.h in Headers */, + B6CAB4DC1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.h in Headers */, B665E2F51AA80A6500DDB1C5 /* CCPULineEmitterTranslator.h in Headers */, 1A087AEB1860400400196EF5 /* edtaa3func.h in Headers */, B665E3751AA80A6500DDB1C5 /* CCPUParticleFollower.h in Headers */, + B6CAB4B01AF9AA1A00B9B856 /* SpuCollisionTaskProcess.h in Headers */, 15AE185D19AAD31200C27E9E /* CocosDenshion.h in Headers */, + B6CAB3661AF9AA1A00B9B856 /* btContinuousConvexCollision.h in Headers */, 15AE194319AAD35100C27E9E /* CCColliderDetector.h in Headers */, 382F7ADF1AB1292A002EBECF /* CCObjectExtensionData.h in Headers */, + B6CAB3A81AF9AA1A00B9B856 /* btConstraintSolver.h in Headers */, D0FD035C1A3B51AA00825BB5 /* CCAllocatorStrategyFixedBlock.h in Headers */, 15AE1BC419AADFFB00C27E9E /* ExtensionMacros.h in Headers */, 15AE185A19AAD31200C27E9E /* CDConfig.h in Headers */, B29A7DE819EE1B7700872B35 /* spine.h in Headers */, + B6CAB50E1AF9AA1A00B9B856 /* btIDebugDraw.h in Headers */, 1A57034E180BD09B0088DEC7 /* tinyxml2.h in Headers */, 15AE1BFE19AAE01E00C27E9E /* CCInvocation.h in Headers */, 15AE1A9E19AAD40300C27E9E /* b2StackAllocator.h in Headers */, 1A570357180BD0B00088DEC7 /* ioapi.h in Headers */, + B6CAB3AE1AF9AA1A00B9B856 /* btContactSolverInfo.h in Headers */, 50ABBD4B1925AB0000A911A9 /* Mat4.h in Headers */, B665E3891AA80A6500DDB1C5 /* CCPUPathFollowerTranslator.h in Headers */, + B6CAB53E1AF9AA1A00B9B856 /* cl_MiniCL_Defs.h in Headers */, + B6CAB22A1AF9AA1A00B9B856 /* btCollisionDispatcher.h in Headers */, + B6CAB0011AF9A9E100B9B856 /* CCPhysicsSprite3D.h in Headers */, 15AE1BBE19AADFF000C27E9E /* SocketIO.h in Headers */, B665E3351AA80A6500DDB1C5 /* CCPUOnEmissionObserver.h in Headers */, B665E3811AA80A6500DDB1C5 /* CCPUParticleSystem3DTranslator.h in Headers */, + B6CAB4D21AF9AA1A00B9B856 /* SpuConvexPenetrationDepthSolver.h in Headers */, B665E2151AA80A6500DDB1C5 /* CCPUBaseForceAffectorTranslator.h in Headers */, 1A01C69B18F57BE800EFE3A6 /* CCSet.h in Headers */, B665E4051AA80A6600DDB1C5 /* CCPUSphereColliderTranslator.h in Headers */, 50ABBED61925AB6F00A911A9 /* utlist.h in Headers */, 1A57035B180BD0B00088DEC7 /* unzip.h in Headers */, + B6CAB44A1AF9AA1A00B9B856 /* btThreadSupportInterface.h in Headers */, + B6CAB3FA1AF9AA1A00B9B856 /* btMultiBody.h in Headers */, 15AE1BA619AADFDF00C27E9E /* UIHBox.h in Headers */, + B6CAB2881AF9AA1A00B9B856 /* btBvhTriangleMeshShape.h in Headers */, 15AE1A9519AAD40300C27E9E /* b2BlockAllocator.h in Headers */, 5034CA48191D591100CE6051 /* ccShader_Label_normal.frag in Headers */, + B6CAB30A1AF9AA1A00B9B856 /* btTriangleMesh.h in Headers */, + B6CAB4241AF9AA1A00B9B856 /* btMLCPSolverInterface.h in Headers */, + B6CAB4421AF9AA1A00B9B856 /* btGpuUtilsSharedDefs.h in Headers */, 15AE183F19AAD2F700C27E9E /* CCSkeleton3D.h in Headers */, 50ABBD531925AB0000A911A9 /* Quaternion.h in Headers */, 5012169D1AC473A3009A4BEA /* CCTechnique.h in Headers */, + B6CAB5281AF9AA1A00B9B856 /* btRandom.h in Headers */, 15AE19B119AAD39700C27E9E /* ScrollViewReader.h in Headers */, 503DD8E81926736A00CD74DD /* CCES2Renderer-ios.h in Headers */, B665E41D1AA80A6600DDB1C5 /* CCPUTextureRotator.h in Headers */, B665E34D1AA80A6500DDB1C5 /* CCPUOnPositionObserver.h in Headers */, + B6CAB4181AF9AA1A00B9B856 /* btMultiBodySolverConstraint.h in Headers */, + B6CAB3B21AF9AA1A00B9B856 /* btFixedConstraint.h in Headers */, 50ABBE6C1925AB6F00A911A9 /* CCEventListenerFocus.h in Headers */, 5034CA3E191D591100CE6051 /* ccShader_PositionColor.frag in Headers */, + B6CAB3761AF9AA1A00B9B856 /* btGjkEpa2.h in Headers */, 182C5CD91A98F30500C30D34 /* Sprite3DReader.h in Headers */, 50ABBE301925AB6F00A911A9 /* ccConfig.h in Headers */, 15AE195819AAD35100C27E9E /* CCInputDelegate.h in Headers */, + B6CAB3281AF9AA1A00B9B856 /* btGImpactBvh.h in Headers */, 50ABBDAC1925AB4100A911A9 /* CCRenderCommandPool.h in Headers */, + B6CAB24C1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.h in Headers */, B665E3CD1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.h in Headers */, + B6CAB4321AF9AA1A00B9B856 /* btWheelInfo.h in Headers */, B665E3711AA80A6500DDB1C5 /* CCPUOnVelocityObserverTranslator.h in Headers */, 5034CA3C191D591100CE6051 /* ccShader_PositionColor.vert in Headers */, B665E3F51AA80A6600DDB1C5 /* CCPUSlaveEmitter.h in Headers */, 50ABC0181926664800A911A9 /* CCImage.h in Headers */, B665E2B91AA80A6500DDB1C5 /* CCPUForceFieldAffector.h in Headers */, + B6CAB4221AF9AA1A00B9B856 /* btMLCPSolver.h in Headers */, 15AE1A4E19AAD3D500C27E9E /* b2PolygonShape.h in Headers */, + B6CAB3481AF9AA1A00B9B856 /* gim_box_set.h in Headers */, 382384471A25915C002C4610 /* SpriteReader.h in Headers */, 50ABBE8E1925AB6F00A911A9 /* CCNS.h in Headers */, B665E3051AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitter.h in Headers */, 15AE1AB519AAD40300C27E9E /* b2Contact.h in Headers */, B665E23D1AA80A6500DDB1C5 /* CCPUCircleEmitter.h in Headers */, 50ABBEA61925AB6F00A911A9 /* CCScriptSupport.h in Headers */, + B6CAB33C1AF9AA1A00B9B856 /* btTriangleShapeEx.h in Headers */, 46C02E0A18E91123004B7456 /* xxhash.h in Headers */, + B6CAB39E1AF9AA1A00B9B856 /* btCharacterControllerInterface.h in Headers */, 5034CA4C191D591100CE6051 /* ccShader_Label_df_glow.frag in Headers */, + B6CAB2441AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.h in Headers */, 503DD8EB1926736A00CD74DD /* CCGL-ios.h in Headers */, B665E4091AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitter.h in Headers */, + B6CAB2F01AF9AA1A00B9B856 /* btStridingMeshInterface.h in Headers */, 50ABBE3C1925AB6F00A911A9 /* CCData.h in Headers */, + B6CAB33E1AF9AA1A00B9B856 /* gim_array.h in Headers */, + B6CAB4AC1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.h in Headers */, + B6CAB2501AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.h in Headers */, 503DD8FA1926B0DB00CD74DD /* CCIMEDispatcher.h in Headers */, + B6CAB3921AF9AA1A00B9B856 /* btRaycastCallback.h in Headers */, + B6CAB3721AF9AA1A00B9B856 /* btGjkConvexCast.h in Headers */, + B6CAB4FA1AF9AA1A00B9B856 /* btAlignedObjectArray.h in Headers */, B29A7DE619EE1B7700872B35 /* SkeletonAnimation.h in Headers */, B665E3591AA80A6500DDB1C5 /* CCPUOnQuotaObserverTranslator.h in Headers */, 50ABBEC81925AB6F00A911A9 /* etc1.h in Headers */, + B6CAB3D81AF9AA1A00B9B856 /* btSolve2LinearConstraint.h in Headers */, 50ABBDB01925AB4100A911A9 /* CCRenderer.h in Headers */, + B6CAB3421AF9AA1A00B9B856 /* gim_bitset.h in Headers */, B29594B71926D5EC003EEF37 /* CCMeshCommand.h in Headers */, 3E6176771960F89B00DE83F5 /* CCEventListenerController.h in Headers */, 50ABBD861925AB4100A911A9 /* CCBatchCommand.h in Headers */, 15AE18CA19AAD33D00C27E9E /* CCMenuItemLoader.h in Headers */, + B6CAB28E1AF9AA1A00B9B856 /* btCollisionMargin.h in Headers */, 50ABBE481925AB6F00A911A9 /* CCEvent.h in Headers */, 5027253B190BF1B900AAF4ED /* cocos2d.h in Headers */, 15AE1A9719AAD40300C27E9E /* b2Draw.h in Headers */, 3E6176691960F89B00DE83F5 /* CCController.h in Headers */, + B6CAB43E1AF9AA1A00B9B856 /* btGpuDefines.h in Headers */, 3823841D1A2590D2002C4610 /* ComAudioReader.h in Headers */, 3E6176781960F89B00DE83F5 /* CCGameController.h in Headers */, + B6CAB4C81AF9AA1A00B9B856 /* boxBoxDistance.h in Headers */, 15AE19BB19AAD39700C27E9E /* TextReader.h in Headers */, 50ABBE641925AB6F00A911A9 /* CCEventListenerAcceleration.h in Headers */, 15AE180B19AAD2F700C27E9E /* CCAABB.h in Headers */, 50ABBD921925AB4100A911A9 /* CCGLProgramCache.h in Headers */, + B6CAB30E1AF9AA1A00B9B856 /* btTriangleMeshShape.h in Headers */, 50ABBE961925AB6F00A911A9 /* CCProfiling.h in Headers */, 15AE19B519AAD39700C27E9E /* TextAtlasReader.h in Headers */, 15AE18D619AAD33D00C27E9E /* CCScale9SpriteLoader.h in Headers */, 15AE182B19AAD2F700C27E9E /* CCMeshSkin.h in Headers */, B665E2251AA80A6500DDB1C5 /* CCPUBehaviourTranslator.h in Headers */, B665E3651AA80A6500DDB1C5 /* CCPUOnTimeObserver.h in Headers */, + B6CAB1E61AF9AA1A00B9B856 /* Bullet-C-Api.h in Headers */, 15AE1B7D19AADA9A00C27E9E /* UISlider.h in Headers */, 503DD8E01926736A00CD74DD /* CCApplication-ios.h in Headers */, + B6CAB4021AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.h in Headers */, B665E4111AA80A6600DDB1C5 /* CCPUTechniqueTranslator.h in Headers */, 15AE1B8319AADA9A00C27E9E /* UITextBMFont.h in Headers */, B29A7E2A19EE1B7700872B35 /* SkeletonData.h in Headers */, @@ -7937,6 +10218,7 @@ D0FD03601A3B51AA00825BB5 /* CCAllocatorStrategyPool.h in Headers */, 15AE198019AAD35700C27E9E /* CCTimeLine.h in Headers */, 38B8E2E419E671D2002D7CE7 /* UILayoutComponent.h in Headers */, + B6CAB2481AF9AA1A00B9B856 /* btConvexConvexAlgorithm.h in Headers */, B665E2CD1AA80A6500DDB1C5 /* CCPUGravityAffectorTranslator.h in Headers */, 50ABBD4F1925AB0000A911A9 /* MathUtil.h in Headers */, 1A01C69718F57BE800EFE3A6 /* CCInteger.h in Headers */, @@ -7944,6 +10226,7 @@ 15AE1C0619AAE01E00C27E9E /* CCTableViewCell.h in Headers */, B665E4251AA80A6600DDB1C5 /* CCPUTranslateManager.h in Headers */, 15AE19AB19AAD39700C27E9E /* ListViewReader.h in Headers */, + B6CAB4121AF9AA1A00B9B856 /* btMultiBodyLinkCollider.h in Headers */, 50ABBEBE1925AB6F00A911A9 /* ccUtils.h in Headers */, 15AE183719AAD2F700C27E9E /* CCObjLoader.h in Headers */, 15AE18CF19AAD33D00C27E9E /* CCNodeLoader.h in Headers */, @@ -7952,11 +10235,14 @@ 299CF1FE19A434BC00C378C1 /* ccRandom.h in Headers */, B665E3BD1AA80A6500DDB1C5 /* CCPURibbonTrailRender.h in Headers */, 50ABBDBC1925AB4100A911A9 /* CCTextureAtlas.h in Headers */, + B6CAAFE91AF9A9E100B9B856 /* CCPhysics3DComponent.h in Headers */, 15AE182319AAD2F700C27E9E /* CCBundleReader.h in Headers */, 182C5CB51A95964F00C30D34 /* Node3DReader.h in Headers */, 50ABBE541925AB6F00A911A9 /* CCEventDispatcher.h in Headers */, 1A12775A18DFCC4F0005F345 /* CCTweenFunction.h in Headers */, 15AE192819AAD35100C27E9E /* TriggerBase.h in Headers */, + B6CAB2401AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.h in Headers */, + B6CAB3441AF9AA1A00B9B856 /* gim_box_collision.h in Headers */, B665E3F11AA80A6600DDB1C5 /* CCPUSlaveBehaviourTranslator.h in Headers */, 15AE1BF419AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.h in Headers */, 15AE1AD119AAD40300C27E9E /* b2RevoluteJoint.h in Headers */, @@ -7967,25 +10253,38 @@ B276EF601988D1D500CD400F /* CCVertexIndexData.h in Headers */, 50ABBD5F1925AB0000A911A9 /* Vec3.h in Headers */, 50ABBE821925AB6F00A911A9 /* CCEventType.h in Headers */, + B6CAB4101AF9AA1A00B9B856 /* btMultiBodyLink.h in Headers */, + B6CAB36A1AF9AA1A00B9B856 /* btConvexCast.h in Headers */, 15AE194C19AAD35100C27E9E /* CCComRender.h in Headers */, B665E2C11AA80A6500DDB1C5 /* CCPUGeometryRotator.h in Headers */, 1AAF5852180E40B9000584C8 /* LocalStorage.h in Headers */, 50CB247619D9C5A100687767 /* AudioCache.h in Headers */, + B6CAB2C61AF9AA1A00B9B856 /* btHeightfieldTerrainShape.h in Headers */, B29A7DDA19EE1B7700872B35 /* SkeletonRenderer.h in Headers */, 15AE194119AAD35100C27E9E /* CCBone.h in Headers */, D0FD035A1A3B51AA00825BB5 /* CCAllocatorStrategyDefault.h in Headers */, 50ABBD471925AB0000A911A9 /* CCVertex.h in Headers */, + B6CAB4D81AF9AA1A00B9B856 /* SpuLocalSupport.h in Headers */, + B6CAB2921AF9AA1A00B9B856 /* btCollisionShape.h in Headers */, + B6CAB2681AF9AA1A00B9B856 /* btSimulationIslandManager.h in Headers */, B665E3251AA80A6500DDB1C5 /* CCPUOnCollisionObserver.h in Headers */, + B6CAB3181AF9AA1A00B9B856 /* btClipPolygon.h in Headers */, + B6CAB3001AF9AA1A00B9B856 /* btTriangleIndexVertexArray.h in Headers */, + B6CAB3881AF9AA1A00B9B856 /* btPersistentManifold.h in Headers */, B68779031A8CA82E00643ABF /* CCParticle3DRender.h in Headers */, 15AE195A19AAD35100C27E9E /* CCProcessBase.h in Headers */, 15AE193D19AAD35100C27E9E /* CCArmatureDefine.h in Headers */, + B6CAB37A1AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.h in Headers */, + B6CAB21A1AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.h in Headers */, 382384041A259005002C4610 /* CSParseBinary_generated.h in Headers */, + B6CAB5401AF9AA1A00B9B856 /* cl_platform.h in Headers */, 15AE1A4219AAD3D500C27E9E /* b2Distance.h in Headers */, 15AE195419AAD35100C27E9E /* CCDisplayFactory.h in Headers */, 1A9DCA2A180E6955007A3AD4 /* CCGLBufferedNode.h in Headers */, 1A01C69F18F57BE800EFE3A6 /* CCString.h in Headers */, 464AD6E8197EBB1400E502D8 /* pvr.h in Headers */, 15AE1AC119AAD40300C27E9E /* b2MotorJoint.h in Headers */, + B6CAB40A1AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.h in Headers */, 15AE194819AAD35100C27E9E /* CCComAudio.h in Headers */, 1A01C69118F57BE800EFE3A6 /* CCDictionary.h in Headers */, B665E3211AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.h in Headers */, @@ -7993,12 +10292,21 @@ B24AA98C195A675C007B4522 /* CCFastTMXTiledMap.h in Headers */, B29A7DEC19EE1B7700872B35 /* MeshAttachment.h in Headers */, 50ABBEAE1925AB6F00A911A9 /* ccTypes.h in Headers */, + B6CAB50C1AF9AA1A00B9B856 /* btHashMap.h in Headers */, 15AE185819AAD31200C27E9E /* CDAudioManager.h in Headers */, + B6CAB3841AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.h in Headers */, B665E38D1AA80A6500DDB1C5 /* CCPUPlane.h in Headers */, + B6CAB3501AF9AA1A00B9B856 /* gim_geom_types.h in Headers */, + B6CAB3941AF9AA1A00B9B856 /* btSimplexSolverInterface.h in Headers */, 15AE1BF819AAE01E00C27E9E /* CCControlStepper.h in Headers */, 50ABBE261925AB6F00A911A9 /* base64.h in Headers */, + B6CAB4E81AF9AA1A00B9B856 /* SpuSync.h in Headers */, + B6CAB2381AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.h in Headers */, 15AE1C1619AAE2C700C27E9E /* CCPhysicsDebugNode.h in Headers */, 15AE1BF619AAE01E00C27E9E /* CCControlSlider.h in Headers */, + B6CAB27C1AF9AA1A00B9B856 /* SphereTriangleDetector.h in Headers */, + B6CAB3D41AF9AA1A00B9B856 /* btSliderConstraint.h in Headers */, + B6CAB4381AF9AA1A00B9B856 /* btGpu3DGridBroadphaseSharedCode.h in Headers */, B665E2091AA80A6500DDB1C5 /* CCPUBaseCollider.h in Headers */, 1A01C68718F57BE800EFE3A6 /* CCArray.h in Headers */, B665E3DD1AA80A6600DDB1C5 /* CCPUScriptTranslator.h in Headers */, @@ -8014,14 +10322,23 @@ B665E2511AA80A6500DDB1C5 /* CCPUColorAffectorTranslator.h in Headers */, B29A7E1019EE1B7700872B35 /* SkeletonJson.h in Headers */, 15AE184B19AAD30500C27E9E /* Export.h in Headers */, + B6CAB2D01AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.h in Headers */, + B6CAB3541AF9AA1A00B9B856 /* gim_hash_table.h in Headers */, + B6CAB2961AF9AA1A00B9B856 /* btCompoundShape.h in Headers */, 15AE196019AAD35100C27E9E /* CCSpriteFrameCacheHelper.h in Headers */, 50ABBE221925AB6F00A911A9 /* atitc.h in Headers */, B665E3E11AA80A6600DDB1C5 /* CCPUSimpleSpline.h in Headers */, + B6CAB3C81AF9AA1A00B9B856 /* btJacobianEntry.h in Headers */, 15AE1AB719AAD40300C27E9E /* b2ContactSolver.h in Headers */, B665E3451AA80A6500DDB1C5 /* CCPUOnExpireObserver.h in Headers */, 15AE193319AAD35100C27E9E /* CCActionNode.h in Headers */, + B6CAB1F01AF9AA1A00B9B856 /* btBroadphaseProxy.h in Headers */, + B6CAAFF51AF9A9E100B9B856 /* CCPhysics3DObject.h in Headers */, + B6CAB35E1AF9AA1A00B9B856 /* gim_radixsort.h in Headers */, 50ABBED21925AB6F00A911A9 /* TGAlib.h in Headers */, B665E2951AA80A6500DDB1C5 /* CCPUEmitter.h in Headers */, + B6CAB3BE1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.h in Headers */, + B6CAB3521AF9AA1A00B9B856 /* gim_geometry.h in Headers */, 15AE1BED19AAE01E00C27E9E /* CCControlColourPicker.h in Headers */, 15AE195019AAD35100C27E9E /* CCDatas.h in Headers */, 15AE18B319AAD33D00C27E9E /* CCBReader.h in Headers */, @@ -8037,6 +10354,7 @@ 1A01C68D18F57BE800EFE3A6 /* CCDeprecated.h in Headers */, B665E2E91AA80A6500DDB1C5 /* CCPULinearForceAffector.h in Headers */, 382384321A259112002C4610 /* ParticleReader.h in Headers */, + B6CAB52E1AF9AA1A00B9B856 /* btSerializer.h in Headers */, B665E28D1AA80A6500DDB1C5 /* CCPUDynamicAttribute.h in Headers */, B29A7E3619EE1B7700872B35 /* AnimationStateData.h in Headers */, 503DD8EA1926736A00CD74DD /* CCESRenderer-ios.h in Headers */, @@ -8045,6 +10363,7 @@ 15AE196419AAD35100C27E9E /* CCTransformHelp.h in Headers */, 15AE1AAF19AAD40300C27E9E /* b2ChainAndCircleContact.h in Headers */, B665E2991AA80A6500DDB1C5 /* CCPUEmitterManager.h in Headers */, + B6CAB34E1AF9AA1A00B9B856 /* gim_contact.h in Headers */, 15AE1B9719AADAA100C27E9E /* UIVideoPlayer.h in Headers */, 15AE18BE19AAD33D00C27E9E /* CCLabelBMFontLoader.h in Headers */, 50ABC00A1926664800A911A9 /* CCCommon.h in Headers */, @@ -8052,15 +10371,20 @@ 15FB209E1AE7C57D00C31518 /* sweep_context.h in Headers */, 50ABBE5C1925AB6F00A911A9 /* CCEventKeyboard.h in Headers */, B665E2191AA80A6500DDB1C5 /* CCPUBeamRender.h in Headers */, + B6CAB3F41AF9AA1A00B9B856 /* btSimpleDynamicsWorld.h in Headers */, 5E9F612D1A3FFE3D0038DE01 /* CCPlane.h in Headers */, B665E3391AA80A6500DDB1C5 /* CCPUOnEmissionObserverTranslator.h in Headers */, B665E4151AA80A6600DDB1C5 /* CCPUTextureAnimator.h in Headers */, 50ABC01C1926664800A911A9 /* CCSAXParser.h in Headers */, + B6CAB4EA1AF9AA1A00B9B856 /* TrbDynBody.h in Headers */, 503DD8F11926736A00CD74DD /* OpenGL_Internal-ios.h in Headers */, + B6CAB3EC1AF9AA1A00B9B856 /* btDynamicsWorld.h in Headers */, 38ACD1FF1A27111900C3093D /* WidgetCallBackHandlerProtocol.h in Headers */, B29A7DF619EE1B7700872B35 /* Skeleton.h in Headers */, + B6CAB3E01AF9AA1A00B9B856 /* btTypedConstraint.h in Headers */, 50ABBDAA1925AB4100A911A9 /* CCRenderCommand.h in Headers */, B29A7DF019EE1B7700872B35 /* SkeletonBounds.h in Headers */, + B6CAB3361AF9AA1A00B9B856 /* btGImpactShape.h in Headers */, 15AE1BE919AAE01E00C27E9E /* CCControl.h in Headers */, 15AE193719AAD35100C27E9E /* CCArmature.h in Headers */, B63990CF1A490AFE00B07923 /* CCAsyncTaskPool.h in Headers */, @@ -8070,8 +10394,11 @@ B665E2291AA80A6500DDB1C5 /* CCPUBillboardChain.h in Headers */, 50ABBE601925AB6F00A911A9 /* CCEventListener.h in Headers */, 4D76BE3D1A4AAF0A00102962 /* CCActionTimelineNode.h in Headers */, + B6CAB2CC1AF9AA1A00B9B856 /* btMinkowskiSumShape.h in Headers */, + B6CAB3561AF9AA1A00B9B856 /* gim_linear_math.h in Headers */, 50ABBEB21925AB6F00A911A9 /* CCUserDefault.h in Headers */, 15AE198B19AAD36A00C27E9E /* ButtonReader.h in Headers */, + B6CAB2FC1AF9AA1A00B9B856 /* btTriangleCallback.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8147,6 +10474,7 @@ 15AE1A9019AAD40300C27E9E /* b2WeldJoint.cpp in Sources */, 50ABBE2B1925AB6F00A911A9 /* ccCArray.cpp in Sources */, 382383F41A258FA7002C4610 /* idl_gen_cpp.cpp in Sources */, + B6CAAFEA1AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp in Sources */, B29A7E3B19EE1B7700872B35 /* Animation.c in Sources */, 15AE1BDE19AAE01E00C27E9E /* CCInvocation.cpp in Sources */, B665E2F21AA80A6500DDB1C5 /* CCPULineEmitterTranslator.cpp in Sources */, @@ -8154,15 +10482,18 @@ B29A7E0B19EE1B7700872B35 /* Atlas.c in Sources */, 15AE199419AAD39600C27E9E /* LayoutReader.cpp in Sources */, 1A01C68A18F57BE800EFE3A6 /* CCDeprecated.cpp in Sources */, + B6CAB2F51AF9AA1A00B9B856 /* btTriangleBuffer.cpp in Sources */, 1A1645B0191B726C008C7C7F /* ConvertUTF.c in Sources */, 15AE1BE219AAE01E00C27E9E /* CCScrollView.cpp in Sources */, 50ABBD581925AB0000A911A9 /* Vec2.cpp in Sources */, 15AE18E119AAD35000C27E9E /* TriggerMng.cpp in Sources */, + B6CAB2811AF9AA1A00B9B856 /* btBoxShape.cpp in Sources */, 50ABBE311925AB6F00A911A9 /* CCConfiguration.cpp in Sources */, B665E3821AA80A6500DDB1C5 /* CCPUPathFollower.cpp in Sources */, 1A01C6A418F58F7500EFE3A6 /* CCNotificationCenter.cpp in Sources */, 15AE1A5D19AAD40300C27E9E /* b2Body.cpp in Sources */, 15AE1BDA19AAE01E00C27E9E /* CCControlSwitch.cpp in Sources */, + B6CAB3B71AF9AA1A00B9B856 /* btGeneric6DofConstraint.cpp in Sources */, 46A170EA1807CECA005B8026 /* CCPhysicsJoint.cpp in Sources */, 15AE18DC19AAD35000C27E9E /* CocoLoader.cpp in Sources */, 15AE1B4D19AADA9900C27E9E /* UIListView.cpp in Sources */, @@ -8176,6 +10507,7 @@ 15AE198219AAD36400C27E9E /* WidgetReader.cpp in Sources */, B665E3EA1AA80A6600DDB1C5 /* CCPUSlaveBehaviour.cpp in Sources */, 46A170EF1807CECA005B8026 /* CCPhysicsWorld.cpp in Sources */, + B6CAB3BB1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.cpp in Sources */, 15AE18E419AAD35000C27E9E /* CCActionFrame.cpp in Sources */, B665E21A1AA80A6500DDB1C5 /* CCPUBehaviour.cpp in Sources */, B665E29E1AA80A6500DDB1C5 /* CCPUEventHandler.cpp in Sources */, @@ -8184,31 +10516,43 @@ B665E1FA1AA80A6500DDB1C5 /* CCPUAffectorTranslator.cpp in Sources */, 50ABBE991925AB6F00A911A9 /* CCRef.cpp in Sources */, 15AE186319AAD31D00C27E9E /* CDAudioManager.m in Sources */, + B6CAB2411AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.cpp in Sources */, ED9C6A9418599AD8000A5232 /* CCNodeGrid.cpp in Sources */, 15AE1A2C19AAD3D500C27E9E /* b2DynamicTree.cpp in Sources */, B665E36A1AA80A6500DDB1C5 /* CCPUOnVelocityObserver.cpp in Sources */, B665E3961AA80A6500DDB1C5 /* CCPUPointEmitter.cpp in Sources */, 15AE184019AAD2F700C27E9E /* CCSprite3D.cpp in Sources */, + B6CAB2E51AF9AA1A00B9B856 /* btSphereShape.cpp in Sources */, + B6CAB41F1AF9AA1A00B9B856 /* btMLCPSolver.cpp in Sources */, 46A170E61807CECA005B8026 /* CCPhysicsBody.cpp in Sources */, B665E40A1AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitterTranslator.cpp in Sources */, 50ABBDA71925AB4100A911A9 /* CCRenderCommand.cpp in Sources */, B665E35E1AA80A6500DDB1C5 /* CCPUOnRandomObserverTranslator.cpp in Sources */, + B6CAB2931AF9AA1A00B9B856 /* btCompoundShape.cpp in Sources */, + B6CAB3A31AF9AA1A00B9B856 /* btConeTwistConstraint.cpp in Sources */, B665E24E1AA80A6500DDB1C5 /* CCPUColorAffectorTranslator.cpp in Sources */, + B6CAB1E71AF9AA1A00B9B856 /* btAxisSweep3.cpp in Sources */, + B6CAB2D91AF9AA1A00B9B856 /* btPolyhedralConvexShape.cpp in Sources */, B6D38B8E1AC3AFAC00043997 /* CCTextureCube.cpp in Sources */, 15AE1B9B19AADFDF00C27E9E /* UIRelativeBox.cpp in Sources */, B665E3E21AA80A6600DDB1C5 /* CCPUSineForceAffector.cpp in Sources */, 50ABBD501925AB0000A911A9 /* Quaternion.cpp in Sources */, + B6CAB2751AF9AA1A00B9B856 /* btUnionFind.cpp in Sources */, B665E36E1AA80A6500DDB1C5 /* CCPUOnVelocityObserverTranslator.cpp in Sources */, 15AE190119AAD35000C27E9E /* CCComController.cpp in Sources */, + B6CAB4071AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.cpp in Sources */, + B6CAB38F1AF9AA1A00B9B856 /* btRaycastCallback.cpp in Sources */, 15AE1BE619AAE01E00C27E9E /* CCTableViewCell.cpp in Sources */, 50ABBEBB1925AB6F00A911A9 /* ccUtils.cpp in Sources */, 15AE186A19AAD31D00C27E9E /* CocosDenshion.m in Sources */, + B6CAB3F71AF9AA1A00B9B856 /* btMultiBody.cpp in Sources */, B665E3C21AA80A6600DDB1C5 /* CCPUScaleAffectorTranslator.cpp in Sources */, B665E34A1AA80A6500DDB1C5 /* CCPUOnPositionObserver.cpp in Sources */, 15AE198C19AAD36E00C27E9E /* CheckBoxReader.cpp in Sources */, B665E4261AA80A6600DDB1C5 /* CCPUUtil.cpp in Sources */, 15AE1B6319AADA9900C27E9E /* UICheckBox.cpp in Sources */, 15EFA211198A2BB5000C57D3 /* CCProtectedNode.cpp in Sources */, + B6CAB3771AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.cpp in Sources */, 15FB208F1AE7C57D00C31518 /* advancing_front.cc in Sources */, 50ABBEB71925AB6F00A911A9 /* ccUTF8.cpp in Sources */, B665E2621AA80A6500DDB1C5 /* CCPUDoExpireEventHandler.cpp in Sources */, @@ -8226,25 +10570,34 @@ B665E3061AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitterTranslator.cpp in Sources */, 15AE1A3019AAD3D500C27E9E /* b2ChainShape.cpp in Sources */, 50ABBE8B1925AB6F00A911A9 /* CCNS.cpp in Sources */, + B6CAB2651AF9AA1A00B9B856 /* btSimulationIslandManager.cpp in Sources */, 15AE1BD819AAE01E00C27E9E /* CCControlStepper.cpp in Sources */, + B6CAB3851AF9AA1A00B9B856 /* btPersistentManifold.cpp in Sources */, 46A170E81807CECA005B8026 /* CCPhysicsContact.cpp in Sources */, 1A570061180BC5A10088DEC7 /* CCAction.cpp in Sources */, + B6CAB4431AF9AA1A00B9B856 /* btParallelConstraintSolver.cpp in Sources */, 15AE1BDC19AAE01E00C27E9E /* CCControlUtils.cpp in Sources */, B29A7DE919EE1B7700872B35 /* EventData.c in Sources */, 50ABBEC51925AB6F00A911A9 /* etc1.cpp in Sources */, 50643BDE19BFCCA400EF68ED /* LocalStorage-android.cpp in Sources */, 15AE1B5B19AADA9900C27E9E /* UITextAtlas.cpp in Sources */, + B6CAB2F11AF9AA1A00B9B856 /* btTetrahedronShape.cpp in Sources */, B603F1A81AC8EA0900A9579C /* CCTerrain.cpp in Sources */, + B6CAB2691AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.cpp in Sources */, 1A570065180BC5A10088DEC7 /* CCActionCamera.cpp in Sources */, + B6CAAFF21AF9A9E100B9B856 /* CCPhysics3DObject.cpp in Sources */, + B6CAB23D1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.cpp in Sources */, 50ABBEAB1925AB6F00A911A9 /* ccTypes.cpp in Sources */, B665E3AE1AA80A6500DDB1C5 /* CCPURender.cpp in Sources */, 15AE18A219AAD33D00C27E9E /* CCParticleSystemQuadLoader.cpp in Sources */, 15AE188C19AAD33D00C27E9E /* CCLabelBMFontLoader.cpp in Sources */, + B6CAAFE21AF9A9E100B9B856 /* CCPhysics3D.cpp in Sources */, DA8C62A219E52C6400000516 /* ioapi_mem.cpp in Sources */, B68779001A8CA82E00643ABF /* CCParticle3DRender.cpp in Sources */, 1A570069180BC5A10088DEC7 /* CCActionCatmullRom.cpp in Sources */, B257B44E1989D5E800D9A687 /* CCPrimitive.cpp in Sources */, 299CF1FB19A434BC00C378C1 /* ccRandom.cpp in Sources */, + B6CAB4D91AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp in Sources */, B665E3CE1AA80A6600DDB1C5 /* CCPUScriptCompiler.cpp in Sources */, 15AE18E819AAD35000C27E9E /* CCActionManagerEx.cpp in Sources */, B29A7DDB19EE1B7700872B35 /* Event.c in Sources */, @@ -8253,8 +10606,10 @@ 1A57006D180BC5A10088DEC7 /* CCActionEase.cpp in Sources */, 15AE1A5019AAD40300C27E9E /* b2BlockAllocator.cpp in Sources */, B665E20E1AA80A6500DDB1C5 /* CCPUBaseForceAffector.cpp in Sources */, + B6CAB25D1AF9AA1A00B9B856 /* btInternalEdgeUtility.cpp in Sources */, 15AE1A8219AAD40300C27E9E /* b2GearJoint.cpp in Sources */, 1A570071180BC5A10088DEC7 /* CCActionGrid.cpp in Sources */, + B6CAB2F91AF9AA1A00B9B856 /* btTriangleCallback.cpp in Sources */, 50CB247F19D9C5A100687767 /* AudioPlayer.mm in Sources */, 50ABBFFF1926664800A911A9 /* CCFileUtils-apple.mm in Sources */, 1A570075180BC5A10088DEC7 /* CCActionGrid3D.cpp in Sources */, @@ -8263,6 +10618,7 @@ 382384131A259092002C4610 /* NodeReaderProtocol.cpp in Sources */, B665E2C21AA80A6500DDB1C5 /* CCPUGeometryRotatorTranslator.cpp in Sources */, 15AE1A5F19AAD40300C27E9E /* b2ContactManager.cpp in Sources */, + B6CAB2451AF9AA1A00B9B856 /* btConvexConvexAlgorithm.cpp in Sources */, 15AE1B9D19AADFDF00C27E9E /* UIVBox.cpp in Sources */, B665E2B61AA80A6500DDB1C5 /* CCPUForceFieldAffector.cpp in Sources */, 1A570079180BC5A10088DEC7 /* CCActionInstant.cpp in Sources */, @@ -8280,7 +10636,9 @@ 1A570081180BC5A10088DEC7 /* CCActionManager.cpp in Sources */, 15AE1A6119AAD40300C27E9E /* b2Fixture.cpp in Sources */, 1A570085180BC5A10088DEC7 /* CCActionPageTurn3D.cpp in Sources */, + B6CAB2B71AF9AA1A00B9B856 /* btConvexTriangleMeshShape.cpp in Sources */, 382384441A25915C002C4610 /* SpriteReader.cpp in Sources */, + B6CAB3291AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.cpp in Sources */, 1A570089180BC5A10088DEC7 /* CCActionProgressTimer.cpp in Sources */, B665E3A61AA80A6500DDB1C5 /* CCPURandomiser.cpp in Sources */, B665E3CA1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.cpp in Sources */, @@ -8290,9 +10648,12 @@ B665E2961AA80A6500DDB1C5 /* CCPUEmitterManager.cpp in Sources */, 1A570091180BC5A10088DEC7 /* CCActionTween.cpp in Sources */, 15AE188419AAD33D00C27E9E /* CCBSequence.cpp in Sources */, + B6CAB2171AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp in Sources */, 50ABBEBF1925AB6F00A911A9 /* CCValue.cpp in Sources */, 1A570098180BC5C10088DEC7 /* CCAtlasNode.cpp in Sources */, 1A57009E180BC5D20088DEC7 /* CCNode.cpp in Sources */, + B6CAB3CD1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.cpp in Sources */, + B6CAB5191AF9AA1A00B9B856 /* btPolarDecomposition.cpp in Sources */, 50ED2BD919BE5D5D00A0AB90 /* CCEventListenerController.cpp in Sources */, B665E2321AA80A6500DDB1C5 /* CCPUBoxEmitter.cpp in Sources */, B257B460198A353E00D9A687 /* CCPrimitiveCommand.cpp in Sources */, @@ -8300,27 +10661,39 @@ 50ED2BDB19BE76D500A0AB90 /* UIVideoPlayer-ios.mm in Sources */, B665E32A1AA80A6500DDB1C5 /* CCPUOnCountObserver.cpp in Sources */, 15AE1B5F19AADA9900C27E9E /* UITextField.cpp in Sources */, + B6CAB29B1AF9AA1A00B9B856 /* btConeShape.cpp in Sources */, 15AE187C19AAD33D00C27E9E /* CCBFileLoader.cpp in Sources */, + B6CAB3B31AF9AA1A00B9B856 /* btGearConstraint.cpp in Sources */, + B6CAB4031AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.cpp in Sources */, B665E3F21AA80A6600DDB1C5 /* CCPUSlaveEmitter.cpp in Sources */, 50ABBE651925AB6F00A911A9 /* CCEventListenerCustom.cpp in Sources */, D0FD034B1A3B51AA00825BB5 /* CCAllocatorDiagnostics.cpp in Sources */, + B6CAB3E11AF9AA1A00B9B856 /* btUniversalConstraint.cpp in Sources */, 15AE189B19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.cpp in Sources */, 15AE183819AAD2F700C27E9E /* CCRay.cpp in Sources */, 50ABBE391925AB6F00A911A9 /* CCData.cpp in Sources */, 1A57010E180BC8EE0088DEC7 /* CCDrawingPrimitives.cpp in Sources */, + B6CAB3D11AF9AA1A00B9B856 /* btSliderConstraint.cpp in Sources */, 50ABBED71925AB6F00A911A9 /* ZipUtils.cpp in Sources */, B665E3B61AA80A6500DDB1C5 /* CCPURibbonTrail.cpp in Sources */, + B6CAAFF61AF9A9E100B9B856 /* CCPhysics3DShape.cpp in Sources */, + B6CAB3071AF9AA1A00B9B856 /* btTriangleMesh.cpp in Sources */, B29A7E1319EE1B7700872B35 /* Bone.c in Sources */, B665E1F61AA80A6500DDB1C5 /* CCPUAffectorManager.cpp in Sources */, 292DB14919B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */, + B6CAB2511AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.cpp in Sources */, 15AE181019AAD2F700C27E9E /* CCAnimation3D.cpp in Sources */, 1A01C68418F57BE800EFE3A6 /* CCArray.cpp in Sources */, 1A570112180BC8EE0088DEC7 /* CCDrawNode.cpp in Sources */, + B6CAB4B11AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */, 15AE186D19AAD31D00C27E9E /* SimpleAudioEngine_objc.m in Sources */, + B6CAB2D11AF9AA1A00B9B856 /* btMultiSphereShape.cpp in Sources */, 1A57011B180BC90D0088DEC7 /* CCGrabber.cpp in Sources */, + B6CAB3951AF9AA1A00B9B856 /* btSubSimplexConvexCast.cpp in Sources */, B29A7E3719EE1B7700872B35 /* AnimationStateData.c in Sources */, 15AE182419AAD2F700C27E9E /* CCMesh.cpp in Sources */, 15AE190D19AAD35000C27E9E /* CCDisplayManager.cpp in Sources */, + B6CAB2271AF9AA1A00B9B856 /* btCollisionDispatcher.cpp in Sources */, 382383FA1A258FA7002C4610 /* idl_gen_go.cpp in Sources */, 382383FE1A258FA7002C4610 /* idl_parser.cpp in Sources */, 1A57011F180BC90D0088DEC7 /* CCGrid.cpp in Sources */, @@ -8334,17 +10707,21 @@ 38B8E2E119E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */, B665E3F61AA80A6600DDB1C5 /* CCPUSlaveEmitterTranslator.cpp in Sources */, 1A57019D180BCB590088DEC7 /* CCFont.cpp in Sources */, + B6CAB2D51AF9AA1A00B9B856 /* btOptimizedBvh.cpp in Sources */, 50CB247B19D9C5A100687767 /* AudioEngine-inl.mm in Sources */, 1A5701A1180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */, B29A7DFF19EE1B7700872B35 /* Json.c in Sources */, + B6CAB3111AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */, 15AE1A8619AAD40300C27E9E /* b2MouseJoint.cpp in Sources */, 1A5701A5180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */, 15AE1A7A19AAD40300C27E9E /* b2PolygonContact.cpp in Sources */, 3823842F1A259112002C4610 /* ParticleReader.cpp in Sources */, 15AE191119AAD35000C27E9E /* CCProcessBase.cpp in Sources */, + B6CAB2B31AF9AA1A00B9B856 /* btConvexShape.cpp in Sources */, 15AE18EE19AAD35000C27E9E /* CCArmature.cpp in Sources */, 15AE1BCD19AAE01E00C27E9E /* CCControlColourPicker.cpp in Sources */, 1A5701B1180BCB590088DEC7 /* CCFontFNT.cpp in Sources */, + B6CAB4A51AF9AA1A00B9B856 /* SequentialThreadSupport.cpp in Sources */, 15AE181619AAD2F700C27E9E /* CCAttachNode.cpp in Sources */, B29A7DED19EE1B7700872B35 /* IkConstraint.c in Sources */, 18956BB21A9DFBFD006E9155 /* Particle3DReader.cpp in Sources */, @@ -8356,6 +10733,9 @@ B665E3121AA80A6500DDB1C5 /* CCPUObserverManager.cpp in Sources */, 292DB13D19B4574100A80320 /* UIEditBox.cpp in Sources */, 50ABBE551925AB6F00A911A9 /* CCEventFocus.cpp in Sources */, + B6CAB4C51AF9AA1A00B9B856 /* boxBoxDistance.cpp in Sources */, + B6CAB29F1AF9AA1A00B9B856 /* btConvex2dShape.cpp in Sources */, + B6CAB4331AF9AA1A00B9B856 /* btGpu3DGridBroadphase.cpp in Sources */, 15AE1A8819AAD40300C27E9E /* b2PrismaticJoint.cpp in Sources */, 182C5CB21A95964700C30D34 /* Node3DReader.cpp in Sources */, 50ABBE491925AB6F00A911A9 /* CCEventAcceleration.cpp in Sources */, @@ -8365,30 +10745,45 @@ B665E30A1AA80A6500DDB1C5 /* CCPUNoise.cpp in Sources */, 15AE182C19AAD2F700C27E9E /* CCMeshVertexIndexData.cpp in Sources */, 15AE1A8C19AAD40300C27E9E /* b2RevoluteJoint.cpp in Sources */, + B6CAB3AF1AF9AA1A00B9B856 /* btFixedConstraint.cpp in Sources */, + B6CAB5231AF9AA1A00B9B856 /* btQuickprof.cpp in Sources */, 50ABBD4C1925AB0000A911A9 /* MathUtil.cpp in Sources */, + B6CAB40B1AF9AA1A00B9B856 /* btMultiBodyJointMotor.cpp in Sources */, + B6CAB3D51AF9AA1A00B9B856 /* btSolve2LinearConstraint.cpp in Sources */, + B6CAB2591AF9AA1A00B9B856 /* btHashedSimplePairCache.cpp in Sources */, 382F7ADC1AB1292A002EBECF /* CCObjectExtensionData.cpp in Sources */, 15AE191719AAD35000C27E9E /* CCSpriteFrameCacheHelper.cpp in Sources */, B665E2E21AA80A6500DDB1C5 /* CCPULineAffectorTranslator.cpp in Sources */, + B6CAB2A31AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */, 1A087AE81860400400196EF5 /* edtaa3func.cpp in Sources */, 50ABBD831925AB4100A911A9 /* CCBatchCommand.cpp in Sources */, B665E31E1AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.cpp in Sources */, B665E2FE1AA80A6500DDB1C5 /* CCPUMaterialTranslator.cpp in Sources */, + B6CAB27D1AF9AA1A00B9B856 /* btBox2dShape.cpp in Sources */, 15AE18FF19AAD35000C27E9E /* CCComAudio.cpp in Sources */, 1A5701C7180BCB5A0088DEC7 /* CCLabelTextFormatter.cpp in Sources */, + B6CAB20F1AF9AA1A00B9B856 /* btSimpleBroadphase.cpp in Sources */, B665E2C61AA80A6500DDB1C5 /* CCPUGravityAffector.cpp in Sources */, B665E3761AA80A6500DDB1C5 /* CCPUParticleFollowerTranslator.cpp in Sources */, 15AE18A819AAD33D00C27E9E /* CCSpriteLoader.cpp in Sources */, + B6CAB2E91AF9AA1A00B9B856 /* btStaticPlaneShape.cpp in Sources */, 1A5701CB180BCB5A0088DEC7 /* CCLabelTTF.cpp in Sources */, 50ABBE711925AB6F00A911A9 /* CCEventListenerMouse.cpp in Sources */, + B6CAB3C91AF9AA1A00B9B856 /* btPoint2PointConstraint.cpp in Sources */, 1A5701DE180BCB8C0088DEC7 /* CCLayer.cpp in Sources */, 15AE1B5919AADA9900C27E9E /* UIText.cpp in Sources */, 15B3707C19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */, 3EACC9A419F5014D00EB3C5E /* CCLight.cpp in Sources */, + B6CAB4C91AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */, + B6CAB38B1AF9AA1A00B9B856 /* btPolyhedralContactClipping.cpp in Sources */, B665E42E1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffectorTranslator.cpp in Sources */, 1A5701E2180BCB8C0088DEC7 /* CCScene.cpp in Sources */, + B6CAB5351AF9AA1A00B9B856 /* btVector3.cpp in Sources */, 15AE1B9919AADFDF00C27E9E /* UIHBox.cpp in Sources */, 15AE199C19AAD39600C27E9E /* ScrollViewReader.cpp in Sources */, + B6CAB2AB1AF9AA1A00B9B856 /* btConvexPointCloudShape.cpp in Sources */, B29A7E0519EE1B7700872B35 /* extension.c in Sources */, + B6CAB30B1AF9AA1A00B9B856 /* btTriangleMeshShape.cpp in Sources */, 15AE187E19AAD33D00C27E9E /* CCBKeyframe.cpp in Sources */, 1A12775C18DFCC590005F345 /* CCTweenFunction.cpp in Sources */, 1A5701E6180BCB8C0088DEC7 /* CCTransition.cpp in Sources */, @@ -8397,6 +10792,7 @@ 15AE1A6A19AAD40300C27E9E /* b2ChainAndCircleContact.cpp in Sources */, B665E38A1AA80A6500DDB1C5 /* CCPUPlane.cpp in Sources */, B665E2161AA80A6500DDB1C5 /* CCPUBeamRender.cpp in Sources */, + B6CAB4B71AF9AA1A00B9B856 /* SpuFakeDma.cpp in Sources */, B665E3361AA80A6500DDB1C5 /* CCPUOnEmissionObserverTranslator.cpp in Sources */, 15B3708819EE414C00ABE682 /* Manifest.cpp in Sources */, B665E27E1AA80A6500DDB1C5 /* CCPUDoScaleEventHandlerTranslator.cpp in Sources */, @@ -8408,6 +10804,7 @@ B665E2CE1AA80A6500DDB1C5 /* CCPUInterParticleCollider.cpp in Sources */, 50ABBDAD1925AB4100A911A9 /* CCRenderer.cpp in Sources */, 15AE199019AAD37200C27E9E /* ImageViewReader.cpp in Sources */, + B6CAB3DD1AF9AA1A00B9B856 /* btTypedConstraint.cpp in Sources */, B665E28A1AA80A6500DDB1C5 /* CCPUDynamicAttribute.cpp in Sources */, B665E2A21AA80A6500DDB1C5 /* CCPUEventHandlerManager.cpp in Sources */, B665E3EE1AA80A6600DDB1C5 /* CCPUSlaveBehaviourTranslator.cpp in Sources */, @@ -8422,10 +10819,13 @@ 1A1645B2191B726C008C7C7F /* ConvertUTFWrapper.cpp in Sources */, B665E3B21AA80A6500DDB1C5 /* CCPURendererTranslator.cpp in Sources */, 15AE1BC919AAE01E00C27E9E /* CCControl.cpp in Sources */, + B6CAB3BF1AF9AA1A00B9B856 /* btHinge2Constraint.cpp in Sources */, B29A7DD119EE1B7700872B35 /* Skin.c in Sources */, + B6CAB1F51AF9AA1A00B9B856 /* btDbvt.cpp in Sources */, B665E2D61AA80A6500DDB1C5 /* CCPUJetAffector.cpp in Sources */, 1A5701FB180BCBAD0088DEC7 /* CCMenuItem.cpp in Sources */, 1A570202180BCBD40088DEC7 /* CCClippingNode.cpp in Sources */, + B6CAB4FF1AF9AA1A00B9B856 /* btConvexHullComputer.cpp in Sources */, 1A570208180BCBDF0088DEC7 /* CCMotionStreak.cpp in Sources */, 15FB20971AE7C57D00C31518 /* sweep.cc in Sources */, 1A570210180BCBF40088DEC7 /* CCProgressTimer.cpp in Sources */, @@ -8437,10 +10837,14 @@ 3EACC9A019F5014D00EB3C5E /* CCCamera.cpp in Sources */, 1A570214180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, B665E3FE1AA80A6600DDB1C5 /* CCPUSphereCollider.cpp in Sources */, + B6CAB3591AF9AA1A00B9B856 /* gim_memory.cpp in Sources */, B665E25A1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandler.cpp in Sources */, + B6CAB2BB1AF9AA1A00B9B856 /* btCylinderShape.cpp in Sources */, 15AE1BD019AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */, + B6CAAFFA1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */, 15AE18F219AAD35000C27E9E /* CCArmatureDataManager.cpp in Sources */, B665E2DE1AA80A6500DDB1C5 /* CCPULineAffector.cpp in Sources */, + B6CAB5471AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp in Sources */, 15AE1B6119AADA9900C27E9E /* UIButton.cpp in Sources */, 15AE1A5519AAD40300C27E9E /* b2Math.cpp in Sources */, B276EF651988D1D500CD400F /* CCVertexIndexBuffer.cpp in Sources */, @@ -8458,21 +10862,30 @@ 1A570282180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */, 1A570286180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */, B24AA989195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */, + B6CAB4DF1AF9AA1A00B9B856 /* SpuSampleTask.cpp in Sources */, B29A7E2F19EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */, B60C5BD419AC68B10056FBDE /* CCBillBoard.cpp in Sources */, 15AE199619AAD39600C27E9E /* ListViewReader.cpp in Sources */, + B6CAB52B1AF9AA1A00B9B856 /* btSerializer.cpp in Sources */, 50ABC0191926664800A911A9 /* CCSAXParser.cpp in Sources */, 15AE189219AAD33D00C27E9E /* CCLayerGradientLoader.cpp in Sources */, + B6CAB4471AF9AA1A00B9B856 /* btThreadSupportInterface.cpp in Sources */, 15FB206E1AE7BE7400C31518 /* SpritePolygonCache.cpp in Sources */, 15AE1B6A19AADA9900C27E9E /* UIDeprecated.cpp in Sources */, 15AE183C19AAD2F700C27E9E /* CCSkeleton3D.cpp in Sources */, + B6CAB36F1AF9AA1A00B9B856 /* btGjkConvexCast.cpp in Sources */, + B6CAB31B1AF9AA1A00B9B856 /* btContactProcessing.cpp in Sources */, 15AE1A2319AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */, 382384211A2590DA002C4610 /* GameMapReader.cpp in Sources */, B29A7DF319EE1B7700872B35 /* AttachmentLoader.c in Sources */, + B6CAB3331AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */, 382383F01A258FA7002C4610 /* flatc.cpp in Sources */, B665E31A1AA80A6500DDB1C5 /* CCPUOnClearObserver.cpp in Sources */, 1A57028A180BCC900088DEC7 /* CCSpriteFrameCache.cpp in Sources */, 15AE18E619AAD35000C27E9E /* CCActionFrameEasing.cpp in Sources */, + B6CAB34B1AF9AA1A00B9B856 /* gim_contact.cpp in Sources */, + B6CAB4A91AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp in Sources */, + B6CAB2A71AF9AA1A00B9B856 /* btConvexInternalShape.cpp in Sources */, 38F5263E1A48363B000DB7F7 /* ArmatureNodeReader.cpp in Sources */, B665E34E1AA80A6500DDB1C5 /* CCPUOnPositionObserverTranslator.cpp in Sources */, B29A7DC919EE1B7700872B35 /* SlotData.c in Sources */, @@ -8483,29 +10896,37 @@ 1A570292180BCCAB0088DEC7 /* CCAnimation.cpp in Sources */, B665E3421AA80A6500DDB1C5 /* CCPUOnExpireObserver.cpp in Sources */, B665E2DA1AA80A6500DDB1C5 /* CCPUJetAffectorTranslator.cpp in Sources */, + B6CAB2791AF9AA1A00B9B856 /* SphereTriangleDetector.cpp in Sources */, 1A570296180BCCAB0088DEC7 /* CCAnimationCache.cpp in Sources */, B29A7E1B19EE1B7700872B35 /* SkeletonJson.c in Sources */, 50ABBE351925AB6F00A911A9 /* CCConsole.cpp in Sources */, B665E3FA1AA80A6600DDB1C5 /* CCPUSphere.cpp in Sources */, 50ABBEAF1925AB6F00A911A9 /* CCUserDefault.cpp in Sources */, 15AE1BCB19AAE01E00C27E9E /* CCControlButton.cpp in Sources */, + B6CAB3731AF9AA1A00B9B856 /* btGjkEpa2.cpp in Sources */, 50ABBE791925AB6F00A911A9 /* CCEventMouse.cpp in Sources */, 15AE1A2E19AAD3D500C27E9E /* b2TimeOfImpact.cpp in Sources */, + B6CAB2FD1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.cpp in Sources */, 50ABC0111926664800A911A9 /* CCGLView.cpp in Sources */, 50ABBE3D1925AB6F00A911A9 /* CCDataVisitor.cpp in Sources */, B29A7DD519EE1B7700872B35 /* RegionAttachment.c in Sources */, 382384071A25900F002C4610 /* FlatBuffersSerialize.cpp in Sources */, B29A7E2519EE1B7700872B35 /* Attachment.c in Sources */, + B6CAB3631AF9AA1A00B9B856 /* btContinuousConvexCollision.cpp in Sources */, B665E3021AA80A6500DDB1C5 /* CCPUMeshSurfaceEmitter.cpp in Sources */, B665E3721AA80A6500DDB1C5 /* CCPUParticleFollower.cpp in Sources */, + B6CAB22B1AF9AA1A00B9B856 /* btCollisionObject.cpp in Sources */, 1A5702C8180BCE370088DEC7 /* CCTextFieldTTF.cpp in Sources */, B665E2861AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandlerTranslator.cpp in Sources */, 15AE1B5519AADA9900C27E9E /* UIScrollView.cpp in Sources */, 15AE191919AAD35000C27E9E /* CCSSceneReader.cpp in Sources */, + B6CAB1FD1AF9AA1A00B9B856 /* btDispatcher.cpp in Sources */, + B6CAB2BF1AF9AA1A00B9B856 /* btEmptyShape.cpp in Sources */, 50ABBE7D1925AB6F00A911A9 /* CCEventTouch.cpp in Sources */, B665E22A1AA80A6500DDB1C5 /* CCPUBoxCollider.cpp in Sources */, 1A5702EA180BCE750088DEC7 /* CCTileMapAtlas.cpp in Sources */, 50ABBD971925AB4100A911A9 /* CCGLProgramStateCache.cpp in Sources */, + B6CAB5431AF9AA1A00B9B856 /* MiniCLTask.cpp in Sources */, 15AE182019AAD2F700C27E9E /* CCBundleReader.cpp in Sources */, B665E2421AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffector.cpp in Sources */, 15AE1AD819AAD41000C27E9E /* b2Rope.cpp in Sources */, @@ -8514,22 +10935,33 @@ B29A7DC719EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */, 15AE1A7C19AAD40300C27E9E /* b2MotorJoint.cpp in Sources */, 15AE1A2619AAD3D500C27E9E /* b2CollideEdge.cpp in Sources */, + B6CAB1F11AF9AA1A00B9B856 /* btCollisionAlgorithm.cpp in Sources */, 1A5702EE180BCE750088DEC7 /* CCTMXLayer.cpp in Sources */, 15AE1BD619AAE01E00C27E9E /* CCControlSlider.cpp in Sources */, B665E3A21AA80A6500DDB1C5 /* CCPUPositionEmitterTranslator.cpp in Sources */, B665E39E1AA80A6500DDB1C5 /* CCPUPositionEmitter.cpp in Sources */, + B6CAB2011AF9AA1A00B9B856 /* btMultiSapBroadphase.cpp in Sources */, B665E41A1AA80A6600DDB1C5 /* CCPUTextureRotator.cpp in Sources */, B665E3C61AA80A6600DDB1C5 /* CCPUScaleVelocityAffector.cpp in Sources */, + B6CAB31F1AF9AA1A00B9B856 /* btGenericPoolAllocator.cpp in Sources */, + B6CAB3F11AF9AA1A00B9B856 /* btSimpleDynamicsWorld.cpp in Sources */, 50ABBE691925AB6F00A911A9 /* CCEventListenerFocus.cpp in Sources */, 15AE18EA19AAD35000C27E9E /* CCActionNode.cpp in Sources */, + B6CAB2391AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp in Sources */, 15AE1A7819AAD40300C27E9E /* b2PolygonAndCircleContact.cpp in Sources */, 15AE1A3419AAD3D500C27E9E /* b2EdgeShape.cpp in Sources */, + B6CAB1F91AF9AA1A00B9B856 /* btDbvtBroadphase.cpp in Sources */, B665E32E1AA80A6500DDB1C5 /* CCPUOnCountObserverTranslator.cpp in Sources */, + B6CAB21B1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.cpp in Sources */, B665E2AE1AA80A6500DDB1C5 /* CCPUFlockCenteringAffectorTranslator.cpp in Sources */, 15AE1BA319AADFDF00C27E9E /* UILayoutManager.cpp in Sources */, B230ED7119B417AE00364AA8 /* CCTrianglesCommand.cpp in Sources */, + B6CAB3991AF9AA1A00B9B856 /* btVoronoiSimplexSolver.cpp in Sources */, 1A5702F2180BCE750088DEC7 /* CCTMXObjectGroup.cpp in Sources */, + B6CAB3011AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.cpp in Sources */, 15AE1A5B19AAD40300C27E9E /* b2Timer.cpp in Sources */, + B6CAB2971AF9AA1A00B9B856 /* btConcaveShape.cpp in Sources */, + B6CAB4291AF9AA1A00B9B856 /* btRaycastVehicle.cpp in Sources */, 15AE189419AAD33D00C27E9E /* CCLayerLoader.cpp in Sources */, 826294351AAF004C00CB7CF7 /* HttpCookie.cpp in Sources */, 1A5702F6180BCE750088DEC7 /* CCTMXTiledMap.cpp in Sources */, @@ -8543,7 +10975,9 @@ 50ABBD5C1925AB0000A911A9 /* Vec3.cpp in Sources */, 1A570300180BCE890088DEC7 /* CCParallaxNode.cpp in Sources */, 15AE191D19AAD35000C27E9E /* CCTween.cpp in Sources */, + B6CAB2311AF9AA1A00B9B856 /* btCollisionWorld.cpp in Sources */, 15AE1A6C19AAD40300C27E9E /* b2ChainAndPolygonContact.cpp in Sources */, + B6CAB37B1AF9AA1A00B9B856 /* btGjkPairDetector.cpp in Sources */, 15AE1A2719AAD3D500C27E9E /* b2CollidePolygon.cpp in Sources */, 15AE199A19AAD39600C27E9E /* PageViewReader.cpp in Sources */, 1A57030C180BCF190088DEC7 /* CCComponent.cpp in Sources */, @@ -8551,26 +10985,41 @@ 15FB20741AE7BF8600C31518 /* MarchingSquare.cpp in Sources */, B665E2A61AA80A6500DDB1C5 /* CCPUEventHandlerTranslator.cpp in Sources */, 15AE1A5919AAD40300C27E9E /* b2StackAllocator.cpp in Sources */, + B6CAB20B1AF9AA1A00B9B856 /* btQuantizedBvh.cpp in Sources */, + B6CAB5411AF9AA1A00B9B856 /* MiniCL.cpp in Sources */, B29A7E3D19EE1B7700872B35 /* AnimationState.c in Sources */, B665E2E61AA80A6500DDB1C5 /* CCPULinearForceAffector.cpp in Sources */, 15AE192219AAD35000C27E9E /* DictionaryHelper.cpp in Sources */, + B6CAB4F51AF9AA1A00B9B856 /* btAlignedAllocator.cpp in Sources */, 15AE196C19AAD35700C27E9E /* CCActionTimeline.cpp in Sources */, + B6CAB2611AF9AA1A00B9B856 /* btManifoldResult.cpp in Sources */, B29A7E0719EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */, + B6CAB28F1AF9AA1A00B9B856 /* btCollisionShape.cpp in Sources */, + B6CAB39F1AF9AA1A00B9B856 /* btKinematicCharacterController.cpp in Sources */, + B6CAB2051AF9AA1A00B9B856 /* btOverlappingPairCache.cpp in Sources */, 1A570310180BCF190088DEC7 /* CCComponentContainer.cpp in Sources */, 15AE190719AAD35000C27E9E /* CCDatas.cpp in Sources */, 1A01C69C18F57BE800EFE3A6 /* CCString.cpp in Sources */, + B6CAB26D1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */, + B6CAB3251AF9AA1A00B9B856 /* btGImpactBvh.cpp in Sources */, B665E2721AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.cpp in Sources */, 50ABBD3C1925AB0000A911A9 /* CCGeometry.cpp in Sources */, + B6CAB3C31AF9AA1A00B9B856 /* btHingeConstraint.cpp in Sources */, 15FB206A1AE7BE7400C31518 /* SpritePolygon.cpp in Sources */, B29A7DDD19EE1B7700872B35 /* BoneData.c in Sources */, 15AE188A19AAD33D00C27E9E /* CCControlLoader.cpp in Sources */, 5012168E1AC47380009A4BEA /* CCRenderState.cpp in Sources */, + B6CAB2491AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.cpp in Sources */, B665E35A1AA80A6500DDB1C5 /* CCPUOnRandomObserver.cpp in Sources */, + B6CAB2891AF9AA1A00B9B856 /* btCapsuleShape.cpp in Sources */, + B6CAB42F1AF9AA1A00B9B856 /* btWheelInfo.cpp in Sources */, B29A7DFB19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */, + B6CAB3391AF9AA1A00B9B856 /* btTriangleShapeEx.cpp in Sources */, 50ABC0011926664800A911A9 /* CCLock-apple.cpp in Sources */, 15AE1A8019AAD40300C27E9E /* b2FrictionJoint.cpp in Sources */, 50ABBD931925AB4100A911A9 /* CCGLProgramState.cpp in Sources */, 15AE183419AAD2F700C27E9E /* CCObjLoader.cpp in Sources */, + B6CAB2551AF9AA1A00B9B856 /* btGhostObject.cpp in Sources */, B665E23A1AA80A6500DDB1C5 /* CCPUCircleEmitter.cpp in Sources */, 1A57034B180BD09B0088DEC7 /* tinyxml2.cpp in Sources */, 1A570354180BD0B00088DEC7 /* ioapi.cpp in Sources */, @@ -8582,17 +11031,24 @@ 50ABBEB31925AB6F00A911A9 /* CCUserDefault-apple.mm in Sources */, 50ABBEB51925AB6F00A911A9 /* CCUserDefault-android.cpp in Sources */, 5E9F61261A3FFE3D0038DE01 /* CCFrustum.cpp in Sources */, + B6CAB3FB1AF9AA1A00B9B856 /* btMultiBodyConstraint.cpp in Sources */, B665E4221AA80A6600DDB1C5 /* CCPUTranslateManager.cpp in Sources */, B665E38E1AA80A6500DDB1C5 /* CCPUPlaneCollider.cpp in Sources */, B665E2021AA80A6500DDB1C5 /* CCPUAlignAffectorTranslator.cpp in Sources */, B665E3661AA80A6500DDB1C5 /* CCPUOnTimeObserverTranslator.cpp in Sources */, B665E4361AA80A6600DDB1C5 /* CCPUVortexAffector.cpp in Sources */, + B6CAB4191AF9AA1A00B9B856 /* btDantzigLCP.cpp in Sources */, B665E3DE1AA80A6600DDB1C5 /* CCPUSimpleSpline.cpp in Sources */, B665E22E1AA80A6500DDB1C5 /* CCPUBoxColliderTranslator.cpp in Sources */, 29394CF619B01DBA00D2DE1A /* UIWebViewImpl-ios.mm in Sources */, + B6CAB3FF1AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.cpp in Sources */, 382383FC1A258FA7002C4610 /* idl_gen_text.cpp in Sources */, 50ABBE831925AB6F00A911A9 /* ccFPSImages.c in Sources */, + B6CAB4CD1AF9AA1A00B9B856 /* SpuContactResult.cpp in Sources */, 15AE1B7019AADA9900C27E9E /* CocosGUI.cpp in Sources */, + B6CAB2AF1AF9AA1A00B9B856 /* btConvexPolyhedron.cpp in Sources */, + B6CAB4EF1AF9AA1A00B9B856 /* Win32ThreadSupport.cpp in Sources */, + B6CAB3E71AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.cpp in Sources */, 50CB247719D9C5A100687767 /* AudioCache.mm in Sources */, B665E25E1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandlerTranslator.cpp in Sources */, 15AE18FA19AAD35000C27E9E /* CCColliderDetector.cpp in Sources */, @@ -8607,12 +11063,17 @@ B665E2121AA80A6500DDB1C5 /* CCPUBaseForceAffectorTranslator.cpp in Sources */, 38ACD1FC1A27111900C3093D /* WidgetCallBackHandlerProtocol.cpp in Sources */, 15FB209B1AE7C57D00C31518 /* sweep_context.cc in Sources */, + B6CAAFEE1AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp in Sources */, + B6CAB5051AF9AA1A00B9B856 /* btGeometryUtil.cpp in Sources */, 15AE1A7619AAD40300C27E9E /* b2EdgeAndPolygonContact.cpp in Sources */, + B6CAB4BB1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp in Sources */, 50ABBD8B1925AB4100A911A9 /* CCGLProgram.cpp in Sources */, 464AD6E5197EBB1400E502D8 /* pvr.cpp in Sources */, + B6CAB3F51AF9AA1A00B9B856 /* Bullet-C-API.cpp in Sources */, 50ABBDA31925AB4100A911A9 /* CCQuadCommand.cpp in Sources */, 15AE19A219AAD39600C27E9E /* TextBMFontReader.cpp in Sources */, 382384281A2590F9002C4610 /* NodeReader.cpp in Sources */, + B6CAB3671AF9AA1A00B9B856 /* btConvexCast.cpp in Sources */, 50ABC01D1926664800A911A9 /* CCThread.cpp in Sources */, 15AE180C19AAD2F700C27E9E /* CCAnimate3D.cpp in Sources */, 15AE183019AAD2F700C27E9E /* CCOBB.cpp in Sources */, @@ -8628,6 +11089,7 @@ 15AE199819AAD39600C27E9E /* LoadingBarReader.cpp in Sources */, 503DD8F71926B0DB00CD74DD /* CCIMEDispatcher.cpp in Sources */, 50ABBE751925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */, + B6CAB2C31AF9AA1A00B9B856 /* btHeightfieldTerrainShape.cpp in Sources */, 15AE18F019AAD35000C27E9E /* CCArmatureAnimation.cpp in Sources */, 50ABBE511925AB6F00A911A9 /* CCEventDispatcher.cpp in Sources */, 50ABC0051926664800A911A9 /* CCThread-apple.mm in Sources */, @@ -8643,13 +11105,17 @@ 50ED2BE419BEAF7900A0AB90 /* UIEditBoxImpl-win32.cpp in Sources */, 50ABBE1F1925AB6F00A911A9 /* atitc.cpp in Sources */, 1A01C69818F57BE800EFE3A6 /* CCSet.cpp in Sources */, + B6CAB2351AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.cpp in Sources */, B29A7DF119EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */, + B6CAB3451AF9AA1A00B9B856 /* gim_box_set.cpp in Sources */, 1AAF584F180E40B9000584C8 /* LocalStorage.cpp in Sources */, 15AE1BD219AAE01E00C27E9E /* CCControlPotentiometer.cpp in Sources */, 50ABBEA31925AB6F00A911A9 /* CCScriptSupport.cpp in Sources */, + B6CAB2711AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.cpp in Sources */, 38B8E2D519E66581002D7CE7 /* CSLoader.cpp in Sources */, 15AE190519AAD35000C27E9E /* CCDataReaderHelper.cpp in Sources */, 826294331AAF001C00CB7CF7 /* HttpAsynConnection.m in Sources */, + B6CAAFE61AF9A9E100B9B856 /* CCPhysics3DComponent.cpp in Sources */, B68778F81A8CA82E00643ABF /* CCParticle3DAffector.cpp in Sources */, 15AE19A019AAD39600C27E9E /* TextAtlasReader.cpp in Sources */, 15AE1A2A19AAD3D500C27E9E /* b2Distance.cpp in Sources */, @@ -8664,6 +11130,7 @@ DABC9FA919E7DFA900FA252C /* CCClippingRectangleNode.cpp in Sources */, 3E2F27A619CFBFE100E7C490 /* AudioEngine.cpp in Sources */, B665E2EE1AA80A6500DDB1C5 /* CCPULineEmitter.cpp in Sources */, + B6CAB2DD1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.cpp in Sources */, B665E4121AA80A6600DDB1C5 /* CCPUTextureAnimator.cpp in Sources */, B665E3D21AA80A6600DDB1C5 /* CCPUScriptLexer.cpp in Sources */, B665E4021AA80A6600DDB1C5 /* CCPUSphereColliderTranslator.cpp in Sources */, @@ -8683,6 +11150,7 @@ 15AE1B9F19AADFDF00C27E9E /* UILayout.cpp in Sources */, 50ABBECF1925AB6F00A911A9 /* TGAlib.cpp in Sources */, 15AE199E19AAD39600C27E9E /* SliderReader.cpp in Sources */, + B6CAB49F1AF9AA1A00B9B856 /* PosixThreadSupport.cpp in Sources */, 50ABBE451925AB6F00A911A9 /* CCEvent.cpp in Sources */, D0FD034F1A3B51AA00825BB5 /* CCAllocatorGlobal.cpp in Sources */, 50ABBE611925AB6F00A911A9 /* CCEventListenerAcceleration.cpp in Sources */, @@ -8690,6 +11158,7 @@ B665E3161AA80A6500DDB1C5 /* CCPUObserverTranslator.cpp in Sources */, 15AE1A8E19AAD40300C27E9E /* b2RopeJoint.cpp in Sources */, 50ABBD871925AB4100A911A9 /* CCCustomCommand.cpp in Sources */, + B6CAB2E11AF9AA1A00B9B856 /* btShapeHull.cpp in Sources */, 50ABBDBD1925AB4100A911A9 /* CCTextureCache.cpp in Sources */, 15AE188619AAD33D00C27E9E /* CCBSequenceProperty.cpp in Sources */, B665E43A1AA80A6600DDB1C5 /* CCPUVortexAffectorTranslator.cpp in Sources */, @@ -8700,6 +11169,7 @@ 15AE1A7E19AAD40300C27E9E /* b2DistanceJoint.cpp in Sources */, 15AE190919AAD35000C27E9E /* CCDecorativeDisplay.cpp in Sources */, B665E40E1AA80A6600DDB1C5 /* CCPUTechniqueTranslator.cpp in Sources */, + B6CAB4BF1AF9AA1A00B9B856 /* SpuLibspe2Support.cpp in Sources */, B665E21E1AA80A6500DDB1C5 /* CCPUBehaviourManager.cpp in Sources */, 15AE18E319AAD35000C27E9E /* TriggerObj.cpp in Sources */, 15AE1BA119AADFDF00C27E9E /* UILayoutParameter.cpp in Sources */, @@ -8708,6 +11178,8 @@ 50ABBE4D1925AB6F00A911A9 /* CCEventCustom.cpp in Sources */, 15AE1A6819AAD40300C27E9E /* b2WorldCallbacks.cpp in Sources */, B665E2D21AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.cpp in Sources */, + B6CAB3811AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */, + B6CAB4AD1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */, 50ABBE9F1925AB6F00A911A9 /* CCScheduler.cpp in Sources */, 15AE1C1119AAE2C600C27E9E /* CCPhysicsDebugNode.cpp in Sources */, B665E2521AA80A6500DDB1C5 /* CCPUDoAffectorEventHandler.cpp in Sources */, @@ -8719,46 +11191,63 @@ 382384361A259126002C4610 /* ProjectNodeReader.cpp in Sources */, B665E37A1AA80A6500DDB1C5 /* CCPUParticleSystem3D.cpp in Sources */, 15AE1BB519AADFEF00C27E9E /* SocketIO.cpp in Sources */, + B6CAB4D31AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp in Sources */, 15AE1B6519AADA9900C27E9E /* UIImageView.cpp in Sources */, B29A7E1519EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */, + B6CAB4E31AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp in Sources */, 15AE1A2519AAD3D500C27E9E /* b2CollideCircle.cpp in Sources */, B665E3321AA80A6500DDB1C5 /* CCPUOnEmissionObserver.cpp in Sources */, 50ABBE5D1925AB6F00A911A9 /* CCEventListener.cpp in Sources */, + B6CAB4FB1AF9AA1A00B9B856 /* btConvexHull.cpp in Sources */, B29A7E2D19EE1B7700872B35 /* Slot.c in Sources */, 15AE182819AAD2F700C27E9E /* CCMeshSkin.cpp in Sources */, B665E42A1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffector.cpp in Sources */, 15AE19A619AAD39600C27E9E /* TextReader.cpp in Sources */, 15AE198819AAD36A00C27E9E /* ButtonReader.cpp in Sources */, + B6CAB4131AF9AA1A00B9B856 /* btMultiBodyPoint2Point.cpp in Sources */, + B6CAB2C91AF9AA1A00B9B856 /* btMinkowskiSumShape.cpp in Sources */, 4D76BE3A1A4AAF0A00102962 /* CCActionTimelineNode.cpp in Sources */, B665E33A1AA80A6500DDB1C5 /* CCPUOnEventFlagObserver.cpp in Sources */, B665E2261AA80A6500DDB1C5 /* CCPUBillboardChain.cpp in Sources */, 15AE1A6319AAD40300C27E9E /* b2Island.cpp in Sources */, + B6CAB2851AF9AA1A00B9B856 /* btBvhTriangleMeshShape.cpp in Sources */, 15AE1A8419AAD40300C27E9E /* b2Joint.cpp in Sources */, 50ABBD601925AB0000A911A9 /* Vec4.cpp in Sources */, 50ABC05F1926664800A911A9 /* CCApplication-mac.mm in Sources */, B29A7E2119EE1B7700872B35 /* PolygonBatch.cpp in Sources */, 15AE1A9219AAD40300C27E9E /* b2WheelJoint.cpp in Sources */, B665E3261AA80A6500DDB1C5 /* CCPUOnCollisionObserverTranslator.cpp in Sources */, + B6CAB3ED1AF9AA1A00B9B856 /* btRigidBody.cpp in Sources */, + B6CAAFFE1AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp in Sources */, + B6CAB1ED1AF9AA1A00B9B856 /* btBroadphaseProxy.cpp in Sources */, B29594B41926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */, 15AE189619AAD33D00C27E9E /* CCMenuItemImageLoader.cpp in Sources */, B665E23E1AA80A6500DDB1C5 /* CCPUCircleEmitterTranslator.cpp in Sources */, 15AE1BB719AADFEF00C27E9E /* WebSocket.cpp in Sources */, + B6CAB21F1AF9AA1A00B9B856 /* btBoxBoxDetector.cpp in Sources */, B665E20A1AA80A6500DDB1C5 /* CCPUBaseColliderTranslator.cpp in Sources */, B665E3E61AA80A6600DDB1C5 /* CCPUSineForceAffectorTranslator.cpp in Sources */, + B6CAB32F1AF9AA1A00B9B856 /* btGImpactQuantizedBvh.cpp in Sources */, 15AE1B5119AADA9900C27E9E /* UIPageView.cpp in Sources */, + B6CAB35F1AF9AA1A00B9B856 /* gim_tri_collision.cpp in Sources */, 15AE18EC19AAD35000C27E9E /* CCActionObject.cpp in Sources */, B665E2821AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandler.cpp in Sources */, 1A01C68E18F57BE800EFE3A6 /* CCDictionary.cpp in Sources */, 50ABBD381925AB0000A911A9 /* CCAffineTransform.cpp in Sources */, B665E2AA1AA80A6500DDB1C5 /* CCPUFlockCenteringAffector.cpp in Sources */, + B6CAB2CD1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.cpp in Sources */, 46C02E0718E91123004B7456 /* xxhash.c in Sources */, 15AE1B6B19AADA9900C27E9E /* UIWidget.cpp in Sources */, 50ABBE931925AB6F00A911A9 /* CCProfiling.cpp in Sources */, 15AE188819AAD33D00C27E9E /* CCControlButtonLoader.cpp in Sources */, B665E2561AA80A6500DDB1C5 /* CCPUDoAffectorEventHandlerTranslator.cpp in Sources */, + B6CAB2131AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.cpp in Sources */, 15AE18A419AAD33D00C27E9E /* CCScale9SpriteLoader.cpp in Sources */, + B6CAB2ED1AF9AA1A00B9B856 /* btStridingMeshInterface.cpp in Sources */, 182C5CD61A98F30500C30D34 /* Sprite3DReader.cpp in Sources */, 38D9629D1ACA9721007C6FAF /* CocoStudio.cpp in Sources */, + B6CAB24D1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.cpp in Sources */, + B6CAB3A91AF9AA1A00B9B856 /* btContactConstraint.cpp in Sources */, B665E3D61AA80A6600DDB1C5 /* CCPUScriptParser.cpp in Sources */, 15AE1B5719AADA9900C27E9E /* UISlider.cpp in Sources */, B665E2F61AA80A6500DDB1C5 /* CCPUListener.cpp in Sources */, @@ -8774,19 +11263,24 @@ 15AE1B9819AADAA100C27E9E /* UIVideoPlayer-ios.mm in Sources */, B665E38F1AA80A6500DDB1C5 /* CCPUPlaneCollider.cpp in Sources */, B665E21B1AA80A6500DDB1C5 /* CCPUBehaviour.cpp in Sources */, + B6CAB2CA1AF9AA1A00B9B856 /* btMinkowskiSumShape.cpp in Sources */, B665E38B1AA80A6500DDB1C5 /* CCPUPlane.cpp in Sources */, B665E2731AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandler.cpp in Sources */, 15AE1C0519AAE01E00C27E9E /* CCTableViewCell.cpp in Sources */, + B6CAB4D41AF9AA1A00B9B856 /* SpuGatheringCollisionTask.cpp in Sources */, 15AE198A19AAD36A00C27E9E /* ButtonReader.cpp in Sources */, 15AE18D019AAD33D00C27E9E /* CCNodeLoaderLibrary.cpp in Sources */, 15AE192C19AAD35100C27E9E /* CCActionFrame.cpp in Sources */, + B6CAB2461AF9AA1A00B9B856 /* btConvexConvexAlgorithm.cpp in Sources */, 1A01C69918F57BE800EFE3A6 /* CCSet.cpp in Sources */, 1A01C69D18F57BE800EFE3A6 /* CCString.cpp in Sources */, 15FB20981AE7C57D00C31518 /* sweep.cc in Sources */, 15AE199219AAD37300C27E9E /* ImageViewReader.cpp in Sources */, + B6CAB3BC1AF9AA1A00B9B856 /* btGeneric6DofSpringConstraint.cpp in Sources */, B665E1F71AA80A6500DDB1C5 /* CCPUAffectorManager.cpp in Sources */, 2986667F18B1B246000E39CA /* CCTweenFunction.cpp in Sources */, 46A171051807CECB005B8026 /* CCPhysicsWorld.cpp in Sources */, + B6CAB2A81AF9AA1A00B9B856 /* btConvexInternalShape.cpp in Sources */, 50ABBDA01925AB4100A911A9 /* CCGroupCommand.cpp in Sources */, 46A171031807CECB005B8026 /* CCPhysicsShape.cpp in Sources */, B665E35B1AA80A6500DDB1C5 /* CCPUOnRandomObserver.cpp in Sources */, @@ -8794,15 +11288,20 @@ B665E3AB1AA80A6500DDB1C5 /* CCPURandomiserTranslator.cpp in Sources */, 1A01C6A518F58F7500EFE3A6 /* CCNotificationCenter.cpp in Sources */, 292DB14E19B4574100A80320 /* UIEditBoxImpl-mac.mm in Sources */, + B6CAB4BC1AF9AA1A00B9B856 /* SpuGatheringCollisionDispatcher.cpp in Sources */, + B6CAB3CA1AF9AA1A00B9B856 /* btPoint2PointConstraint.cpp in Sources */, B665E3A71AA80A6500DDB1C5 /* CCPURandomiser.cpp in Sources */, 15AE1BFB19AAE01E00C27E9E /* CCControlUtils.cpp in Sources */, B665E30F1AA80A6500DDB1C5 /* CCPUObserver.cpp in Sources */, + B6CAB4A01AF9AA1A00B9B856 /* PosixThreadSupport.cpp in Sources */, B230ED7219B417AE00364AA8 /* CCTrianglesCommand.cpp in Sources */, + B6CAB2821AF9AA1A00B9B856 /* btBoxShape.cpp in Sources */, 382383F91A258FA7002C4610 /* idl_gen_general.cpp in Sources */, 15AE1B9019AADA9A00C27E9E /* UIWidget.cpp in Sources */, ED9C6A9518599AD8000A5232 /* CCNodeGrid.cpp in Sources */, B665E2531AA80A6500DDB1C5 /* CCPUDoAffectorEventHandler.cpp in Sources */, B665E3F71AA80A6600DDB1C5 /* CCPUSlaveEmitterTranslator.cpp in Sources */, + B6CAB3C01AF9AA1A00B9B856 /* btHinge2Constraint.cpp in Sources */, 1A01C68F18F57BE800EFE3A6 /* CCDictionary.cpp in Sources */, B276EF621988D1D500CD400F /* CCVertexIndexData.cpp in Sources */, 50ABBE561925AB6F00A911A9 /* CCEventFocus.cpp in Sources */, @@ -8810,27 +11309,37 @@ 15AE183D19AAD2F700C27E9E /* CCSkeleton3D.cpp in Sources */, 503DD8E11926736A00CD74DD /* CCApplication-ios.mm in Sources */, 15AE1AAC19AAD40300C27E9E /* b2WorldCallbacks.cpp in Sources */, + B6CAB20C1AF9AA1A00B9B856 /* btQuantizedBvh.cpp in Sources */, + B6CAB3F21AF9AA1A00B9B856 /* btSimpleDynamicsWorld.cpp in Sources */, 15AE18C719AAD33D00C27E9E /* CCMenuItemImageLoader.cpp in Sources */, 50ABC01A1926664800A911A9 /* CCSAXParser.cpp in Sources */, B29A7E1C19EE1B7700872B35 /* SkeletonJson.c in Sources */, B2CC507C19776DD10041958E /* CCPhysicsJoint.cpp in Sources */, + B6CAB5241AF9AA1A00B9B856 /* btQuickprof.cpp in Sources */, 182C5CE61A9D725400C30D34 /* UserCameraReader.cpp in Sources */, 38B8E2E219E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */, + B6CAB3D21AF9AA1A00B9B856 /* btSliderConstraint.cpp in Sources */, B2165EEA19921124000BE3E6 /* CCPrimitiveCommand.cpp in Sources */, B665E32B1AA80A6500DDB1C5 /* CCPUOnCountObserver.cpp in Sources */, 15AE185C19AAD31200C27E9E /* CDOpenALSupport.m in Sources */, + B6CAB3B01AF9AA1A00B9B856 /* btFixedConstraint.cpp in Sources */, 15AE186119AAD31200C27E9E /* SimpleAudioEngine_objc.m in Sources */, 15AE182519AAD2F700C27E9E /* CCMesh.cpp in Sources */, B665E4071AA80A6600DDB1C5 /* CCPUSphereSurfaceEmitter.cpp in Sources */, 503DD8EE1926736A00CD74DD /* CCImage-ios.mm in Sources */, + B6CAB2941AF9AA1A00B9B856 /* btCompoundShape.cpp in Sources */, + B6CAB39A1AF9AA1A00B9B856 /* btVoronoiSimplexSolver.cpp in Sources */, 46A170FC1807CECB005B8026 /* CCPhysicsBody.cpp in Sources */, 15AE1BEA19AAE01E00C27E9E /* CCControlButton.cpp in Sources */, 50ABBD941925AB4100A911A9 /* CCGLProgramState.cpp in Sources */, B665E3DF1AA80A6600DDB1C5 /* CCPUSimpleSpline.cpp in Sources */, + B6CAB4F61AF9AA1A00B9B856 /* btAlignedAllocator.cpp in Sources */, B257B44F1989D5E800D9A687 /* CCPrimitive.cpp in Sources */, 50ABBE281925AB6F00A911A9 /* CCAutoreleasePool.cpp in Sources */, 15AE18D519AAD33D00C27E9E /* CCScale9SpriteLoader.cpp in Sources */, 15AE192919AAD35100C27E9E /* TriggerMng.cpp in Sources */, + B6CAB21C1AF9AA1A00B9B856 /* btBoxBoxCollisionAlgorithm.cpp in Sources */, + B6CAB35A1AF9AA1A00B9B856 /* gim_memory.cpp in Sources */, B29A7E0C19EE1B7700872B35 /* Atlas.c in Sources */, 15AE185E19AAD31200C27E9E /* CocosDenshion.m in Sources */, B665E2071AA80A6500DDB1C5 /* CCPUBaseCollider.cpp in Sources */, @@ -8839,8 +11348,11 @@ 1A570066180BC5A10088DEC7 /* CCActionCamera.cpp in Sources */, B665E2D71AA80A6500DDB1C5 /* CCPUJetAffector.cpp in Sources */, B276EF661988D1D500CD400F /* CCVertexIndexBuffer.cpp in Sources */, + B6CAB3961AF9AA1A00B9B856 /* btSubSimplexConvexCast.cpp in Sources */, 15AE1C0119AAE01E00C27E9E /* CCScrollView.cpp in Sources */, + B6CAB2901AF9AA1A00B9B856 /* btCollisionShape.cpp in Sources */, 15B3708919EE414C00ABE682 /* Manifest.cpp in Sources */, + B6CAB2DA1AF9AA1A00B9B856 /* btPolyhedralConvexShape.cpp in Sources */, 15AE1A9B19AAD40300C27E9E /* b2Settings.cpp in Sources */, 1A57006A180BC5A10088DEC7 /* CCActionCatmullRom.cpp in Sources */, 15AE1BEF19AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */, @@ -8850,13 +11362,17 @@ 1A57006E180BC5A10088DEC7 /* CCActionEase.cpp in Sources */, 50ABBD8C1925AB4100A911A9 /* CCGLProgram.cpp in Sources */, B665E2671AA80A6500DDB1C5 /* CCPUDoExpireEventHandlerTranslator.cpp in Sources */, + B6CAB4AA1AF9AA1A00B9B856 /* SpuCollisionObjectWrapper.cpp in Sources */, + B6CAAFFF1AF9A9E100B9B856 /* CCPhysicsSprite3D.cpp in Sources */, 15AE196119AAD35100C27E9E /* CCSSceneReader.cpp in Sources */, 1A570072180BC5A10088DEC7 /* CCActionGrid.cpp in Sources */, 15AE1ABC19AAD40300C27E9E /* b2PolygonAndCircleContact.cpp in Sources */, + B6CAB3FC1AF9AA1A00B9B856 /* btMultiBodyConstraint.cpp in Sources */, B665E2EB1AA80A6500DDB1C5 /* CCPULinearForceAffectorTranslator.cpp in Sources */, B665E4271AA80A6600DDB1C5 /* CCPUUtil.cpp in Sources */, B665E2BF1AA80A6500DDB1C5 /* CCPUGeometryRotator.cpp in Sources */, 15AE1ADA19AAD41000C27E9E /* b2Rope.cpp in Sources */, + B6CAB2D61AF9AA1A00B9B856 /* btOptimizedBvh.cpp in Sources */, 52B47A301A5349A3004E4C60 /* HttpClient-apple.mm in Sources */, B29A7E1619EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */, B665E2131AA80A6500DDB1C5 /* CCPUBaseForceAffectorTranslator.cpp in Sources */, @@ -8868,14 +11384,21 @@ 382383FF1A258FA7002C4610 /* idl_parser.cpp in Sources */, B665E28F1AA80A6500DDB1C5 /* CCPUDynamicAttributeTranslator.cpp in Sources */, B665E31B1AA80A6500DDB1C5 /* CCPUOnClearObserver.cpp in Sources */, + B6CAB2421AF9AA1A00B9B856 /* btConvexConcaveCollisionAlgorithm.cpp in Sources */, + B6CAB2661AF9AA1A00B9B856 /* btSimulationIslandManager.cpp in Sources */, + B6CAB4001AF9AA1A00B9B856 /* btMultiBodyConstraintSolver.cpp in Sources */, + B6CAB4E01AF9AA1A00B9B856 /* SpuSampleTask.cpp in Sources */, 15AE1B8419AADA9A00C27E9E /* UITextField.cpp in Sources */, 15AE198E19AAD36E00C27E9E /* CheckBoxReader.cpp in Sources */, + B6CAAFE31AF9A9E100B9B856 /* CCPhysics3D.cpp in Sources */, 50ABBE621925AB6F00A911A9 /* CCEventListenerAcceleration.cpp in Sources */, B665E2C71AA80A6500DDB1C5 /* CCPUGravityAffector.cpp in Sources */, B665E2E31AA80A6500DDB1C5 /* CCPULineAffectorTranslator.cpp in Sources */, 15AE1AB619AAD40300C27E9E /* b2ContactSolver.cpp in Sources */, 292DB13E19B4574100A80320 /* UIEditBox.cpp in Sources */, B29A7E0619EE1B7700872B35 /* extension.c in Sources */, + B6CAB3461AF9AA1A00B9B856 /* gim_box_set.cpp in Sources */, + B6CAB3701AF9AA1A00B9B856 /* btGjkConvexCast.cpp in Sources */, 3E6176681960F89B00DE83F5 /* CCController-iOS.mm in Sources */, 15AE18B219AAD33D00C27E9E /* CCBReader.cpp in Sources */, 15AE193C19AAD35100C27E9E /* CCArmatureDefine.cpp in Sources */, @@ -8883,10 +11406,12 @@ B29594B51926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */, 15AE194B19AAD35100C27E9E /* CCComRender.cpp in Sources */, 382384451A25915C002C4610 /* SpriteReader.cpp in Sources */, + B6CAB2321AF9AA1A00B9B856 /* btCollisionWorld.cpp in Sources */, 15AE1ACA19AAD40300C27E9E /* b2MouseJoint.cpp in Sources */, 15AE19AC19AAD39700C27E9E /* LoadingBarReader.cpp in Sources */, 50ABBE7E1925AB6F00A911A9 /* CCEventTouch.cpp in Sources */, 15AE183119AAD2F700C27E9E /* CCOBB.cpp in Sources */, + B6CAB4FC1AF9AA1A00B9B856 /* btConvexHull.cpp in Sources */, B29A7DCA19EE1B7700872B35 /* SlotData.c in Sources */, 15AE18C519AAD33D00C27E9E /* CCLayerLoader.cpp in Sources */, 15AE1BF719AAE01E00C27E9E /* CCControlStepper.cpp in Sources */, @@ -8898,19 +11423,25 @@ 50CB247C19D9C5A100687767 /* AudioEngine-inl.mm in Sources */, 15AE1AC819AAD40300C27E9E /* b2Joint.cpp in Sources */, 50ABBE461925AB6F00A911A9 /* CCEvent.cpp in Sources */, + B6CAB3B81AF9AA1A00B9B856 /* btGeneric6DofConstraint.cpp in Sources */, 15FB20881AE7C57D00C31518 /* shapes.cc in Sources */, + B6CAB2FE1AF9AA1A00B9B856 /* btTriangleIndexVertexArray.cpp in Sources */, 50ABBEA01925AB6F00A911A9 /* CCScheduler.cpp in Sources */, 15AE1A4119AAD3D500C27E9E /* b2Distance.cpp in Sources */, 50ABBE4E1925AB6F00A911A9 /* CCEventCustom.cpp in Sources */, + B6CAB2761AF9AA1A00B9B856 /* btUnionFind.cpp in Sources */, 15AE1BF519AAE01E00C27E9E /* CCControlSlider.cpp in Sources */, 15AE181719AAD2F700C27E9E /* CCAttachNode.cpp in Sources */, B68779051A8CA82E00643ABF /* CCParticleSystem3D.cpp in Sources */, 15AE18B719AAD33D00C27E9E /* CCBSequenceProperty.cpp in Sources */, B29A7E3819EE1B7700872B35 /* AnimationStateData.c in Sources */, + B6CAB3261AF9AA1A00B9B856 /* btGImpactBvh.cpp in Sources */, 15AE18B919AAD33D00C27E9E /* CCControlButtonLoader.cpp in Sources */, + B6CAB4041AF9AA1A00B9B856 /* btMultiBodyDynamicsWorld.cpp in Sources */, 50ABBE761925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */, 15AE1AD219AAD40300C27E9E /* b2RopeJoint.cpp in Sources */, B29A7DCC19EE1B7700872B35 /* Skeleton.c in Sources */, + B6CAB2B41AF9AA1A00B9B856 /* btConvexShape.cpp in Sources */, 15AE1A4919AAD3D500C27E9E /* b2CircleShape.cpp in Sources */, 15AE184119AAD2F700C27E9E /* CCSprite3D.cpp in Sources */, 50ABBE5A1925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */, @@ -8920,11 +11451,14 @@ 3EACC9A519F5014D00EB3C5E /* CCLight.cpp in Sources */, 15AE1B7A19AADA9A00C27E9E /* UIScrollView.cpp in Sources */, 1A570076180BC5A10088DEC7 /* CCActionGrid3D.cpp in Sources */, + B6CAB38C1AF9AA1A00B9B856 /* btPolyhedralContactClipping.cpp in Sources */, + B6CAB3A41AF9AA1A00B9B856 /* btConeTwistConstraint.cpp in Sources */, 15AE19B219AAD39700C27E9E /* SliderReader.cpp in Sources */, 382383F51A258FA7002C4610 /* idl_gen_cpp.cpp in Sources */, B665E3B71AA80A6500DDB1C5 /* CCPURibbonTrail.cpp in Sources */, B665E1F31AA80A6500DDB1C5 /* CCPUAffector.cpp in Sources */, 15AE1B7E19AADA9A00C27E9E /* UIText.cpp in Sources */, + B6CAB2FA1AF9AA1A00B9B856 /* btTriangleCallback.cpp in Sources */, 15AE1A3E19AAD3D500C27E9E /* b2CollidePolygon.cpp in Sources */, 15AE1AB219AAD40300C27E9E /* b2CircleContact.cpp in Sources */, B29A7E2619EE1B7700872B35 /* Attachment.c in Sources */, @@ -8936,8 +11470,10 @@ 1A57007A180BC5A10088DEC7 /* CCActionInstant.cpp in Sources */, 15AE1AC419AAD40300C27E9E /* b2FrictionJoint.cpp in Sources */, 15AE1BEC19AAE01E00C27E9E /* CCControlColourPicker.cpp in Sources */, + B6CAB2361AF9AA1A00B9B856 /* btCompoundCollisionAlgorithm.cpp in Sources */, 382383FD1A258FA7002C4610 /* idl_gen_text.cpp in Sources */, 3823841B1A2590D2002C4610 /* ComAudioReader.cpp in Sources */, + B6CAB2B01AF9AA1A00B9B856 /* btConvexPolyhedron.cpp in Sources */, 50ABBEC01925AB6F00A911A9 /* CCValue.cpp in Sources */, 50ABBD591925AB0000A911A9 /* Vec2.cpp in Sources */, B665E3CB1AA80A6600DDB1C5 /* CCPUScaleVelocityAffectorTranslator.cpp in Sources */, @@ -8947,9 +11483,11 @@ B665E3BB1AA80A6500DDB1C5 /* CCPURibbonTrailRender.cpp in Sources */, 50ABBE421925AB6F00A911A9 /* CCDirector.cpp in Sources */, 15AE1C0319AAE01E00C27E9E /* CCTableView.cpp in Sources */, + B6CAB5361AF9AA1A00B9B856 /* btVector3.cpp in Sources */, B665E39F1AA80A6500DDB1C5 /* CCPUPositionEmitter.cpp in Sources */, 1A57007E180BC5A10088DEC7 /* CCActionInterval.cpp in Sources */, 15AE1BF319AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.cpp in Sources */, + B6CAB2521AF9AA1A00B9B856 /* btEmptyCollisionAlgorithm.cpp in Sources */, B665E2D31AA80A6500DDB1C5 /* CCPUInterParticleColliderTranslator.cpp in Sources */, B665E3331AA80A6500DDB1C5 /* CCPUOnEmissionObserver.cpp in Sources */, 1A570082180BC5A10088DEC7 /* CCActionManager.cpp in Sources */, @@ -8957,21 +11495,32 @@ 1A570086180BC5A10088DEC7 /* CCActionPageTurn3D.cpp in Sources */, 15AE1AB819AAD40300C27E9E /* b2EdgeAndCircleContact.cpp in Sources */, 1A57008A180BC5A10088DEC7 /* CCActionProgressTimer.cpp in Sources */, + B6CAB5001AF9AA1A00B9B856 /* btConvexHullComputer.cpp in Sources */, B665E3EF1AA80A6600DDB1C5 /* CCPUSlaveBehaviourTranslator.cpp in Sources */, 15AE18AF19AAD33D00C27E9E /* CCBKeyframe.cpp in Sources */, B29A7DE419EE1B7700872B35 /* SkeletonBounds.c in Sources */, + B6CAB4C01AF9AA1A00B9B856 /* SpuLibspe2Support.cpp in Sources */, + B6CAB2861AF9AA1A00B9B856 /* btBvhTriangleMeshShape.cpp in Sources */, 50643BDF19BFCCA400EF68ED /* LocalStorage-android.cpp in Sources */, 50ABBED81925AB6F00A911A9 /* ZipUtils.cpp in Sources */, 15AE1B9219AADA9A00C27E9E /* UIHelper.cpp in Sources */, + B6CAB5441AF9AA1A00B9B856 /* MiniCLTask.cpp in Sources */, + B6CAAFEF1AF9A9E100B9B856 /* CCPhysics3DDebugDrawer.cpp in Sources */, 15AE1AA119AAD40300C27E9E /* b2Body.cpp in Sources */, 15AE1ABA19AAD40300C27E9E /* b2EdgeAndPolygonContact.cpp in Sources */, 15AE181B19AAD2F700C27E9E /* CCBundle3D.cpp in Sources */, + B6CAB3341AF9AA1A00B9B856 /* btGImpactShape.cpp in Sources */, + B6CAB4C61AF9AA1A00B9B856 /* boxBoxDistance.cpp in Sources */, 1A57008E180BC5A10088DEC7 /* CCActionTiledGrid.cpp in Sources */, + B6CAB2A01AF9AA1A00B9B856 /* btConvex2dShape.cpp in Sources */, 1A570092180BC5A10088DEC7 /* CCActionTween.cpp in Sources */, 1A570099180BC5C10088DEC7 /* CCAtlasNode.cpp in Sources */, + B6CAB1F21AF9AA1A00B9B856 /* btCollisionAlgorithm.cpp in Sources */, + B6CAAFF31AF9A9E100B9B856 /* CCPhysics3DObject.cpp in Sources */, B665E2931AA80A6500DDB1C5 /* CCPUEmitter.cpp in Sources */, 50ABBD4D1925AB0000A911A9 /* MathUtil.cpp in Sources */, 50ABBE3E1925AB6F00A911A9 /* CCDataVisitor.cpp in Sources */, + B6CAB4B21AF9AA1A00B9B856 /* SpuContactManifoldCollisionAlgorithm.cpp in Sources */, 1A57009F180BC5D20088DEC7 /* CCNode.cpp in Sources */, 1A57010F180BC8EE0088DEC7 /* CCDrawingPrimitives.cpp in Sources */, B665E3F31AA80A6600DDB1C5 /* CCPUSlaveEmitter.cpp in Sources */, @@ -8981,32 +11530,41 @@ B29A7E0019EE1B7700872B35 /* Json.c in Sources */, 1A570120180BC90D0088DEC7 /* CCGrid.cpp in Sources */, 15AE181119AAD2F700C27E9E /* CCAnimation3D.cpp in Sources */, + B6CAB2201AF9AA1A00B9B856 /* btBoxBoxDetector.cpp in Sources */, 5E9F612B1A3FFE3D0038DE01 /* CCPlane.cpp in Sources */, 1A57019E180BCB590088DEC7 /* CCFont.cpp in Sources */, 15AE1ACC19AAD40300C27E9E /* b2PrismaticJoint.cpp in Sources */, 15AE195F19AAD35100C27E9E /* CCSpriteFrameCacheHelper.cpp in Sources */, 15AE193019AAD35100C27E9E /* CCActionManagerEx.cpp in Sources */, 15B3708119EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp in Sources */, + B6CAB3F81AF9AA1A00B9B856 /* btMultiBody.cpp in Sources */, 503DD8E21926736A00CD74DD /* CCCommon-ios.mm in Sources */, 292DB14A19B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */, + B6CAB2561AF9AA1A00B9B856 /* btGhostObject.cpp in Sources */, 15AE1A9419AAD40300C27E9E /* b2BlockAllocator.cpp in Sources */, B29A7E3C19EE1B7700872B35 /* Animation.c in Sources */, 15AE1A4D19AAD3D500C27E9E /* b2PolygonShape.cpp in Sources */, + B6CAB3D61AF9AA1A00B9B856 /* btSolve2LinearConstraint.cpp in Sources */, + B6CAB30C1AF9AA1A00B9B856 /* btTriangleMeshShape.cpp in Sources */, 1A5701A2180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */, 3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */, + B6CAB41A1AF9AA1A00B9B856 /* btDantzigLCP.cpp in Sources */, 50ABC00E1926664800A911A9 /* CCFileUtils.cpp in Sources */, 299CF1FC19A434BC00C378C1 /* ccRandom.cpp in Sources */, DA8C62A319E52C6400000516 /* ioapi_mem.cpp in Sources */, 382384371A259126002C4610 /* ProjectNodeReader.cpp in Sources */, 15AE18C919AAD33D00C27E9E /* CCMenuItemLoader.cpp in Sources */, + B6CAB28A1AF9AA1A00B9B856 /* btCapsuleShape.cpp in Sources */, B665E2831AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandler.cpp in Sources */, 50ABBE241925AB6F00A911A9 /* base64.cpp in Sources */, B665E36F1AA80A6500DDB1C5 /* CCPUOnVelocityObserverTranslator.cpp in Sources */, 1A5701A6180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */, 15AE192B19AAD35100C27E9E /* TriggerObj.cpp in Sources */, + B6CAAFEB1AF9A9E100B9B856 /* CCPhysics3DConstraint.cpp in Sources */, 4D76BE3B1A4AAF0A00102962 /* CCActionTimelineNode.cpp in Sources */, 15AE198519AAD36400C27E9E /* WidgetReader.cpp in Sources */, B665E36B1AA80A6500DDB1C5 /* CCPUOnVelocityObserver.cpp in Sources */, + B6CAB4E41AF9AA1A00B9B856 /* SpuSampleTaskProcess.cpp in Sources */, B665E3171AA80A6500DDB1C5 /* CCPUObserverTranslator.cpp in Sources */, 15AE1AAA19AAD40300C27E9E /* b2World.cpp in Sources */, B665E2031AA80A6500DDB1C5 /* CCPUAlignAffectorTranslator.cpp in Sources */, @@ -9019,30 +11577,42 @@ 292DB16019B461CA00A80320 /* ExtensionDeprecated.cpp in Sources */, 50ABBEAC1925AB6F00A911A9 /* ccTypes.cpp in Sources */, 15AE196A19AAD35100C27E9E /* DictionaryHelper.cpp in Sources */, + B6CAB3901AF9AA1A00B9B856 /* btRaycastCallback.cpp in Sources */, + B6CAB3CE1AF9AA1A00B9B856 /* btSequentialImpulseConstraintSolver.cpp in Sources */, B665E26B1AA80A6500DDB1C5 /* CCPUDoFreezeEventHandler.cpp in Sources */, 15AE1A3F19AAD3D500C27E9E /* b2Collision.cpp in Sources */, 1A5701BA180BCB5A0088DEC7 /* CCLabel.cpp in Sources */, 15AE18AD19AAD33D00C27E9E /* CCBFileLoader.cpp in Sources */, + B6CAB1F61AF9AA1A00B9B856 /* btDbvt.cpp in Sources */, 15AE18AB19AAD33D00C27E9E /* CCBAnimationManager.cpp in Sources */, 15AE1B7219AADA9A00C27E9E /* UIListView.cpp in Sources */, 1A5701BE180BCB5A0088DEC7 /* CCLabelAtlas.cpp in Sources */, + B6CAB2021AF9AA1A00B9B856 /* btMultiSapBroadphase.cpp in Sources */, 15FB20751AE7BF8600C31518 /* MarchingSquare.cpp in Sources */, 15AE1A3D19AAD3D500C27E9E /* b2CollideEdge.cpp in Sources */, 1A5701C2180BCB5A0088DEC7 /* CCLabelBMFont.cpp in Sources */, 1A087AE91860400400196EF5 /* edtaa3func.cpp in Sources */, B665E33F1AA80A6500DDB1C5 /* CCPUOnEventFlagObserverTranslator.cpp in Sources */, 15AE194219AAD35100C27E9E /* CCColliderDetector.cpp in Sources */, + B6CAB37C1AF9AA1A00B9B856 /* btGjkPairDetector.cpp in Sources */, 15AE1A9919AAD40300C27E9E /* b2Math.cpp in Sources */, + B6CAB2621AF9AA1A00B9B856 /* btManifoldResult.cpp in Sources */, B665E3771AA80A6500DDB1C5 /* CCPUParticleFollowerTranslator.cpp in Sources */, + B6CAB4CA1AF9AA1A00B9B856 /* SpuCollisionShapes.cpp in Sources */, 15AE1B7C19AADA9A00C27E9E /* UISlider.cpp in Sources */, + B6CAAFFB1AF9A9E100B9B856 /* CCPhysics3DWorld.cpp in Sources */, B665E3471AA80A6500DDB1C5 /* CCPUOnExpireObserverTranslator.cpp in Sources */, + B6CAB2A41AF9AA1A00B9B856 /* btConvexHullShape.cpp in Sources */, 15AE1AA519AAD40300C27E9E /* b2Fixture.cpp in Sources */, B29A7DE219EE1B7700872B35 /* MeshAttachment.c in Sources */, B6D38B8F1AC3AFAC00043997 /* CCTextureCube.cpp in Sources */, + B6CAB2C01AF9AA1A00B9B856 /* btEmptyShape.cpp in Sources */, 15AE1BAD19AADFDF00C27E9E /* UILayoutParameter.cpp in Sources */, 3823843E1A259140002C4610 /* SingleNodeReader.cpp in Sources */, + B6CAB2721AF9AA1A00B9B856 /* btSphereTriangleCollisionAlgorithm.cpp in Sources */, B29A7DDE19EE1B7700872B35 /* BoneData.c in Sources */, B665E28B1AA80A6500DDB1C5 /* CCPUDynamicAttribute.cpp in Sources */, + B6CAB5481AF9AA1A00B9B856 /* MiniCLTaskScheduler.cpp in Sources */, 15AE19AA19AAD39700C27E9E /* ListViewReader.cpp in Sources */, 1A5701C8180BCB5A0088DEC7 /* CCLabelTextFormatter.cpp in Sources */, 1A5701CC180BCB5A0088DEC7 /* CCLabelTTF.cpp in Sources */, @@ -9052,6 +11622,7 @@ B665E4171AA80A6600DDB1C5 /* CCPUTextureAnimatorTranslator.cpp in Sources */, 15FB20941AE7C57D00C31518 /* cdt.cc in Sources */, B665E34B1AA80A6500DDB1C5 /* CCPUOnPositionObserver.cpp in Sources */, + B6CAB42A1AF9AA1A00B9B856 /* btRaycastVehicle.cpp in Sources */, 15AE1AD619AAD40300C27E9E /* b2WheelJoint.cpp in Sources */, 299754F5193EC95400A54AC3 /* ObjectFactory.cpp in Sources */, 1A5701DF180BCB8C0088DEC7 /* CCLayer.cpp in Sources */, @@ -9064,6 +11635,7 @@ 18956BB31A9DFBFD006E9155 /* Particle3DReader.cpp in Sources */, 15AE184519AAD2F700C27E9E /* CCSprite3DMaterial.cpp in Sources */, 50ABBD9C1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */, + B6CAB5061AF9AA1A00B9B856 /* btGeometryUtil.cpp in Sources */, B665E25F1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandlerTranslator.cpp in Sources */, 1A5701E7180BCB8C0088DEC7 /* CCTransition.cpp in Sources */, 15AE1AC019AAD40300C27E9E /* b2MotorJoint.cpp in Sources */, @@ -9083,7 +11655,9 @@ 382384141A259092002C4610 /* NodeReaderProtocol.cpp in Sources */, 50ABBD511925AB0000A911A9 /* Quaternion.cpp in Sources */, 1A5701FC180BCBAD0088DEC7 /* CCMenuItem.cpp in Sources */, + B6CAB4201AF9AA1A00B9B856 /* btMLCPSolver.cpp in Sources */, B665E2A71AA80A6500DDB1C5 /* CCPUEventHandlerTranslator.cpp in Sources */, + B6CAB4341AF9AA1A00B9B856 /* btGpu3DGridBroadphase.cpp in Sources */, 15AE195119AAD35100C27E9E /* CCDecorativeDisplay.cpp in Sources */, 15AE19BA19AAD39700C27E9E /* TextReader.cpp in Sources */, 50ABBD491925AB0000A911A9 /* Mat4.cpp in Sources */, @@ -9096,8 +11670,10 @@ 15AE197719AAD35700C27E9E /* CCActionTimeline.cpp in Sources */, 15AE19B419AAD39700C27E9E /* TextAtlasReader.cpp in Sources */, B665E2A31AA80A6500DDB1C5 /* CCPUEventHandlerManager.cpp in Sources */, + B6CAB3601AF9AA1A00B9B856 /* gim_tri_collision.cpp in Sources */, 15AE194019AAD35100C27E9E /* CCBone.cpp in Sources */, 1A570215180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, + B6CAB2EE1AF9AA1A00B9B856 /* btStridingMeshInterface.cpp in Sources */, 1A570222180BCC1A0088DEC7 /* CCParticleBatchNode.cpp in Sources */, 292DB15019B4574100A80320 /* UIEditBoxImpl-stub.cpp in Sources */, B665E25B1AA80A6500DDB1C5 /* CCPUDoEnableComponentEventHandler.cpp in Sources */, @@ -9105,7 +11681,9 @@ 15AE185F19AAD31200C27E9E /* SimpleAudioEngine.mm in Sources */, B29A7DC819EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */, 15AE1BE819AAE01E00C27E9E /* CCControl.cpp in Sources */, + B6CAB4081AF9AA1A00B9B856 /* btMultiBodyJointLimitConstraint.cpp in Sources */, 1A570226180BCC1A0088DEC7 /* CCParticleExamples.cpp in Sources */, + B6CAB24A1AF9AA1A00B9B856 /* btConvexPlaneCollisionAlgorithm.cpp in Sources */, 15AE194919AAD35100C27E9E /* CCComController.cpp in Sources */, B603F1A91AC8EA0900A9579C /* CCTerrain.cpp in Sources */, B665E3CF1AA80A6600DDB1C5 /* CCPUScriptCompiler.cpp in Sources */, @@ -9114,6 +11692,7 @@ 3EACC9A119F5014D00EB3C5E /* CCCamera.cpp in Sources */, B665E3E71AA80A6600DDB1C5 /* CCPUSineForceAffectorTranslator.cpp in Sources */, 15AE1BBD19AADFF000C27E9E /* SocketIO.cpp in Sources */, + B6CAB1FA1AF9AA1A00B9B856 /* btDbvtBroadphase.cpp in Sources */, 15AE1A4319AAD3D500C27E9E /* b2DynamicTree.cpp in Sources */, 15AE1A3A19AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */, B665E42B1AA80A6600DDB1C5 /* CCPUVelocityMatchingAffector.cpp in Sources */, @@ -9122,6 +11701,7 @@ 15AE1BFD19AAE01E00C27E9E /* CCInvocation.cpp in Sources */, B24AA98A195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */, 38F5263F1A48363B000DB7F7 /* ArmatureNodeReader.cpp in Sources */, + B6CAB24E1AF9AA1A00B9B856 /* btDefaultCollisionConfiguration.cpp in Sources */, B665E2AB1AA80A6500DDB1C5 /* CCPUFlockCenteringAffector.cpp in Sources */, B665E3671AA80A6500DDB1C5 /* CCPUOnTimeObserverTranslator.cpp in Sources */, B665E27B1AA80A6500DDB1C5 /* CCPUDoScaleEventHandler.cpp in Sources */, @@ -9132,27 +11712,35 @@ B665E2C31AA80A6500DDB1C5 /* CCPUGeometryRotatorTranslator.cpp in Sources */, B29A7DF219EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */, 15AE1AC619AAD40300C27E9E /* b2GearJoint.cpp in Sources */, + B6CAB3301AF9AA1A00B9B856 /* btGImpactQuantizedBvh.cpp in Sources */, B24AA986195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */, 1A57022E180BCC1A0088DEC7 /* CCParticleSystemQuad.cpp in Sources */, 50ABBD901925AB4100A911A9 /* CCGLProgramCache.cpp in Sources */, 15AE197F19AAD35700C27E9E /* CCTimeLine.cpp in Sources */, B29A7DD819EE1B7700872B35 /* SkeletonData.c in Sources */, + B6CAB2F61AF9AA1A00B9B856 /* btTriangleBuffer.cpp in Sources */, 1A57027F180BCC900088DEC7 /* CCSprite.cpp in Sources */, + B6CAB1FE1AF9AA1A00B9B856 /* btDispatcher.cpp in Sources */, B665E24F1AA80A6500DDB1C5 /* CCPUColorAffectorTranslator.cpp in Sources */, 15AE194719AAD35100C27E9E /* CCComAudio.cpp in Sources */, 15AE192719AAD35100C27E9E /* TriggerBase.cpp in Sources */, 15AE1B8819AADA9A00C27E9E /* UICheckBox.cpp in Sources */, 15AE1A4B19AAD3D500C27E9E /* b2EdgeShape.cpp in Sources */, + B6CAB3DE1AF9AA1A00B9B856 /* btTypedConstraint.cpp in Sources */, B665E3231AA80A6500DDB1C5 /* CCPUOnCollisionObserver.cpp in Sources */, B665E3271AA80A6500DDB1C5 /* CCPUOnCollisionObserverTranslator.cpp in Sources */, 15AE18B519AAD33D00C27E9E /* CCBSequence.cpp in Sources */, B665E3C31AA80A6600DDB1C5 /* CCPUScaleAffectorTranslator.cpp in Sources */, B665E2631AA80A6500DDB1C5 /* CCPUDoExpireEventHandler.cpp in Sources */, + B6CAB4441AF9AA1A00B9B856 /* btParallelConstraintSolver.cpp in Sources */, B29A7DD619EE1B7700872B35 /* RegionAttachment.c in Sources */, 1A570283180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */, + B6CAB23A1AF9AA1A00B9B856 /* btCompoundCompoundCollisionAlgorithm.cpp in Sources */, B665E2F71AA80A6500DDB1C5 /* CCPUListener.cpp in Sources */, 1A570287180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */, + B6CAB3AA1AF9AA1A00B9B856 /* btContactConstraint.cpp in Sources */, B665E2431AA80A6500DDB1C5 /* CCPUCollisionAvoidanceAffector.cpp in Sources */, + B6CAB23E1AF9AA1A00B9B856 /* btConvex2dConvex2dAlgorithm.cpp in Sources */, B665E3EB1AA80A6600DDB1C5 /* CCPUSlaveBehaviour.cpp in Sources */, B665E2771AA80A6500DDB1C5 /* CCPUDoPlacementParticleEventHandlerTranslator.cpp in Sources */, 15AE193E19AAD35100C27E9E /* CCBatchNode.cpp in Sources */, @@ -9172,12 +11760,14 @@ 50ABBE321925AB6F00A911A9 /* CCConfiguration.cpp in Sources */, 15AE1A9F19AAD40300C27E9E /* b2Timer.cpp in Sources */, 15AE1AD419AAD40300C27E9E /* b2WeldJoint.cpp in Sources */, + B6CAB2181AF9AA1A00B9B856 /* btBox2dBox2dCollisionAlgorithm.cpp in Sources */, 1A5702C9180BCE370088DEC7 /* CCTextFieldTTF.cpp in Sources */, 15AE1C1719AAE2C700C27E9E /* CCPhysicsSprite.cpp in Sources */, 1A5702EB180BCE750088DEC7 /* CCTileMapAtlas.cpp in Sources */, B665E4131AA80A6600DDB1C5 /* CCPUTextureAnimator.cpp in Sources */, 1A5702EF180BCE750088DEC7 /* CCTMXLayer.cpp in Sources */, 15AE1BA519AADFDF00C27E9E /* UIHBox.cpp in Sources */, + B6CAB3741AF9AA1A00B9B856 /* btGjkEpa2.cpp in Sources */, B665E3DB1AA80A6600DDB1C5 /* CCPUScriptTranslator.cpp in Sources */, B665E33B1AA80A6500DDB1C5 /* CCPUOnEventFlagObserver.cpp in Sources */, 1A5702F3180BCE750088DEC7 /* CCTMXObjectGroup.cpp in Sources */, @@ -9188,26 +11778,35 @@ 50ABBD3D1925AB0000A911A9 /* CCGeometry.cpp in Sources */, B665E30B1AA80A6500DDB1C5 /* CCPUNoise.cpp in Sources */, B665E26F1AA80A6500DDB1C5 /* CCPUDoFreezeEventHandlerTranslator.cpp in Sources */, + B6CAB51A1AF9AA1A00B9B856 /* btPolarDecomposition.cpp in Sources */, 15AE18D919AAD33D00C27E9E /* CCSpriteLoader.cpp in Sources */, 50ABBECC1925AB6F00A911A9 /* s3tc.cpp in Sources */, 15AE1B7819AADA9A00C27E9E /* UIRichText.cpp in Sources */, B29A7E3019EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */, 15AE195D19AAD35100C27E9E /* CCSkin.cpp in Sources */, B665E2DB1AA80A6500DDB1C5 /* CCPUJetAffectorTranslator.cpp in Sources */, + B6CAB25A1AF9AA1A00B9B856 /* btHashedSimplePairCache.cpp in Sources */, + B6CAB2E61AF9AA1A00B9B856 /* btSphereShape.cpp in Sources */, + B6CAB2B81AF9AA1A00B9B856 /* btConvexTriangleMeshShape.cpp in Sources */, + B6CAB27A1AF9AA1A00B9B856 /* SphereTriangleDetector.cpp in Sources */, 1A5702F7180BCE750088DEC7 /* CCTMXTiledMap.cpp in Sources */, 50ABBEC61925AB6F00A911A9 /* etc1.cpp in Sources */, 50ABBE8C1925AB6F00A911A9 /* CCNS.cpp in Sources */, B29A7DE019EE1B7700872B35 /* IkConstraintData.c in Sources */, + B6CAB40C1AF9AA1A00B9B856 /* btMultiBodyJointMotor.cpp in Sources */, + B6CAB2D21AF9AA1A00B9B856 /* btMultiSphereShape.cpp in Sources */, B29A7DFC19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */, D0FD03501A3B51AA00825BB5 /* CCAllocatorGlobal.cpp in Sources */, B665E2231AA80A6500DDB1C5 /* CCPUBehaviourTranslator.cpp in Sources */, B665E3D71AA80A6600DDB1C5 /* CCPUScriptParser.cpp in Sources */, B665E2331AA80A6500DDB1C5 /* CCPUBoxEmitter.cpp in Sources */, 15AE1BA919AADFDF00C27E9E /* UIVBox.cpp in Sources */, + B6CAB3021AF9AA1A00B9B856 /* btTriangleIndexVertexMaterialArray.cpp in Sources */, 50ABBDAE1925AB4100A911A9 /* CCRenderer.cpp in Sources */, B665E3AF1AA80A6500DDB1C5 /* CCPURender.cpp in Sources */, 382383FB1A258FA7002C4610 /* idl_gen_go.cpp in Sources */, B665E2EF1AA80A6500DDB1C5 /* CCPULineEmitter.cpp in Sources */, + B6CAB2EA1AF9AA1A00B9B856 /* btStaticPlaneShape.cpp in Sources */, 38D9629E1ACA9721007C6FAF /* CocoStudio.cpp in Sources */, 50ABBDBA1925AB4100A911A9 /* CCTextureAtlas.cpp in Sources */, 1A5702FB180BCE750088DEC7 /* CCTMXXMLParser.cpp in Sources */, @@ -9215,8 +11814,10 @@ 1A570301180BCE890088DEC7 /* CCParallaxNode.cpp in Sources */, B665E1FF1AA80A6500DDB1C5 /* CCPUAlignAffector.cpp in Sources */, 15AE1A4519AAD3D500C27E9E /* b2TimeOfImpact.cpp in Sources */, + B6CAB3681AF9AA1A00B9B856 /* btConvexCast.cpp in Sources */, 1A57030D180BCF190088DEC7 /* CCComponent.cpp in Sources */, 15AE1B8F19AADA9A00C27E9E /* UIDeprecated.cpp in Sources */, + B6CAB2BC1AF9AA1A00B9B856 /* btCylinderShape.cpp in Sources */, 464AD6E6197EBB1400E502D8 /* pvr.cpp in Sources */, 5E9F61271A3FFE3D0038DE01 /* CCFrustum.cpp in Sources */, B665E22B1AA80A6500DDB1C5 /* CCPUBoxCollider.cpp in Sources */, @@ -9229,7 +11830,9 @@ 15AE195319AAD35100C27E9E /* CCDisplayFactory.cpp in Sources */, 182C5CD71A98F30500C30D34 /* Sprite3DReader.cpp in Sources */, 50ABC0061926664800A911A9 /* CCThread-apple.mm in Sources */, + B6CAB4B81AF9AA1A00B9B856 /* SpuFakeDma.cpp in Sources */, 50ABBEB61925AB6F00A911A9 /* CCUserDefault-android.cpp in Sources */, + B6CAB4481AF9AA1A00B9B856 /* btThreadSupportInterface.cpp in Sources */, 1A57034C180BD09B0088DEC7 /* tinyxml2.cpp in Sources */, 50ABBDB61925AB4100A911A9 /* CCTexture2D.cpp in Sources */, B665E2871AA80A6500DDB1C5 /* CCPUDoStopSystemEventHandlerTranslator.cpp in Sources */, @@ -9244,6 +11847,7 @@ 382384101A259092002C4610 /* NodeReaderDefine.cpp in Sources */, 15AE195B19AAD35100C27E9E /* CCSGUIReader.cpp in Sources */, 50ABBD881925AB4100A911A9 /* CCCustomCommand.cpp in Sources */, + B6CAB4301AF9AA1A00B9B856 /* btWheelInfo.cpp in Sources */, 15AE19B019AAD39700C27E9E /* ScrollViewReader.cpp in Sources */, 50ABBE941925AB6F00A911A9 /* CCProfiling.cpp in Sources */, 5012169B1AC473A3009A4BEA /* CCTechnique.cpp in Sources */, @@ -9251,38 +11855,57 @@ 50ABBE5E1925AB6F00A911A9 /* CCEventListener.cpp in Sources */, 5012168F1AC47380009A4BEA /* CCRenderState.cpp in Sources */, 15AE1BC719AAE00000C27E9E /* AssetsManager.cpp in Sources */, + B6CAB3861AF9AA1A00B9B856 /* btPersistentManifold.cpp in Sources */, 50ABBEA81925AB6F00A911A9 /* CCTouch.cpp in Sources */, B29A7DEE19EE1B7700872B35 /* IkConstraint.c in Sources */, + B6CAB3781AF9AA1A00B9B856 /* btGjkEpaPenetrationDepthSolver.cpp in Sources */, B665E37F1AA80A6500DDB1C5 /* CCPUParticleSystem3DTranslator.cpp in Sources */, 15AE1A9619AAD40300C27E9E /* b2Draw.cpp in Sources */, 503DD8E91926736A00CD74DD /* CCES2Renderer-ios.m in Sources */, 5027253D190BF1B900AAF4ED /* cocos2d.cpp in Sources */, B29A7E0819EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */, + B6CAB3F61AF9AA1A00B9B856 /* Bullet-C-API.cpp in Sources */, + B6CAB2AC1AF9AA1A00B9B856 /* btConvexPointCloudShape.cpp in Sources */, + B6CAB22C1AF9AA1A00B9B856 /* btCollisionObject.cpp in Sources */, 15AE183919AAD2F700C27E9E /* CCRay.cpp in Sources */, 15FB206B1AE7BE7400C31518 /* SpritePolygon.cpp in Sources */, 15AE1B8219AADA9A00C27E9E /* UITextBMFont.cpp in Sources */, + B6CAB29C1AF9AA1A00B9B856 /* btConeShape.cpp in Sources */, 50ABBE6A1925AB6F00A911A9 /* CCEventListenerFocus.cpp in Sources */, + B6CAB3201AF9AA1A00B9B856 /* btGenericPoolAllocator.cpp in Sources */, 50ABBE661925AB6F00A911A9 /* CCEventListenerCustom.cpp in Sources */, 503DD8F81926B0DB00CD74DD /* CCIMEDispatcher.cpp in Sources */, 50ABBDB21925AB4100A911A9 /* ccShaders.cpp in Sources */, 50ABBD451925AB0000A911A9 /* CCVertex.cpp in Sources */, 50ABBEB01925AB6F00A911A9 /* CCUserDefault.cpp in Sources */, + B6CAB3E21AF9AA1A00B9B856 /* btUniversalConstraint.cpp in Sources */, 50ABBE521925AB6F00A911A9 /* CCEventDispatcher.cpp in Sources */, + B6CAB3821AF9AA1A00B9B856 /* btMinkowskiPenetrationDepthSolver.cpp in Sources */, + B6CAB3641AF9AA1A00B9B856 /* btContinuousConvexCollision.cpp in Sources */, 52B47A2F1A5349A3004E4C60 /* HttpAsynConnection.m in Sources */, B665E23B1AA80A6500DDB1C5 /* CCPUCircleEmitter.cpp in Sources */, 15AE1B8019AADA9A00C27E9E /* UITextAtlas.cpp in Sources */, 15AE195919AAD35100C27E9E /* CCProcessBase.cpp in Sources */, B665E3FF1AA80A6600DDB1C5 /* CCPUSphereCollider.cpp in Sources */, 15AE18D319AAD33D00C27E9E /* CCParticleSystemQuadLoader.cpp in Sources */, + B6CAB4CE1AF9AA1A00B9B856 /* SpuContactResult.cpp in Sources */, + B6CAB3C41AF9AA1A00B9B856 /* btHingeConstraint.cpp in Sources */, + B6CAB52C1AF9AA1A00B9B856 /* btSerializer.cpp in Sources */, B665E2371AA80A6500DDB1C5 /* CCPUBoxEmitterTranslator.cpp in Sources */, 15AE196319AAD35100C27E9E /* CCTransformHelp.cpp in Sources */, + B6CAB34C1AF9AA1A00B9B856 /* gim_contact.cpp in Sources */, 15AE19A819AAD39700C27E9E /* LayoutReader.cpp in Sources */, 1A01C68B18F57BE800EFE3A6 /* CCDeprecated.cpp in Sources */, 15AE195719AAD35100C27E9E /* CCInputDelegate.cpp in Sources */, + B6CAB32A1AF9AA1A00B9B856 /* btGImpactCollisionAlgorithm.cpp in Sources */, 15AE1B8A19AADA9A00C27E9E /* UIImageView.cpp in Sources */, 50ABBD391925AB0000A911A9 /* CCAffineTransform.cpp in Sources */, + B6CAB5421AF9AA1A00B9B856 /* MiniCL.cpp in Sources */, + B6CAB4AE1AF9AA1A00B9B856 /* SpuCollisionTaskProcess.cpp in Sources */, B665E3831AA80A6500DDB1C5 /* CCPUPathFollower.cpp in Sources */, 15AE1C1519AAE2C700C27E9E /* CCPhysicsDebugNode.cpp in Sources */, + B6CAB31C1AF9AA1A00B9B856 /* btContactProcessing.cpp in Sources */, + B6CAB4141AF9AA1A00B9B856 /* btMultiBodyPoint2Point.cpp in Sources */, 50ABBD841925AB4100A911A9 /* CCBatchCommand.cpp in Sources */, B665E2171AA80A6500DDB1C5 /* CCPUBeamRender.cpp in Sources */, 50ABBDA81925AB4100A911A9 /* CCRenderCommand.cpp in Sources */, @@ -9293,8 +11916,10 @@ B665E20F1AA80A6500DDB1C5 /* CCPUBaseForceAffector.cpp in Sources */, 15AE1B7419AADA9A00C27E9E /* UILoadingBar.cpp in Sources */, 50ABBEA41925AB6F00A911A9 /* CCScriptSupport.cpp in Sources */, + B6CAB3E81AF9AA1A00B9B856 /* btDiscreteDynamicsWorld.cpp in Sources */, 501216A11AC473AD009A4BEA /* CCMaterial.cpp in Sources */, B665E3971AA80A6500DDB1C5 /* CCPUPointEmitter.cpp in Sources */, + B6CAB1E81AF9AA1A00B9B856 /* btAxisSweep3.cpp in Sources */, B29A7DD219EE1B7700872B35 /* Skin.c in Sources */, 3E6176761960F89B00DE83F5 /* CCEventListenerController.cpp in Sources */, 15AE1AC219AAD40300C27E9E /* b2DistanceJoint.cpp in Sources */, @@ -9304,12 +11929,16 @@ 52B47A311A5349A3004E4C60 /* HttpCookie.cpp in Sources */, 15B3707919EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */, 50ABBDA41925AB4100A911A9 /* CCQuadCommand.cpp in Sources */, + B6CAB2981AF9AA1A00B9B856 /* btConcaveShape.cpp in Sources */, 15AE18C319AAD33D00C27E9E /* CCLayerGradientLoader.cpp in Sources */, + B6CAB2CE1AF9AA1A00B9B856 /* btMultimaterialTriangleMeshShape.cpp in Sources */, 15AE197919AAD35700C27E9E /* CCActionTimelineCache.cpp in Sources */, 1AAF5850180E40B9000584C8 /* LocalStorage.cpp in Sources */, 50ED2BE519BEAF7900A0AB90 /* UIEditBoxImpl-win32.cpp in Sources */, 15AE192E19AAD35100C27E9E /* CCActionFrameEasing.cpp in Sources */, + B6CAB2281AF9AA1A00B9B856 /* btCollisionDispatcher.cpp in Sources */, B665E3531AA80A6500DDB1C5 /* CCPUOnQuotaObserver.cpp in Sources */, + B6CAB4DA1AF9AA1A00B9B856 /* SpuMinkowskiPenetrationDepthSolver.cpp in Sources */, B665E29F1AA80A6500DDB1C5 /* CCPUEventHandler.cpp in Sources */, 15AE195519AAD35100C27E9E /* CCDisplayManager.cpp in Sources */, B665E43B1AA80A6600DDB1C5 /* CCPUVortexAffectorTranslator.cpp in Sources */, @@ -9317,6 +11946,7 @@ 15AE1BA719AADFDF00C27E9E /* UIRelativeBox.cpp in Sources */, 15AE1ACE19AAD40300C27E9E /* b2PulleyJoint.cpp in Sources */, B665E2DF1AA80A6500DDB1C5 /* CCPULineAffector.cpp in Sources */, + B6CAB2E21AF9AA1A00B9B856 /* btShapeHull.cpp in Sources */, 1A9DCA28180E6955007A3AD4 /* CCGLBufferedNode.cpp in Sources */, 15AE1BF919AAE01E00C27E9E /* CCControlSwitch.cpp in Sources */, B665E3FB1AA80A6600DDB1C5 /* CCPUSphere.cpp in Sources */, @@ -9324,46 +11954,60 @@ B665E20B1AA80A6500DDB1C5 /* CCPUBaseColliderTranslator.cpp in Sources */, B665E3D31AA80A6600DDB1C5 /* CCPUScriptLexer.cpp in Sources */, 50ABBE201925AB6F00A911A9 /* atitc.cpp in Sources */, + B6CAB2101AF9AA1A00B9B856 /* btSimpleBroadphase.cpp in Sources */, B665E3131AA80A6500DDB1C5 /* CCPUObserverManager.cpp in Sources */, 50CB248019D9C5A100687767 /* AudioPlayer.mm in Sources */, 50ABBE9A1925AB6F00A911A9 /* CCRef.cpp in Sources */, 15AE18BF19AAD33D00C27E9E /* CCLabelTTFLoader.cpp in Sources */, + B6CAB27E1AF9AA1A00B9B856 /* btBox2dShape.cpp in Sources */, 15AE1B9519AADA9A00C27E9E /* CocosGUI.cpp in Sources */, B665E2BB1AA80A6500DDB1C5 /* CCPUForceFieldAffectorTranslator.cpp in Sources */, 15AE180919AAD2F700C27E9E /* CCAABB.cpp in Sources */, 15AE1AA719AAD40300C27E9E /* b2Island.cpp in Sources */, B665E23F1AA80A6500DDB1C5 /* CCPUCircleEmitterTranslator.cpp in Sources */, + B6CAB3A01AF9AA1A00B9B856 /* btKinematicCharacterController.cpp in Sources */, 3E6176741960F89B00DE83F5 /* CCEventController.cpp in Sources */, 182C5CB41A95964C00C30D34 /* Node3DReader.cpp in Sources */, B63990CD1A490AFE00B07923 /* CCAsyncTaskPool.cpp in Sources */, 50ABBE361925AB6F00A911A9 /* CCConsole.cpp in Sources */, B29A7E1419EE1B7700872B35 /* Bone.c in Sources */, + B6CAB4F01AF9AA1A00B9B856 /* Win32ThreadSupport.cpp in Sources */, B665E4371AA80A6600DDB1C5 /* CCPUVortexAffector.cpp in Sources */, B665E2F31AA80A6500DDB1C5 /* CCPULineEmitterTranslator.cpp in Sources */, B665E3731AA80A6500DDB1C5 /* CCPUParticleFollower.cpp in Sources */, B665E41F1AA80A6600DDB1C5 /* CCPUTextureRotatorTranslator.cpp in Sources */, 503DD8E51926736A00CD74DD /* CCDirectorCaller-ios.mm in Sources */, B665E2571AA80A6500DDB1C5 /* CCPUDoAffectorEventHandlerTranslator.cpp in Sources */, + B6CAAFF71AF9A9E100B9B856 /* CCPhysics3DShape.cpp in Sources */, 15AE194519AAD35100C27E9E /* CCComAttribute.cpp in Sources */, 15AE18CC19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.cpp in Sources */, 50CB247819D9C5A100687767 /* AudioCache.mm in Sources */, B665E4231AA80A6600DDB1C5 /* CCPUTranslateManager.cpp in Sources */, + B6CAB3081AF9AA1A00B9B856 /* btTriangleMesh.cpp in Sources */, 50ABBD5D1925AB0000A911A9 /* Vec3.cpp in Sources */, + B6CAB2061AF9AA1A00B9B856 /* btOverlappingPairCache.cpp in Sources */, 38B8E2D619E66581002D7CE7 /* CSLoader.cpp in Sources */, B665E3B31AA80A6500DDB1C5 /* CCPURendererTranslator.cpp in Sources */, + B6CAAFE71AF9A9E100B9B856 /* CCPhysics3DComponent.cpp in Sources */, + B6CAB2141AF9AA1A00B9B856 /* btActivatingCollisionAlgorithm.cpp in Sources */, + B6CAB26A1AF9AA1A00B9B856 /* btSphereBoxCollisionAlgorithm.cpp in Sources */, 50ABC0121926664800A911A9 /* CCGLView.cpp in Sources */, + B6CAB3EE1AF9AA1A00B9B856 /* btRigidBody.cpp in Sources */, B665E3871AA80A6500DDB1C5 /* CCPUPathFollowerTranslator.cpp in Sources */, B665E27F1AA80A6500DDB1C5 /* CCPUDoScaleEventHandlerTranslator.cpp in Sources */, 50ABC0021926664800A911A9 /* CCLock-apple.cpp in Sources */, + B6CAB33A1AF9AA1A00B9B856 /* btTriangleShapeEx.cpp in Sources */, 50ABBEBC1925AB6F00A911A9 /* ccUtils.cpp in Sources */, 15AE1A4719AAD3D500C27E9E /* b2ChainShape.cpp in Sources */, 50ABBE721925AB6F00A911A9 /* CCEventListenerMouse.cpp in Sources */, + B6CAB3B41AF9AA1A00B9B856 /* btGearConstraint.cpp in Sources */, B665E41B1AA80A6600DDB1C5 /* CCPUTextureRotator.cpp in Sources */, B665E2971AA80A6500DDB1C5 /* CCPUEmitterManager.cpp in Sources */, 50ABC0001926664800A911A9 /* CCFileUtils-apple.mm in Sources */, 50ABBEB81925AB6F00A911A9 /* ccUTF8.cpp in Sources */, 15AE194F19AAD35100C27E9E /* CCDatas.cpp in Sources */, 50ABBE841925AB6F00A911A9 /* ccFPSImages.c in Sources */, + B6CAB2C41AF9AA1A00B9B856 /* btHeightfieldTerrainShape.cpp in Sources */, 50ABBE4A1925AB6F00A911A9 /* CCEventAcceleration.cpp in Sources */, 15AE1AA319AAD40300C27E9E /* b2ContactManager.cpp in Sources */, B665E3A31AA80A6500DDB1C5 /* CCPUPositionEmitterTranslator.cpp in Sources */, @@ -9374,6 +12018,7 @@ B665E31F1AA80A6500DDB1C5 /* CCPUOnClearObserverTranslator.cpp in Sources */, B665E4331AA80A6600DDB1C5 /* CCPUVertexEmitter.cpp in Sources */, B665E3C71AA80A6600DDB1C5 /* CCPUScaleVelocityAffector.cpp in Sources */, + B6CAB26E1AF9AA1A00B9B856 /* btSphereSphereCollisionAlgorithm.cpp in Sources */, 50ABBED01925AB6F00A911A9 /* TGAlib.cpp in Sources */, 1A01C68518F57BE800EFE3A6 /* CCArray.cpp in Sources */, B665E2AF1AA80A6500DDB1C5 /* CCPUFlockCenteringAffectorTranslator.cpp in Sources */, @@ -9383,16 +12028,22 @@ B29A7DDC19EE1B7700872B35 /* Event.c in Sources */, 50ABBEB41925AB6F00A911A9 /* CCUserDefault-apple.mm in Sources */, 1A1645B1191B726C008C7C7F /* ConvertUTF.c in Sources */, + B6CAB2F21AF9AA1A00B9B856 /* btTetrahedronShape.cpp in Sources */, B665E2FF1AA80A6500DDB1C5 /* CCPUMaterialTranslator.cpp in Sources */, 50ABBE3A1925AB6F00A911A9 /* CCData.cpp in Sources */, + B6CAB3121AF9AA1A00B9B856 /* btUniformScalingShape.cpp in Sources */, 1A1645B3191B726C008C7C7F /* ConvertUTFWrapper.cpp in Sources */, 15B3708519EE414C00ABE682 /* Downloader.cpp in Sources */, 1ABA68AF1888D700007D1BB4 /* CCFontCharMap.cpp in Sources */, + B6CAB2DE1AF9AA1A00B9B856 /* btScaledBvhTriangleMeshShape.cpp in Sources */, 15AE180D19AAD2F700C27E9E /* CCAnimate3D.cpp in Sources */, + B6CAB1EE1AF9AA1A00B9B856 /* btBroadphaseProxy.cpp in Sources */, 50ABBE7A1925AB6F00A911A9 /* CCEventMouse.cpp in Sources */, B665E3BF1AA80A6500DDB1C5 /* CCPUScaleAffector.cpp in Sources */, 15EFA212198A2BB5000C57D3 /* CCProtectedNode.cpp in Sources */, 50ABBD981925AB4100A911A9 /* CCGLProgramStateCache.cpp in Sources */, + B6CAB4A61AF9AA1A00B9B856 /* SequentialThreadSupport.cpp in Sources */, + B6CAB25E1AF9AA1A00B9B856 /* btInternalEdgeUtility.cpp in Sources */, B665E3631AA80A6500DDB1C5 /* CCPUOnTimeObserver.cpp in Sources */, 15AE1BBF19AADFF000C27E9E /* WebSocket.cpp in Sources */, ); @@ -9417,6 +12068,7 @@ "COCOS2D_DEBUG=1", USE_FILE32API, "CC_ENABLE_CHIPMUNK_INTEGRATION=1", + "CC_ENABLE_BULLET_INTEGRATION=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; @@ -9451,6 +12103,7 @@ "CC_ENABLE_CHIPMUNK_INTEGRATION=1", NDEBUG, USE_FILE32API, + "CC_ENABLE_BULLET_INTEGRATION=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; diff --git a/build/cocos2d_tests.xcodeproj/project.pbxproj b/build/cocos2d_tests.xcodeproj/project.pbxproj index ec974eff9ade..eab49fc95a70 100644 --- a/build/cocos2d_tests.xcodeproj/project.pbxproj +++ b/build/cocos2d_tests.xcodeproj/project.pbxproj @@ -836,6 +836,8 @@ B63993321A49359F00B07923 /* Particle3D in Resources */ = {isa = PBXBuildFile; fileRef = B63993301A49359F00B07923 /* Particle3D */; }; B6C039D919C95D83007207DC /* LightTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C039D719C95D83007207DC /* LightTest.cpp */; }; B6C039DA19C95D83007207DC /* LightTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6C039D719C95D83007207DC /* LightTest.cpp */; }; + B6CAB54E1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */; }; + B6CAB54F1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */; }; C04F935A1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; }; C04F935B1941B05400E9FEAB /* TileMapTest2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C04F93581941B05400E9FEAB /* TileMapTest2.cpp */; }; C08689C118D370C90093E810 /* background.caf in Resources */ = {isa = PBXBuildFile; fileRef = C08689C018D370C90093E810 /* background.caf */; }; @@ -1781,6 +1783,8 @@ B63993301A49359F00B07923 /* Particle3D */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Particle3D; path = "../tests/cpp-tests/Resources/Particle3D"; sourceTree = ""; }; B6C039D719C95D83007207DC /* LightTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LightTest.cpp; path = LightTest/LightTest.cpp; sourceTree = ""; }; B6C039D819C95D83007207DC /* LightTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LightTest.h; path = LightTest/LightTest.h; sourceTree = ""; }; + B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Physics3DTest.cpp; path = Physics3DTest/Physics3DTest.cpp; sourceTree = ""; }; + B6CAB54D1AF9AA6C00B9B856 /* Physics3DTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Physics3DTest.h; path = Physics3DTest/Physics3DTest.h; sourceTree = ""; }; C04F93581941B05400E9FEAB /* TileMapTest2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TileMapTest2.cpp; sourceTree = ""; }; C04F93591941B05400E9FEAB /* TileMapTest2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TileMapTest2.h; sourceTree = ""; }; C08689C018D370C90093E810 /* background.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = background.caf; path = "../tests/cpp-tests/Resources/background.caf"; sourceTree = ""; }; @@ -2199,6 +2203,7 @@ 1AC3592418CECF0A00F37B72 /* Classes */ = { isa = PBXGroup; children = ( + B6CAB54B1AF9AA4B00B9B856 /* Physics3DTest */, 5046AB471AF2A8D80060550B /* MaterialSystemTest */, 6886696E1AE8E8A000C2CFD9 /* SpritePolygonTest */, B603F1AC1AC8EA2E00A9579C /* TerrainTest */, @@ -4030,6 +4035,15 @@ name = LightTest; sourceTree = ""; }; + B6CAB54B1AF9AA4B00B9B856 /* Physics3DTest */ = { + isa = PBXGroup; + children = ( + B6CAB54C1AF9AA6C00B9B856 /* Physics3DTest.cpp */, + B6CAB54D1AF9AA6C00B9B856 /* Physics3DTest.h */, + ); + name = Physics3DTest; + sourceTree = ""; + }; D0FD03611A3B543700825BB5 /* AllocatorTest */ = { isa = PBXGroup; children = ( @@ -4881,6 +4895,7 @@ 1AC35C2F18CECF0C00F37B72 /* PerformanceParticleTest.cpp in Sources */, 1AC35B4918CECF0C00F37B72 /* Bug-914.cpp in Sources */, 1AC35B6318CECF0C00F37B72 /* EffectsAdvancedTest.cpp in Sources */, + B6CAB54E1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */, B639932E1A490EC700B07923 /* Particle3DTest.cpp in Sources */, 1AC35C5F18CECF0C00F37B72 /* Paddle.cpp in Sources */, 1AC35BDB18CECF0C00F37B72 /* SceneEditorTest.cpp in Sources */, @@ -5049,6 +5064,7 @@ 1AC35BEC18CECF0C00F37B72 /* CCControlSliderTest.cpp in Sources */, 29080DB4191B595E0066F8DF /* UILayoutTest_Editor.cpp in Sources */, 1AC35C4E18CECF0C00F37B72 /* SpineTest.cpp in Sources */, + B6CAB54F1AF9AA6C00B9B856 /* Physics3DTest.cpp in Sources */, 1AC35C1E18CECF0C00F37B72 /* NewRendererTest.cpp in Sources */, 5EBEECB11995247000429821 /* DrawNode3D.cpp in Sources */, 1AC35B6818CECF0C00F37B72 /* AnimationsTestLayer.cpp in Sources */, @@ -5910,6 +5926,7 @@ "COCOS2D_DEBUG=1", USE_FILE32API, "CC_ENABLE_CHIPMUNK_INTEGRATION=1", + "CC_ENABLE_BULLET_INTEGRATION=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_TREAT_WARNINGS_AS_ERRORS = YES; @@ -5938,6 +5955,7 @@ NDEBUG, USE_FILE32API, "CC_ENABLE_CHIPMUNK_INTEGRATION=1", + "CC_ENABLE_BULLET_INTEGRATION=1", ); GCC_SYMBOLS_PRIVATE_EXTERN = YES; GCC_TREAT_WARNINGS_AS_ERRORS = YES; diff --git a/cocos/2d/CCComponentContainer.cpp b/cocos/2d/CCComponentContainer.cpp index 544b3d807770..0de3cd8cdc2d 100644 --- a/cocos/2d/CCComponentContainer.cpp +++ b/cocos/2d/CCComponentContainer.cpp @@ -156,4 +156,19 @@ bool ComponentContainer::isEmpty() const return (_components == nullptr || _components->empty()); } +void ComponentContainer::onEnter() +{ + for (auto iter = _components->begin(); iter != _components->end(); ++iter) + { + iter->second->onEnter(); + } +} +void ComponentContainer::onExit() +{ + for (auto iter = _components->begin(); iter != _components->end(); ++iter) + { + iter->second->onExit(); + } +} + NS_CC_END diff --git a/cocos/2d/CCComponentContainer.h b/cocos/2d/CCComponentContainer.h index a524384d406e..357e082eb327 100644 --- a/cocos/2d/CCComponentContainer.h +++ b/cocos/2d/CCComponentContainer.h @@ -58,6 +58,10 @@ class CC_DLL ComponentContainer virtual bool remove(Component *com); virtual void removeAll(); virtual void visit(float delta); + + virtual void onEnter(); + virtual void onExit(); + public: bool isEmpty() const; diff --git a/cocos/2d/CCScene.cpp b/cocos/2d/CCScene.cpp index b6e36ce5ff26..cffa555a3716 100644 --- a/cocos/2d/CCScene.cpp +++ b/cocos/2d/CCScene.cpp @@ -37,6 +37,11 @@ THE SOFTWARE. #include "physics/CCPhysicsWorld.h" #endif +#if CC_USE_3D_PHYSICS +#include "physics3d/CCPhysics3DWorld.h" +#include "physics3d/CCPhysics3DComponent.h" +#endif + NS_CC_BEGIN Scene::Scene() @@ -44,6 +49,10 @@ Scene::Scene() : _physicsWorld(nullptr) #endif { +#if CC_USE_3D_PHYSICS + _physics3DWorld = nullptr; + _physics3dDebugCamera = nullptr; +#endif _ignoreAnchorPointForPosition = true; setAnchorPoint(Vec2(0.5f, 0.5f)); @@ -61,6 +70,10 @@ Scene::~Scene() { #if CC_USE_PHYSICS CC_SAFE_DELETE(_physicsWorld); +#endif +#if CC_USE_3D_PHYSICS + CC_SAFE_RELEASE(_physics3DWorld); + CC_SAFE_RELEASE(_physics3dDebugCamera); #endif Director::getInstance()->getEventDispatcher()->removeEventListener(_event); CC_SAFE_RELEASE(_event); @@ -153,10 +166,22 @@ void Scene::render(Renderer* renderer) //visit the scene visit(renderer, transform, 0); + renderer->render(); director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); } + +#if CC_USE_3D_PHYSICS + if (_physics3DWorld && _physics3DWorld->isDebugDrawEnabled()) + { + director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); + director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION, _physics3dDebugCamera != nullptr ? _physics3dDebugCamera->getViewProjectionMatrix() : defaultCamera->getViewProjectionMatrix()); + _physics3DWorld->debugDraw(renderer); + renderer->render(); + director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); + } +#endif Camera::_visitingCamera = nullptr; } @@ -175,7 +200,16 @@ void Scene::removeAllChildren() } } -#if CC_USE_PHYSICS +#if CC_USE_3D_PHYSICS +void Scene::setPhysics3DDebugCamera(Camera* camera) +{ + CC_SAFE_RETAIN(camera); + CC_SAFE_RELEASE(_physics3dDebugCamera); + _physics3dDebugCamera = camera; +} +#endif + +#if (CC_USE_PHYSICS || CC_USE_3D_PHYSICS) void Scene::addChild(Node* child, int zOrder, int tag) { Node::addChild(child, zOrder, tag); @@ -212,7 +246,17 @@ bool Scene::initWithPhysics() CC_BREAK_IF( ! (director = Director::getInstance()) ); this->setContentSize(director->getWinSize()); +#if CC_USE_PHYSICS CC_BREAK_IF(! (_physicsWorld = PhysicsWorld::construct(*this))); +#endif + +#if CC_USE_3D_PHYSICS + Physics3DWorldDes info; + //TODO: FIX ME + //info.isDebugDrawEnabled = true; + CC_BREAK_IF(! (_physics3DWorld = Physics3DWorld::create(&info))); + _physics3DWorld->retain(); +#endif // success ret = true; @@ -222,6 +266,7 @@ bool Scene::initWithPhysics() void Scene::addChildToPhysicsWorld(Node* child) { +#if CC_USE_PHYSICS if (_physicsWorld) { std::function addToPhysicsWorldFunc = nullptr; @@ -242,6 +287,30 @@ void Scene::addChildToPhysicsWorld(Node* child) addToPhysicsWorldFunc(child); } +#endif + +#if CC_USE_3D_PHYSICS + if (_physics3DWorld) + { + std::function addToPhysicsWorldFunc = nullptr; + addToPhysicsWorldFunc = [this, &addToPhysicsWorldFunc](Node* node) -> void + { + static std::string comName = Physics3DComponent::getPhysics3DComponentName(); + auto com = static_cast(node->getComponent(comName)); + if (com) + { + com->addToPhysicsWorld(_physics3DWorld); + } + + auto& children = node->getChildren(); + for( const auto &n : children) { + addToPhysicsWorldFunc(n); + } + }; + + addToPhysicsWorldFunc(child); + } +#endif } #endif diff --git a/cocos/2d/CCScene.h b/cocos/2d/CCScene.h index ee2d2ef08c84..3671ba15512a 100644 --- a/cocos/2d/CCScene.h +++ b/cocos/2d/CCScene.h @@ -41,6 +41,9 @@ class EventCustom; #if CC_USE_PHYSICS class PhysicsWorld; #endif +#if CC_USE_3D_PHYSICS +class Physics3DWorld; +#endif /** * @addtogroup _2d * @{ @@ -136,15 +139,31 @@ class CC_DLL Scene : public Node private: CC_DISALLOW_COPY_AND_ASSIGN(Scene); -#if CC_USE_PHYSICS +#if (CC_USE_PHYSICS || CC_USE_3D_PHYSICS) public: virtual void addChild(Node* child, int zOrder, int tag) override; virtual void addChild(Node* child, int zOrder, const std::string &name) override; + +#if CC_USE_PHYSICS /** Get the physics world of the scene. * @return The physics world of the scene. * @js NA */ inline PhysicsWorld* getPhysicsWorld() { return _physicsWorld; } +#endif + +#if CC_USE_3D_PHYSICS + /** Get the 3d physics world of the scene. + * @return The 3d physics world of the scene. + * @js NA + */ + inline Physics3DWorld* getPhysics3DWorld() { return _physics3DWorld; } + + /** + * Set Physics3D debug draw camera. + */ + void setPhysics3DDebugCamera(Camera* camera); +#endif /** Create a scene with physics. * @return An autoreleased Scene object with physics. @@ -158,8 +177,15 @@ class CC_DLL Scene : public Node protected: void addChildToPhysicsWorld(Node* child); +#if CC_USE_PHYSICS PhysicsWorld* _physicsWorld; -#endif // CC_USE_PHYSICS +#endif + +#if CC_USE_3D_PHYSICS + Physics3DWorld* _physics3DWorld; + Camera* _physics3dDebugCamera; // +#endif +#endif // (CC_USE_PHYSICS || CC_USE_3D_PHYSICS) }; // end of _2d group diff --git a/cocos/2d/libcocos2d.vcxproj b/cocos/2d/libcocos2d.vcxproj index 38f343de770a..5b4f2c5f6d07 100644 --- a/cocos/2d/libcocos2d.vcxproj +++ b/cocos/2d/libcocos2d.vcxproj @@ -72,7 +72,7 @@ Disabled $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\box2d;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32;$(EngineRoot)external\poly2tri\common;$(EngineRoot)external\poly2tri\sweep;$(EngineRoot)external\poly2tri;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) - WIN32;_USRDLL;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) + WIN32;_USRDLL;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) false EnableFastChecks MultiThreadedDebugDLL @@ -113,7 +113,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\debug-lib\*.*" $(TargetDir)$(TargetName).lib MachineX86 cocos2d.def - sqlite3.lib;libcurl_imp.lib;websockets.lib;libmpg123.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;%(AdditionalDependencies) + sqlite3.lib;libcurl_imp.lib;websockets.lib;libmpg123.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;libbullet.lib;%(AdditionalDependencies) @@ -127,7 +127,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\debug-lib\*.*" $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\Box2d;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32\;$(EngineRoot)external\poly2tri\common;$(EngineRoot)external\poly2tri\sweep;$(EngineRoot)external\poly2tri;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) - WIN32;_USRDLL;NDEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) + WIN32;_USRDLL;NDEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) MultiThreadedDLL @@ -160,7 +160,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* - sqlite3.lib;libcurl_imp.lib;websockets.lib;libmpg123.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;%(AdditionalDependencies) + sqlite3.lib;libcurl_imp.lib;websockets.lib;libmpg123.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;libbullet.lib;%(AdditionalDependencies) $(OutDir)$(ProjectName).dll $(OutDir);%(AdditionalLibraryDirectories) LIBCMTD.lib;%(IgnoreSpecificDefaultLibraries) @@ -561,6 +561,14 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + + + + @@ -1140,6 +1148,14 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + + + + diff --git a/cocos/2d/libcocos2d.vcxproj.filters b/cocos/2d/libcocos2d.vcxproj.filters index 99f1bb68c2f1..82368bef4720 100644 --- a/cocos/2d/libcocos2d.vcxproj.filters +++ b/cocos/2d/libcocos2d.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -268,6 +268,9 @@ {c37eceeb-5702-4ff7-88de-94680a22266f} + + {e492faef-2169-4117-8d73-e0c66271fe25} + @@ -1827,6 +1830,30 @@ 2d + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + renderer @@ -3587,6 +3614,30 @@ 2d + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + + + physics3d + renderer diff --git a/cocos/3d/CCSprite3D.cpp b/cocos/3d/CCSprite3D.cpp index 2a4739f76a12..91531a147b58 100644 --- a/cocos/3d/CCSprite3D.cpp +++ b/cocos/3d/CCSprite3D.cpp @@ -297,6 +297,7 @@ bool Sprite3D::initWithFile(const std::string &path) Sprite3DCache::getInstance()->addSprite3DData(path, data); CC_SAFE_DELETE(meshdatas); + _contentSize = getBoundingBox().size; return true; } } diff --git a/cocos/3d/CCTerrain.cpp b/cocos/3d/CCTerrain.cpp index 3686b5d83d0a..af7f84740cfa 100644 --- a/cocos/3d/CCTerrain.cpp +++ b/cocos/3d/CCTerrain.cpp @@ -604,6 +604,20 @@ Terrain::QuadTree * Terrain::getQuadTree() return _quadRoot; } + +std::vector Terrain::getHeightData() const +{ + std::vector data; + data.resize(_imageWidth * _imageHeight); + for (int i = 0; i < _imageHeight; i++) { + for (int j = 0; j < _imageWidth; j++) { + int idx = i * _imageWidth + j; + data[idx] = (_vertices[idx]._position.y); + } + } + return data; +} + void Terrain::setAlphaMap(cocos2d::Texture2D * newAlphaMapTexture) { _alphaMap->release(); @@ -1495,4 +1509,5 @@ Terrain::DetailMap::DetailMap() _detailMapSrc = ""; _detailMapSize = 35; } + NS_CC_END diff --git a/cocos/3d/CCTerrain.h b/cocos/3d/CCTerrain.h index c19685dd21b1..3a85e1f67275 100644 --- a/cocos/3d/CCTerrain.h +++ b/cocos/3d/CCTerrain.h @@ -384,6 +384,17 @@ class CC_DLL Terrain :public Node QuadTree * getQuadTree(); void reload(); + + /** + * get the terrain's size + */ + Size getTerrainSize() const { return Size(_imageWidth, _imageHeight); } + + /** + * get the terrain's height data + */ + std::vector getHeightData() const; + protected: Terrain(); diff --git a/cocos/Android.mk b/cocos/Android.mk index 72efe8112753..ce6a61eba05d 100644 --- a/cocos/Android.mk +++ b/cocos/Android.mk @@ -192,6 +192,14 @@ physics/CCPhysicsContact.cpp \ physics/CCPhysicsJoint.cpp \ physics/CCPhysicsShape.cpp \ physics/CCPhysicsWorld.cpp \ +physics3d/CCPhysics3D.cpp \ +physics3d/CCPhysics3DWorld.cpp \ +physics3d/CCPhysics3DComponent.cpp \ +physics3d/CCPhysics3DDebugDrawer.cpp \ +physics3d/CCPhysics3DObject.cpp \ +physics3d/CCPhysics3DShape.cpp \ +physics3d/CCPhysicsSprite3D.cpp \ +physics3d/CCPhysics3DConstraint.cpp \ ../external/ConvertUTF/ConvertUTFWrapper.cpp \ ../external/ConvertUTF/ConvertUTF.c \ ../external/tinyxml2/tinyxml2.cpp \ @@ -272,6 +280,7 @@ LOCAL_STATIC_LIBRARIES += cocos3d_static LOCAL_STATIC_LIBRARIES += spine_static LOCAL_STATIC_LIBRARIES += cocos_network_static LOCAL_STATIC_LIBRARIES += audioengine_static +LOCAL_STATIC_LIBRARIES += bullet_static include $(BUILD_STATIC_LIBRARY) #============================================================== @@ -292,6 +301,7 @@ $(call import-module,network) $(call import-module,ui) $(call import-module,extensions) $(call import-module,Box2D) +$(call import-module,bullet) $(call import-module,curl/prebuilt/android) $(call import-module,websockets/prebuilt/android) $(call import-module,flatbuffers) diff --git a/cocos/CMakeLists.txt b/cocos/CMakeLists.txt index b7dd84066734..3a4e88b45354 100644 --- a/cocos/CMakeLists.txt +++ b/cocos/CMakeLists.txt @@ -35,6 +35,7 @@ include(2d/CMakeLists.txt) include(3d/CMakeLists.txt) include(platform/CMakeLists.txt) include(physics/CMakeLists.txt) +include(physics3d/CMakeLists.txt) include(math/CMakeLists.txt) include(renderer/CMakeLists.txt) include(base/CMakeLists.txt) @@ -67,6 +68,7 @@ set(COCOS_SRC cocos2d.cpp ${COCOS_3D_SRC} ${COCOS_PLATFORM_SRC} ${COCOS_PHYSICS_SRC} + ${COCOS_PHYSICS3D_SRC} ${COCOS_MATH_SRC} ${COCOS_RENDERER_SRC} ${COCOS_BASE_SRC} @@ -150,6 +152,10 @@ if(USE_BOX2D) cocos_use_pkg(cocos2d Box2D) endif() +if(USE_BULLET) + cocos_use_pkg(cocos2d BULLET) +endif() + set_target_properties(cocos2d PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" diff --git a/cocos/base/CCDirector.cpp b/cocos/base/CCDirector.cpp index 3698a56ee742..abaff9a2fa48 100644 --- a/cocos/base/CCDirector.cpp +++ b/cocos/base/CCDirector.cpp @@ -70,6 +70,10 @@ THE SOFTWARE. #include "physics/CCPhysicsWorld.h" #endif +#if CC_USE_3D_PHYSICS +#include "physics3d/CCPhysics3DWorld.h" +#endif + /** Position of the FPS @@ -293,6 +297,13 @@ void Director::drawScene() { physicsWorld->update(_deltaTime, false); } +#endif +#if CC_USE_3D_PHYSICS + auto physics3DWorld = _runningScene->getPhysics3DWorld(); + if (physics3DWorld) + { + physics3DWorld->stepSimulate(_deltaTime); + } #endif //clear draw stats _renderer->clearDrawStats(); diff --git a/cocos/base/ccConfig.h b/cocos/base/ccConfig.h index f261e025708d..35ac38a01c62 100644 --- a/cocos/base/ccConfig.h +++ b/cocos/base/ccConfig.h @@ -252,6 +252,13 @@ THE SOFTWARE. #define CC_USE_PHYSICS 1 #endif +/** Use 3d physics integration API. */ +#ifndef CC_USE_3D_PHYSICS +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_LINUX) +#define CC_USE_3D_PHYSICS 1 +#endif +#endif + /** Use culling or not. */ #ifndef CC_USE_CULLING #define CC_USE_CULLING 1 diff --git a/cocos/physics3d/CCPhysics3D.cpp b/cocos/physics3d/CCPhysics3D.cpp new file mode 100644 index 000000000000..02018b2081aa --- /dev/null +++ b/cocos/physics3d/CCPhysics3D.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + + + +NS_CC_BEGIN + +CC_DLL const char* physics3dVersion() +{ +#if CC_ENABLE_BULLET_INTEGRATION + return "bullet2.82"; +#endif +} + +NS_CC_END + + +cocos2d::Vec3 convertbtVector3ToVec3( const btVector3 &btVec3 ) +{ + return cocos2d::Vec3(btVec3.x(), btVec3.y(), btVec3.z()); +} + +btVector3 convertVec3TobtVector3( const cocos2d::Vec3 &vec3 ) +{ + return btVector3(vec3.x, vec3.y, vec3.z); +} + +cocos2d::Mat4 convertbtTransformToMat4( const btTransform &btTrans ) +{ + cocos2d::Mat4 mat; + auto rot = btTrans.getBasis(); + auto row = rot.getRow(0); + mat.m[0] = row.getX(); + mat.m[4] = row.getY(); + mat.m[8] = row.getZ(); + row = rot.getRow(1); + mat.m[1] = row.getX(); + mat.m[5] = row.getY(); + mat.m[9] = row.getZ(); + row = rot.getRow(2); + mat.m[2] = row.getX(); + mat.m[6] = row.getY(); + mat.m[10] = row.getZ(); + + row = btTrans.getOrigin(); + mat.m[12] = row.getX(); + mat.m[13] = row.getY(); + mat.m[14] = row.getZ(); + return mat; +} + +btTransform convertMat4TobtTransform( const cocos2d::Mat4 &mat4 ) +{ + btTransform btTrans; + btTrans.setFromOpenGLMatrix(mat4.m); + return btTrans; +} + +cocos2d::Quaternion convertbtQuatToQuat( const btQuaternion &btQuat ) +{ + return cocos2d::Quaternion(btQuat.x(), btQuat.y(), btQuat.z(), btQuat.w()); +} + +btQuaternion convertQuatTobtQuat( const cocos2d::Quaternion &quat ) +{ + return btQuaternion(quat.x, quat.y, quat.z, quat.w); +} + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3D.h b/cocos/physics3d/CCPhysics3D.h new file mode 100644 index 000000000000..7519ee8e70cb --- /dev/null +++ b/cocos/physics3d/CCPhysics3D.h @@ -0,0 +1,69 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_H__ +#define __PHYSICS_3D_H__ + +#include "base/ccConfig.h" +#include "math/CCMath.h" + +#if CC_USE_3D_PHYSICS + +#include "CCPhysics3DShape.h" +#include "CCPhysicsSprite3D.h" +#include "CCPhysics3DWorld.h" +#include "CCPhysics3DDebugDrawer.h" +#include "CCPhysics3DObject.h" +#include "CCPhysics3DComponent.h" +#include "CCPhysics3DConstraint.h" + +NS_CC_BEGIN + +CC_DLL const char* physics3dVersion(); + +NS_CC_END + +#if (CC_ENABLE_BULLET_INTEGRATION) + +//include bullet header files +#include "bullet/LinearMath/btTransform.h" +#include "bullet/LinearMath/btVector3.h" +#include "bullet/LinearMath/btQuaternion.h" + +#include "bullet/btBulletCollisionCommon.h" +#include "bullet/btBulletDynamicsCommon.h" + +//convert between cocos and bullet +cocos2d::Vec3 convertbtVector3ToVec3(const btVector3 &btVec3); +btVector3 convertVec3TobtVector3(const cocos2d::Vec3 &vec3); +cocos2d::Mat4 convertbtTransformToMat4(const btTransform &btTrans); +btTransform convertMat4TobtTransform(const cocos2d::Mat4 &mat4); +cocos2d::Quaternion convertbtQuatToQuat(const btQuaternion &btQuat); +btQuaternion convertQuatTobtQuat(const cocos2d::Quaternion &quat); + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_H__ diff --git a/cocos/physics3d/CCPhysics3DComponent.cpp b/cocos/physics3d/CCPhysics3DComponent.cpp new file mode 100644 index 000000000000..c7bb88795f48 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DComponent.cpp @@ -0,0 +1,244 @@ + /**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" +#include "2d/CCNode.h" +#include "2d/CCScene.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +Physics3DComponent::~Physics3DComponent() +{ + CC_SAFE_RELEASE(_physics3DObj); +} + +std::string& Physics3DComponent::getPhysics3DComponentName() +{ + static std::string comName = "___Physics3DComponent___"; + return comName; +} + +bool Physics3DComponent::init() +{ + setName(getPhysics3DComponentName()); + return Component::init(); +} + +Physics3DComponent* Physics3DComponent::create(Physics3DObject* physicsObj, const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics) +{ + auto ret = new (std::nothrow) Physics3DComponent(); + if (ret && ret->init()) + { + ret->setPhysics3DObject(physicsObj); + ret->setTransformInPhysics(translateInPhysics, rotInPhsyics); + ret->autorelease(); + return ret; + } + CC_SAFE_DELETE(ret); + return nullptr; +} + +void Physics3DComponent::setPhysics3DObject(Physics3DObject* physicsObj) +{ + CC_SAFE_RETAIN(physicsObj); + CC_SAFE_RELEASE(_physics3DObj); + _physics3DObj = physicsObj; +} + +Physics3DComponent::Physics3DComponent() +: _physics3DObj(nullptr) +, _syncFlag(Physics3DComponent::PhysicsSyncFlag::NODE_AND_NODE) +{ + +} + +void Physics3DComponent::setEnabled(bool b) +{ + bool oldBool = b; + Component::setEnabled(b); + if (_physics3DObj && oldBool != _enabled) + { + _enabled ? _physics3DObj->getPhysicsWorld()->addPhysics3DObject(_physics3DObj) : _physics3DObj->getPhysicsWorld()->removePhysics3DObject(_physics3DObj); + } +} + +void Physics3DComponent::addToPhysicsWorld(Physics3DWorld* world) +{ + //add component to physics world + if (_physics3DObj) + { + _physics3DObj->setPhysicsWorld(world); + world->addPhysics3DObject(_physics3DObj); + auto& components = world->_physicsComponents; + auto it = std::find(components.begin(), components.end(), this); + if (it == components.end()) + { + auto parent = _owner->getParent(); + while (parent) { + for (int i = 0; i < components.size(); i++) { + if (parent == components[i]->getOwner()) + { + //insert it here + components.insert(components.begin() + i, this); + return; + } + } + parent = parent->getParent(); + } + + components.insert(components.begin(), this); + } + } +} + +void Physics3DComponent::onEnter() +{ + Component::onEnter(); + + if (_physics3DObj->getPhysicsWorld() == nullptr && _owner) + { + auto scene = _owner->getScene(); + if (scene) + addToPhysicsWorld(scene->getPhysics3DWorld()); + } +} + +void Physics3DComponent::onExit() +{ + Component::onExit(); + setEnabled(false); + + //remove component from physics world + if (_physics3DObj) + { + auto& components = _physics3DObj->getPhysicsWorld()->_physicsComponents; + auto it = std::find(components.begin(), components.end(), this); + if (it != components.end()) + components.erase(it); + } +} + +void Physics3DComponent::preSimulate() +{ + if (((int)_syncFlag & (int)Physics3DComponent::PhysicsSyncFlag::NODE_TO_PHYSICS) && _physics3DObj && _owner) + { + syncToNode(); + } +} + +void Physics3DComponent::postSimulate() +{ + if (((int)_syncFlag & (int)Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE) && _physics3DObj && _owner) + { + syncToPhysics(); + } +} + +void Physics3DComponent::setTransformInPhysics(const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics) +{ + Mat4::createRotation(rotInPhsyics, &_transformInPhysics); + _transformInPhysics.m[12] = translateInPhysics.x; + _transformInPhysics.m[13] = translateInPhysics.y; + _transformInPhysics.m[14] = translateInPhysics.z; + + _invTransformInPhysics = _transformInPhysics.getInversed(); +} + +void Physics3DComponent::setSyncFlag(PhysicsSyncFlag syncFlag) +{ + _syncFlag = syncFlag; +} + +void Physics3DComponent::syncToPhysics() +{ + if (_physics3DObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + Mat4 parentMat; + if (_owner->getParent()) + parentMat = _owner->getParent()->getNodeToWorldTransform(); + + auto mat = parentMat.getInversed() * _physics3DObj->getWorldTransform(); + //remove scale, no scale support for physics + float oneOverLen = 1.f / sqrtf(mat.m[0] * mat.m[0] + mat.m[1] * mat.m[1] + mat.m[2] * mat.m[2]); + mat.m[0] *= oneOverLen; + mat.m[1] *= oneOverLen; + mat.m[2] *= oneOverLen; + oneOverLen = 1.f / sqrtf(mat.m[4] * mat.m[4] + mat.m[5] * mat.m[5] + mat.m[6] * mat.m[6]); + mat.m[4] *= oneOverLen; + mat.m[5] *= oneOverLen; + mat.m[6] *= oneOverLen; + oneOverLen = 1.f / sqrtf(mat.m[8] * mat.m[8] + mat.m[9] * mat.m[9] + mat.m[10] * mat.m[10]); + mat.m[8] *= oneOverLen; + mat.m[9] *= oneOverLen; + mat.m[10] *= oneOverLen; + + mat *= _transformInPhysics; + static Vec3 scale, translation; + static Quaternion quat; + mat.decompose(&scale, &quat, &translation); + _owner->setPosition3D(translation); + quat.normalize(); + _owner->setRotationQuat(quat); + } +} + +void Physics3DComponent::syncToNode() +{ + if (_physics3DObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + auto mat = _owner->getNodeToWorldTransform(); + //remove scale, no scale support for physics + float oneOverLen = 1.f / sqrtf(mat.m[0] * mat.m[0] + mat.m[1] * mat.m[1] + mat.m[2] * mat.m[2]); + mat.m[0] *= oneOverLen; + mat.m[1] *= oneOverLen; + mat.m[2] *= oneOverLen; + oneOverLen = 1.f / sqrtf(mat.m[4] * mat.m[4] + mat.m[5] * mat.m[5] + mat.m[6] * mat.m[6]); + mat.m[4] *= oneOverLen; + mat.m[5] *= oneOverLen; + mat.m[6] *= oneOverLen; + oneOverLen = 1.f / sqrtf(mat.m[8] * mat.m[8] + mat.m[9] * mat.m[9] + mat.m[10] * mat.m[10]); + mat.m[8] *= oneOverLen; + mat.m[9] *= oneOverLen; + mat.m[10] *= oneOverLen; + + mat *= _invTransformInPhysics; + if (_physics3DObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + auto body = static_cast(_physics3DObj)->getRigidBody(); + auto motionState = body->getMotionState(); + motionState->setWorldTransform(convertMat4TobtTransform(mat)); + body->setMotionState(motionState); + } + } +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DComponent.h b/cocos/physics3d/CCPhysics3DComponent.h new file mode 100644 index 000000000000..1c036c822524 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DComponent.h @@ -0,0 +1,145 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_COMPONENT_H__ +#define __PHYSICS_3D_COMPONENT_H__ + +#include "base/ccConfig.h" +#include "math/CCMath.h" + +#include "2d/CCComponent.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +/** + * @addtogroup _3d + * @{ + */ + +class Physics3DObject; +class Physics3DWorld; + +/** @brief Physics3DComponent: A component with 3D physics, you can add a rigid body to it, and then add this component to a node, the node will move and rotate with this rigid body */ +class CC_DLL Physics3DComponent : public cocos2d::Component +{ + friend class Physics3DWorld; +public: + enum class PhysicsSyncFlag + { + NONE = 0, + NODE_TO_PHYSICS = 1, //align node transform to the physics + PHYSICS_TO_NODE = 2, // align physics transform to the node + NODE_AND_NODE = NODE_TO_PHYSICS | PHYSICS_TO_NODE, //pre simulation, align the physics object to the node and align the node transform according to physics object after simulation + }; + + CREATE_FUNC(Physics3DComponent); + virtual ~Physics3DComponent(); + virtual bool init() override; + + /** + * create Physics3DComponent + * @param physicsObj pointer to a Physics object contain in the component + * @param translateInPhysics offset that the owner node in the physics object's space + * @param rotInPhsyics offset rotation that the owner node in the physics object's space + * @return created Physics3DComponent + */ + static Physics3DComponent* create(Physics3DObject* physicsObj, const cocos2d::Vec3& translateInPhysics = cocos2d::Vec3::ZERO, const cocos2d::Quaternion& rotInPhsyics = cocos2d::Quaternion::ZERO); + + /** + * set Physics object to the component + */ + void setPhysics3DObject(Physics3DObject* physicsObj); + + /** + * get physics object + */ + Physics3DObject* getPhysics3DObject() const { return _physics3DObj; } + + /** + * get the component name, it is used to find whether it is Physics3DComponent + */ + static std::string& getPhysics3DComponentName(); + + /** + * set it enable or not + */ + virtual void setEnabled(bool b) override; + + + virtual void onEnter() override; + virtual void onExit() override; + + /** + * add this component to physics world, called by scene + */ + void addToPhysicsWorld(Physics3DWorld* world); + + /** + * The node's transform in physics object space + */ + void setTransformInPhysics(const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics); + + /** + * synchronization between node and physics is time consuming, you can skip some synchronization using this function + */ + void setSyncFlag(PhysicsSyncFlag syncFlag); + + /** + * align node and physics according to physics object + */ + void syncToPhysics(); + + /** + * align node and physics according to node + */ + void syncToNode(); + +CC_CONSTRUCTOR_ACCESS: + Physics3DComponent(); + +protected: + void preSimulate(); + + void postSimulate(); + + cocos2d::Mat4 _transformInPhysics; //transform in physics space + cocos2d::Mat4 _invTransformInPhysics; + + Physics3DObject* _physics3DObj; + PhysicsSyncFlag _syncFlag; +}; + +// end of 3d group +/// @} +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_COMPONENT_H__ diff --git a/cocos/physics3d/CCPhysics3DConstraint.cpp b/cocos/physics3d/CCPhysics3DConstraint.cpp new file mode 100644 index 000000000000..90e8b4389872 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DConstraint.cpp @@ -0,0 +1,840 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +Physics3DConstraint::Physics3DConstraint() +: _bodyA(nullptr) +, _bodyB(nullptr) +, _constraint(nullptr) +, _type(Physics3DConstraint::ConstraintType::UNKNOWN) +, _userData(nullptr) +{ + +} + +Physics3DConstraint::~Physics3DConstraint() +{ + CC_SAFE_RELEASE(_bodyA); + CC_SAFE_RELEASE(_bodyB); + CC_SAFE_DELETE(_constraint); +} + +float Physics3DConstraint::getBreakingImpulse() const +{ + return _constraint->getBreakingImpulseThreshold(); +} + +void Physics3DConstraint::setBreakingImpulse(float impulse) +{ + _constraint->setBreakingImpulseThreshold(impulse); +} + +bool Physics3DConstraint::isEnabled() const +{ + return _constraint->isEnabled(); +} + +void Physics3DConstraint::setEnabled(bool enabled) +{ + return _constraint->setEnabled(enabled); +} + +int Physics3DConstraint::getOverrideNumSolverIterations() const +{ + return _constraint->getOverrideNumSolverIterations(); +} + +///override the number of constraint solver iterations used to solve this constraint +///-1 will use the default number of iterations, as specified in SolverInfo.m_numIterations +void Physics3DConstraint::setOverrideNumSolverIterations(int overideNumIterations) +{ + _constraint->setOverrideNumSolverIterations(overideNumIterations); +} + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Physics3DPointToPointConstraint* Physics3DPointToPointConstraint::create(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotPointInA) +{ + auto ret = new (std::nothrow) Physics3DPointToPointConstraint(); + if (ret && ret->init(rbA, pivotPointInA)) + { + ret->autorelease(); + return ret; + } + + CC_SAFE_DELETE(ret); + return ret; +} + + +Physics3DPointToPointConstraint* Physics3DPointToPointConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotPointInA, const cocos2d::Vec3& pivotPointInB) +{ + auto ret = new (std::nothrow) Physics3DPointToPointConstraint(); + if (ret && ret->init(rbA, rbB, pivotPointInA, pivotPointInB)) + { + ret->autorelease(); + return ret; + } + + CC_SAFE_DELETE(ret); + return ret; +} + +bool Physics3DPointToPointConstraint::init(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotPointInA) +{ + + _constraint = new btPoint2PointConstraint(*rbA->getRigidBody(), convertVec3TobtVector3(pivotPointInA)); + _bodyA = rbA; + _bodyA->retain(); + + return true; +} + +bool Physics3DPointToPointConstraint::init(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotPointInA, const cocos2d::Vec3& pivotPointInB) +{ + _constraint = new btPoint2PointConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), convertVec3TobtVector3(pivotPointInA), convertVec3TobtVector3(pivotPointInB)); + _bodyA = rbA; + _bodyB = rbB; + _bodyA->retain(); + _bodyB->retain(); + + return true; +} + +void Physics3DPointToPointConstraint::setPivotPointInA(const cocos2d::Vec3& pivotA) +{ + auto point = convertVec3TobtVector3(pivotA); + static_cast(_constraint)->setPivotA(point); +} + +void Physics3DPointToPointConstraint::setPivotPointInB(const cocos2d::Vec3&& pivotB) +{ + auto point = convertVec3TobtVector3(pivotB); + static_cast(_constraint)->setPivotB(point); +} + +cocos2d::Vec3 Physics3DPointToPointConstraint::getPivotPointInA() const +{ + const auto& point = static_cast(_constraint)->getPivotInA(); + return convertbtVector3ToVec3(point); +} + +cocos2d::Vec3 Physics3DPointToPointConstraint::getPivotPointInB() const +{ + const auto& point = static_cast(_constraint)->getPivotInB(); + return convertbtVector3ToVec3(point); +} + +Physics3DPointToPointConstraint::Physics3DPointToPointConstraint() +{ + _type = Physics3DConstraint::ConstraintType::POINT_TO_POINT; +} + +Physics3DPointToPointConstraint::~Physics3DPointToPointConstraint() +{ + +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Physics3DHingeConstraint* Physics3DHingeConstraint::create(Physics3DRigidBody* rbA, const cocos2d::Mat4& rbAFrame, bool useReferenceFrameA) +{ + auto ret = new (std::nothrow) Physics3DHingeConstraint(); + ret->_constraint = new btHingeConstraint(*rbA->getRigidBody(), convertMat4TobtTransform(rbAFrame), useReferenceFrameA); + ret->_bodyA = rbA; + rbA->retain(); + + ret->autorelease(); + return ret; +} + +Physics3DHingeConstraint* Physics3DHingeConstraint::create(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotInA, const cocos2d::Vec3& axisInA, bool useReferenceFrameA) +{ + auto ret = new (std::nothrow) Physics3DHingeConstraint(); + ret->_constraint = new btHingeConstraint(*rbA->getRigidBody(), convertVec3TobtVector3(pivotInA), convertVec3TobtVector3(axisInA), useReferenceFrameA); + ret->_bodyA = rbA; + rbA->retain(); + + ret->autorelease(); + return ret; +} + +Physics3DHingeConstraint* Physics3DHingeConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotInA,const cocos2d::Vec3& pivotInB, cocos2d::Vec3& axisInA, cocos2d::Vec3& axisInB, bool useReferenceFrameA) +{ + auto ret = new (std::nothrow) Physics3DHingeConstraint(); + ret->_constraint = new btHingeConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), convertVec3TobtVector3(pivotInA), convertVec3TobtVector3(pivotInB), convertVec3TobtVector3(axisInA), convertVec3TobtVector3(axisInB), useReferenceFrameA); + ret->_bodyA = rbA; + rbA->retain(); + ret->_bodyB = rbB; + rbB->retain(); + + ret->autorelease(); + return ret; +} + +Physics3DHingeConstraint* Physics3DHingeConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& rbAFrame, const cocos2d::Mat4& rbBFrame, bool useReferenceFrameA) +{ + auto ret = new (std::nothrow) Physics3DHingeConstraint(); + ret->_constraint = new btHingeConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), convertMat4TobtTransform(rbAFrame), convertMat4TobtTransform(rbBFrame), useReferenceFrameA); + ret->_bodyA = rbA; + rbA->retain(); + ret->_bodyB = rbB; + rbB->retain(); + + ret->autorelease(); + return ret; +} + +cocos2d::Mat4 Physics3DHingeConstraint::getFrameOffsetA() const +{ + const auto& transform = static_cast(_constraint)->getFrameOffsetA(); + return convertbtTransformToMat4(transform); +} + +cocos2d::Mat4 Physics3DHingeConstraint::getFrameOffsetB() const +{ + const auto& transform = static_cast(_constraint)->getFrameOffsetB(); + return convertbtTransformToMat4(transform); +} + +void Physics3DHingeConstraint::setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB) +{ + auto transformA = convertMat4TobtTransform(frameA); + auto transformB = convertMat4TobtTransform(frameB); + static_cast(_constraint)->setFrames(transformA, transformB); +} + +void Physics3DHingeConstraint::setAngularOnly(bool angularOnly) +{ + static_cast(_constraint)->setAngularOnly(angularOnly); +} + +void Physics3DHingeConstraint::enableAngularMotor(bool enableMotor, float targetVelocity, float maxMotorImpulse) +{ + static_cast(_constraint)->enableAngularMotor(enableMotor, targetVelocity, maxMotorImpulse); +} + +void Physics3DHingeConstraint::enableMotor(bool enableMotor) +{ + static_cast(_constraint)->enableMotor(enableMotor); +} +void Physics3DHingeConstraint::setMaxMotorImpulse(float maxMotorImpulse) +{ + static_cast(_constraint)->setMaxMotorImpulse(maxMotorImpulse); +} +void Physics3DHingeConstraint::setMotorTarget(const cocos2d::Quaternion& qAinB, float dt) +{ + static_cast(_constraint)->setMotorTarget(convertQuatTobtQuat(qAinB), dt); +} +void Physics3DHingeConstraint::setMotorTarget(float targetAngle, float dt) +{ + static_cast(_constraint)->setMotorTarget(targetAngle, dt); +} + + +void Physics3DHingeConstraint::setLimit(float low, float high, float softness, float biasFactor, float relaxationFactor) +{ + static_cast(_constraint)->setLimit(low, high, softness, biasFactor, relaxationFactor); +} + +void Physics3DHingeConstraint::setAxis(const cocos2d::Vec3& axisInA) +{ + auto axis = convertVec3TobtVector3(axisInA); + static_cast(_constraint)->setAxis(axis); +} + +float Physics3DHingeConstraint::getLowerLimit() const +{ + return static_cast(_constraint)->getLowerLimit(); +} + +float Physics3DHingeConstraint::getUpperLimit() const +{ + return static_cast(_constraint)->getUpperLimit(); +} + +float Physics3DHingeConstraint::getHingeAngle() +{ + return static_cast(_constraint)->getHingeAngle(); +} + +float Physics3DHingeConstraint::getHingeAngle(const cocos2d::Mat4& transA, const cocos2d::Mat4& transB) +{ + auto btTransA = convertMat4TobtTransform(transA); + auto btTransB = convertMat4TobtTransform(transB); + return static_cast(_constraint)->getHingeAngle(btTransA, btTransB); +} + +cocos2d::Mat4 Physics3DHingeConstraint::getAFrame() +{ + const auto& trans = static_cast(_constraint)->getAFrame(); + return convertbtTransformToMat4(trans); +} +cocos2d::Mat4 Physics3DHingeConstraint::getBFrame() +{ + const auto& trans = static_cast(_constraint)->getBFrame(); + return convertbtTransformToMat4(trans); +} + +bool Physics3DHingeConstraint::getAngularOnly() +{ + return static_cast(_constraint)->getAngularOnly(); +} +bool Physics3DHingeConstraint::getEnableAngularMotor() +{ + return static_cast(_constraint)->getEnableAngularMotor(); +} +float Physics3DHingeConstraint::getMotorTargetVelosity() +{ + return static_cast(_constraint)->getMotorTargetVelosity(); +} +float Physics3DHingeConstraint::getMaxMotorImpulse() +{ + return static_cast(_constraint)->getMaxMotorImpulse(); +} + +bool Physics3DHingeConstraint::getUseFrameOffset() +{ + return static_cast(_constraint)->getUseFrameOffset(); +} +void Physics3DHingeConstraint::setUseFrameOffset(bool frameOffsetOnOff) +{ + static_cast(_constraint)->setUseFrameOffset(frameOffsetOnOff); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Physics3DSliderConstraint* Physics3DSliderConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInA, const cocos2d::Mat4& frameInB ,bool useLinearReferenceFrameA) +{ + auto ret = new (std::nothrow) Physics3DSliderConstraint(); + ret->_bodyA = rbA; + ret->_bodyB = rbB; + rbA->retain(); + rbB->retain(); + + auto transformA = convertMat4TobtTransform(frameInA); + auto transformB = convertMat4TobtTransform(frameInB); + ret->_constraint = new btSliderConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), transformA, transformB, useLinearReferenceFrameA); + ret->autorelease(); + return ret; +} + +cocos2d::Mat4 Physics3DSliderConstraint::getFrameOffsetA() const +{ + const auto& frameOff = static_cast(_constraint)->getFrameOffsetA(); + return convertbtTransformToMat4(frameOff); +} +cocos2d::Mat4 Physics3DSliderConstraint::getFrameOffsetB() const +{ + const auto& frameOff = static_cast(_constraint)->getFrameOffsetB(); + return convertbtTransformToMat4(frameOff); +} +float Physics3DSliderConstraint::getLowerLinLimit() +{ + return static_cast(_constraint)->getLowerLinLimit(); +} +void Physics3DSliderConstraint::setLowerLinLimit(float lowerLimit) +{ + static_cast(_constraint)->setLowerLinLimit(lowerLimit); +} +float Physics3DSliderConstraint::getUpperLinLimit() +{ + return static_cast(_constraint)->getUpperLinLimit(); +} +void Physics3DSliderConstraint::setUpperLinLimit(float upperLimit) +{ + static_cast(_constraint)->setUpperLinLimit(upperLimit); +} +float Physics3DSliderConstraint::getLowerAngLimit() +{ + return static_cast(_constraint)->getLowerAngLimit(); +} +void Physics3DSliderConstraint::setLowerAngLimit(float lowerLimit) +{ + static_cast(_constraint)->setLowerAngLimit(lowerLimit); +} +float Physics3DSliderConstraint::getUpperAngLimit() +{ + return static_cast(_constraint)->getUpperAngLimit(); +} +void Physics3DSliderConstraint::setUpperAngLimit(float upperLimit) +{ + static_cast(_constraint)->setUpperAngLimit(upperLimit); +} +bool Physics3DSliderConstraint::getUseLinearReferenceFrameA() +{ + return static_cast(_constraint)->getUseLinearReferenceFrameA(); +} +float Physics3DSliderConstraint::getSoftnessDirLin() +{ + return static_cast(_constraint)->getSoftnessDirLin(); +} +float Physics3DSliderConstraint::getRestitutionDirLin() +{ + return static_cast(_constraint)->getRestitutionDirLin(); +} +float Physics3DSliderConstraint::getDampingDirLin() +{ + return static_cast(_constraint)->getDampingDirLin(); +} +float Physics3DSliderConstraint::getSoftnessDirAng() +{ + return static_cast(_constraint)->getSoftnessDirAng(); +} +float Physics3DSliderConstraint::getRestitutionDirAng() +{ + return static_cast(_constraint)->getRestitutionDirAng(); +} +float Physics3DSliderConstraint::getDampingDirAng() +{ + return static_cast(_constraint)->getDampingDirAng(); +} +float Physics3DSliderConstraint::getSoftnessLimLin() +{ + return static_cast(_constraint)->getSoftnessLimLin(); +} +float Physics3DSliderConstraint::getRestitutionLimLin() +{ + return static_cast(_constraint)->getRestitutionLimLin(); +} +float Physics3DSliderConstraint::getDampingLimLin() +{ + return static_cast(_constraint)->getDampingLimAng(); +} +float Physics3DSliderConstraint::getSoftnessLimAng() +{ + return static_cast(_constraint)->getSoftnessLimAng(); +} +float Physics3DSliderConstraint::getRestitutionLimAng() +{ + return static_cast(_constraint)->getRestitutionLimAng(); +} +float Physics3DSliderConstraint::getDampingLimAng() +{ + return static_cast(_constraint)->getDampingLimAng(); +} +float Physics3DSliderConstraint::getSoftnessOrthoLin() +{ + return static_cast(_constraint)->getSoftnessOrthoLin(); +} +float Physics3DSliderConstraint::getRestitutionOrthoLin() +{ + return static_cast(_constraint)->getRestitutionOrthoAng(); +} +float Physics3DSliderConstraint::getDampingOrthoLin() +{ + return static_cast(_constraint)->getDampingOrthoLin(); +} +float Physics3DSliderConstraint::getSoftnessOrthoAng() +{ + return static_cast(_constraint)->getSoftnessOrthoAng(); +} +float Physics3DSliderConstraint::getRestitutionOrthoAng() +{ + return static_cast(_constraint)->getRestitutionOrthoAng(); +} +float Physics3DSliderConstraint::getDampingOrthoAng() +{ + return static_cast(_constraint)->getDampingOrthoAng(); +} +void Physics3DSliderConstraint::setSoftnessDirLin(float softnessDirLin) +{ + static_cast(_constraint)->setSoftnessDirLin(softnessDirLin); +} +void Physics3DSliderConstraint::setRestitutionDirLin(float restitutionDirLin) +{ + static_cast(_constraint)->setRestitutionDirLin(restitutionDirLin); +} +void Physics3DSliderConstraint::setDampingDirLin(float dampingDirLin) +{ + static_cast(_constraint)->setDampingDirLin(dampingDirLin); +} +void Physics3DSliderConstraint::setSoftnessDirAng(float softnessDirAng) +{ + static_cast(_constraint)->setSoftnessDirAng(softnessDirAng); +} +void Physics3DSliderConstraint::setRestitutionDirAng(float restitutionDirAng) +{ + static_cast(_constraint)->setRestitutionDirAng(restitutionDirAng); +} +void Physics3DSliderConstraint::setDampingDirAng(float dampingDirAng) +{ + static_cast(_constraint)->setDampingDirAng(dampingDirAng); +} +void Physics3DSliderConstraint::setSoftnessLimLin(float softnessLimLin) +{ + static_cast(_constraint)->setSoftnessLimLin(softnessLimLin); +} +void Physics3DSliderConstraint::setRestitutionLimLin(float restitutionLimLin) +{ + static_cast(_constraint)->setRestitutionDirLin(restitutionLimLin); +} +void Physics3DSliderConstraint::setDampingLimLin(float dampingLimLin) +{ + static_cast(_constraint)->setDampingLimLin(dampingLimLin); +} +void Physics3DSliderConstraint::setSoftnessLimAng(float softnessLimAng) +{ + static_cast(_constraint)->setSoftnessLimAng(softnessLimAng); +} +void Physics3DSliderConstraint::setRestitutionLimAng(float restitutionLimAng) +{ + static_cast(_constraint)->setRestitutionLimAng(restitutionLimAng); +} +void Physics3DSliderConstraint::setDampingLimAng(float dampingLimAng) +{ + static_cast(_constraint)->setDampingLimAng(dampingLimAng); +} +void Physics3DSliderConstraint::setSoftnessOrthoLin(float softnessOrthoLin) +{ + static_cast(_constraint)->setSoftnessOrthoLin(softnessOrthoLin); +} +void Physics3DSliderConstraint::setRestitutionOrthoLin(float restitutionOrthoLin) +{ + static_cast(_constraint)->setRestitutionOrthoLin(restitutionOrthoLin); +} +void Physics3DSliderConstraint::setDampingOrthoLin(float dampingOrthoLin) +{ + static_cast(_constraint)->setDampingLimLin(dampingOrthoLin); +} +void Physics3DSliderConstraint::setSoftnessOrthoAng(float softnessOrthoAng) +{ + static_cast(_constraint)->setSoftnessOrthoAng(softnessOrthoAng); +} +void Physics3DSliderConstraint::setRestitutionOrthoAng(float restitutionOrthoAng) +{ + static_cast(_constraint)->setRestitutionOrthoAng(restitutionOrthoAng); +} +void Physics3DSliderConstraint::setDampingOrthoAng(float dampingOrthoAng) +{ + static_cast(_constraint)->setDampingOrthoAng(dampingOrthoAng); +} +void Physics3DSliderConstraint::setPoweredLinMotor(bool onOff) +{ + static_cast(_constraint)->setPoweredLinMotor(onOff); +} +bool Physics3DSliderConstraint::getPoweredLinMotor() +{ + return static_cast(_constraint)->getPoweredLinMotor(); +} +void Physics3DSliderConstraint::setTargetLinMotorVelocity(float targetLinMotorVelocity) +{ + static_cast(_constraint)->setTargetLinMotorVelocity(targetLinMotorVelocity); +} +float Physics3DSliderConstraint::getTargetLinMotorVelocity() +{ + return static_cast(_constraint)->getTargetLinMotorVelocity(); +} +void Physics3DSliderConstraint::setMaxLinMotorForce(float maxLinMotorForce) +{ + static_cast(_constraint)->setMaxLinMotorForce(maxLinMotorForce); +} +float Physics3DSliderConstraint::getMaxLinMotorForce() +{ + return static_cast(_constraint)->getMaxLinMotorForce(); +} +void Physics3DSliderConstraint::setPoweredAngMotor(bool onOff) +{ + static_cast(_constraint)->setPoweredAngMotor(onOff); +} +bool Physics3DSliderConstraint::getPoweredAngMotor() +{ + return static_cast(_constraint)->getPoweredAngMotor(); +} +void Physics3DSliderConstraint::setTargetAngMotorVelocity(float targetAngMotorVelocity) +{ + return static_cast(_constraint)->setTargetAngMotorVelocity(targetAngMotorVelocity); +} +float Physics3DSliderConstraint::getTargetAngMotorVelocity() +{ + return static_cast(_constraint)->getTargetAngMotorVelocity(); +} +void Physics3DSliderConstraint::setMaxAngMotorForce(float maxAngMotorForce) +{ + return static_cast(_constraint)->setMaxAngMotorForce(maxAngMotorForce); +} +float Physics3DSliderConstraint::getMaxAngMotorForce() +{ + return static_cast(_constraint)->getMaxAngMotorForce(); +} + +float Physics3DSliderConstraint::getLinearPos() const +{ + return static_cast(_constraint)->getLinearPos(); +} +float Physics3DSliderConstraint::getAngularPos() const +{ + return static_cast(_constraint)->getAngularPos(); +} + +// access for UseFrameOffset +bool Physics3DSliderConstraint::getUseFrameOffset() +{ + return static_cast(_constraint)->getUseFrameOffset(); +} +void Physics3DSliderConstraint::setUseFrameOffset(bool frameOffsetOnOff) +{ + static_cast(_constraint)->setUseFrameOffset(frameOffsetOnOff); +} + +void Physics3DSliderConstraint::setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB) +{ + auto btFrameA = convertMat4TobtTransform(frameA); + auto btFrameB = convertMat4TobtTransform(frameB); + static_cast(_constraint)->setFrames(btFrameA, btFrameB); +} + +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +Physics3DConeTwistConstraint* Physics3DConeTwistConstraint::create(Physics3DRigidBody* rbA, const cocos2d::Mat4& frameA) +{ + auto ret = new (std::nothrow) Physics3DConeTwistConstraint(); + ret->_bodyA = rbA; + rbA->retain(); + + auto btFrame = convertMat4TobtTransform(frameA); + ret->_constraint = new btConeTwistConstraint(*rbA->getRigidBody(), btFrame); + + ret->autorelease(); + return ret; +} +Physics3DConeTwistConstraint* Physics3DConeTwistConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB) +{ + auto ret = new (std::nothrow) Physics3DConeTwistConstraint(); + ret->_bodyA = rbA; + ret->_bodyB = rbB; + rbA->retain(); + rbB->retain(); + + auto btFrameA = convertMat4TobtTransform(frameA); + auto btFrameB = convertMat4TobtTransform(frameB); + + ret->_constraint = new btConeTwistConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), btFrameA, btFrameB); + + ret->autorelease(); + return ret; +} + +void Physics3DConeTwistConstraint::setLimit(float swingSpan1,float swingSpan2,float twistSpan, float softness, float biasFactor, float relaxationFactor) +{ + static_cast(_constraint)->setLimit(swingSpan1, swingSpan2, twistSpan, softness, biasFactor, relaxationFactor); +} + +cocos2d::Mat4 Physics3DConeTwistConstraint::getAFrame() +{ + const auto& frame = static_cast(_constraint)->getAFrame(); + return convertbtTransformToMat4(frame); +} +cocos2d::Mat4 Physics3DConeTwistConstraint::getBFrame() +{ + const auto& frame = static_cast(_constraint)->getBFrame(); + return convertbtTransformToMat4(frame); +} + +float Physics3DConeTwistConstraint::getSwingSpan1() +{ + return static_cast(_constraint)->getSwingSpan1(); +} +float Physics3DConeTwistConstraint::getSwingSpan2() +{ + return static_cast(_constraint)->getSwingSpan2(); +} +float Physics3DConeTwistConstraint::getTwistSpan() +{ + return static_cast(_constraint)->getTwistSpan(); +} +float Physics3DConeTwistConstraint::getTwistAngle() +{ + return static_cast(_constraint)->getTwistAngle(); +} + +void Physics3DConeTwistConstraint::setDamping(float damping) +{ + static_cast(_constraint)->setDamping(damping); +} + +void Physics3DConeTwistConstraint::enableMotor(bool b) +{ + static_cast(_constraint)->enableMotor(b); +} +void Physics3DConeTwistConstraint::setMaxMotorImpulse(float maxMotorImpulse) +{ + static_cast(_constraint)->setMaxMotorImpulse(maxMotorImpulse); +} +void Physics3DConeTwistConstraint::setMaxMotorImpulseNormalized(float maxMotorImpulse) +{ + static_cast(_constraint)->setMaxMotorImpulseNormalized(maxMotorImpulse); +} + +float Physics3DConeTwistConstraint::getFixThresh() +{ + return static_cast(_constraint)->getFixThresh(); +} +void Physics3DConeTwistConstraint::setFixThresh(float fixThresh) +{ + static_cast(_constraint)->setFixThresh(fixThresh); +} + +void Physics3DConeTwistConstraint::setMotorTarget(const btQuaternion &q) +{ + static_cast(_constraint)->setMotorTarget(q); +} + +// same as above, but q is the desired rotation of frameA wrt frameB in constraint space +void Physics3DConeTwistConstraint::setMotorTargetInConstraintSpace(const btQuaternion &q) +{ + static_cast(_constraint)->setMotorTargetInConstraintSpace(q); +} + +cocos2d::Vec3 Physics3DConeTwistConstraint::GetPointForAngle(float fAngleInRadians, float fLength) const +{ + const auto& point = static_cast(_constraint)->GetPointForAngle(fAngleInRadians, fLength); + return convertbtVector3ToVec3(point); +} + +void Physics3DConeTwistConstraint::setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB) +{ + const auto& btFrameA = convertMat4TobtTransform(frameA); + const auto& btFrameB = convertMat4TobtTransform(frameB); + + static_cast(_constraint)->setFrames(btFrameA, btFrameB); +} + +cocos2d::Mat4 Physics3DConeTwistConstraint::getFrameOffsetA() const +{ + const auto& trans = static_cast(_constraint)->getFrameOffsetA(); + return convertbtTransformToMat4(trans); +} + +cocos2d::Mat4 Physics3DConeTwistConstraint::getFrameOffsetB() const +{ + const auto& trans = static_cast(_constraint)->getFrameOffsetB(); + return convertbtTransformToMat4(trans); +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Physics3D6DofConstraint* Physics3D6DofConstraint::create(Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInB, bool useLinearReferenceFrameB) +{ + auto ret = new Physics3D6DofConstraint(); + ret->_bodyB = rbB; + rbB->retain(); + + auto frameB = convertMat4TobtTransform(frameInB); + ret->_constraint = new btGeneric6DofConstraint(*rbB->getRigidBody(), frameB, useLinearReferenceFrameB); + + ret->autorelease(); + return ret; +} + +Physics3D6DofConstraint* Physics3D6DofConstraint::create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInA, const cocos2d::Mat4& frameInB, bool useLinearReferenceFrameA) +{ + auto ret = new Physics3D6DofConstraint(); + ret->_bodyA = rbA; + ret->_bodyB = rbB; + rbA->retain(); + rbB->retain(); + + auto frameA = convertMat4TobtTransform(frameInA); + auto frameB = convertMat4TobtTransform(frameInB); + ret->_constraint = new btGeneric6DofConstraint(*rbA->getRigidBody(), *rbB->getRigidBody(), frameA, frameB, useLinearReferenceFrameA); + + ret->autorelease(); + return ret; +} + +void Physics3D6DofConstraint::setLinearLowerLimit(const cocos2d::Vec3& linearLower) +{ + auto lower = convertVec3TobtVector3(linearLower); + static_cast(_constraint)->setLinearLowerLimit(lower); +} + +cocos2d::Vec3 Physics3D6DofConstraint::getLinearLowerLimit() +{ + btVector3 lower; + static_cast(_constraint)->getLinearLowerLimit(lower); + return convertbtVector3ToVec3(lower); +} + +void Physics3D6DofConstraint::setLinearUpperLimit(const cocos2d::Vec3& linearUpper) +{ + auto upper = convertVec3TobtVector3(linearUpper); + static_cast(_constraint)->setLinearUpperLimit(upper); +} + +cocos2d::Vec3 Physics3D6DofConstraint::getLinearUpperLimit() +{ + btVector3 upper; + static_cast(_constraint)->getLinearUpperLimit(upper); + return convertbtVector3ToVec3(upper); +} + +void Physics3D6DofConstraint::setAngularLowerLimit(const cocos2d::Vec3& angularLower) +{ + auto lower = convertVec3TobtVector3(angularLower); + static_cast(_constraint)->setAngularLowerLimit(lower); +} + +cocos2d::Vec3 Physics3D6DofConstraint::getAngularLowerLimit() +{ + btVector3 lower; + static_cast(_constraint)->getAngularLowerLimit(lower); + return convertbtVector3ToVec3(lower); +} + +void Physics3D6DofConstraint::setAngularUpperLimit(const cocos2d::Vec3& angularUpper) +{ + auto upper = convertVec3TobtVector3(angularUpper); + static_cast(_constraint)->setAngularUpperLimit(upper); +} + +cocos2d::Vec3 Physics3D6DofConstraint::getAngularUpperLimit() +{ + btVector3 upper; + static_cast(_constraint)->getAngularUpperLimit(upper); + return convertbtVector3ToVec3(upper); +} + +bool Physics3D6DofConstraint::isLimited(int limitIndex) +{ + return static_cast(_constraint)->isLimited(limitIndex); +} + +bool Physics3D6DofConstraint::getUseFrameOffset() +{ + return static_cast(_constraint)->getUseFrameOffset(); +} +void Physics3D6DofConstraint::setUseFrameOffset(bool frameOffsetOnOff) +{ + static_cast(_constraint)->setUseFrameOffset(frameOffsetOnOff); +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DConstraint.h b/cocos/physics3d/CCPhysics3DConstraint.h new file mode 100644 index 000000000000..244715ba7512 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DConstraint.h @@ -0,0 +1,592 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_CONSTRAINT_H__ +#define __PHYSICS_3D_CONSTRAINT_H__ + +#include "math/CCMath.h" +#include "base/CCRef.h" +#include "base/ccConfig.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +class btTypedConstraint; + +NS_CC_BEGIN + +/** + * @addtogroup _3d + * @{ + */ + +class Physics3DRigidBody; + +/** @brief Physics3DConstraint: Constraint affects the movement of physics object, it usually connet one or two physics object. There are some types of physics constraints. */ +class CC_DLL Physics3DConstraint : public Ref +{ +public: + enum class ConstraintType + { + UNKNOWN, + POINT_TO_POINT, + HINGE, + SLIDER, + CONE_TWIST, + SIX_DOF, + }; + /** + * get the impulse that break the constraint + */ + float getBreakingImpulse() const; + + /** + * set the impulse that break the constraint + */ + void setBreakingImpulse(float impulse); + + /** + * is it enabled + */ + bool isEnabled() const; + + /** + * set enable or not + */ + void setEnabled(bool enabled); + + /** + * get rigid body a + */ + Physics3DRigidBody* getBodyA() const { return _bodyA; } + + /** + * get rigid body b + */ + Physics3DRigidBody* getBodyB() const { return _bodyB; } + + /** + * get constraint type + */ + ConstraintType getConstraintType() const { return _type; } + + /** + * get user data + */ + void setUserData(void* userData) { _userData = userData; } + + /** + * get user data + */ + void* getUserData() const { return _userData; } + + /** + * get override number of solver iterations + */ + int getOverrideNumSolverIterations() const; + + ///override the number of constraint solver iterations used to solve this constraint + ///-1 will use the default number of iterations, as specified in SolverInfo.m_numIterations + void setOverrideNumSolverIterations(int overideNumIterations); + +#if (CC_ENABLE_BULLET_INTEGRATION) + btTypedConstraint* getbtContraint() { return _constraint; } +#endif + +protected: + + Physics3DConstraint(); + virtual ~Physics3DConstraint(); + + btTypedConstraint* _constraint; + + Physics3DRigidBody* _bodyA; + Physics3DRigidBody* _bodyB; + + ConstraintType _type; + void* _userData; +}; + +/** + * Point to point constraint limits the translation so that the local pivot points of 2 rigidbodies match in worldspace. + */ +class CC_DLL Physics3DPointToPointConstraint : public Physics3DConstraint +{ +public: + /** + * create point to point constraint, limits the translation of local pivot point of rigid body A + * @param rbA The rigid body going to be fixed + * @param pivotPointInA local pivot point in A's local space + * @return created constraint + */ + static Physics3DPointToPointConstraint* create(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotPointInA); + + /** + * create point to point constraint, make the local pivot points of 2 rigid bodies match in worldspace. + * @param rbA The rigid body A going to be fixed + * @param rbB The rigid body B going to be fixed + * @param pivotPointInA local pivot point in A's local space + * @param pivotPointInB local pivot point in B's local space + * @return created constraint + */ + static Physics3DPointToPointConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotPointInA, const cocos2d::Vec3& pivotPointInB); + + /** + * set pivot point in A's local space + */ + void setPivotPointInA(const cocos2d::Vec3& pivotA); + + /** + * set pivot point in B's local space + */ + void setPivotPointInB(const cocos2d::Vec3&& pivotB); + + /** + * get pivot point in A's local space + */ + cocos2d::Vec3 getPivotPointInA() const; + + /** + * get pivot point in B's local space + */ + cocos2d::Vec3 getPivotPointInB() const; + +CC_CONSTRUCTOR_ACCESS: + Physics3DPointToPointConstraint(); + virtual ~Physics3DPointToPointConstraint(); + +protected: + bool init(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotPointInA); + bool init(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotPointInA, const cocos2d::Vec3& pivotPointInB); + +}; + +/** + * Hinge constraint restricts two additional angular degrees of freedom, so the body can only rotate around one axis, the hinge axis. This can be useful to represent doors or wheels rotating around one axis. + * hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space + */ +class CC_DLL Physics3DHingeConstraint : public Physics3DConstraint +{ +public: + /** + * create hinge constraint + * @param rbA rigid body A + * @param rbAFrame rigid body A's frame + * @param useReferenceFrameA use frame A as reference + */ + static Physics3DHingeConstraint* create(Physics3DRigidBody* rbA, const cocos2d::Mat4& rbAFrame, bool useReferenceFrameA = false); + + /** + * create hinge constraint + * @param rbA rigid body A + * @param pivotInA pivot in rigid body A's local space + * @param axisInA axis in rigid body A's local space + * @param useReferenceFrameA use frame A as reference + */ + static Physics3DHingeConstraint* create(Physics3DRigidBody* rbA, const cocos2d::Vec3& pivotInA, const cocos2d::Vec3& axisInA, bool useReferenceFrameA = false); + + /** + * create hinge constraint + * @param rbA rigid body A + * @param rbB rigid body B + * @param pivotInA pivot point in A's local space + * @param pivotInB pivot point in B's local space + * @param axisInA axis in A's local space + * @param axisInB axis in B's local space + * @param useReferenceFrameA use frame A as reference + */ + static Physics3DHingeConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Vec3& pivotInA,const cocos2d::Vec3& pivotInB, cocos2d::Vec3& axisInA, cocos2d::Vec3& axisInB, bool useReferenceFrameA = false); + + /** + * create hinge constraint + * @param rbA rigid body A + * @param rbB rigid body B + * @param rbAFrame rigid body A's frame + * @param rbBFrame rigid body B's frame + * @param useReferenceFrameA use frame A as reference + */ + static Physics3DHingeConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& rbAFrame, const cocos2d::Mat4& rbBFrame, bool useReferenceFrameA = false); + + /** + * get rigid body A's frame offset + */ + cocos2d::Mat4 getFrameOffsetA() const; + + /** + * get rigid body B's frame offset + */ + cocos2d::Mat4 getFrameOffsetB() const; + + /** + * set frames for rigid body A and B + */ + void setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB); + + /** + * set angular only + */ + void setAngularOnly(bool angularOnly); + + /** enable angular motor */ + void enableAngularMotor(bool enableMotor, float targetVelocity, float maxMotorImpulse); + + // extra motor API, including ability to set a target rotation (as opposed to angular velocity) + // note: setMotorTarget sets angular velocity under the hood, so you must call it every tick to + // maintain a given angular target. + void enableMotor(bool enableMotor); + /** set max motor impulse */ + void setMaxMotorImpulse(float maxMotorImpulse); + /** + * set motor target + */ + void setMotorTarget(const cocos2d::Quaternion& qAinB, float dt); + /** set motor target */ + void setMotorTarget(float targetAngle, float dt); + + /** set limit */ + void setLimit(float low, float high, float _softness = 0.9f, float _biasFactor = 0.3f, float _relaxationFactor = 1.0f); + /**set axis*/ + void setAxis(const cocos2d::Vec3& axisInA); + /**get lower limit*/ + float getLowerLimit() const; + /**get upper limit*/ + float getUpperLimit() const; + /**get hinge angle*/ + float getHingeAngle(); + /**get hinge angle*/ + float getHingeAngle(const cocos2d::Mat4& transA, const cocos2d::Mat4& transB); + + /**get A's frame */ + cocos2d::Mat4 getAFrame(); + /**get B's frame*/ + cocos2d::Mat4 getBFrame(); + /**get angular only*/ + bool getAngularOnly(); + /**get enable angular motor*/ + bool getEnableAngularMotor(); + /**get motor target velosity*/ + float getMotorTargetVelosity(); + /**get max motor impulse*/ + float getMaxMotorImpulse(); + + /** access for UseFrameOffset*/ + bool getUseFrameOffset(); + /**set use frame offset*/ + void setUseFrameOffset(bool frameOffsetOnOff); + +CC_CONSTRUCTOR_ACCESS: + Physics3DHingeConstraint() + { + _type = ConstraintType::HINGE; + } + virtual ~Physics3DHingeConstraint(){} +}; + +/** + * It allows the body to rotate around x axis and translate along this axis. + * softness, restitution and damping for different cases + * DirLin - moving inside linear limits + * LimLin - hitting linear limit + * DirAng - moving inside angular limits + * LimAng - hitting angular limit + * OrthoLin, OrthoAng - against constraint axis + */ +class CC_DLL Physics3DSliderConstraint : public Physics3DConstraint +{ +public: + /** + * create slider constraint + * @param rbA rigid body A + * @param rbB rigid body B + * @param frameInA frame in A's local space + * @param frameInB frame in B's local space + * @param useLinearReferenceFrameA use fixed frame A for linear limits + */ + static Physics3DSliderConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInA, const cocos2d::Mat4& frameInB ,bool useLinearReferenceFrameA); + + /**get A's frame offset*/ + cocos2d::Mat4 getFrameOffsetA() const; + /**get B's frame offset*/ + cocos2d::Mat4 getFrameOffsetB() const; + /**get lower linear limit*/ + float getLowerLinLimit(); + /**set lower linear limit*/ + void setLowerLinLimit(float lowerLimit); + /**get upper linear limit*/ + float getUpperLinLimit(); + /**set upper linear limit*/ + void setUpperLinLimit(float upperLimit); + /**get lower angular limit*/ + float getLowerAngLimit(); + /**set lower angualr limit*/ + void setLowerAngLimit(float lowerLimit); + /**get upper anglular limit*/ + float getUpperAngLimit(); + /**set upper anglular limit*/ + void setUpperAngLimit(float upperLimit); + /**use A's frame as linear refference*/ + bool getUseLinearReferenceFrameA(); + + float getSoftnessDirLin(); + float getRestitutionDirLin(); + float getDampingDirLin(); + float getSoftnessDirAng(); + float getRestitutionDirAng(); + float getDampingDirAng(); + float getSoftnessLimLin(); + float getRestitutionLimLin(); + float getDampingLimLin(); + float getSoftnessLimAng(); + float getRestitutionLimAng(); + float getDampingLimAng(); + float getSoftnessOrthoLin(); + float getRestitutionOrthoLin(); + float getDampingOrthoLin(); + float getSoftnessOrthoAng(); + float getRestitutionOrthoAng(); + float getDampingOrthoAng(); + void setSoftnessDirLin(float softnessDirLin); + void setRestitutionDirLin(float restitutionDirLin); + void setDampingDirLin(float dampingDirLin); + void setSoftnessDirAng(float softnessDirAng); + void setRestitutionDirAng(float restitutionDirAng); + void setDampingDirAng(float dampingDirAng); + void setSoftnessLimLin(float softnessLimLin); + void setRestitutionLimLin(float restitutionLimLin); + void setDampingLimLin(float dampingLimLin); + void setSoftnessLimAng(float softnessLimAng); + void setRestitutionLimAng(float restitutionLimAng); + void setDampingLimAng(float dampingLimAng); + void setSoftnessOrthoLin(float softnessOrthoLin); + void setRestitutionOrthoLin(float restitutionOrthoLin); + void setDampingOrthoLin(float dampingOrthoLin); + void setSoftnessOrthoAng(float softnessOrthoAng); + void setRestitutionOrthoAng(float restitutionOrthoAng); + void setDampingOrthoAng(float dampingOrthoAng); + void setPoweredLinMotor(bool onOff); + bool getPoweredLinMotor(); + void setTargetLinMotorVelocity(float targetLinMotorVelocity); + float getTargetLinMotorVelocity(); + void setMaxLinMotorForce(float maxLinMotorForce); + float getMaxLinMotorForce(); + void setPoweredAngMotor(bool onOff); + bool getPoweredAngMotor(); + void setTargetAngMotorVelocity(float targetAngMotorVelocity); + float getTargetAngMotorVelocity(); + void setMaxAngMotorForce(float maxAngMotorForce); + float getMaxAngMotorForce(); + + float getLinearPos() const; + float getAngularPos() const; + + /** access for UseFrameOffset*/ + bool getUseFrameOffset(); + /**set use frame offset*/ + void setUseFrameOffset(bool frameOffsetOnOff); + + /**set frames for rigid body A and B*/ + void setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB); + +CC_CONSTRUCTOR_ACCESS: + Physics3DSliderConstraint() + { + _type = ConstraintType::SLIDER; + } + virtual ~Physics3DSliderConstraint(){} +}; + +/** + * It is a special point to point constraint that adds cone and twist axis limits. The x-axis serves as twist axis. + */ +class CC_DLL Physics3DConeTwistConstraint : public Physics3DConstraint +{ +public: + /** + * create cone twist constraint + * rbA rigid body A + * frameA A's local frame + */ + static Physics3DConeTwistConstraint* create(Physics3DRigidBody* rbA, const cocos2d::Mat4& frameA); + /** + * create cone twist constraint + * rbA rigid body A + * rbB rigid body B + * frameA rigid body A's local frame + * frameB rigid body B's local frame + */ + static Physics3DConeTwistConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB); + + /** + * set limits + * @param swingSpan1 swing span1 + * @param swingSpan2 swing span2 + * @param twistSpan twist span + * @param softness 0->1, recommend ~0.8->1. Describes % of limits where movement is free. Beyond this softness %, the limit is gradually enforced until the "hard" (1.0) limit is reached. + * @param biasFactor 0->1?, recommend 0.3 +/-0.3 or so. Strength with which constraint resists zeroth order (angular, not angular velocity) limit violation. + * @param relaxationFactor 0->1, recommend to stay near 1. the lower the value, the less the constraint will fight velocities which violate the angular limits. + */ + void setLimit(float swingSpan1,float swingSpan2,float twistSpan, float softness = 1.f, float biasFactor = 0.3f, float relaxationFactor = 1.0f); + + /**get A's frame*/ + cocos2d::Mat4 getAFrame(); + /**get B's frame*/ + cocos2d::Mat4 getBFrame(); + + /**get swing span1*/ + float getSwingSpan1(); + /**get swing span2*/ + float getSwingSpan2(); + /**get twist span*/ + float getTwistSpan(); + /**get twist angle*/ + float getTwistAngle(); + + /**set damping*/ + void setDamping(float damping); + + /**enable motor*/ + void enableMotor(bool b); + /**set max motor impulse*/ + void setMaxMotorImpulse(float maxMotorImpulse); + /**set max motor impulse normalize*/ + void setMaxMotorImpulseNormalized(float maxMotorImpulse); + /**get fix thresh*/ + float getFixThresh(); + /**set fix thresh*/ + void setFixThresh(float fixThresh); + + /** + * setMotorTarget + * @param q the desired rotation of bodyA wrt bodyB. Note: if q violates the joint limits, the internal target is clamped to avoid conflicting impulses (very bad for stability), also don't forget to enableMotor() + */ + void setMotorTarget(const btQuaternion &q); + + /** setMotorTarget, q is the desired rotation of frameA wrt frameB in constraint space*/ + void setMotorTargetInConstraintSpace(const btQuaternion &q); + + /**get point for angle*/ + cocos2d::Vec3 GetPointForAngle(float fAngleInRadians, float fLength) const; + + /**set A and B's frame*/ + virtual void setFrames(const cocos2d::Mat4& frameA, const cocos2d::Mat4& frameB); + + /**get A's frame offset*/ + cocos2d::Mat4 getFrameOffsetA() const; + + /**get B's frame offset*/ + cocos2d::Mat4 getFrameOffsetB() const; + +CC_CONSTRUCTOR_ACCESS: + Physics3DConeTwistConstraint() + { + _type = ConstraintType::CONE_TWIST; + } + virtual ~Physics3DConeTwistConstraint(){} +}; + +/** + * This generic constraint can emulate a variety of standard constraints, by configuring each of the 6 degrees of freedom (dof). + * The first 3 dof axis are linear axis, which represent translation of rigidbodies, and the latter 3 dof axis represent the angular motion. + * Each axis can be either locked, free or limited. All axis are locked by default. + * For each axis: + * Lowerlimit == Upperlimit -> axis is locked. + * Lowerlimit > Upperlimit -> axis is free + * Lowerlimit < Upperlimit -> axis it limited in that range + */ +class CC_DLL Physics3D6DofConstraint : public Physics3DConstraint +{ +public: + /** + * create 6 dof constraint + * @param rbA rigid body A + * @param rbB rigid body B + * @param frameInA frame in A's local space + * @param frameInB frame in B's local space + * @param useLinearReferenceFrameA use fixed frame A for linear limits + */ + static Physics3D6DofConstraint* create(Physics3DRigidBody* rbA, Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInA, const cocos2d::Mat4& frameInB, bool useLinearReferenceFrameA); + + /** + * create 6 dof constraint + * @param rbB rigid body B + * @param frameInB frame in B's local space + * @param useLinearReferenceFrameB use fixed frame B for linear limits + */ + static Physics3D6DofConstraint* create(Physics3DRigidBody* rbB, const cocos2d::Mat4& frameInB, bool useLinearReferenceFrameB); + + /**set linear lower limit*/ + void setLinearLowerLimit(const cocos2d::Vec3& linearLower); + + /**get linear lower limit*/ + cocos2d::Vec3 getLinearLowerLimit(); + + /**set linear upper limit*/ + void setLinearUpperLimit(const cocos2d::Vec3& linearUpper); + + /**get linear upper limit*/ + cocos2d::Vec3 getLinearUpperLimit(); + + /**set angular lower limit*/ + void setAngularLowerLimit(const cocos2d::Vec3& angularLower); + + /**get angular lower limit*/ + cocos2d::Vec3 getAngularLowerLimit(); + + /**set angular upper limit*/ + void setAngularUpperLimit(const cocos2d::Vec3& angularUpper); + + /**get angular upper limit*/ + cocos2d::Vec3 getAngularUpperLimit(); + + /** + * is limited? + * @param limitIndex first 3 are linear, next 3 are angular + */ + bool isLimited(int limitIndex); + + /** access for UseFrameOffset*/ + bool getUseFrameOffset(); + /**set use frame offset*/ + void setUseFrameOffset(bool frameOffsetOnOff); + + +CC_CONSTRUCTOR_ACCESS: + Physics3D6DofConstraint() + { + _type = ConstraintType::SIX_DOF; + } + virtual ~Physics3D6DofConstraint(){} +}; + +// end of 3d group +/// @} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_CONSTRAINT_H__ diff --git a/cocos/physics3d/CCPhysics3DDebugDrawer.cpp b/cocos/physics3d/CCPhysics3DDebugDrawer.cpp new file mode 100644 index 000000000000..b7b1eb4e8ee4 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DDebugDrawer.cpp @@ -0,0 +1,203 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" +#include "base/CCConfiguration.h" +#include "base/ccMacros.h" +#include "base/CCDirector.h" +#include "renderer/CCGLProgram.h" +#include "renderer/CCRenderer.h" +#include "renderer/ccGLStateCache.h" +#include "renderer/CCGLProgramCache.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +void Physics3DDebugDrawer::drawLine( const btVector3& from,const btVector3& to,const btVector3& color ) +{ + int count = 2; + ensureCapacity(count); + + Vec3 col = convertbtVector3ToVec3(color); + + V3F_V4F *lines = (V3F_V4F *)(_buffer + _bufferCount); + lines[0].vertex = convertbtVector3ToVec3(from); + lines[0].color = Vec4(col.x, col.y, col.z, 1.0f); + lines[1].vertex = convertbtVector3ToVec3(to); + lines[1].color = Vec4(col.x, col.y, col.z, 1.0f); + + _bufferCount += count; + _dirty = true; +} + +void Physics3DDebugDrawer::drawContactPoint( const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color ) +{ + drawLine(PointOnB, PointOnB + normalOnB * distance, color); +} + +void Physics3DDebugDrawer::reportErrorWarning( const char* warningString ) +{ + CCLOG("%s", warningString); +} + +void Physics3DDebugDrawer::draw3dText( const btVector3& location,const char* textString ) +{ + +} + +void Physics3DDebugDrawer::setDebugMode( int debugMode ) +{ + _debugMode = debugMode; +} + +int Physics3DDebugDrawer::getDebugMode() const +{ + return _debugMode; +} + +void Physics3DDebugDrawer::draw( Renderer *renderer) +{ + _customCommand.init(0, Mat4::IDENTITY, 0); + _customCommand.func = CC_CALLBACK_0(Physics3DDebugDrawer::drawImplementation, this, Mat4::IDENTITY, 0); + renderer->addCommand(&_customCommand); +} + +Physics3DDebugDrawer::Physics3DDebugDrawer() + : _vao(0) + , _vbo(0) + , _bufferCapacity(0) + , _bufferCount(0) + , _buffer(nullptr) + , _blendFunc(BlendFunc::DISABLE) + , _dirty(true) + , _debugMode(DBG_DrawWireframe | DBG_DrawConstraints | DBG_DrawConstraintLimits) +{ + init(); +} + +Physics3DDebugDrawer::~Physics3DDebugDrawer() +{ + free(_buffer); + + if (_vao) + { + glDeleteVertexArrays(1, &_vao); + _vao = 0; + } + if (_vbo) + { + glDeleteBuffers(1, &_vbo); + _vbo = 0; + } +} + +void Physics3DDebugDrawer::ensureCapacity( int count ) +{ + CCASSERT(count>=0, "capacity must be >= 0"); + + if(_bufferCount + count > _bufferCapacity) + { + _bufferCapacity += MAX(_bufferCapacity, count); + _buffer = (V3F_V4F*)realloc(_buffer, _bufferCapacity*sizeof(V3F_V4F)); + } +} + +void Physics3DDebugDrawer::drawImplementation( const Mat4 &transform, uint32_t flags ) +{ + _program->use(); + _program->setUniformsForBuiltins(transform); + glEnable(GL_DEPTH_TEST); + GL::blendFunc(_blendFunc.src, _blendFunc.dst); + + if (_dirty) + { + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_V4F) * _bufferCapacity, _buffer, GL_STREAM_DRAW); + _dirty = false; + } + if (Configuration::getInstance()->supportsShareableVAO()) + { + GL::bindVAO(_vao); + } + else + { + GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POSITION | GL::VERTEX_ATTRIB_FLAG_COLOR); + + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + // vertex + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_V4F), (GLvoid *)offsetof(V3F_V4F, vertex)); + // color + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_FLOAT, GL_FALSE, sizeof(V3F_V4F), (GLvoid *)offsetof(V3F_V4F, color)); + } + + glDrawArrays(GL_LINES, 0, _bufferCount); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,_bufferCount); + glDisable(GL_DEPTH_TEST); +} + +void Physics3DDebugDrawer::init() +{ + _program = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_COLOR); + + ensureCapacity(512); + + if (Configuration::getInstance()->supportsShareableVAO()) + { + glGenVertexArrays(1, &_vao); + GL::bindVAO(_vao); + } + + glGenBuffers(1, &_vbo); + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_V4F)* _bufferCapacity, _buffer, GL_STREAM_DRAW); + + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_V4F), (GLvoid *)offsetof(V3F_V4F, vertex)); + + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_FLOAT, GL_FALSE, sizeof(V3F_V4F), (GLvoid *)offsetof(V3F_V4F, color)); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + + if (Configuration::getInstance()->supportsShareableVAO()) + { + GL::bindVAO(0); + } +} + +void Physics3DDebugDrawer::clear() +{ + _bufferCount = 0; +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DDebugDrawer.h b/cocos/physics3d/CCPhysics3DDebugDrawer.h new file mode 100644 index 000000000000..fcae14b648ab --- /dev/null +++ b/cocos/physics3d/CCPhysics3DDebugDrawer.h @@ -0,0 +1,108 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_VIEWER_H__ +#define __PHYSICS_3D_VIEWER_H__ + +#include "math/CCMath.h" +#include "base/CCRef.h" +#include "base/ccTypes.h" +#include "base/ccConfig.h" +#include "renderer/CCCustomCommand.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) +#include "renderer/CCCustomCommand.h" +#include "bullet/LinearMath/btIDebugDraw.h" + +NS_CC_BEGIN + +/** + * @addtogroup _3d + * @{ + */ + +class GLProgram; +class Renderer; + +/** @brief Physics3DDebugDrawer: debug draw the physics object, used by Physics3DWorld */ +class Physics3DDebugDrawer : public btIDebugDraw +{ +public: + + Physics3DDebugDrawer(); + virtual ~Physics3DDebugDrawer(); + + void draw(cocos2d::Renderer *renderer); + + // override function + virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color) override; + virtual void drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color) override; + virtual void reportErrorWarning(const char* warningString) override; + virtual void draw3dText(const btVector3& location,const char* textString) override; + virtual void setDebugMode(int debugMode) override; + virtual int getDebugMode() const override; + + void clear(); + +protected: + + void init(); + void ensureCapacity(int count); + void drawImplementation(const cocos2d::Mat4 &transform, uint32_t flags); + +protected: + + struct V3F_V4F + { + cocos2d::Vec3 vertex; + cocos2d::Vec4 color; + }; + + GLuint _vao; + GLuint _vbo; + + int _bufferCapacity; + GLsizei _bufferCount; + V3F_V4F* _buffer; + + cocos2d::BlendFunc _blendFunc; + cocos2d::CustomCommand _customCommand; + cocos2d::GLProgram *_program; + + bool _dirty; + int _debugMode; +}; + +// end of 3d group +/// @} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_VIEWER_H__ diff --git a/cocos/physics3d/CCPhysics3DObject.cpp b/cocos/physics3d/CCPhysics3DObject.cpp new file mode 100644 index 000000000000..7fe4c2613583 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DObject.cpp @@ -0,0 +1,377 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" +#include "base/ccUTF8.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +#include "bullet/btBulletCollisionCommon.h" +#include "bullet/btBulletDynamicsCommon.h" + +NS_CC_BEGIN + +Physics3DRigidBody::Physics3DRigidBody() +: _btRigidBody(nullptr) +, _physics3DShape(nullptr) +{ + +} + +Physics3DRigidBody::~Physics3DRigidBody() +{ + if (_physicsWorld) + { + for(auto constraint : _constraintList) + { + _physicsWorld->removePhysics3DConstraint(constraint); + } + _constraintList.clear(); + } + auto ms = _btRigidBody->getMotionState(); + CC_SAFE_DELETE(ms); + CC_SAFE_DELETE(_btRigidBody); + CC_SAFE_RELEASE(_physics3DShape); +} + +Physics3DRigidBody* Physics3DRigidBody::create(Physics3DRigidBodyDes* info) +{ + auto ret = new (std::nothrow) Physics3DRigidBody(); + if (ret->init(info)) + { + ret->autorelease(); + return ret; + } + + CC_SAFE_DELETE(ret); + return ret; +} + +bool Physics3DRigidBody::init(Physics3DRigidBodyDes* info) +{ + if (info->shape == nullptr) + return false; + + btScalar mass = info->mass; + auto shape = info->shape->getbtShape(); + auto localInertia = convertVec3TobtVector3(info->localInertia); + if (mass != 0.f) + { + shape->calculateLocalInertia(mass,localInertia); + } + + auto transform = convertMat4TobtTransform(info->originalTransform); + btDefaultMotionState* myMotionState = new btDefaultMotionState(transform); + btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,shape,localInertia); + _btRigidBody = new btRigidBody(rbInfo); + _type = Physics3DObject::PhysicsObjType::RIGID_BODY; + _physics3DShape = info->shape; + _physics3DShape->retain(); + if (info->disableSleep) + _btRigidBody->setActivationState(DISABLE_DEACTIVATION); + return true; +} + +void Physics3DRigidBody::setActive(bool active) +{ + if (_btRigidBody) + { + _btRigidBody->setActivationState(active ? ACTIVE_TAG : WANTS_DEACTIVATION); + } +} + +void Physics3DRigidBody::applyForce( const cocos2d::Vec3& force, const cocos2d::Vec3& rel_pos ) +{ + _btRigidBody->applyForce(convertVec3TobtVector3(force), convertVec3TobtVector3(rel_pos)); +} + +void Physics3DRigidBody::setLinearVelocity( const cocos2d::Vec3& lin_vel ) +{ + _btRigidBody->setLinearVelocity(convertVec3TobtVector3(lin_vel)); +} + +void Physics3DRigidBody::applyCentralForce( const cocos2d::Vec3& force ) +{ + _btRigidBody->applyCentralForce(convertVec3TobtVector3(force)); +} + +void Physics3DRigidBody::applyCentralImpulse( const cocos2d::Vec3& impulse ) +{ + _btRigidBody->applyCentralImpulse(convertVec3TobtVector3(impulse)); +} + +void Physics3DRigidBody::applyTorque( const cocos2d::Vec3& torque ) +{ + _btRigidBody->applyTorque(convertVec3TobtVector3(torque)); +} + +void Physics3DRigidBody::applyTorqueImpulse( const cocos2d::Vec3& torque ) +{ + _btRigidBody->applyTorqueImpulse(convertVec3TobtVector3(torque)); +} + +void Physics3DRigidBody::applyImpulse( const cocos2d::Vec3& impulse, const cocos2d::Vec3& rel_pos ) +{ + _btRigidBody->applyImpulse(convertVec3TobtVector3(impulse), convertVec3TobtVector3(rel_pos)); +} + +void Physics3DRigidBody::applyDamping( float timeStep ) +{ + _btRigidBody->applyDamping(timeStep); +} + +cocos2d::Vec3 Physics3DRigidBody::getLinearVelocity() const +{ + return convertbtVector3ToVec3(_btRigidBody->getLinearVelocity()); +} + +void Physics3DRigidBody::setLinearFactor( const cocos2d::Vec3& linearFactor ) +{ + _btRigidBody->setLinearFactor(convertVec3TobtVector3(linearFactor)); +} + +cocos2d::Vec3 Physics3DRigidBody::getLinearFactor() const +{ + return convertbtVector3ToVec3(_btRigidBody->getLinearFactor()); +} + +void Physics3DRigidBody::setAngularFactor( const cocos2d::Vec3& angFac ) +{ + _btRigidBody->setAngularFactor(convertVec3TobtVector3(angFac)); +} + +void Physics3DRigidBody::setAngularFactor( float angFac ) +{ + _btRigidBody->setAngularFactor(angFac); +} + +cocos2d::Vec3 Physics3DRigidBody::getAngularFactor() const +{ + return convertbtVector3ToVec3(_btRigidBody->getAngularFactor()); +} + +void Physics3DRigidBody::setAngularVelocity( const cocos2d::Vec3& ang_vel ) +{ + _btRigidBody->setAngularVelocity(convertVec3TobtVector3(ang_vel)); +} + +cocos2d::Vec3 Physics3DRigidBody::getAngularVelocity() const +{ + return convertbtVector3ToVec3(_btRigidBody->getAngularVelocity()); +} + +void Physics3DRigidBody::setCenterOfMassTransform( const cocos2d::Mat4& xform ) +{ + _btRigidBody->setCenterOfMassTransform(convertMat4TobtTransform(xform)); +} + +cocos2d::Mat4 Physics3DRigidBody::getCenterOfMassTransform() const +{ + return convertbtTransformToMat4(_btRigidBody->getCenterOfMassTransform()); +} + +void Physics3DRigidBody::setDamping( float lin_damping, float ang_damping ) +{ + _btRigidBody->setDamping(lin_damping, ang_damping); +} + +float Physics3DRigidBody::getLinearDamping() const +{ + return _btRigidBody->getLinearDamping(); +} + +float Physics3DRigidBody::getAngularDamping() const +{ + return _btRigidBody->getAngularDamping(); +} + +void Physics3DRigidBody::setGravity( const cocos2d::Vec3& acceleration ) +{ + _btRigidBody->setGravity(convertVec3TobtVector3(acceleration)); +} + +cocos2d::Vec3 Physics3DRigidBody::getGravity() const +{ + return convertbtVector3ToVec3(_btRigidBody->getGravity()); +} + +void Physics3DRigidBody::setInvInertiaDiagLocal( const cocos2d::Vec3& diagInvInertia ) +{ + _btRigidBody->setInvInertiaDiagLocal(convertVec3TobtVector3(diagInvInertia)); +} + +cocos2d::Vec3 Physics3DRigidBody::getInvInertiaDiagLocal() const +{ + return convertbtVector3ToVec3(_btRigidBody->getInvInertiaDiagLocal()); +} + +void Physics3DRigidBody::setMassProps( float mass, const cocos2d::Vec3& inertia ) +{ + _btRigidBody->setMassProps(mass, convertVec3TobtVector3(inertia)); +} + +float Physics3DRigidBody::getInvMass() const +{ + return _btRigidBody->getInvMass(); +} + +cocos2d::Vec3 Physics3DRigidBody::getTotalForce() const +{ + return convertbtVector3ToVec3(_btRigidBody->getTotalForce()); +} + +cocos2d::Vec3 Physics3DRigidBody::getTotalTorque() const +{ + return convertbtVector3ToVec3(_btRigidBody->getTotalTorque()); +} + +void Physics3DRigidBody::setRestitution( float rest ) +{ + _btRigidBody->setRestitution(rest); +} + +float Physics3DRigidBody::getRestitution() const +{ + return _btRigidBody->getRestitution(); +} + +void Physics3DRigidBody::setFriction( float frict ) +{ + _btRigidBody->setFriction(frict); +} + +float Physics3DRigidBody::getFriction() const +{ + return _btRigidBody->getFriction(); +} + +void Physics3DRigidBody::setRollingFriction( float frict ) +{ + _btRigidBody->setRollingFriction(frict); +} + +float Physics3DRigidBody::getRollingFriction() const +{ + return _btRigidBody->getRollingFriction(); +} + +void Physics3DRigidBody::setHitFraction( float hitFraction ) +{ + _btRigidBody->setHitFraction(hitFraction); +} + +float Physics3DRigidBody::getHitFraction() const +{ + return _btRigidBody->getHitFraction(); +} + +void Physics3DRigidBody::setCcdMotionThreshold( float ccdMotionThreshold ) +{ + _btRigidBody->setCcdMotionThreshold(ccdMotionThreshold); +} + +float Physics3DRigidBody::getCcdMotionThreshold() const +{ + return _btRigidBody->getCcdMotionThreshold(); +} + +void Physics3DRigidBody::setCcdSweptSphereRadius( float radius ) +{ + _btRigidBody->setCcdSweptSphereRadius(radius); +} + +float Physics3DRigidBody::getCcdSweptSphereRadius() const +{ + return _btRigidBody->getCcdSweptSphereRadius(); +} + +void Physics3DRigidBody::addConstraint( Physics3DConstraint *constraint ) +{ + auto iter = std::find(_constraintList.begin(), _constraintList.end(), constraint); + if (iter == _constraintList.end()){ + _constraintList.push_back(constraint); + constraint->retain(); + } +} + +void Physics3DRigidBody::removeConstraint( Physics3DConstraint *constraint ) +{ + auto iter = std::find(_constraintList.begin(), _constraintList.end(), constraint); + if (iter != _constraintList.end()){ + constraint->release(); + _constraintList.erase(iter); + } +} + +void Physics3DRigidBody::removeConstraint( unsigned int idx ) +{ + CCASSERT(idx < _constraintList.size(), "idx < _constraintList.size()"); + removeConstraint(_constraintList[idx]); +} + +Physics3DConstraint* Physics3DRigidBody::getConstraint( unsigned int idx ) const +{ + CCASSERT(idx < _constraintList.size(), "idx < _constraintList.size()"); + return _constraintList[idx]; +} + +unsigned int Physics3DRigidBody::getConstraintCount() const +{ + return (unsigned int)_constraintList.size(); +} + +cocos2d::Mat4 Physics3DRigidBody::getWorldTransform() const +{ + const auto& transform = _btRigidBody->getWorldTransform(); + return convertbtTransformToMat4(transform); +} + +void Physics3DRigidBody::setKinematic(bool kinematic) +{ + if (kinematic) + { + _btRigidBody->setCollisionFlags(_btRigidBody->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT); + _btRigidBody->setActivationState(DISABLE_DEACTIVATION); + } + else + { + _btRigidBody->setCollisionFlags(_btRigidBody->getCollisionFlags() & ~btCollisionObject::CF_KINEMATIC_OBJECT); + _btRigidBody->setActivationState(ACTIVE_TAG); + } +} + +bool Physics3DRigidBody::isKinematic() const +{ + if (_btRigidBody) + return _btRigidBody->isKinematicObject(); + return false; +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DObject.h b/cocos/physics3d/CCPhysics3DObject.h new file mode 100644 index 000000000000..a26d209b21df --- /dev/null +++ b/cocos/physics3d/CCPhysics3DObject.h @@ -0,0 +1,370 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_OBJECT_H__ +#define __PHYSICS_3D_OBJECT_H__ + +#include "math/CCMath.h" +#include "base/CCRef.h" +#include "base/ccConfig.h" + +#include + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +class btCollisionShape; +class btRigidBody; +class btPersistentManifold; + +NS_CC_BEGIN +/** + * @addtogroup _3d + * @{ + */ + +class Physics3DShape; +class Physics3DWorld; +class Physics3DConstraint; +class Physics3DObject; +/** + * @brief The collision information of Physics3DObject. + */ +struct CC_DLL Physics3DCollisionInfo +{ + struct CollisionPoint + { + Vec3 localPositionOnA; + Vec3 worldPositionOnA; + Vec3 localPositionOnB; + Vec3 worldPositionOnB; + Vec3 worldNormalOnB; + }; + + Physics3DObject *objA; + Physics3DObject *objB; + std::vector collisionPointList; +}; +/** + * @brief Inherit from Ref, base class + */ +class CC_DLL Physics3DObject : public Ref +{ +public: + typedef std::function CollisionCallbackFunc; + + enum class PhysicsObjType + { + UNKNOWN = 0, + RIGID_BODY, + }; + + /** Get the Physics3DObject Type. */ + virtual PhysicsObjType getObjType() const { return _type; } + + /** Set the user data. */ + void setUserData(void* userData) { _userData = userData; } + + /** Get the user data. */ + void* getUserData() const { return _userData; } + + /** Internal method. Set the pointer of Physics3DWorld. */ + void setPhysicsWorld(Physics3DWorld* world) { _physicsWorld = world; }; + + /** Get the pointer of Physics3DWorld. */ + Physics3DWorld* getPhysicsWorld() const { return _physicsWorld; } + + /** Get the world matrix of Physics3DObject. */ + virtual cocos2d::Mat4 getWorldTransform() const = 0; + + /** Set the collision callback function. */ + void setCollisionCallback(const CollisionCallbackFunc &func) { _collisionCallbackFunc = func; }; + + /** Get the collision callback function. */ + const CollisionCallbackFunc& getCollisionCallback() const { return _collisionCallbackFunc; } + + /** Check has collision callback function. */ + bool needCollisionCallback() { return _collisionCallbackFunc != nullptr; }; + + /** Set the mask of Physics3DObject. */ + void setMask(unsigned int mask) { _mask = mask; }; + + /** Get the mask of Physics3DObject. */ + unsigned int getMask() const { return _mask; }; + +CC_CONSTRUCTOR_ACCESS: + Physics3DObject() + : _type(PhysicsObjType::UNKNOWN) + , _userData(nullptr) + , _isEnabled(true) + , _physicsWorld(nullptr) + , _mask(-1) + { + + } + virtual ~Physics3DObject(){} + + +protected: + bool _isEnabled; + PhysicsObjType _type; + void* _userData; + Physics3DWorld* _physicsWorld; + CollisionCallbackFunc _collisionCallbackFunc; + unsigned int _mask; +}; + +/** + * @brief The description of Physics3DRigidBody. + */ +struct CC_DLL Physics3DRigidBodyDes +{ + float mass; //Note: mass equals zero means static, default 0 + cocos2d::Vec3 localInertia; //default (0, 0, 0) + Physics3DShape* shape; + cocos2d::Mat4 originalTransform; + bool disableSleep; //it is always active if disabled + + Physics3DRigidBodyDes() + : mass(0.f) + , localInertia(0.f, 0.f, 0.f) + , shape(nullptr) + , disableSleep(false) + { + + } +}; + +/** + * @brief Inherit from Physics3DObject, the main class for rigid body objects + */ +class CC_DLL Physics3DRigidBody : public Physics3DObject +{ + friend class Physics3DWorld; +public: + + /** + * Creates a Physics3DRigidBody with Physics3DRigidBody. + * + * @return An autoreleased Physics3DRigidBody object. + */ + static Physics3DRigidBody* create(Physics3DRigidBodyDes* info); + + /** Get the pointer of btRigidBody. */ + btRigidBody* getRigidBody() const { return _btRigidBody; } + + /** + * Apply a force. + * + * @param force the value of the force + * @param rel_pos the position of the force + */ + void applyForce(const cocos2d::Vec3& force, const cocos2d::Vec3& rel_pos); + + /** + * Apply a central force. + * + * @param force the value of the force + */ + void applyCentralForce(const cocos2d::Vec3& force); + + /** + * Apply a central impulse. + * + * @param impulse the value of the impulse + */ + void applyCentralImpulse(const cocos2d::Vec3& impulse); + + /** + * Apply a torque. + * + * @param torque the value of the torque + */ + void applyTorque(const cocos2d::Vec3& torque); + + /** + * Apply a torque impulse. + * + * @param torque the value of the torque + */ + void applyTorqueImpulse(const cocos2d::Vec3& torque); + + /** + * Apply a impulse. + * + * @param impulse the value of the impulse + * @param rel_pos the position of the impulse + */ + void applyImpulse(const cocos2d::Vec3& impulse, const cocos2d::Vec3& rel_pos); + + /** Damps the velocity, using the given linearDamping and angularDamping. */ + void applyDamping(float timeStep); + + /** Set the linear velocity. */ + void setLinearVelocity(const cocos2d::Vec3& lin_vel); + + /** Get the linear velocity. */ + cocos2d::Vec3 getLinearVelocity() const; + + /** Set the linear factor. */ + void setLinearFactor(const cocos2d::Vec3& linearFactor); + + /** Get the linear factor. */ + cocos2d::Vec3 getLinearFactor() const; + + /** Set the angular factor. */ + void setAngularFactor(const cocos2d::Vec3& angFac); + + /** Set the angular factor, use unified factor. */ + void setAngularFactor(float angFac); + + /** Get the angular factor. */ + cocos2d::Vec3 getAngularFactor() const; + + /** Set the angular velocity. */ + void setAngularVelocity(const cocos2d::Vec3& ang_vel); + + /** Get the angular velocity. */ + cocos2d::Vec3 getAngularVelocity() const; + + /** Set the center of mass. */ + void setCenterOfMassTransform(const cocos2d::Mat4& xform); + + /** Get the center of mass. */ + cocos2d::Mat4 getCenterOfMassTransform() const; + + /** Set linear damping and angular damping. */ + void setDamping(float lin_damping, float ang_damping); + + /** Get linear damping. */ + float getLinearDamping() const; + + /** Get angular damping. */ + float getAngularDamping() const; + + /** Set the acceleration. */ + void setGravity(const cocos2d::Vec3& acceleration); + + /** Get the acceleration. */ + cocos2d::Vec3 getGravity() const; + + /** Set the inverse of local inertia. */ + void setInvInertiaDiagLocal(const cocos2d::Vec3& diagInvInertia); + + /** Get the inverse of local inertia. */ + cocos2d::Vec3 getInvInertiaDiagLocal() const; + + /** Set mass and inertia. */ + void setMassProps(float mass, const cocos2d::Vec3& inertia); + + /** Get inverse of mass. */ + float getInvMass() const; + + /** Get total force. */ + cocos2d::Vec3 getTotalForce() const; + + /** Get total torque. */ + cocos2d::Vec3 getTotalTorque() const; + + /** Set restitution. */ + void setRestitution(float rest); + + /** Get restitution. */ + float getRestitution() const; + + /** Set friction. */ + void setFriction(float frict); + + /** Get friction. */ + float getFriction() const; + + /** Set rolling friction. */ + void setRollingFriction(float frict); + + /** Get rolling friction. */ + float getRollingFriction() const; + + /** Set hit friction. */ + void setHitFraction(float hitFraction); + + /** Get hit friction. */ + float getHitFraction() const; + + /** Set motion threshold, don't do continuous collision detection if the motion (in one step) is less then ccdMotionThreshold */ + void setCcdMotionThreshold(float ccdMotionThreshold); + + /** Get motion threshold. */ + float getCcdMotionThreshold() const; + + /** Set swept sphere radius. */ + void setCcdSweptSphereRadius(float radius); + + /** Get swept sphere radius. */ + float getCcdSweptSphereRadius() const; + + /** Set kinematic object. */ + void setKinematic(bool kinematic); + + /** Check rigid body is kinematic object. */ + bool isKinematic() const; + + /** override. */ + virtual cocos2d::Mat4 getWorldTransform() const override; + + /** Get constraint by index. */ + Physics3DConstraint* getConstraint(unsigned int idx) const; + + /** Get the total number of constraints. */ + unsigned int getConstraintCount() const; + + /** Active or inactive. */ + void setActive(bool active); + +CC_CONSTRUCTOR_ACCESS: + Physics3DRigidBody(); + virtual ~Physics3DRigidBody(); + + bool init(Physics3DRigidBodyDes* info); + + void addConstraint(Physics3DConstraint *constraint); + void removeConstraint(Physics3DConstraint *constraint); + void removeConstraint(unsigned int idx); + +protected: + btRigidBody* _btRigidBody; + Physics3DShape *_physics3DShape; + std::vector _constraintList; +}; + +// end of 3d group +/// @} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_OBJECT_H__ diff --git a/cocos/physics3d/CCPhysics3DShape.cpp b/cocos/physics3d/CCPhysics3DShape.cpp new file mode 100644 index 000000000000..4ceee16dc9bf --- /dev/null +++ b/cocos/physics3d/CCPhysics3DShape.cpp @@ -0,0 +1,208 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) +#include "bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h" + +NS_CC_BEGIN + +Physics3DShape::ShapeType Physics3DShape::getShapeType() const +{ + return _shapeType; +} + +Physics3DShape::Physics3DShape() +: _shapeType(ShapeType::UNKNOWN) +{ +#if (CC_ENABLE_BULLET_INTEGRATION) + _btShape = nullptr; + _heightfieldData = nullptr; +#endif +} +Physics3DShape::~Physics3DShape() +{ +#if (CC_ENABLE_BULLET_INTEGRATION) + CC_SAFE_DELETE(_btShape); + CC_SAFE_DELETE_ARRAY(_heightfieldData); + for (auto iter : _compoundChildShapes){ + CC_SAFE_RELEASE(iter); + } + _compoundChildShapes.clear(); +#endif +} + +Physics3DShape* Physics3DShape::createBox(const cocos2d::Vec3& extent) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initBox(extent); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createSphere(float radius) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initSphere(radius); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createCylinder(float radius, float height) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initCylinder(radius, height); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createCapsule(float radius, float height) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initCapsule(radius, height); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createConvexHull( const cocos2d::Vec3 *points, int numPoints ) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initConvexHull(points, numPoints); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createMesh( const cocos2d::Vec3 *triangles, int numTriangles ) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initMesh(triangles, numTriangles); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createHeightfield( int heightStickWidth,int heightStickLength + , const void* heightfieldData, float heightScale + , float minHeight, float maxHeight + , bool useFloatDatam, bool flipQuadEdges + , bool useDiamondSubdivision) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initHeightfield(heightStickWidth, heightStickLength, heightfieldData, heightScale, minHeight, maxHeight, useFloatDatam, flipQuadEdges, useDiamondSubdivision); + shape->autorelease(); + return shape; +} + +Physics3DShape* Physics3DShape::createCompoundShape( const std::vector> &shapes ) +{ + auto shape = new (std::nothrow) Physics3DShape(); + shape->initCompoundShape(shapes); + shape->autorelease(); + return shape; +} + +bool Physics3DShape::initBox(const cocos2d::Vec3& ext) +{ + _shapeType = ShapeType::BOX; + _btShape = new btBoxShape(convertVec3TobtVector3(ext * 0.5f)); + return true; +} +bool Physics3DShape::initSphere(float radius) +{ + _shapeType = ShapeType::SPHERE; + _btShape = new btSphereShape(radius); + return true; +} +bool Physics3DShape::initCylinder(float radius, float height) +{ + _shapeType = ShapeType::CYLINDER; + _btShape = new btCylinderShape(convertVec3TobtVector3(cocos2d::Vec3(radius, height, radius) * 0.5f)); + return true; +} +bool Physics3DShape::initCapsule(float radius, float height) +{ + _shapeType = ShapeType::CAPSULE; + _btShape = new btCapsuleShape(radius, height); + return true; +} + +bool Physics3DShape::initConvexHull( const cocos2d::Vec3 *points, int numPoints ) +{ + _shapeType = ShapeType::CONVEX; + _btShape = new btConvexHullShape((btScalar *)points, numPoints, sizeof(cocos2d::Vec3)); + return true; +} + +bool Physics3DShape::initMesh( const cocos2d::Vec3 *triangles, int numTriangles ) +{ + _shapeType = ShapeType::MESH; + auto mesh = new btTriangleMesh(false); + for (int i = 0; i < numTriangles * 3; i += 3){ + mesh->addTriangle(convertVec3TobtVector3(triangles[i]), convertVec3TobtVector3(triangles[i + 1]), convertVec3TobtVector3(triangles[i + 2])); + } + _btShape = new btBvhTriangleMeshShape(mesh, true); + return true; +} + +bool Physics3DShape::initHeightfield( int heightStickWidth,int heightStickLength + , const void* heightfieldData, float heightScale + , float minHeight, float maxHeight + , bool useFloatDatam, bool flipQuadEdges + , bool useDiamondSubdivision) +{ + _shapeType = ShapeType::HEIGHT_FIELD; + PHY_ScalarType type = PHY_UCHAR; + unsigned int dataSizeInByte = heightStickWidth * heightStickLength; + if (useFloatDatam){ + type = PHY_FLOAT; + dataSizeInByte *= sizeof(float); + } + _heightfieldData = new unsigned char[dataSizeInByte]; + memcpy(_heightfieldData, heightfieldData, dataSizeInByte); + auto heightfield = new btHeightfieldTerrainShape(heightStickWidth, heightStickLength, _heightfieldData, heightScale, minHeight, maxHeight, 1, type, flipQuadEdges); + heightfield->setUseDiamondSubdivision(useDiamondSubdivision); + _btShape = heightfield; + return true; +} + +bool Physics3DShape::initCompoundShape( const std::vector> &shapes ) +{ + _shapeType = ShapeType::COMPOUND; + auto compound = new btCompoundShape; + for (auto iter : shapes){ + compound->addChildShape(convertMat4TobtTransform(iter.second), iter.first->getbtShape()); + CC_SAFE_RETAIN(iter.first); + _compoundChildShapes.push_back(iter.first); + } + _btShape = compound; + return true; +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DShape.h b/cocos/physics3d/CCPhysics3DShape.h new file mode 100644 index 000000000000..086be0a27659 --- /dev/null +++ b/cocos/physics3d/CCPhysics3DShape.h @@ -0,0 +1,169 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_SHAPE_H__ +#define __PHYSICS_3D_SHAPE_H__ + +#include "base/CCRef.h" +#include "base/ccConfig.h" +#include "math/CCMath.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +class btCollisionShape; + +NS_CC_BEGIN +/** + * @addtogroup _3d + * @{ + */ + +/** + * @brief Create a physical shape(box, sphere, cylinder, capsule, convexhull, mesh and heightfield) + */ +class CC_DLL Physics3DShape : public Ref +{ +public: + enum class ShapeType + { + UNKNOWN = 0, + BOX, + SPHERE, + CYLINDER, + CAPSULE, + CONVEX, + MESH, + HEIGHT_FIELD, + COMPOUND + }; + + /** + * get shape type + */ + virtual ShapeType getShapeType() const; + + /** + * create box shape + * @param extent The extent of sphere. + */ + static Physics3DShape* createBox(const cocos2d::Vec3& extent); + + /** + * create sphere shape + * @param radius The radius of sphere. + */ + static Physics3DShape* createSphere(float radius); + + /** + * create cylinder shape + * @param radius The radius of cylinder. + * @param height The height. + */ + static Physics3DShape* createCylinder(float radius, float height); + + /** + * create capsule shape + * @param radius The radius of casule. + * @param height The height (cylinder part). + */ + static Physics3DShape* createCapsule(float radius, float height); + + /** + * create convex hull + * @param points The vertices of convex hull + * @param numPoints The number of vertices. + */ + static Physics3DShape* createConvexHull(const cocos2d::Vec3 *points, int numPoints); + + /** + * create mesh + * @param triangles The pointer of triangle list + * @param numTriangles The number of triangles. + */ + static Physics3DShape* createMesh(const cocos2d::Vec3 *triangles, int numTriangles); + + /** + * create heightfield + * @param heightStickWidth The Width of heightfield + * @param heightStickLength The Length of heightfield. + * @param heightfieldData The Data of heightfield. + * @param minHeight The minHeight of heightfield. + * @param maxHeight The maxHeight of heightfield. + * @param flipQuadEdges if flip QuadEdges + */ + static Physics3DShape* createHeightfield(int heightStickWidth,int heightStickLength + , const void* heightfieldData, float heightScale + , float minHeight, float maxHeight + , bool useFloatDatam, bool flipQuadEdges, bool useDiamondSubdivision = false); + + /** + * create Compound Shape + * @param shapes The list of child shape + */ + static Physics3DShape* createCompoundShape(const std::vector> &shapes); + + +#if CC_ENABLE_BULLET_INTEGRATION + btCollisionShape* getbtShape() const { return _btShape; } +#endif + +protected: + Physics3DShape(); + ~Physics3DShape(); + + bool initBox(const cocos2d::Vec3& ext); + bool initSphere(float radius); + bool initCylinder(float radius, float height); + bool initCapsule(float radius, float height); + bool initConvexHull(const cocos2d::Vec3 *points, int numPoints); + bool initMesh(const cocos2d::Vec3 *triangles, int numTriangles); + bool initHeightfield(int heightStickWidth,int heightStickLength + , const void* heightfieldData, float heightScale + , float minHeight, float maxHeight + , bool useFloatDatam, bool flipQuadEdges + , bool useDiamondSubdivision); + bool initCompoundShape(const std::vector> &shapes); + + + ShapeType _shapeType; //shape type + +#if (CC_ENABLE_BULLET_INTEGRATION) + btCollisionShape* _btShape; + unsigned char *_heightfieldData; + std::vector _compoundChildShapes; +#endif +}; + +// end of 3d group +/// @} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_SHAPE_H__ diff --git a/cocos/physics3d/CCPhysics3DWorld.cpp b/cocos/physics3d/CCPhysics3DWorld.cpp new file mode 100644 index 000000000000..f3cd4f35d94c --- /dev/null +++ b/cocos/physics3d/CCPhysics3DWorld.cpp @@ -0,0 +1,331 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" +#include "renderer/CCRenderer.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +Physics3DWorld::Physics3DWorld() +: _btPhyiscsWorld(nullptr) +, _collisionConfiguration(nullptr) +, _dispatcher(nullptr) +, _broadphase(nullptr) +, _solver(nullptr) +, _debugDrawer(nullptr) +, _needCollisionChecking(false) +, _collisionCheckingFlag(false) +{ + +} +Physics3DWorld::~Physics3DWorld() +{ + removeAllPhysics3DConstraints(); + removeAllPhysics3DObjects(); + + CC_SAFE_DELETE(_collisionConfiguration); + CC_SAFE_DELETE(_dispatcher); + CC_SAFE_DELETE(_broadphase); + CC_SAFE_DELETE(_solver); + CC_SAFE_DELETE(_btPhyiscsWorld); + CC_SAFE_DELETE(_debugDrawer); + for (auto it : _physicsComponents) + it->setPhysics3DObject(nullptr); + _physicsComponents.clear(); +} + +Physics3DWorld* Physics3DWorld::create(Physics3DWorldDes* info) +{ + auto world = new (std::nothrow) Physics3DWorld(); + world->init(info); + world->autorelease(); + return world; +} + +bool Physics3DWorld::init(Physics3DWorldDes* info) +{ + ///collision configuration contains default setup for memory, collision setup + _collisionConfiguration = new (std::nothrow) btDefaultCollisionConfiguration(); + //_collisionConfiguration->setConvexConvexMultipointIterations(); + + ///use the default collision dispatcher. For parallel processing you can use a diffent dispatcher (see Extras/BulletMultiThreaded) + _dispatcher = new (std::nothrow) btCollisionDispatcher(_collisionConfiguration); + + _broadphase = new (std::nothrow) btDbvtBroadphase(); + + ///the default constraint solver. For parallel processing you can use a different solver (see Extras/BulletMultiThreaded) + btSequentialImpulseConstraintSolver* sol = new btSequentialImpulseConstraintSolver(); + _solver = sol; + + _btPhyiscsWorld = new btDiscreteDynamicsWorld(_dispatcher,_broadphase,_solver,_collisionConfiguration); + _btPhyiscsWorld->setGravity(convertVec3TobtVector3(info->gravity)); + if (info->isDebugDrawEnabled) + { + _debugDrawer = new (std::nothrow) Physics3DDebugDrawer(); + _btPhyiscsWorld->setDebugDrawer(_debugDrawer); + } + + return true; +} + +void Physics3DWorld::setDebugDrawEnable(bool enableDebugDraw) +{ + if (enableDebugDraw && _btPhyiscsWorld->getDebugDrawer() == nullptr) + { + _debugDrawer = new (std::nothrow) Physics3DDebugDrawer(); + } + enableDebugDraw ? _btPhyiscsWorld->setDebugDrawer(_debugDrawer) : _btPhyiscsWorld->setDebugDrawer(nullptr); +} + +bool Physics3DWorld::isDebugDrawEnabled() const +{ + return _btPhyiscsWorld->getDebugDrawer() != nullptr; +} + +void Physics3DWorld::addPhysics3DObject(Physics3DObject* physicsObj) +{ + auto it = std::find(_objects.begin(), _objects.end(), physicsObj); + if (it == _objects.end()) + { + _objects.push_back(physicsObj); + physicsObj->retain(); + if (physicsObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + _btPhyiscsWorld->addRigidBody(static_cast(physicsObj)->getRigidBody()); + } + _collisionCheckingFlag = true; + } +} + +void Physics3DWorld::removePhysics3DObject(Physics3DObject* physicsObj) +{ + auto it = std::find(_objects.begin(), _objects.end(), physicsObj); + if (it != _objects.end()) + { + if (physicsObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + _btPhyiscsWorld->removeRigidBody(static_cast(physicsObj)->getRigidBody()); + } + physicsObj->release(); + _objects.erase(it); + _collisionCheckingFlag = true; + } +} + +void Physics3DWorld::removeAllPhysics3DObjects() +{ + for (auto it : _objects) { + if (it->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + _btPhyiscsWorld->removeRigidBody(static_cast(it)->getRigidBody()); + } + it->release(); + } + _objects.clear(); + _collisionCheckingFlag = true; +} + +void Physics3DWorld::addPhysics3DConstraint(Physics3DConstraint* constraint, bool disableCollisionsBetweenLinkedObjs) +{ + auto body = constraint->getBodyA(); + if (body) + body->addConstraint(constraint); + + body = constraint->getBodyB(); + if (body) + { + body->addConstraint(constraint); + } + _btPhyiscsWorld->addConstraint(constraint->getbtContraint(), disableCollisionsBetweenLinkedObjs); +} + +void Physics3DWorld::removePhysics3DConstraint(Physics3DConstraint* constraint) +{ + _btPhyiscsWorld->removeConstraint(constraint->getbtContraint()); + + auto bodyA = constraint->getBodyA(); + auto bodyB = constraint->getBodyB(); + if (bodyA) + bodyA->removeConstraint(constraint); + if (bodyB) + bodyB->removeConstraint(constraint); +} + +void Physics3DWorld::removeAllPhysics3DConstraints() +{ + for(auto it : _objects) + { + auto type = it->getObjType(); + if (type == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + auto& constraints = static_cast(it)->_constraintList; + for (auto constraint : constraints) { + _btPhyiscsWorld->removeConstraint(constraint->getbtContraint()); + constraint->release(); + } + constraints.clear(); + } + } + +} + +void Physics3DWorld::stepSimulate(float dt) +{ + if (_btPhyiscsWorld) + { + //should sync kinematic node before simulation + for (auto it : _physicsComponents) + { + it->preSimulate(); + } + _btPhyiscsWorld->stepSimulation(dt, 3); + //sync dynamic node after simulation + for (auto it : _physicsComponents) + { + it->postSimulate(); + } + if (needCollisionChecking()) + collisionChecking(); + } +} + +void Physics3DWorld::debugDraw(Renderer* renderer) +{ + if (_debugDrawer) + { + _debugDrawer->clear(); + _btPhyiscsWorld->debugDrawWorld(); + _debugDrawer->draw(renderer); + } +} + +bool Physics3DWorld::rayCast(const cocos2d::Vec3& startPos, const cocos2d::Vec3& endPos, Physics3DWorld::HitResult* result) +{ + auto btStart = convertVec3TobtVector3(startPos); + auto btEnd = convertVec3TobtVector3(endPos); + btCollisionWorld::ClosestRayResultCallback btResult(btStart, btEnd); + _btPhyiscsWorld->rayTest(btStart, btEnd, btResult); + if (btResult.hasHit()) + { + result->hitObj = getPhysicsObject(btResult.m_collisionObject); + result->hitPosition = convertbtVector3ToVec3(btResult.m_hitPointWorld); + result->hitNormal = convertbtVector3ToVec3(btResult.m_hitNormalWorld); + return true; + } + result->hitObj = nullptr; + return false; +} + +bool Physics3DWorld::sweepShape(Physics3DShape* shape, const cocos2d::Mat4& startTransform, const cocos2d::Mat4& endTransform, Physics3DWorld::HitResult* result) +{ + CC_ASSERT(shape->getShapeType() != Physics3DShape::ShapeType::HEIGHT_FIELD && shape->getShapeType() != Physics3DShape::ShapeType::MESH); + auto btStart = convertMat4TobtTransform(startTransform); + auto btEnd = convertMat4TobtTransform(endTransform); + btCollisionWorld::ClosestConvexResultCallback btResult(btStart.getOrigin(), btEnd.getOrigin()); + _btPhyiscsWorld->convexSweepTest((btConvexShape*)shape->getbtShape(), btStart, btEnd, btResult); + if (btResult.hasHit()) + { + result->hitObj = getPhysicsObject(btResult.m_hitCollisionObject); + result->hitPosition = convertbtVector3ToVec3(btResult.m_hitPointWorld); + result->hitNormal = convertbtVector3ToVec3(btResult.m_hitNormalWorld); + return true; + } + result->hitObj = nullptr; + return false; +} + +Physics3DObject* Physics3DWorld::getPhysicsObject(const btCollisionObject* btObj) +{ + for(auto it : _objects) + { + if (it->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + if (static_cast(it)->getRigidBody() == btObj) + return it; + } + } + return nullptr; +} + +void Physics3DWorld::collisionChecking() +{ + int numManifolds = _dispatcher->getNumManifolds(); + for (int i = 0; i < numManifolds; ++i){ + btPersistentManifold * contactManifold = _dispatcher->getManifoldByIndexInternal(i); + int numContacts = contactManifold->getNumContacts(); + if (0 < numContacts){ + const btCollisionObject* obA = static_cast(contactManifold->getBody0()); + const btCollisionObject* obB = static_cast(contactManifold->getBody1()); + Physics3DObject *poA = getPhysicsObject(obA); + Physics3DObject *poB = getPhysicsObject(obB); + if (poA->needCollisionCallback() || poB->needCollisionCallback()){ + Physics3DCollisionInfo ci; + ci.objA = poA; + ci.objB = poB; + for (int c = 0; c < numContacts; ++c){ + btManifoldPoint& pt = contactManifold->getContactPoint(c); + Physics3DCollisionInfo::CollisionPoint cp = { + convertbtVector3ToVec3(pt.m_localPointA), convertbtVector3ToVec3(pt.m_positionWorldOnA) + , convertbtVector3ToVec3(pt.m_localPointB), convertbtVector3ToVec3(pt.m_positionWorldOnB) + , convertbtVector3ToVec3(pt.m_normalWorldOnB) + }; + ci.collisionPointList.push_back(cp); + } + + if (poA->needCollisionCallback()){ + poA->getCollisionCallback()(ci); + } + if (poB->needCollisionCallback()){ + poB->getCollisionCallback()(ci); + } + } + } + } +} + +bool Physics3DWorld::needCollisionChecking() +{ + if (_collisionCheckingFlag){ + _needCollisionChecking = false; + for(auto it : _objects) + { + if (it->getCollisionCallback() != nullptr){ + _needCollisionChecking = true; + break; + } + } + _collisionCheckingFlag = false; + } + return _needCollisionChecking; +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif //CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysics3DWorld.h b/cocos/physics3d/CCPhysics3DWorld.h new file mode 100644 index 000000000000..b238de3ebf6d --- /dev/null +++ b/cocos/physics3d/CCPhysics3DWorld.h @@ -0,0 +1,173 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_3D_WORLD_H__ +#define __PHYSICS_3D_WORLD_H__ + +#include "math/CCMath.h" +#include "base/CCRef.h" +#include "base/ccConfig.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +class btDynamicsWorld; +class btDefaultCollisionConfiguration; +class btCollisionDispatcher; +class btDbvtBroadphase; +class btSequentialImpulseConstraintSolver; +class btRigidBody; +class btCollisionObject; + +NS_CC_BEGIN +/** + * @addtogroup _3d + * @{ + */ + +class Physics3DObject; +class Physics3DConstraint; +class Physics3DDebugDrawer; +class Physics3DComponent; +class Physics3DShape; +class Renderer; + +/** + * @brief The description of Physics3DWorld. + */ +struct CC_DLL Physics3DWorldDes +{ + bool isDebugDrawEnabled; //using physics debug draw?, false by default + cocos2d::Vec3 gravity;//gravity, (0, -9.8, 0) + Physics3DWorldDes() + { + isDebugDrawEnabled = false; + gravity = cocos2d::Vec3(0.f, -9.8f, 0.f); + } +}; + +/** + * @brief The physics information container, include Physics3DObjects, Physics3DConstraints, collision information and so on. + */ +class CC_DLL Physics3DWorld : public Ref +{ + friend class Physics3DComponent; +public: + + struct HitResult + { + cocos2d::Vec3 hitPosition; + cocos2d::Vec3 hitNormal; + Physics3DObject* hitObj; + }; + + /** + * Creates a Physics3DWorld with Physics3DWorldDes. + * + * @return An autoreleased Physics3DWorld object. + */ + static Physics3DWorld* create(Physics3DWorldDes* info); + + /** Add a Physics3DObject. */ + void addPhysics3DObject(Physics3DObject* physicsObj); + + /** Remove a Physics3DObject. */ + void removePhysics3DObject(Physics3DObject* physicsObj); + + /** Remove all Physics3DObjects. */ + void removeAllPhysics3DObjects(); + + /** Add a Physics3DConstraint. */ + void addPhysics3DConstraint(Physics3DConstraint* constraint, bool disableCollisionsBetweenLinkedObjs = true); + + /** Remove a Physics3DConstraint. */ + void removePhysics3DConstraint(Physics3DConstraint* constraint); + + /** Remove all Physics3DConstraint. */ + void removeAllPhysics3DConstraints(); + + /** Simulate one frame. */ + void stepSimulate(float dt); + + /** Enable or disable debug drawing. */ + void setDebugDrawEnable(bool enableDebugDraw); + + /** Check debug drawing is enabled. */ + bool isDebugDrawEnabled() const; + + /** Internal method, the updater of debug drawing, need called each frame. */ + void debugDraw(cocos2d::Renderer* renderer); + + /** Get the list of Physics3DObjects. */ + const std::vector& getPhysicsObjects() const { return _objects; } + + /** + * Ray cast method + * @param startPos The start position of ray. + * @param endPos The end position of ray. + * @param result the result of ray cast. + */ + bool rayCast(const cocos2d::Vec3& startPos, const cocos2d::Vec3& endPos, HitResult* result); + + /** Performs a swept shape cast on all objects in the Physics3DWorld. */ + bool sweepShape(Physics3DShape* shape, const cocos2d::Mat4& startTransform, const cocos2d::Mat4& endTransform, HitResult* result); + +CC_CONSTRUCTOR_ACCESS: + + Physics3DWorld(); + virtual ~Physics3DWorld(); + + bool init(Physics3DWorldDes* info); + + Physics3DObject* getPhysicsObject(const btCollisionObject* btObj); + + void collisionChecking(); + bool needCollisionChecking(); + +protected: + std::vector _objects; + std::vector _physicsComponents; //physics3d components + bool _needCollisionChecking; + bool _collisionCheckingFlag; + +#if (CC_ENABLE_BULLET_INTEGRATION) + btDynamicsWorld* _btPhyiscsWorld; + btDefaultCollisionConfiguration* _collisionConfiguration; + btCollisionDispatcher* _dispatcher; + btDbvtBroadphase* _broadphase; + btSequentialImpulseConstraintSolver* _solver; + Physics3DDebugDrawer* _debugDrawer; +#endif // CC_ENABLE_BULLET_INTEGRATION +}; + +// end of 3d group +/// @} +NS_CC_END + +#endif + +#endif //CC_USE_3D_PHYSICS + +#endif // __PHYSICS_3D_WORLD_H__ diff --git a/cocos/physics3d/CCPhysicsSprite3D.cpp b/cocos/physics3d/CCPhysicsSprite3D.cpp new file mode 100644 index 000000000000..e9f2a94d0b8d --- /dev/null +++ b/cocos/physics3d/CCPhysicsSprite3D.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCPhysics3D.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN + +PhysicsSprite3D* PhysicsSprite3D::create(const std::string &modelPath, Physics3DRigidBodyDes* rigidDes, const cocos2d::Vec3& translateInPhysics, const cocos2d::Quaternion& rotInPhsyics) +{ + auto ret = new PhysicsSprite3D(); + if (ret && ret->initWithFile(modelPath)) + { + auto obj = Physics3DRigidBody::create(rigidDes); + ret->_physicsComponent = Physics3DComponent::create(obj); + ret->addComponent(ret->_physicsComponent); + ret->_contentSize = ret->getBoundingBox().size; + ret->autorelease(); + return ret; + } + CC_SAFE_DELETE(ret); + return ret; +} + +Physics3DObject* PhysicsSprite3D::getPhysicsObj() const +{ + return _physicsComponent->getPhysics3DObject(); +} + +void PhysicsSprite3D::setSyncFlag(Physics3DComponent::PhysicsSyncFlag syncFlag) +{ + if (_physicsComponent) + _physicsComponent->setSyncFlag(syncFlag); +} + +void PhysicsSprite3D::syncToPhysics() +{ + if (_physicsComponent) + _physicsComponent->syncToPhysics(); +} + +void PhysicsSprite3D::syncToNode() +{ + if (_physicsComponent) + _physicsComponent->syncToNode(); +} + +PhysicsSprite3D::PhysicsSprite3D() +: _physicsComponent(nullptr) +{ + +} +PhysicsSprite3D::~PhysicsSprite3D() +{ + +} + +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS diff --git a/cocos/physics3d/CCPhysicsSprite3D.h b/cocos/physics3d/CCPhysicsSprite3D.h new file mode 100644 index 000000000000..e67ff584ea14 --- /dev/null +++ b/cocos/physics3d/CCPhysicsSprite3D.h @@ -0,0 +1,81 @@ +/**************************************************************************** + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __PHYSICS_SPRITE_3D_H__ +#define __PHYSICS_SPRITE_3D_H__ + +#include "base/ccConfig.h" +#include "3d/CCSprite3D.h" +#include "CCPhysics3DObject.h" +#include "CCPhysics3DComponent.h" + +#if CC_USE_3D_PHYSICS + +#if (CC_ENABLE_BULLET_INTEGRATION) + +NS_CC_BEGIN +/** + * @addtogroup _3d + * @{ + */ + + /** + * @brief Convenient class to create a rigid body with Sprite3D + */ +class CC_DLL PhysicsSprite3D : public cocos2d::Sprite3D +{ +public: + + /** creates a PhysicsSprite3D*/ + static PhysicsSprite3D* create(const std::string &modelPath, Physics3DRigidBodyDes* rigidDes, const cocos2d::Vec3& translateInPhysics = cocos2d::Vec3::ZERO, const cocos2d::Quaternion& rotInPhsyics = cocos2d::Quaternion::ZERO); + + /** Get the Physics3DObject. */ + Physics3DObject* getPhysicsObj() const; + + /** Set synchronization flag, see Physics3DComponent. */ + void setSyncFlag(Physics3DComponent::PhysicsSyncFlag syncFlag); + + /** Physics synchronize rendering. */ + void syncToPhysics(); + + /** Rendering synchronize physics. */ + void syncToNode(); + +CC_CONSTRUCTOR_ACCESS: + PhysicsSprite3D(); + virtual ~PhysicsSprite3D(); + +protected: + Physics3DComponent* _physicsComponent; +}; + +// end of 3d group +/// @} +NS_CC_END + +#endif // CC_ENABLE_BULLET_INTEGRATION + +#endif // CC_USE_3D_PHYSICS + +#endif // __PHYSICS_SPRITE_3D_H__ diff --git a/cocos/physics3d/CMakeLists.txt b/cocos/physics3d/CMakeLists.txt new file mode 100644 index 000000000000..6e685d725e04 --- /dev/null +++ b/cocos/physics3d/CMakeLists.txt @@ -0,0 +1,12 @@ + +set(COCOS_PHYSICS3D_SRC + + physics3d/CCPhysics3D.cpp + physics3d/CCPhysics3DComponent.cpp + physics3d/CCPhysics3DConstraint.cpp + physics3d/CCPhysics3DDebugDrawer.cpp + physics3d/CCPhysics3DObject.cpp + physics3d/CCPhysics3DShape.cpp + physics3d/CCPhysics3DWorld.cpp + physics3d/CCPhysicsSprite3D.cpp +) diff --git a/extensions/Android.mk b/extensions/Android.mk index 3574e252b4a7..90a1561c6f42 100644 --- a/extensions/Android.mk +++ b/extensions/Android.mk @@ -178,11 +178,12 @@ Particle3D/PU/CCPUBehaviour.cpp \ Particle3D/PU/CCPUBehaviourManager.cpp \ Particle3D/PU/CCPUBehaviourTranslator.cpp \ Particle3D/PU/CCPUSlaveBehaviour.cpp \ -Particle3D/PU/CCPUSlaveBehaviourTranslator.cpp \ +Particle3D/PU/CCPUSlaveBehaviourTranslator.cpp LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static LOCAL_STATIC_LIBRARIES += cocos_curl_static LOCAL_STATIC_LIBRARIES += box2d_static +LOCAL_STATIC_LIBRARIES += bullet_static LOCAL_CXXFLAGS += -fexceptions diff --git a/external/config.json b/external/config.json index 05cb6e541532..bd7dfdb93353 100644 --- a/external/config.json +++ b/external/config.json @@ -1,5 +1,5 @@ { - "version":"v3-deps-50", + "version":"v3-deps-51”, "zip_file_size":"116842586", "repo_name":"cocos2d-x-3rd-party-libs-bin", "repo_parent":"https://github.com/cocos2d/", diff --git a/tests/cpp-tests/CMakeLists.txt b/tests/cpp-tests/CMakeLists.txt index 337fe8350fcf..b5705ba2d822 100644 --- a/tests/cpp-tests/CMakeLists.txt +++ b/tests/cpp-tests/CMakeLists.txt @@ -223,6 +223,12 @@ if(USE_BOX2D) ) endif() +if(USE_BULLET) + list(APPEND TESTS_SRC + Classes/Physics3DTest/Physics3DTest.cpp + ) +endif() + if(LINUX) set(EXTENDED_TESTS_SRC ) diff --git a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp new file mode 100644 index 000000000000..9a44f80a6483 --- /dev/null +++ b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp @@ -0,0 +1,767 @@ +/**************************************************************************** + Copyright (c) 2012 cocos2d-x.org + Copyright (c) 2015 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "Physics3DTest.h" + +#include "3d/CCTerrain.h" +#include "3d/CCBundle3D.h" +#include "physics3d/CCPhysics3D.h" +#include "extensions/Particle3D/PU/CCPUParticleSystem3D.h" +USING_NS_CC_EXT; +USING_NS_CC; + +enum +{ + IDC_NEXT = 100, + IDC_BACK, + IDC_RESTART +}; + +static cocos2d::Scene* physicsScene = nullptr; + +#define START_POS_X -0.5 +#define START_POS_Y -2.5 +#define START_POS_Z -0.5 + +#define ARRAY_SIZE_X 4 +#define ARRAY_SIZE_Y 3 +#define ARRAY_SIZE_Z 4 + +Physics3DTests::Physics3DTests() +{ +#if CC_USE_3D_PHYSICS == 0 + ADD_TEST_CASE(Physics3DDemoDisabled); +#else + ADD_TEST_CASE(BasicPhysics3DDemo); + ADD_TEST_CASE(Physics3DConstraintDemo); + ADD_TEST_CASE(Physics3DKinematicDemo); + ADD_TEST_CASE(Physics3DCollisionCallbackDemo); + ADD_TEST_CASE(Physics3DTerrainDemo); +#endif +}; + +#if CC_USE_3D_PHYSICS == 0 +void Physics3DDemoDisabled::onEnter() +{ + TTFConfig ttfConfig("fonts/arial.ttf", 16); + auto label = Label::createWithTTF(ttfConfig, "Should define CC_USE_3D_PHYSICS\n to run this test case"); + + auto size = Director::getInstance()->getWinSize(); + label->setPosition(Vec2(size.width / 2, size.height / 2)); + + addChild(label); + + TestCase::onEnter(); +} +#else +std::string Physics3DTestDemo::title() const +{ + return "Physics3D Test"; +} + +std::string Physics3DTestDemo::subtitle() const +{ + return ""; +} + +bool Physics3DTestDemo::init() +{ + if (!TestCase::init()) return false; + + if (initWithPhysics()) + { + getPhysics3DWorld()->setDebugDrawEnable(false); + + physicsScene = this; + Size size = Director::getInstance()->getWinSize(); + _camera = Camera::createPerspective(30.0f, size.width / size.height, 1.0f, 1000.0f); + _camera->setPosition3D(Vec3(0.0f, 50.0f, 100.0f)); + _camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f)); + _camera->setCameraFlag(CameraFlag::USER1); + this->addChild(_camera); + + auto listener = EventListenerTouchAllAtOnce::create(); + listener->onTouchesBegan = CC_CALLBACK_2(Physics3DTestDemo::onTouchesBegan, this); + listener->onTouchesMoved = CC_CALLBACK_2(Physics3DTestDemo::onTouchesMoved, this); + listener->onTouchesEnded = CC_CALLBACK_2(Physics3DTestDemo::onTouchesEnded, this); + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + TTFConfig ttfConfig("fonts/arial.ttf", 10); + auto label = Label::createWithTTF(ttfConfig,"DebugDraw OFF"); + auto menuItem = MenuItemLabel::create(label, [=](Ref *ref){ + if (getPhysics3DWorld()->isDebugDrawEnabled()){ + getPhysics3DWorld()->setDebugDrawEnable(false); + label->setString("DebugDraw OFF"); + }else{ + getPhysics3DWorld()->setDebugDrawEnable(true); + label->setString("DebugDraw ON"); + } + }); + + auto menu = Menu::create(menuItem, nullptr); + menu->setPosition(Vec2::ZERO); + menuItem->setAnchorPoint(Vec2::ANCHOR_TOP_LEFT); + menuItem->setPosition( Vec2(VisibleRect::left().x, VisibleRect::top().y-50) ); + this->addChild(menu); + + _angle = 0.0f; + return true; + } + physicsScene = nullptr; + return false; +} + +void Physics3DTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) +{ + _needShootBox = true; +} + +void Physics3DTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +{ + if (touches.size() && _camera) + { + auto touch = touches[0]; + auto delta = touch->getDelta(); + + _angle -= CC_DEGREES_TO_RADIANS(delta.x); + _camera->setPosition3D(Vec3(100.0f * sinf(_angle), 50.0f, 100.0f * cosf(_angle))); + _camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f)); + + if (delta.lengthSquared() > 16) + { + _needShootBox = false; + } + } +} + +void Physics3DTestDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event *event) +{ + if (!_needShootBox) return; + if (!touches.empty()) + { + auto location = touches[0]->getLocationInView(); + + Vec3 nearP(location.x, location.y, -1.0f), farP(location.x, location.y, 1.0f); + nearP = _camera->unproject(nearP); + farP = _camera->unproject(farP); + Vec3 dir(farP - nearP); + shootBox(_camera->getPosition3D() + dir * 10.0f); + } +} + +Physics3DTestDemo::Physics3DTestDemo( void ) +: _angle(0.0f) +, _camera(nullptr) +{ + +} + +void Physics3DTestDemo::update( float delta ) +{ + +} + +Physics3DTestDemo::~Physics3DTestDemo( void ) +{ + +} + +void Physics3DTestDemo::shootBox( const cocos2d::Vec3 &des ) +{ + Physics3DRigidBodyDes rbDes; + Vec3 linearVel = des - _camera->getPosition3D(); + linearVel.normalize(); + linearVel *= 100.0f; + rbDes.originalTransform.translate(_camera->getPosition3D()); + rbDes.mass = 1.f; + rbDes.shape = Physics3DShape::createBox(Vec3(0.5f, 0.5f, 0.5f)); + auto sprite = PhysicsSprite3D::create("Sprite3DTest/box.c3t", &rbDes); + sprite->setTexture("Images/Icon.png"); + + auto rigidBody = static_cast(sprite->getPhysicsObj()); + rigidBody->setLinearFactor(Vec3::ONE); + rigidBody->setLinearVelocity(linearVel); + rigidBody->setAngularVelocity(Vec3::ZERO); + rigidBody->setCcdMotionThreshold(0.5f); + rigidBody->setCcdSweptSphereRadius(0.4f); + + this->addChild(sprite); + sprite->setPosition3D(_camera->getPosition3D()); + sprite->setScale(0.5f); + sprite->syncToNode(); + + //optimize, only sync node to physics + sprite->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE); //sync node to physics + + sprite->setCameraMask((unsigned short)CameraFlag::USER1); +} + +std::string BasicPhysics3DDemo::subtitle() const +{ + return "Basic Physics3D"; +} + +bool BasicPhysics3DDemo::init() +{ + if (!Physics3DTestDemo::init()) + return false; + + //create floor + Physics3DRigidBodyDes rbDes; + rbDes.mass = 0.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(60.0f, 1.0f, 60.0f)); + + auto floor = PhysicsSprite3D::create("Sprite3DTest/box.c3t", &rbDes); + floor->setTexture("Sprite3DTest/plane.png"); + floor->setScaleX(60); + floor->setScaleZ(60); + this->addChild(floor); + floor->setCameraMask((unsigned short)CameraFlag::USER1); + floor->syncToNode(); + //static object sync is not needed + floor->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::NONE); + + //create several boxes using PhysicsSprite3D + rbDes.mass = 1.f; + rbDes.shape = Physics3DShape::createBox(Vec3(0.8f, 0.8f, 0.8f)); + float start_x = START_POS_X - ARRAY_SIZE_X/2; + float start_y = START_POS_Y; + float start_z = START_POS_Z - ARRAY_SIZE_Z/2; + + for (int k=0;ksetTexture("Images/CyanSquare.png"); + sprite->setPosition3D(Vec3(x, y, z)); + sprite->syncToNode(); + sprite->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + sprite->setScale(0.8f); + this->addChild(sprite); + } + } + } + + physicsScene->setPhysics3DDebugCamera(_camera); + + return true; +} + +std::string Physics3DConstraintDemo::subtitle() const +{ + return "Physics3D Constraint"; +} + +std::string Physics3DKinematicDemo::subtitle() const +{ + return "Physics3D Kinematic"; +} + +bool Physics3DKinematicDemo::init() +{ + if (!Physics3DTestDemo::init()) + return false; + + //create floor + Physics3DRigidBodyDes rbDes; + rbDes.mass = 0.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(60.0f, 1.0f, 60.0f)); + auto floor = PhysicsSprite3D::create("Sprite3DTest/box.c3t", &rbDes); + floor->setTexture("Sprite3DTest/plane.png"); + floor->setScaleX(60); + floor->setScaleZ(60); + floor->setPosition3D(Vec3(0.f, -1.f, 0.f)); + this->addChild(floor); + floor->setCameraMask((unsigned short)CameraFlag::USER1); + floor->syncToNode(); + //static object sync is not needed + floor->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::NONE); + + //create Kinematics + for (unsigned int i = 0; i < 3; ++i) + { + rbDes.mass = 0.f; //kinematic objects. zero mass so that it can not be affected by other dynamic objects + rbDes.shape = Physics3DShape::createBox(Vec3(2.0f, 2.0f, 2.0f)); + + auto sprite = PhysicsSprite3D::create("Sprite3DTest/box.c3t", &rbDes); + sprite->setTexture("Images/CyanSquare.png"); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + auto rigidBody = static_cast(sprite->getPhysicsObj()); + rigidBody->setKinematic(true); + + this->addChild(sprite); + + sprite->setScale(2.0f); + sprite->setPosition3D(Vec3(-15.0f, 0.0f, 15.0f - 15.0f * i)); + auto moveby = MoveBy::create(2.0f + i, Vec3(30.0f, 0.0f, 0.0f)); + sprite->runAction(RepeatForever::create(Sequence::create(moveby, moveby->reverse(), nullptr))); + } + + //create Dynamic + { + //create several spheres + rbDes.mass = 1.f; + rbDes.shape = Physics3DShape::createSphere(0.5f); + float start_x = START_POS_X - ARRAY_SIZE_X/2; + float start_y = START_POS_Y + 5.0f; + float start_z = START_POS_Z - ARRAY_SIZE_Z/2; + + for (int k=0;ksetTexture("Sprite3DTest/plane.png"); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + sprite->setScale(1.0f / sprite->getContentSize().width); + this->addChild(sprite); + sprite->setPosition3D(Vec3(x, y, z)); + sprite->syncToNode(); + + sprite->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE); + } + } + } + } + + + physicsScene->setPhysics3DDebugCamera(_camera); + return true; +} + + +bool Physics3DConstraintDemo::init() +{ + if (!Physics3DTestDemo::init()) + return false; + + //PhysicsSprite3D = Sprite3D + Physics3DComponent + Physics3DRigidBodyDes rbDes; + rbDes.disableSleep = true; + //create box + auto sprite = Sprite3D::create("Sprite3DTest/orc.c3b"); + rbDes.mass = 10.f; + rbDes.shape = Physics3DShape::createBox(Vec3(5.0f, 5.0f, 5.0f)); + auto rigidBody = Physics3DRigidBody::create(&rbDes); + Quaternion quat; + Quaternion::createFromAxisAngle(Vec3(0.f, 1.f, 0.f), CC_DEGREES_TO_RADIANS(180), &quat); + auto component = Physics3DComponent::create(rigidBody, Vec3(0.f, -3.f, 0.f), quat); + + sprite->addComponent(component); + addChild(sprite); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + sprite->setScale(0.4f); + sprite->setPosition3D(Vec3(-20.f, 5.f, 0.f)); + //sync node position to physics + component->syncToNode(); + //physics controlled, we will not set position for it, so we can skip sync node position to physics + component->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE); + + physicsScene->setPhysics3DDebugCamera(_camera); + + //create point to point constraint + Physics3DConstraint* constraint = Physics3DPointToPointConstraint::create(rigidBody, Vec3(2.5f, 2.5f, 2.5f)); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(constraint); + + //create hinge constraint + rbDes.mass = 1.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(8.0f, 8.0f, 1.f)); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + sprite = Sprite3D::create("Sprite3DTest/box.c3t"); + sprite->setTexture("Sprite3DTest/plane.png"); + sprite->setScaleX(8.f); + sprite->setScaleY(8.f); + sprite->setPosition3D(Vec3(5.f, 0.f, 0.f)); + sprite->addComponent(component); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + component->syncToNode(); + rigidBody->setAngularVelocity(Vec3(0,3,0)); + constraint = Physics3DHingeConstraint::create(rigidBody, Vec3(4.f, 4.f, 0.5f), Vec3(0.f, 1.f, 0.f)); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(constraint); + + + //create slider constraint + rbDes.mass = 1.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(3.0f, 2.0f, 3.f)); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + sprite = Sprite3D::create("Sprite3DTest/box.c3t"); + sprite->setTexture("Sprite3DTest/plane.png"); + sprite->setScaleX(3.f); + sprite->setScaleZ(3.f); + sprite->setPosition3D(Vec3(30.f, 15.f, 0.f)); + sprite->addComponent(component); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + component->syncToNode(); + rigidBody->setLinearVelocity(Vec3(0,3,0)); + + rbDes.mass = 0.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(3.0f, 3.0f, 3.f)); + auto rigidBodyB = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBodyB); + sprite = Sprite3D::create("Sprite3DTest/box.c3t"); + sprite->setTexture("Sprite3DTest/plane.png"); + sprite->setScale(3.f); + sprite->setPosition3D(Vec3(30.f, 5.f, 0.f)); + sprite->addComponent(component); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + component->syncToNode(); + + Mat4 frameInA, frameInB; + Mat4::createRotationZ(CC_DEGREES_TO_RADIANS(90), &frameInA); + frameInB = frameInA; + frameInA.m[13] = -5.f; + frameInB.m[13] = 5.f; + constraint = Physics3DSliderConstraint::create(rigidBody, rigidBodyB, frameInA, frameInB, false); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(constraint); + ((Physics3DSliderConstraint*)constraint)->setLowerLinLimit(-5.f); + ((Physics3DSliderConstraint*)constraint)->setUpperLinLimit(5.f); + + //create ConeTwist constraint + rbDes.mass = 1.f; + rbDes.shape = Physics3DShape::createBox(Vec3(3.f, 3.f, 3.f)); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + sprite = Sprite3D::create("Sprite3DTest/box.c3t"); + sprite->setTexture("Sprite3DTest/plane.png"); + sprite->setScale(3.f); + sprite->setPosition3D(Vec3(-10.f, 5.f, 0.f)); + sprite->addComponent(component); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + component->syncToNode(); + + Mat4::createRotationZ(CC_DEGREES_TO_RADIANS(90), &frameInA); + frameInA.m[12] = 0.f; + frameInA.m[13] = -10.f; + frameInA.m[14] = 0.f; + constraint = Physics3DConeTwistConstraint::create(rigidBody, frameInA); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(constraint, true); + ((Physics3DConeTwistConstraint*)constraint)->setLimit(CC_DEGREES_TO_RADIANS(10), CC_DEGREES_TO_RADIANS(10), CC_DEGREES_TO_RADIANS(40)); + + //create 6 dof constraint + rbDes.mass = 1.0f; + rbDes.shape = Physics3DShape::createBox(Vec3(3.0f, 3.0f, 3.f)); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + sprite = Sprite3D::create("Sprite3DTest/box.c3t"); + sprite->setTexture("Sprite3DTest/plane.png"); + sprite->setScale(3.f); + sprite->setPosition3D(Vec3(30.f, -5.f, 0.f)); + sprite->addComponent(component); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + component->syncToNode(); + frameInA.setIdentity(); + constraint = Physics3D6DofConstraint::create(rigidBody, frameInA, false); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(constraint); + ((Physics3D6DofConstraint*)constraint)->setAngularLowerLimit(Vec3(0,0,0)); + ((Physics3D6DofConstraint*)constraint)->setAngularUpperLimit(Vec3(0,0,0)); + ((Physics3D6DofConstraint*)constraint)->setLinearLowerLimit(Vec3(-10,0,0)); + ((Physics3D6DofConstraint*)constraint)->setLinearUpperLimit(Vec3(10,0,0)); + + return true; +} + +void Physics3DConstraintDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) +{ + //ray trace + if(_camera) + { + auto touch = touches[0]; + auto location = touch->getLocationInView(); + Vec3 nearP(location.x, location.y, 0.0f), farP(location.x, location.y, 1.0f); + + auto size = Director::getInstance()->getWinSize(); + _camera->unproject(size, &nearP, &nearP); + _camera->unproject(size, &farP, &farP); + + Physics3DWorld::HitResult result; + bool ret = physicsScene->getPhysics3DWorld()->rayCast(nearP, farP, &result); + if (ret && result.hitObj->getObjType() == Physics3DObject::PhysicsObjType::RIGID_BODY) + { + auto mat = result.hitObj->getWorldTransform().getInversed(); + Vec3 position; + mat.transformPoint(result.hitPosition, &position); + + _constraint = Physics3DPointToPointConstraint::create(static_cast(result.hitObj), position); + physicsScene->getPhysics3DWorld()->addPhysics3DConstraint(_constraint, true); + _pickingDistance = (result.hitPosition - nearP).length(); + return; + } + } + Physics3DTestDemo::onTouchesBegan(touches, event); + _needShootBox = false; +} +void Physics3DConstraintDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) +{ + if (_constraint) + { + auto p2pConstraint = ((Physics3DPointToPointConstraint*)_constraint); + + auto touch = touches[0]; + auto location = touch->getLocationInView(); + Vec3 nearP(location.x, location.y, 0.0f), farP(location.x, location.y, 1.0f); + + auto size = Director::getInstance()->getWinSize(); + _camera->unproject(size, &nearP, &nearP); + _camera->unproject(size, &farP, &farP); + auto dir = (farP - nearP).getNormalized(); + p2pConstraint->setPivotPointInB(nearP + dir * _pickingDistance); + return; + } + Physics3DTestDemo::onTouchesMoved(touches, event); +} +void Physics3DConstraintDemo::onTouchesEnded(const std::vector& touches, cocos2d::Event *event) +{ + if (_constraint) + { + physicsScene->getPhysics3DWorld()->removePhysics3DConstraint(_constraint); + _constraint = nullptr; + return; + } + Physics3DTestDemo::onTouchesEnded(touches, event); +} + +bool Physics3DTerrainDemo::init() +{ + if (!Physics3DTestDemo::init()) + return false; + + Terrain::DetailMap r("TerrainTest/dirt.jpg"),g("TerrainTest/Grass2.jpg",10),b("TerrainTest/road.jpg"),a("TerrainTest/GreenSkin.jpg",20); + + Terrain::TerrainData data("TerrainTest/heightmap129.jpg","TerrainTest/alphamap.png",r,g,b,a,Size(32,32), 20.0f, 1.0f); + auto terrain = Terrain::create(data,Terrain::CrackFixedType::SKIRT); + terrain->setMaxDetailMapAmount(4); + terrain->setCameraMask(2); + terrain->setDrawWire(false); + + terrain->setSkirtHeightRatio(3); + terrain->setLODDistance(64,128,192); + terrain->setCameraMask((unsigned short)CameraFlag::USER1); + + //create terrain + Physics3DRigidBodyDes rbDes; + rbDes.mass = 0.0f; + std::vector heidata = terrain->getHeightData(); + auto size = terrain->getTerrainSize(); + rbDes.shape = Physics3DShape::createHeightfield(size.width, size.height, &heidata[0], 1.0f, terrain->getMinHeight(), terrain->getMaxHeight(), true, false, true); + auto rigidBody = Physics3DRigidBody::create(&rbDes); + auto component = Physics3DComponent::create(rigidBody); + terrain->addComponent(component); + this->addChild(terrain); + component->syncToNode(); + component->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::NONE); + + + //create several spheres + rbDes.mass = 1.f; + rbDes.shape = Physics3DShape::createSphere(0.5f); + float start_x = START_POS_X - ARRAY_SIZE_X/2 + 5.0f; + float start_y = START_POS_Y + 20.0f; + float start_z = START_POS_Z - ARRAY_SIZE_Z/2; + + for (int k=0;ksetTexture("Sprite3DTest/plane.png"); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + sprite->setScale(1.0f / sprite->getContentSize().width); + sprite->setPosition3D(Vec3(x, y, z)); + this->addChild(sprite); + sprite->syncToNode(); + sprite->setSyncFlag(Physics3DComponent::PhysicsSyncFlag::PHYSICS_TO_NODE); + } + } + } + + //create mesh + std::vector trianglesList; + auto bundle = Bundle3D::createBundle(); + bundle->load("Sprite3DTest/boss.c3b"); + MeshDatas meshs; + bundle->loadMeshDatas(meshs); + Bundle3D::destroyBundle(bundle); + for (auto iter : meshs.meshDatas){ + int preVertexSize = iter->getPerVertexSize() / sizeof(float); + for (auto indexArray : iter->subMeshIndices){ + for (auto i : indexArray){ + trianglesList.push_back(Vec3(iter->vertex[i * preVertexSize], iter->vertex[i * preVertexSize + 1], iter->vertex[i * preVertexSize + 2])); + } + } + } + + rbDes.mass = 0.0f; + rbDes.shape = Physics3DShape::createMesh(&trianglesList[0], (int)trianglesList.size() / 3); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + auto sprite = Sprite3D::create("Sprite3DTest/boss.c3b"); + sprite->addComponent(component); + sprite->setRotation3D(Vec3(-90.0f, 0.0f, 0.0f)); + sprite->setPosition3D(Vec3(0.0f, 15.0f, 0.0f)); + sprite->setCameraMask(2); + this->addChild(sprite); + + std::vector > shapeList; + { + Mat4 localTrans; + auto bodyshape = Physics3DShape::createBox(Vec3(2.0f, 4.0f, 2.0f)); + Mat4::createTranslation(0.0f, 2.0f, 0.0f, &localTrans); + shapeList.push_back(std::make_pair(bodyshape, localTrans)); + auto headshape = Physics3DShape::createSphere(1.5f); + Mat4::createTranslation(0.6f, 5.0f, -1.5f, &localTrans); + shapeList.push_back(std::make_pair(headshape, localTrans)); + auto lhandshape = Physics3DShape::createBox(Vec3(1.0f, 3.0f, 1.0f)); + Mat4::createRotation(Vec3(1.0f, 0.0f, 0.0f), CC_DEGREES_TO_RADIANS(15.0f), &localTrans); + localTrans.m[12] = -1.5f; localTrans.m[13] = 2.5f; localTrans.m[14] = -2.5f; + shapeList.push_back(std::make_pair(lhandshape, localTrans)); + auto rhandshape = Physics3DShape::createBox(Vec3(1.0f, 3.0f, 1.0f)); + Mat4::createRotation(Vec3(1.0f, 0.0f, 0.0f), CC_DEGREES_TO_RADIANS(-15.0f), &localTrans); + localTrans.m[12] = 2.0f; localTrans.m[13] = 2.5f; localTrans.m[14] = 1.f; + shapeList.push_back(std::make_pair(rhandshape, localTrans)); + + rbDes.mass = 10.0f; + rbDes.shape = Physics3DShape::createCompoundShape(shapeList); + rigidBody = Physics3DRigidBody::create(&rbDes); + component = Physics3DComponent::create(rigidBody); + auto sprite = Sprite3D::create("Sprite3DTest/orc.c3b"); + sprite->addComponent(component); + sprite->setRotation3D(Vec3(0.0f, 180.0f, 0.0f)); + sprite->setPosition3D(Vec3(-5.0f, 20.0f, 0.0f)); + sprite->setScale(0.4f); + sprite->setCameraMask(2); + this->addChild(sprite); + } + + + physicsScene->setPhysics3DDebugCamera(_camera); + return true; +} + +std::string Physics3DTerrainDemo::subtitle() const +{ + return "Physics3D Terrain"; +} + +std::string Physics3DCollisionCallbackDemo::subtitle() const +{ + return "Physics3D CollisionCallback"; +} + +bool Physics3DCollisionCallbackDemo::init() +{ + if (!Physics3DTestDemo::init()) + return false; + + { + Physics3DRigidBodyDes rbDes; + + float scale = 2.0f; + std::vector trianglesList; + auto bundle = Bundle3D::createBundle(); + bundle->load("Sprite3DTest/boss.c3b"); + MeshDatas meshs; + bundle->loadMeshDatas(meshs); + Bundle3D::destroyBundle(bundle); + for (auto iter : meshs.meshDatas){ + int preVertexSize = iter->getPerVertexSize() / sizeof(float); + for (auto indexArray : iter->subMeshIndices){ + for (auto i : indexArray){ + trianglesList.push_back(Vec3(iter->vertex[i * preVertexSize], iter->vertex[i * preVertexSize + 1], iter->vertex[i * preVertexSize + 2]) * scale); + } + } + } + + rbDes.mass = 0.0f; + rbDes.shape = Physics3DShape::createMesh(&trianglesList[0], (int)trianglesList.size() / 3); + auto rigidBody = Physics3DRigidBody::create(&rbDes); + auto component = Physics3DComponent::create(rigidBody); + auto sprite = Sprite3D::create("Sprite3DTest/boss.c3b"); + sprite->addComponent(component); + sprite->setRotation3D(Vec3(-90.0f, 0.0f, 0.0f)); + sprite->setScale(scale); + sprite->setCameraMask((unsigned short)CameraFlag::USER1); + this->addChild(sprite); + //preload + // + rigidBody->setCollisionCallback([=](const Physics3DCollisionInfo &ci){ + if (!ci.collisionPointList.empty()){ + if (ci.objA->getMask() != 0){ + auto ps = PUParticleSystem3D::create("Particle3D/scripts/mp_hit_04.pu"); + ps->setPosition3D(ci.collisionPointList[0].worldPositionOnB); + ps->setScale(0.05f); + ps->startParticleSystem(); + ps->setCameraMask(2); + this->addChild(ps); + ps->runAction(Sequence::create(DelayTime::create(1.0f), CallFunc::create([=](){ + ps->removeFromParent(); + }), nullptr)); + ci.objA->setMask(0); + } + } + //CCLOG("------------BoxB Collision Info------------"); + //CCLOG("Collision Point Num: %d", ci.collisionPointList.size()); + //for (auto &iter : ci.collisionPointList){ + // CCLOG("Collision Position On A: (%.2f, %.2f, %.2f)", iter.worldPositionOnA.x, iter.worldPositionOnA.y, iter.worldPositionOnA.z); + // CCLOG("Collision Position On B: (%.2f, %.2f, %.2f)", iter.worldPositionOnB.x, iter.worldPositionOnB.y, iter.worldPositionOnB.z); + // CCLOG("Collision Normal On B: (%.2f, %.2f, %.2f)", iter.worldNormalOnB.x, iter.worldNormalOnB.y, iter.worldNormalOnB.z); + //} + //CCLOG("------------BoxB Collision Info------------"); + }); + } + + physicsScene->setPhysics3DDebugCamera(_camera); + return true; +} + +#endif diff --git a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.h b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.h new file mode 100644 index 000000000000..03c77a6ffdd4 --- /dev/null +++ b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.h @@ -0,0 +1,153 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef _PHYSICS3D_TEST_H_ +#define _PHYSICS3D_TEST_H_ + +#include "../testBasic.h" +#include "../BaseTest.h" +#include + +namespace cocos2d { + class Physics3DConstraint; +} + +DEFINE_TEST_SUITE(Physics3DTests); + +#if CC_USE_3D_PHYSICS == 0 +class Physics3DDemoDisabled : public TestCase +{ +public: + CREATE_FUNC(Physics3DDemoDisabled); + + virtual void onEnter() override; +}; +#else + +class Physics3DTestDemo : public TestCase +{ +public: + CREATE_FUNC(Physics3DTestDemo); + Physics3DTestDemo(void); + virtual ~Physics3DTestDemo(void); + + // overrides + virtual bool init() override; + virtual std::string title() const override; + virtual std::string subtitle() const override; + virtual void update(float delta) override; + + virtual void onTouchesBegan(const std::vector& touches, cocos2d::Event *event); + virtual void onTouchesMoved(const std::vector& touches, cocos2d::Event *event); + virtual void onTouchesEnded(const std::vector& touches, cocos2d::Event *event); + +protected: + + void shootBox(const cocos2d::Vec3 &des); + +protected: + std::string _title; + cocos2d::Camera *_camera; + float _angle; + bool _needShootBox; +}; + +class BasicPhysics3DDemo : public Physics3DTestDemo +{ +public: + + CREATE_FUNC(BasicPhysics3DDemo); + BasicPhysics3DDemo(){}; + virtual ~BasicPhysics3DDemo(){}; + + virtual std::string subtitle() const override; + + virtual bool init() override; +}; + +class Physics3DConstraintDemo : public Physics3DTestDemo +{ +public: + + CREATE_FUNC(Physics3DConstraintDemo); + Physics3DConstraintDemo():_constraint(nullptr), _pickingDistance(0.f){}; + virtual ~Physics3DConstraintDemo(){}; + + virtual std::string subtitle() const override; + + virtual bool init() override; + + virtual void onTouchesBegan(const std::vector& touches, cocos2d::Event *event) override; + virtual void onTouchesMoved(const std::vector& touches, cocos2d::Event *event) override; + virtual void onTouchesEnded(const std::vector& touches, cocos2d::Event *event) override; + +protected: + cocos2d::Physics3DConstraint* _constraint; //for picking + float _pickingDistance; //picking distance +}; + +class Physics3DKinematicDemo : public Physics3DTestDemo +{ +public: + + CREATE_FUNC(Physics3DKinematicDemo); + Physics3DKinematicDemo(){}; + virtual ~Physics3DKinematicDemo(){}; + + virtual std::string subtitle() const override; + + virtual bool init() override; +}; + +class Physics3DCollisionCallbackDemo : public Physics3DTestDemo +{ +public: + + CREATE_FUNC(Physics3DCollisionCallbackDemo); + Physics3DCollisionCallbackDemo(){}; + virtual ~Physics3DCollisionCallbackDemo(){}; + + virtual std::string subtitle() const override; + + virtual bool init() override; +}; + +class Physics3DTerrainDemo : public Physics3DTestDemo +{ +public: + + CREATE_FUNC(Physics3DTerrainDemo); + Physics3DTerrainDemo(){}; + virtual ~Physics3DTerrainDemo(){}; + + virtual std::string subtitle() const override; + + virtual bool init() override; + +private: +}; + +#endif + +#endif \ No newline at end of file diff --git a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp index ee67a9cac286..b175e94e4ffc 100644 --- a/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp +++ b/tests/cpp-tests/Classes/SpritePolygonTest/SpritePolygonTest.cpp @@ -227,7 +227,7 @@ void SpritePolygonTestDemo::initDefaultSprite(const std::string &filename, cocos positions[1] = Vec2(spSize); positions[2] = Vec2(spSize.width, 0); positions[3] = Vec2(0,0); - debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0,1.0,1.0,1.0}); + debugForNormalSprite->drawPoints(positions, 4, 8, Color4F(0.0,1.0,1.0,1.0)); debugForNormalSprite->drawLine(positions[0], positions[1], Color4F::GREEN); debugForNormalSprite->drawLine(positions[1], positions[2], Color4F::GREEN); debugForNormalSprite->drawLine(positions[2], positions[3], Color4F::GREEN); diff --git a/tests/cpp-tests/Classes/controller.cpp b/tests/cpp-tests/Classes/controller.cpp index 410b7556f778..144e6e0d2f4f 100644 --- a/tests/cpp-tests/Classes/controller.cpp +++ b/tests/cpp-tests/Classes/controller.cpp @@ -60,6 +60,7 @@ class RootTests : public TestList addTest("Node: Particles", [](){return new ParticleTests(); }); addTest("Node: Particle3D (PU)", [](){return new Particle3DTests(); }); addTest("Node: Physics", []() { return new PhysicsTests(); }); + addTest( "Node: Physics3D", []() { return new Physics3DTests(); } ); addTest("Node: RenderTexture", [](){return new RenderTextureTests(); }); addTest("Node: Scene", [](){return new SceneTests(); }); addTest("Node: Spine", [](){return new SpineTests(); }); diff --git a/tests/cpp-tests/Classes/tests.h b/tests/cpp-tests/Classes/tests.h index 5727fdf4492d..a4346b207e33 100644 --- a/tests/cpp-tests/Classes/tests.h +++ b/tests/cpp-tests/Classes/tests.h @@ -80,6 +80,7 @@ #include "BillBoardTest/BillBoardTest.h" #include "LightTest/LightTest.h" #include "Particle3DTest/Particle3DTest.h" +#include "Physics3DTest/Physics3DTest.h" #include "OpenURLTest/OpenURLTest.h" #include "AllocatorTest/AllocatorTest.h" diff --git a/tests/cpp-tests/Resources/Images/heightfield64x64.raw b/tests/cpp-tests/Resources/Images/heightfield64x64.raw new file mode 100644 index 000000000000..48db5e35ea2a Binary files /dev/null and b/tests/cpp-tests/Resources/Images/heightfield64x64.raw differ diff --git a/tests/cpp-tests/Resources/Particle3D/scripts/mp_hit_04.pu b/tests/cpp-tests/Resources/Particle3D/scripts/mp_hit_04.pu new file mode 100644 index 000000000000..dbe1f2cc42a4 --- /dev/null +++ b/tests/cpp-tests/Resources/Particle3D/scripts/mp_hit_04.pu @@ -0,0 +1,56 @@ +system mp_hit_04 +{ + keep_local true + technique + { + visual_particle_quota 10 + material PUMediaPack/Star_05 + renderer Billboard + { + billboard_type oriented_self + billboard_rotation_type vertex + } + emitter Point + { + emission_rate 6 + angle 360 + time_to_live 0.3 + velocity 1e-006 + duration 0.1 + particle_width dyn_random + { + min 60 + max 200 + } + particle_height dyn_random + { + min 100 + max 400 + } + start_colour_range 0.415686 0.678431 1 1 + end_colour_range 0.643137 0.317647 1 1 + force_emission true + } + affector Colour + { + time_colour 0 1 1 1 1 + time_colour 1 0 0 0 1 + colour_operation multiply + } + affector Scale + { + xyz_scale dyn_random + { + min 800 + max 1000 + } + } + observer OnClear + { + observe_until_event true + handler DoStopSystem + { + } + } + } +} diff --git a/tests/cpp-tests/Resources/Sprite3DTest/box.c3t b/tests/cpp-tests/Resources/Sprite3DTest/box.c3t new file mode 100644 index 000000000000..876194accaca --- /dev/null +++ b/tests/cpp-tests/Resources/Sprite3DTest/box.c3t @@ -0,0 +1,94 @@ +{ + "version": "0.6", + "id": "", + "meshes": [ + { + "attributes": [{ + "size": 3, + "type": "GL_FLOAT", + "attribute": "VERTEX_ATTRIB_POSITION" + }, { + "size": 3, + "type": "GL_FLOAT", + "attribute": "VERTEX_ATTRIB_NORMAL" + }, { + "size": 2, + "type": "GL_FLOAT", + "attribute": "VERTEX_ATTRIB_TEX_COORD" + }], + "vertices": [ + 0.500000, -0.500000, -0.500000, 0.000000, 0.000000, -1.000000, 0.000000, 0.000000, + -0.500000, -0.500000, -0.500000, 0.000000, 0.000000, -1.000000, 1.000000, 0.000000, + 0.500000, 0.500000, -0.500000, 0.000000, 0.000000, -1.000000, 0.000000, 1.000000, + -0.500000, 0.500000, -0.500000, 0.000000, 0.000000, -1.000000, 1.000000, 1.000000, + 0.500000, 0.500000, 0.500000, 0.000000, 0.000000, 1.000000, 1.000000, 1.000000, + -0.500000, 0.500000, 0.500000, 0.000000, 0.000000, 1.000000, 0.000000, 1.000000, + -0.500000, -0.500000, 0.500000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, + 0.500000, -0.500000, 0.500000, 0.000000, 0.000000, 1.000000, 1.000000, 0.000000, + 0.500000, -0.500000, 0.500000, 0.000000, -1.000000, 0.000000, 1.000000, 1.000000, + -0.500000, -0.500000, 0.500000, 0.000000, -1.000000, 0.000000, 0.000000, 1.000000, + -0.500000, -0.500000, -0.500000, 0.000000, -1.000000, 0.000000, 0.000000, 0.000000, + 0.500000, -0.500000, -0.500000, 0.000000, -1.000000, 0.000000, 1.000000, 0.000000, + 0.500000, 0.500000, 0.500000, 1.000000, 0.000000, 0.000000, 1.000000, 1.000000, + 0.500000, -0.500000, 0.500000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, + 0.500000, -0.500000, -0.500000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, + 0.500000, 0.500000, -0.500000, 1.000000, 0.000000, 0.000000, 1.000000, 0.000000, + -0.500000, 0.500000, 0.500000, 0.000000, 1.000000, 0.000000, 1.000000, 1.000000, + 0.500000, 0.500000, 0.500000, 0.000000, 1.000000, 0.000000, 0.000000, 1.000000, + 0.500000, 0.500000, -0.500000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, + -0.500000, 0.500000, -0.500000, 0.000000, 1.000000, 0.000000, 1.000000, 0.000000, + -0.500000, -0.500000, 0.500000, -1.000000, 0.000000, 0.000000, 1.000000, 1.000000, + -0.500000, 0.500000, 0.500000, -1.000000, 0.000000, 0.000000, 0.000000, 1.000000, + -0.500000, 0.500000, -0.500000, -1.000000, 0.000000, 0.000000, 0.000000, 0.000000, + -0.500000, -0.500000, -0.500000, -1.000000, 0.000000, 0.000000, 1.000000, 0.000000 + ], + "parts": [ + { + "id": "shape1_part1", + "type": "TRIANGLES", + "indices": [ + 0, 1, 2, 1, 3, 2, 4, 5, 6, 4, 6, 7, + 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, + 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23 + ], + "aabb": [-0.500000, -0.500000, -0.500000, 0.500000, 0.500000, 0.500000] + } + ] + } + ], + "materials": [ + { + "id": "01 - Default", + "ambient": [ 0.588235, 0.588235, 0.588235], + "diffuse": [ 0.588235, 0.588235, 0.588235], + "emissive": [ 0.000000, 0.000000, 0.000000], + "opacity": 1.000000, + "specular": [ 0.900000, 0.900000, 0.900000], + "shininess": 2.000000, + "textures": [ + { + "id": "Map #1", + "filename": "", + "type": "DIFFUSE", + "wrapModeU": "REPEAT", + "wrapModeV": "REPEAT" + } + ] + } + ], + "nodes": [ + { + "id": "Box001", + "skeleton": false, + "transform": [ 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, -1.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000], + "parts": [ + { + "meshpartid": "shape1_part1", + "materialid": "01 - Default", + "uvMapping": [[ 0]] + } + ] + } + ], + "animations": [] +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/TerrainTest/heightMap129.jpg b/tests/cpp-tests/Resources/TerrainTest/heightmap129.jpg similarity index 100% rename from tests/cpp-tests/Resources/TerrainTest/heightMap129.jpg rename to tests/cpp-tests/Resources/TerrainTest/heightmap129.jpg diff --git a/tests/cpp-tests/proj.android/jni/Android.mk b/tests/cpp-tests/proj.android/jni/Android.mk index 3fd8420ebb9d..b0d1ab7f81ff 100644 --- a/tests/cpp-tests/proj.android/jni/Android.mk +++ b/tests/cpp-tests/proj.android/jni/Android.mk @@ -116,6 +116,7 @@ LOCAL_SRC_FILES := main.cpp \ ../../Classes/PerformanceTest/PerformanceTextureTest.cpp \ ../../Classes/PerformanceTest/PerformanceTouchesTest.cpp \ ../../Classes/PhysicsTest/PhysicsTest.cpp \ +../../Classes/Physics3DTest/Physics3DTest.cpp \ ../../Classes/ReleasePoolTest/ReleasePoolTest.cpp \ ../../Classes/RenderTextureTest/RenderTextureTest.cpp \ ../../Classes/RotateWorldTest/RotateWorldTest.cpp \ diff --git a/tests/cpp-tests/proj.android/jni/Application.mk b/tests/cpp-tests/proj.android/jni/Application.mk index f80e3bad04ac..85aaa1e86000 100644 --- a/tests/cpp-tests/proj.android/jni/Application.mk +++ b/tests/cpp-tests/proj.android/jni/Application.mk @@ -1,6 +1,6 @@ APP_STL := gnustl_static -APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCC_ENABLE_BULLET_INTEGRATION=1 -std=c++11 -fsigned-char APP_LDFLAGS := -latomic ifeq ($(NDK_DEBUG),1) diff --git a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj index af7789c411d9..85e35502e5f4 100644 --- a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj +++ b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj @@ -68,7 +68,7 @@ Disabled ..\Classes;$(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\network;$(EngineRoot)external;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\win32\include;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USE_MATH_DEFINES;GL_GLEXT_PROTOTYPES;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;COCOS2DXWIN32_EXPORTS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USE_MATH_DEFINES;GL_GLEXT_PROTOTYPES;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;COCOS2DXWIN32_EXPORTS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL @@ -107,7 +107,7 @@ xcopy "$(OutDir)..\*.dll" "$(OutDir)" /D /Y MaxSpeed true ..\Classes;$(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\network;$(EngineRoot)external;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\win32\include;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USE_MATH_DEFINES;GL_GLEXT_PROTOTYPES;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USE_MATH_DEFINES;GL_GLEXT_PROTOTYPES;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 @@ -193,6 +193,7 @@ xcopy "$(OutDir)..\*.dll" "$(OutDir)" /D /Y + @@ -396,6 +397,7 @@ xcopy "$(OutDir)..\*.dll" "$(OutDir)" /D /Y + diff --git a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters index 88b046a07b41..a16708a0d236 100644 --- a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters +++ b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters @@ -352,6 +352,9 @@ {eed1887a-757e-4625-b21c-bbfcfaa5200f} + + {31d7c504-94c7-43ab-818d-996f957a3741} + {3f5069e6-78e5-4388-b614-04c0ea943b4c} @@ -936,6 +939,9 @@ Classes\PerformanceTest + + Classes\Physics3DTest + Classes\SpritePolygonTest @@ -1715,6 +1721,9 @@ Classes\PerformanceTest + + Classes\Physics3DTest + Classes\SpritePolygonTest diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems index 9276d659de76..14006413a7b0 100644 --- a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems @@ -133,6 +133,7 @@ + @@ -397,6 +398,7 @@ + diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters index 7fabd113f1be..ffb4e449e895 100644 --- a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters @@ -784,6 +784,9 @@ Classes\MaterialSystemTest + + Classes\Physics3DTest + @@ -1695,6 +1698,9 @@ {9113774a-5e49-433b-b851-11533bc178ec} + + {dbeed6f6-158b-4f99-8196-61616f724ae1} + @@ -1734,5 +1740,8 @@ Classes\MaterialSystemTest + + Classes\Physics3DTest + \ No newline at end of file diff --git a/tests/lua-tests/project/proj.android/jni/Application.mk b/tests/lua-tests/project/proj.android/jni/Application.mk index 07aa592b1301..18444678c9d9 100644 --- a/tests/lua-tests/project/proj.android/jni/Application.mk +++ b/tests/lua-tests/project/proj.android/jni/Application.mk @@ -1,6 +1,6 @@ APP_STL := gnustl_static -APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCC_ENABLE_BULLET_INTEGRATION=1 -std=c++11 -fsigned-char APP_LDFLAGS := -latomic diff --git a/tools/tolua/cocos2dx_3d.ini b/tools/tolua/cocos2dx_3d.ini index b23241fa2b37..bc477cc2a29f 100644 --- a/tools/tolua/cocos2dx_3d.ini +++ b/tools/tolua/cocos2dx_3d.ini @@ -41,7 +41,7 @@ skip = Mesh::[create getAABB getVertexBuffer hasVertexAttrib getSkin getMeshInde Animation3D::[getBoneCurveByName getBoneCurves], BillBoard::[draw], Sprite3DCache::[addSprite3DData getSpriteData], - Terrain::[lookForIndicesLODSkrit lookForIndicesLOD insertIndicesLOD insertIndicesLODSkirt getIntersectionPoint getAABB getQuadTree create getHeight] + Terrain::[lookForIndicesLODSkrit lookForIndicesLOD insertIndicesLOD insertIndicesLODSkirt getIntersectionPoint getAABB getQuadTree create getHeight getHeightData] rename_functions =