本文整理汇总了C#中HkWorld.LockCriticalOperations方法的典型用法代码示例。如果您正苦于以下问题:C# HkWorld.LockCriticalOperations方法的具体用法?C# HkWorld.LockCriticalOperations怎么用?C# HkWorld.LockCriticalOperations使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HkWorld
的用法示例。
在下文中一共展示了HkWorld.LockCriticalOperations方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Activate
public virtual void Activate(object world, ulong clusterObjectID)
{
System.Diagnostics.Debug.Assert(m_world == null, "Cannot activate already active object!");
System.Diagnostics.Debug.Assert(!IsInWorld, "Cannot activate already active object!");
System.Diagnostics.Debug.Assert(!IsWelded, "Activating welded body!");
m_world = (HkWorld)world;
ClusterObjectID = clusterObjectID;
ActivateCollision();
IsInWorld = true;
Matrix rigidBodyMatrix = GetRigidBodyMatrix();
if (BreakableBody != null)
{
RigidBody.SetWorldMatrix(rigidBodyMatrix);
//Disable destruction on clients
if (Sync.IsServer)
m_world.DestructionWorld.AddBreakableBody(BreakableBody);
else
m_world.AddRigidBody(RigidBody);
}
else if (RigidBody != null)
{
RigidBody.SetWorldMatrix(rigidBodyMatrix);
m_world.AddRigidBody(RigidBody);
}
if (RigidBody2 != null)
{
RigidBody2.SetWorldMatrix(rigidBodyMatrix);
m_world.AddRigidBody(RigidBody2);
}
if (CharacterProxy != null)
{
// obtain this character new system group id for collision filtering
CharacterSystemGroupCollisionFilterID = m_world.GetCollisionFilter().GetNewSystemGroup();
// Calculate filter info for this character
CharacterCollisionFilter = HkGroupFilter.CalcFilterInfo(MyPhysics.CollisionLayers.CharacterCollisionLayer, CharacterSystemGroupCollisionFilterID, 0, 0);
CharacterProxy.CharacterRigidBody.SetCollisionFilterInfo(CharacterCollisionFilter);
CharacterProxy.SetRigidBodyTransform(rigidBodyMatrix);
CharacterProxy.Activate(m_world);
}
//if (ReactivateRagdoll)
//{
// if (MyFakes.ENABLE_RAGDOLL_DEBUG) Debug.WriteLine("MyPhysicsBody.Activate.ReactivateRagdoll");
// ActivateRagdoll(rigidBodyMatrix);
// ReactivateRagdoll = false;
//}
if (SwitchToRagdollModeOnActivate)
{
if (MyFakes.ENABLE_RAGDOLL_DEBUG) Debug.WriteLine("MyPhysicsBody.Activate.SwitchToRagdollModeOnActivate");
SwitchToRagdollModeOnActivate = false;
SwitchToRagdollMode(m_ragdollDeadMode);
}
m_world.LockCriticalOperations();
foreach (var constraint in m_constraints)
{
if (!IsConstraintValid(constraint))
continue;
m_world.AddConstraint(constraint);
}
m_world.UnlockCriticalOperations();
}