[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