static void HavokWorld_EntityLeftWorld(HkEntity hkEntity) { var entities = hkEntity.GetAllEntities(); foreach (var entity in entities) { if (Sandbox.Game.Multiplayer.Sync.IsServer && entity != null) { // HACK: due to not working Close or MarkForClose correctly if (entity is Sandbox.Game.Entities.Character.MyCharacter) { ((Sandbox.Game.Entities.Character.MyCharacter)entity).DoDamage(1000, MyDamageType.Suicide, true); } else if (entity is MyVoxelMap || entity is MyCubeBlock) { } else if (entity is MyCubeGrid) { var grid = ((MyCubeGrid)entity); if (entity.SyncObject != null) { grid.SyncObject.SendCloseRequest(); } else { grid.Close(); } } else if (entity is MyFloatingObject) { MyFloatingObjects.RemoveFloatingObject((MyFloatingObject)entity); } else if (entity is MyFracturedPiece) { Sandbox.Game.GameSystems.MyFracturedPiecesManager.Static.RemoveFracturePiece((MyFracturedPiece)entity, 0); } else if (entity.SyncObject != null) { entity.SyncObject.SendCloseRequest(); } } } entities.Clear(); }
void RigidBody_Activated(HkEntity entity) { Debug.Assert(entity.GetEntity(0) is MyFracturedPiece); var fp = entity.GetEntity(0) as MyFracturedPiece; if (fp == null || m_blendingPieces.Contains(fp)) return; m_inactivePieces.Remove(fp); }
void RBActivated(HkEntity e) { m_activeCounter++; }
void RBDeactivated(HkEntity e) { m_activeCounter--; }
public static IMyEntity GetSingleEntity(this HkEntity hkEntity) { var body = hkEntity.GetBody(); return(body != null ? body.Entity : null); }
public static MyPhysicsBody GetBody(this HkEntity hkEntity) { return((hkEntity != null) ? hkEntity.UserObject as MyPhysicsBody : null); }
public static Sandbox.ModAPI.IMyEntity GetEntity(this HkEntity hkEntity) { var body = hkEntity.GetBody(); return(body != null ? body.Entity : null); }