本文整理汇总了C#中HkRigidBody.GetShape方法的典型用法代码示例。如果您正苦于以下问题:C# HkRigidBody.GetShape方法的具体用法?C# HkRigidBody.GetShape怎么用?C# HkRigidBody.GetShape使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HkRigidBody
的用法示例。
在下文中一共展示了HkRigidBody.GetShape方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDamageFromSqueeze
private DamageImpactEnum GetDamageFromSqueeze(HkRigidBody collidingBody, MyEntity collidingEntity, ref HkContactPointEvent value)
{
if (collidingBody.IsFixed || collidingBody.Mass < MyPerGameSettings.CharacterSqueezeMinMass) return DamageImpactEnum.NoDamage;
if (value.ContactProperties.IsNew) return DamageImpactEnum.NoDamage;
// the object has to be moving towards the character even slowly and that also the character is not moving away from it
Vector3 direction = Physics.CharacterProxy.GetHitRigidBody().Position - collidingBody.Position;
Vector3 gravity = MyGravityProviderSystem.CalculateTotalGravityInPoint(PositionComp.WorldAABB.Center) + Physics.HavokWorld.Gravity;
direction.Normalize();
gravity.Normalize();
float resultToPlayer = Vector3.Dot(direction, gravity);
if (resultToPlayer < 0.5f) return DamageImpactEnum.NoDamage;
if (m_squeezeDamageTimer > 0)
{
m_squeezeDamageTimer -= VRage.Game.MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS;
return DamageImpactEnum.NoDamage;
}
m_squeezeDamageTimer = MyPerGameSettings.CharacterSqueezeDamageDelay;
if (MyDebugDrawSettings.ENABLE_DEBUG_DRAW && MyDebugDrawSettings.DEBUG_DRAW_SHOW_DAMAGE)
{
MatrixD worldMatrix = collidingEntity.Physics.GetWorldMatrix();
int index = 2;
MyPhysicsDebugDraw.DrawCollisionShape(collidingBody.GetShape(), worldMatrix, 1, ref index);
VRageRender.MyRenderProxy.DebugDrawText3D(worldMatrix.Translation, "SQUEEZE, MASS:" + collidingBody.Mass, Color.Yellow, 2, false);
}
if (collidingBody.Mass > MyPerGameSettings.CharacterSqueezeDeadlyDamageMass) return DamageImpactEnum.DeadlyDamage;
if (collidingBody.Mass > MyPerGameSettings.CharacterSqueezeCriticalDamageMass) return DamageImpactEnum.CriticalDamage;
if (collidingBody.Mass > MyPerGameSettings.CharacterSqueezeMediumDamageMass) return DamageImpactEnum.MediumDamage;
return DamageImpactEnum.SmallDamage;
}