changed addPlane() to accept 4 parameters to directly specify a, b, c, d

git-svn-id: svn://anubis/misc/OdeWorld@203 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
josh 2009-11-02 18:05:41 +00:00
parent 9f0955b5af
commit 70355ffe6c

View File

@ -311,19 +311,31 @@ bool OdeWorld::Object::addCapsule(refptr< std::vector<float> > args)
bool OdeWorld::Object::addPlane(refptr< std::vector<float> > args)
{
if (args->size() != 6)
float a, b, c, d;
if (args->size() == 6)
{
dMatrix3 r;
dRFromEulerAngles(r, (*args)[3], (*args)[4], (*args)[5]);
dVector3 default_plane_direction = {0, 0, 1, 0};
dVector3 rotated_plane_direction;
dMultiply0(rotated_plane_direction, default_plane_direction, r, 1, 3, 3);
a = rotated_plane_direction[0];
b = rotated_plane_direction[1];
c = rotated_plane_direction[2];
d = m_scale * (a * (*args)[0] + b * (*args)[1] + c * (*args)[2]);
}
else if (args->size() == 4)
{
a = (*args)[0];
b = (*args)[1];
c = (*args)[2];
d = (*args)[3];
}
else
{
return false;
dMatrix3 r;
dRFromEulerAngles(r, (*args)[3], (*args)[4], (*args)[5]);
dVector3 default_plane_direction = {0, 0, 1, 0};
dVector3 rotated_plane_direction;
dMultiply0(rotated_plane_direction, default_plane_direction, r, 1, 3, 3);
float a = rotated_plane_direction[0];
float b = rotated_plane_direction[1];
float c = rotated_plane_direction[2];
float d = m_scale * (a * (*args)[0] + b * (*args)[1] + c * (*args)[2]);
}
dGeomID id = dCreatePlane(m_space, a, b, c, d);
m_geoms.push_back(id);