コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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);
        }