本文整理汇总了C++中CollisionMesh::GetShape方法的典型用法代码示例。如果您正苦于以下问题:C++ CollisionMesh::GetShape方法的具体用法?C++ CollisionMesh::GetShape怎么用?C++ CollisionMesh::GetShape使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CollisionMesh
的用法示例。
在下文中一共展示了CollisionMesh::GetShape方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SolveObjectCollision
void CollisionSolver::SolveObjectCollision(CollisionMesh& particle,
const CollisionMesh& object)
{
if(particle.IsDynamic())
{
if(object.GetShape() == Geometry::SPHERE)
{
SolveParticleSphereCollision(particle, object);
}
else
{
SolveParticleHullCollision(particle, object);
}
}
}
示例2: SolveParticleSphereCollision
void CollisionSolver::SolveParticleSphereCollision(CollisionMesh& particle,
const CollisionMesh& sphere)
{
D3DXVECTOR3 sphereToParticle = particle.GetPosition() - sphere.GetPosition();
const float lengthSqr = D3DXVec3LengthSq(&sphereToParticle);
const float combinedRadius = sphere.GetRadius() + particle.GetRadius();
if (lengthSqr < (combinedRadius*combinedRadius))
{
const float length = std::sqrt(lengthSqr);
sphereToParticle /= length;
particle.ResolveCollision(sphereToParticle * fabs(combinedRadius-length),
sphere.GetVelocity(), sphere.GetShape());
}
}
示例3: SolveParticleHullCollision
void CollisionSolver::SolveParticleHullCollision(CollisionMesh& particle,
const CollisionMesh& hull)
{
// Determine if within a rough radius of the convex hull
const D3DXVECTOR3 sphereToParticle = particle.GetPosition() - hull.GetPosition();
const float lengthSqr = D3DXVec3LengthSq(&sphereToParticle);
const float extendedParticleRadius = particle.GetRadius() * 2.0f;
const float combinedRadius = hull.GetRadius() + extendedParticleRadius;
if (lengthSqr < (combinedRadius*combinedRadius))
{
Simplex simplex;
if(AreConvexHullsColliding(particle, hull, simplex))
{
simplex.GenerateFaces();
const D3DXVECTOR3 penetration = GetConvexHullPenetration(particle, hull, simplex);
particle.ResolveCollision(penetration, hull.GetVelocity(), hull.GetShape());
}
}
}