mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-15 14:10:11 +00:00
ab8f16961e
Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files. make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type. This commit contains no other changes aside from adding and applying clang-format-all.sh
72 lines
1.7 KiB
C++
72 lines
1.7 KiB
C++
#include "MultiBodyTreeCreator.hpp"
|
|
|
|
namespace btInverseDynamics
|
|
{
|
|
MultiBodyTree* CreateMultiBodyTree(const MultiBodyTreeCreator& creator)
|
|
{
|
|
int num_bodies;
|
|
int parent_index;
|
|
JointType joint_type;
|
|
vec3 body_r_parent_body_ref;
|
|
mat33 body_R_parent_ref;
|
|
vec3 body_axis_of_motion;
|
|
idScalar mass;
|
|
vec3 body_r_body_com;
|
|
mat33 body_I_body;
|
|
int user_int;
|
|
void* user_ptr;
|
|
|
|
MultiBodyTree* tree = new MultiBodyTree();
|
|
if (0x0 == tree)
|
|
{
|
|
bt_id_error_message("cannot allocate tree\n");
|
|
return 0x0;
|
|
}
|
|
|
|
// TODO: move to some policy argument
|
|
tree->setAcceptInvalidMassParameters(false);
|
|
|
|
// get number of bodies in the system
|
|
if (-1 == creator.getNumBodies(&num_bodies))
|
|
{
|
|
bt_id_error_message("getting body indices\n");
|
|
delete tree;
|
|
return 0x0;
|
|
}
|
|
|
|
// get data for all bodies
|
|
for (int index = 0; index < num_bodies; index++)
|
|
{
|
|
// get body parameters from user callbacks
|
|
if (-1 ==
|
|
creator.getBody(index, &parent_index, &joint_type, &body_r_parent_body_ref,
|
|
&body_R_parent_ref, &body_axis_of_motion, &mass, &body_r_body_com,
|
|
&body_I_body, &user_int, &user_ptr))
|
|
{
|
|
bt_id_error_message("getting data for body %d\n", index);
|
|
delete tree;
|
|
return 0x0;
|
|
}
|
|
// add body to system
|
|
if (-1 ==
|
|
tree->addBody(index, parent_index, joint_type, body_r_parent_body_ref,
|
|
body_R_parent_ref, body_axis_of_motion, mass, body_r_body_com,
|
|
body_I_body, user_int, user_ptr))
|
|
{
|
|
bt_id_error_message("adding body %d\n", index);
|
|
delete tree;
|
|
return 0x0;
|
|
}
|
|
}
|
|
// finalize initialization
|
|
if (-1 == tree->finalize())
|
|
{
|
|
bt_id_error_message("building system\n");
|
|
delete tree;
|
|
return 0x0;
|
|
}
|
|
|
|
return tree;
|
|
}
|
|
} // namespace btInverseDynamics
|