public override void ControlOfEntityLost(BoltEntity entity) { base.ControlOfEntityLost(entity); if (entity.StateIs <IPlayerState>()) { Assert.IsTrue(LocalPlayer.BoltEntity == entity, "Lost control of non-local player!"); EventHandler.ExecuteEvent(GameEvents.ClientControlStateChanged, LocalPlayer, false); LocalPlayer = null; } }
public override void ControlOfEntityGained(BoltEntity entity) { base.ControlOfEntityGained(entity); if (entity.StateIs <IPlayerState>()) { Assert.IsNull(LocalPlayer, "Gained control of another player while already controlling one!"); LocalPlayer = (Player)World.UnitManager.Find(entity.NetworkId.PackedValue); EventHandler.ExecuteEvent(GameEvents.ClientControlStateChanged, LocalPlayer, true); } }
public void Destroy(GameObject gameObject) { if (!gameObject.CompareTag("Move State")) { Assert.IsTrue(takenEntities.ContainsKey(gameObject), $"Trying to destroy pooled entity, but pool has no such object: {gameObject.name}"); takenEntities[gameObject].ReturnedToPool(); takenEntities.Remove(gameObject); } GameObjectPool.Return(gameObject, false); }
public override void ControlOfEntityLost(BoltEntity entity) { base.ControlOfEntityLost(entity); if (entity.StateIs <IPlayerState>()) { Assert.IsTrue(LocalPlayer.BoltEntity == entity, "Lost control of non-local player!"); EventHandler.ExecuteEvent(EventHandler.GlobalDispatcher, GameEvents.PlayerControlLost, LocalPlayer); LocalPlayer = null; } }
public void Destroy(GameObject gameObject) { if (!gameObject.CompareTag("Move State")) { Assert.IsTrue(takenEntities.ContainsKey(gameObject), $"Trying to destroy pooled entity, but pool has no such object: {gameObject.name}"); EventHandler.ExecuteEvent(gameObject, GameEvents.EntityPooled, false, world); takenEntities.Remove(gameObject); } GameObjectPool.Return(gameObject, false); }