diff options
Diffstat (limited to 'modules/bullet')
-rw-r--r-- | modules/bullet/SCsub | 24 | ||||
-rw-r--r-- | modules/bullet/SCsub_with_lib | 33 | ||||
-rw-r--r-- | modules/bullet/collision_object_bullet.cpp | 25 | ||||
-rw-r--r-- | modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml | 2 | ||||
-rw-r--r-- | modules/bullet/doc_classes/BulletPhysicsServer.xml | 2 |
5 files changed, 24 insertions, 62 deletions
diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub index 0967bca3f2..d8d0b930a5 100644 --- a/modules/bullet/SCsub +++ b/modules/bullet/SCsub @@ -3,12 +3,15 @@ Import('env') Import('env_modules') -# build only version 2 -# Bullet 2.87 - env_bullet = env_modules.Clone() -bullet_src__2_x = [ +# Thirdparty source files + +if env['builtin_bullet']: + # Build only version 2 for now (as of 2.87) + thirdparty_dir = "#thirdparty/bullet/" + + bullet2_src = [ # BulletCollision "BulletCollision/BroadphaseCollision/btAxisSweep3.cpp" , "BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp" @@ -179,17 +182,10 @@ bullet_src__2_x = [ , "LinearMath/btVector3.cpp" ] -thirdparty_dir = "#thirdparty/bullet/" -thirdparty_src = thirdparty_dir + "src/" + thirdparty_sources = [thirdparty_dir + file for file in bullet2_src] -bullet_sources = [thirdparty_src + file for file in bullet_src__2_x] - -# include headers -env_bullet.Append(CPPPATH=[thirdparty_src]) - -env_bullet.add_source_files(env.modules_sources, bullet_sources) + env_bullet.add_source_files(env.modules_sources, thirdparty_sources) + env_bullet.Append(CPPPATH=[thirdparty_dir]) # Godot source files env_bullet.add_source_files(env.modules_sources, "*.cpp") - -Export('env') diff --git a/modules/bullet/SCsub_with_lib b/modules/bullet/SCsub_with_lib deleted file mode 100644 index b362a686ff..0000000000 --- a/modules/bullet/SCsub_with_lib +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -Import('env') - -thirdparty_dir = "#thirdparty/bullet/" -thirdparty_lib = thirdparty_dir + "Win64/lib/" - -bullet_libs = [ - "Bullet2FileLoader", - "Bullet3Collision", - "Bullet3Common", - "Bullet3Dynamics", - "Bullet3Geometry", - "Bullet3OpenCL_clew", - "BulletCollision", - "BulletDynamics", - "BulletInverseDynamics", - "BulletSoftBody", - "LinearMath" - ] - -thirdparty_src = thirdparty_dir + "src/" -# include headers -env.Append(CPPPATH=[thirdparty_src]) - -# lib -env.Append(LIBPATH=[thirdparty_dir + "/Win64/lib/"]) - -bullet_libs = [file+'.lib' for file in bullet_libs] -# LIBS doesn't work in windows -env.Append(LINKFLAGS=bullet_libs) - -env.add_source_files(env.modules_sources, "*.cpp") diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp index 873c9c31b7..34aff68a4a 100644 --- a/modules/bullet/collision_object_bullet.cpp +++ b/modules/bullet/collision_object_bullet.cpp @@ -160,16 +160,13 @@ int CollisionObjectBullet::get_godot_object_flags() const { void CollisionObjectBullet::set_transform(const Transform &p_global_transform) { - btTransform btTrans; - Basis decomposed_basis; + set_body_scale(p_global_transform.basis.get_scale()); - Vector3 decomposed_scale = p_global_transform.get_basis().rotref_posscale_decomposition(decomposed_basis); + btTransform bt_transform; + G_TO_B(p_global_transform, bt_transform); + UNSCALE_BT_BASIS(bt_transform); - G_TO_B(p_global_transform.get_origin(), btTrans.getOrigin()); - G_TO_B(decomposed_basis, btTrans.getBasis()); - - set_body_scale(decomposed_scale); - set_transform__bullet(btTrans); + set_transform__bullet(bt_transform); } Transform CollisionObjectBullet::get_transform() const { @@ -317,20 +314,22 @@ void RigidCollisionObjectBullet::on_shapes_changed() { } // Insert all shapes - + btVector3 body_scale(get_bt_body_scale()); for (i = 0; i < shapes_size; ++i) { shpWrapper = &shapes[i]; if (shpWrapper->active) { if (!shpWrapper->bt_shape) { - shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape(shpWrapper->scale); + shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape(shpWrapper->scale * body_scale); } - compoundShape->addChildShape(shpWrapper->transform, shpWrapper->bt_shape); + + btTransform scaled_shape_transform(shpWrapper->transform); + scaled_shape_transform.getOrigin() *= body_scale; + compoundShape->addChildShape(scaled_shape_transform, shpWrapper->bt_shape); } else { - compoundShape->addChildShape(shpWrapper->transform, BulletPhysicsServer::get_empty_shape()); + compoundShape->addChildShape(btTransform(), BulletPhysicsServer::get_empty_shape()); } } - compoundShape->setLocalScaling(get_bt_body_scale()); compoundShape->recalculateLocalAabb(); } diff --git a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml index 941a79e8ea..f8732c5747 100644 --- a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml +++ b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-beta"> +<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-rc1"> <brief_description> </brief_description> <description> diff --git a/modules/bullet/doc_classes/BulletPhysicsServer.xml b/modules/bullet/doc_classes/BulletPhysicsServer.xml index 515f0e292e..5237556df3 100644 --- a/modules/bullet/doc_classes/BulletPhysicsServer.xml +++ b/modules/bullet/doc_classes/BulletPhysicsServer.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-beta"> +<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-rc1"> <brief_description> </brief_description> <description> |