[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58493] branches/soc-2013-rigid_body_sim: rigidbody: Merge RB_body_get_position/orientation functions into one

Sergej Reich sergej.reich at googlemail.com
Mon Jul 22 09:20:32 CEST 2013


Revision: 58493
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58493
Author:   sergof
Date:     2013-07-22 07:20:32 +0000 (Mon, 22 Jul 2013)
Log Message:
-----------
rigidbody: Merge RB_body_get_position/orientation functions into one

Avoids unneeded calculations.

Modified Paths:
--------------
    branches/soc-2013-rigid_body_sim/intern/rigidbody/RBI_api.h
    branches/soc-2013-rigid_body_sim/intern/rigidbody/rb_bullet_api.cpp
    branches/soc-2013-rigid_body_sim/source/blender/blenkernel/intern/pointcache.c

Modified: branches/soc-2013-rigid_body_sim/intern/rigidbody/RBI_api.h
===================================================================
--- branches/soc-2013-rigid_body_sim/intern/rigidbody/RBI_api.h	2013-07-22 07:20:30 UTC (rev 58492)
+++ branches/soc-2013-rigid_body_sim/intern/rigidbody/RBI_api.h	2013-07-22 07:20:32 UTC (rev 58493)
@@ -202,12 +202,10 @@
 
 /* Get RigidBody's position as vector */
 void RB_body_get_position(rbRigidBody *body, float v_out[3]);
-/* Get RigidBody's orientation as quaternion */
-void RB_body_get_orientation(rbRigidBody *body, float v_out[4]);
 
-void RB_body_get_compound_position(rbRigidBody *object, rbCollisionShape *child_shape, float v_out[3]);
+void RB_body_get_pos_orn(rbRigidBody *object, float pos_out[3], float orn_out[4]);
 
-void RB_body_get_compound_orientation(rbRigidBody *object, rbCollisionShape *child_shape, float v_out[4]);
+void RB_body_get_compound_pos_orn(rbRigidBody *parent_object, rbCollisionShape *child_shape, float pos_out[3], float orn_out[4]);
 
 /* ............ */
 

Modified: branches/soc-2013-rigid_body_sim/intern/rigidbody/rb_bullet_api.cpp
===================================================================
--- branches/soc-2013-rigid_body_sim/intern/rigidbody/rb_bullet_api.cpp	2013-07-22 07:20:30 UTC (rev 58492)
+++ branches/soc-2013-rigid_body_sim/intern/rigidbody/rb_bullet_api.cpp	2013-07-22 07:20:32 UTC (rev 58493)
@@ -664,16 +664,17 @@
 	copy_v3_btvec3(v_out, body->getWorldTransform().getOrigin());
 }
 
-void RB_body_get_orientation(rbRigidBody *object, float v_out[4])
+void RB_body_get_pos_orn(rbRigidBody *object, float pos_out[3], float orn_out[4])
 {
 	btRigidBody *body = object->body;
 	
-	copy_quat_btquat(v_out, body->getWorldTransform().getRotation());
+	copy_v3_btvec3(pos_out, body->getWorldTransform().getOrigin());
+	copy_quat_btquat(orn_out, body->getWorldTransform().getRotation());
 }
 
-void RB_body_get_compound_position(rbRigidBody *object, rbCollisionShape *child_shape, float v_out[3])
+void RB_body_get_compound_pos_orn(rbRigidBody *parent_object, rbCollisionShape *child_shape, float pos_out[3], float orn_out[4])
 {
-	btRigidBody *body = object->body;
+	btRigidBody *body = parent_object->body;
 	btCompoundShape *compound = (btCompoundShape*)body->getCollisionShape();
 	btTransform transform = body->getWorldTransform();
 	btTransform child_transform;
@@ -685,30 +686,11 @@
 		}
 	}
 	transform *= child_transform;
-	btVector3 pos = transform.getOrigin();;
 	
-	copy_v3_btvec3(v_out, pos);
+	copy_v3_btvec3(pos_out, transform.getOrigin());
+	copy_quat_btquat(orn_out, transform.getRotation());
 }
 
-void RB_body_get_compound_orientation(rbRigidBody *object, rbCollisionShape *child_shape, float v_out[4])
-{
-	btRigidBody *body = object->body;
-	btCompoundShape *compound = (btCompoundShape*)body->getCollisionShape();
-	btTransform transform = body->getWorldTransform();
-	btTransform child_transform;
-	
-	for (int i = 0; i < compound->getNumChildShapes(); i++) {
-		if (child_shape->compound == compound->getChildShape(i)) {
-			child_transform = compound->getChildTransform(i);
-			break;
-		}
-	}
-	transform *= child_transform;
-	btQuaternion orn = transform.getRotation();
-	
-	copy_quat_btquat(v_out, orn);
-}
-
 /* ............ */
 /* Overrides for simulation */
 

Modified: branches/soc-2013-rigid_body_sim/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- branches/soc-2013-rigid_body_sim/source/blender/blenkernel/intern/pointcache.c	2013-07-22 07:20:30 UTC (rev 58492)
+++ branches/soc-2013-rigid_body_sim/source/blender/blenkernel/intern/pointcache.c	2013-07-22 07:20:32 UTC (rev 58493)
@@ -977,12 +977,10 @@
 		if (rbo->type == RBO_TYPE_ACTIVE) {
 #ifdef WITH_BULLET
 			if (ob->parent && ob->parent->rigidbody_object && ob->parent->flag) {
-				RB_body_get_compound_position(ob->parent->rigidbody_object->physics_object, rbo->physics_shape, rbo->pos);
-				RB_body_get_compound_orientation(ob->parent->rigidbody_object->physics_object, rbo->physics_shape, rbo->orn);
+				RB_body_get_compound_pos_orn(ob->parent->rigidbody_object->physics_object, rbo->physics_shape, rbo->pos, rbo->orn);
 			}
 			else {
-				RB_body_get_position(rbo->physics_object, rbo->pos);
-				RB_body_get_orientation(rbo->physics_object, rbo->orn);
+				RB_body_get_pos_orn(rbo->physics_object, rbo->pos, rbo->orn);
 			}
 #endif
 			PTCACHE_DATA_FROM(data, BPHYS_DATA_LOCATION, rbo->pos);




More information about the Bf-blender-cvs mailing list