- Code: Select all
dgVector dgCollisionCompound::SupportVertex (const dgVector& dir) const
{
_ASSERTE (0);
return dgVector (0,0,0,0);
/*
Are compound collisions never meant to be scaled, or is this just a work in progress?
Moderators: Sascha Willems, walaber
dgVector dgCollisionCompound::SupportVertex (const dgVector& dir) const
{
_ASSERTE (0);
return dgVector (0,0,0,0);
/*
void NewtonScaleCompoundCollision(NewtonCollision* const compoundCollision, const float& x, const float& y, const float& z)
{
NewtonCollision* subcollision;
void* node;
node = NewtonCompoundCollisionGetFirstNode(compoundCollision);
while (node!=NULL)
{
//-----------------------------------------------------------------------------------------
subcollision = ???;/// what goes here?????????????????????????????????????
//-----------------------------------------------------------------------------------------
NewtonCollisionSetScale(subcollision, x, y, z);
node = NewtonCompoundCollisionGetNextNode(compoundCollision, node);
}
}
// show hwo to modify the chidren of a compound collision
NewtonCompoundCollisionBeginAddRemove(compound);
for (void* node = NewtonCompoundCollisionGetFirstNode(compound); node; node = NewtonCompoundCollisionGetNextNode(compound, node)) {
NewtonCollision* const collision = NewtonCompoundCollisionGetCollisionFromNode(compound, node);
// you can scale, change the matrix, change the inertia, do anything you want with the change
NewtonCollisionSetUserData(collision, NULL);
}
NewtonCompoundCollisionEndAddRemove(compound);
NewtonCollision* collision = NewtonBodyGetCollision(newtonBody);
NewtonCollisionInfoRecord collisionInfo;
NewtonCollisionGetInfo(collision, &collisionInfo);
if (collisionInfo.m_collisionType==SERIALIZE_ID_COMPOUND || collisionInfo.m_collisionType==SERIALIZE_ID_COMPOUND_BREAKABLE)
{
NewtonCompoundCollisionSetScale(collision,scale.x,scale.y,scale.z);
}
else
{
NewtonCollisionSetScale(collision,scale.x,scale.y,scale.z);
}
void NewtonDynamicsBody::NewtonCompoundCollisionSetScale(NewtonCollision* const compoundCollision, const float& x, const float& y, const float& z)
{
NewtonCollision* subcollision;
void* node;
NewtonCompoundCollisionBeginAddRemove(compoundCollision);
node = NewtonCompoundCollisionGetFirstNode(compoundCollision);
while (node!=NULL)
{
subcollision = NewtonCompoundCollisionGetCollisionFromNode(compoundCollision, node);
NewtonCollisionSetScale(subcollision, x, y, z);
node = NewtonCompoundCollisionGetNextNode(compoundCollision, node);
}
NewtonCompoundCollisionEndAddRemove(compoundCollision);
}
Users browsing this forum: No registered users and 1 guest