eugen
21-11-2007 12:35:44
now debug objects are correctly shown if they have an offset
Im sorry im not commiting this to a repository but im in a hurry now
Im sorry im not commiting this to a repository but im in a hurry now
void Geometry::setOffsetPosition (const Ogre::Vector3 &pos)
{
dGeomSetOffsetPosition (_geom, pos.x, pos.y, pos.z);
//move the debug object when setting offset if we have a body only
if ((_debug_node)&& ((getBody())/* || (_encapsulator)*/))
_debug_node->setPosition(getOffsetPosition());
}
//------------------------------------------------------------------------------------------------
void Geometry::setOffsetQuaternion(const Ogre::Quaternion &quat)
{
dQuaternion q;
q[0] = quat.x;
q[1] = quat.y;
q[2] = quat.z;
q[3] = quat.w;
dGeomSetOffsetQuaternion (_geom, q);
if ((_debug_node)&& ((getBody())/* || (_encapsulator)*/))
_debug_node->setOrientation(getOffsetQuaternion());
}
//------------------------------------------------------------------------------------------------
void Geometry::setOffsetWorldPosition(const Ogre::Vector3 &pos)
{
dGeomSetOffsetWorldPosition(_geom, pos.x, pos.y, pos.z);
//move the debug object when setting offset if we have a body only
if ((_debug_node)&& ((getBody())/* || (_encapsulator)*/))
_debug_node->setPosition(getOffsetPosition());
}
//------------------------------------------------------------------------------------------------
void Geometry::setOffsetWorldQuaternion(const Ogre::Quaternion &quat)
{
dQuaternion q;
q[0] = quat.x;
q[1] = quat.y;
q[2] = quat.z;
q[3] = quat.w;
dGeomSetOffsetWorldQuaternion (_geom, q);
if ((_debug_node)&& ((getBody())/* || (_encapsulator)*/))
_debug_node->setOrientation(getOffsetQuaternion());
}void Geometry::createDebugObject()
{
if (!_debug_node)
{
Ogre::SceneNode* parent = _world->_manager->getRootSceneNode();
_debug_node = static_cast<Ogre::Node*>(parent->createChildSceneNode(Ogre::String("OgreOde::Geometry_") + Ogre::StringConverter::toString(_geometry_count) + Ogre::String("_Debug")));
if (_debug_obj)
{
static_cast<Ogre::SceneNode*>(_debug_node)->attachObject(_debug_obj);
}
if (getBody())
{
static_cast<Ogre::SceneNode*>(_debug_node->getParent())->removeChild(_debug_node->getName());
getBody()->addDebugNode(_debug_node);
if (_debug_obj)
_debug_obj->setMode(DebugObject::Mode_Enabled);
//reposition the debug node if the geometry has an offset
if(isOffset())
_debug_node->setPosition(getOffsetPosition());
}
else if (_encapsulator)
{
reparentDebugObject(_encapsulator->_debug_node);
}
else
{
if (_debug_obj)
_debug_obj->setMode(DebugObject::Mode_Static);
_debug_node->setPosition(getPosition());
_debug_node->setOrientation(getOrientation());
}
_geometry_count++;
}
}