本文整理汇总了C#中BulletXNA.BulletCollision.CollisionObject.IsStaticOrKinematicObject方法的典型用法代码示例。如果您正苦于以下问题:C# CollisionObject.IsStaticOrKinematicObject方法的具体用法?C# CollisionObject.IsStaticOrKinematicObject怎么用?C# CollisionObject.IsStaticOrKinematicObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BulletXNA.BulletCollision.CollisionObject
的用法示例。
在下文中一共展示了CollisionObject.IsStaticOrKinematicObject方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NeedsResponse
public virtual bool NeedsResponse(CollisionObject body0, CollisionObject body1)
{
//here you can do filtering
bool hasResponse = (body0.HasContactResponse() && body1.HasContactResponse());
//no response between two static/kinematic bodies:
hasResponse = hasResponse && ((!body0.IsStaticOrKinematicObject()) || (!body1.IsStaticOrKinematicObject()));
return hasResponse;
}
示例2: UpdateSingleAabb
public void UpdateSingleAabb(CollisionObject colObj)
{
IndexedVector3 minAabb;
IndexedVector3 maxAabb;
IndexedMatrix wt = colObj.GetWorldTransform();
colObj.GetCollisionShape().GetAabb(ref wt, out minAabb, out maxAabb);
//need to increase the aabb for contact thresholds
IndexedVector3 contactThreshold = new IndexedVector3(BulletGlobals.gContactBreakingThreshold);
minAabb -= contactThreshold;
maxAabb += contactThreshold;
if (GetDispatchInfo().m_useContinuous && colObj.GetInternalType() == CollisionObjectTypes.CO_RIGID_BODY && !colObj.IsStaticOrKinematicObject())
{
IndexedVector3 minAabb2,maxAabb2;
colObj.GetCollisionShape().GetAabb(colObj.GetInterpolationWorldTransform(),out minAabb2 ,out maxAabb2);
minAabb2 -= contactThreshold;
maxAabb2 += contactThreshold;
MathUtil.VectorMin(ref minAabb2,ref minAabb);
MathUtil.VectorMax(ref maxAabb2, ref maxAabb);
}
if (BulletGlobals.g_streamWriter != null && BulletGlobals.debugCollisionWorld)
{
MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "updateSingleAabbMin", minAabb);
MathUtil.PrintVector3(BulletGlobals.g_streamWriter, "updateSingleAabbMax", maxAabb);
}
IBroadphaseInterface bp = m_broadphasePairCache as IBroadphaseInterface;
//moving objects should be moderately sized, probably something wrong if not
if (colObj.IsStaticObject() || ((maxAabb - minAabb).LengthSquared() < 1e12f))
{
bp.SetAabb(colObj.GetBroadphaseHandle(), ref minAabb, ref maxAabb, m_dispatcher1);
}
else
{
//something went wrong, investigate
//this assert is unwanted in 3D modelers (danger of loosing work)
colObj.SetActivationState(ActivationState.DISABLE_SIMULATION);
//static bool reportMe = true;
bool reportMe = true;
if (reportMe && m_debugDrawer != null)
{
reportMe = false;
m_debugDrawer.ReportErrorWarning("Overflow in AABB, object removed from simulation");
m_debugDrawer.ReportErrorWarning("If you can reproduce this, please email [email protected]\n");
m_debugDrawer.ReportErrorWarning("Please include above information, your Platform, version of OS.\n");
m_debugDrawer.ReportErrorWarning("Thanks.\n");
}
}
}
示例3: NeedsCollision
public virtual bool NeedsCollision(CollisionObject body0, CollisionObject body1)
{
Debug.Assert(body0 != null);
Debug.Assert(body1 != null);
bool needsCollision = true;
#if BT_DEBUG
if ((m_dispatcherFlags & DispatcherFlags.CD_STATIC_STATIC_REPORTED == 0))
{
//broadphase filtering already deals with this
if ((body0.IsStaticOrKinematicObject()) && body1.isStaticOrKinematicObject())
{
m_dispatcherFlags |= DispatcherFlags.CD_STATIC_STATIC_REPORTED;
System.err.Writeline("warning CollisionDispatcher::needsCollision: static-static collision!\n");
}
}
#endif //BT_DEBUG
if ((!body0.IsActive()) && (!body1.IsActive()))
{
needsCollision = false;
}
else if (!body0.CheckCollideWith(body1))
{
needsCollision = false;
}
return needsCollision;
}