void ComponentPhysicsGeom::drawAxes() const { CHECK_GL_ERROR(); glPushAttrib(GL_ALL_ATTRIB_BITS); { glLineWidth(2.0f); const mat3 orientation = getOrientation(); mat4 transformation(getPosition(), orientation.getAxisX(), orientation.getAxisY(), orientation.getAxisZ()); glPushMatrix(); glMultMatrixf(transformation); glBegin(GL_LINES); glColor4fv(red); glVertex3fv(vec3(0,0,0)); glVertex3fv(orientation.getAxisX()); glColor4fv(green); glVertex3fv(vec3(0,0,0)); glVertex3fv(orientation.getAxisY()); glColor4fv(blue); glVertex3fv(vec3(0,0,0)); glVertex3fv(orientation.getAxisZ()); glEnd(); glPopMatrix(); } glPopAttrib(); CHECK_GL_ERROR(); }
void ComponentPhysicsGeom::setOrientation(const mat3 &m) { dMatrix3 r; const vec3 x = m.getAxisX().getNormal(); const vec3 y = m.getAxisY().getNormal(); const vec3 z = m.getAxisZ().getNormal(); r[0] = x.x; r[1] = x.y; r[2] = x.z; r[3] = 0.0f; r[4] = y.x; r[5] = y.y; r[6] = y.z; r[7] = 0.0f; r[8] = z.x; r[9] = z.y; r[10]= z.z; r[11]= 0.0f; dGeomSetRotation(geom, r); getParentBlackBoard().relayMessage(MessageOrientationHasBeenSet(getOrientation())); }