protected override void OnUpdate()
    {
        var requestArray = DespawnGroup.ToComponentDataArray <CharacterDespawnRequest>(Allocator.Persistent);

        if (requestArray.Length == 0)
        {
            requestArray.Dispose();
            return;
        }

        Profiler.BeginSample("HandleCharacterDespawnRequests");

        var requestEntityArray = DespawnGroup.ToEntityArray(Allocator.Persistent);

        for (var i = 0; i < requestArray.Length; i++)
        {
            var request = requestArray[i];

            GameDebug.Assert(EntityManager.HasComponent <Character.State>(request.characterEntity), "Character despawn requst entity is not a character");

            Inventory.Server_DestroyAll(EntityManager, PostUpdateCommands, request.characterEntity);

            GameDebug.Log(World, Character.ShowLifetime, "Despawning character:{0}", request.characterEntity);

            PrefabAssetManager.DestroyEntity(EntityManager, request.characterEntity);
            PostUpdateCommands.DestroyEntity(requestEntityArray[i]);
            if (Character.ShowLifetime.IntValue > 0)
            {
                AnimationGraphHelper.DumpState(World);
            }
        }
        requestEntityArray.Dispose();
        requestArray.Dispose();
        Profiler.EndSample();
    }
    void LeavePlayingState()
    {
        //Game.game.clientFrontend.Clear();

        PrefabAssetManager.DestroyEntity(m_GameWorld.EntityManager, m_LocalPlayer);
        m_LocalPlayer = Entity.Null;

        m_clientWorld.Shutdown();
        m_clientWorld = null;

        // TODO (petera) replace this with a stack of levels or similar thing. For now we just load the menu no matter what
        //Game.game.levelManager.UnloadLevel();
        //Game.game.levelManager.LoadLevel("level_menu");

        PrefabAssetManager.Shutdown();
#pragma warning disable 618
        // we're keeping World.Active until we can properly remove them all
        // FIXME: not compatible with dots netcode
        m_GameWorld = World.Active;
        World.Active.CreateSystem <GameTimeSystem>();
#pragma warning restore 618

        //Game.game.clientFrontend.ShowMenu(ClientFrontend.MenuShowing.None);

        //Game.game.levelManager.LoadLevel("level_menu");

        GameDebug.Log("Left playingstate");
    }
Exemple #3
0
 private void CmdDespawnBoxes(string[] args)
 {
     foreach (var box in m_Movables)
     {
         PrefabAssetManager.DestroyEntity(m_GameWorld.EntityManager, box);
     }
     m_Movables.Clear();
 }
Exemple #4
0
    public static void Server_DestroyAll(EntityManager entityManager, EntityCommandBuffer cmdBuffer, Entity inventoryEntity)
    {
        var slots = entityManager.GetBuffer <ItemEntry>(inventoryEntity);

        for (int j = 0; j < slots.Length; j++)
        {
            GameDebug.Assert(entityManager.Exists(slots[j].entity));
            PrefabAssetManager.DestroyEntity(cmdBuffer, slots[j].entity);
        }
        slots.Clear();
    }
Exemple #5
0
 protected override void OnDestroy()
 {
     Entities.ForEach((Entity e, ref LocalPlayer lp) =>
     {
         if (lp.hudEntity != Entity.Null)
         {
             PrefabAssetManager.DestroyEntity(EntityManager, lp.hudEntity);
         }
     });
     foreach (var e in m_NamePlates)
     {
         if (e != null)
         {
             GameObject.Destroy(e);
         }
     }
 }
Exemple #6
0
    public void Shutdown()
    {
        Resources.UnloadAsset(m_settings);

        if (World.AllWorlds.Contains(m_world))
        {
            m_world.DestroySystem(m_HandlePlayerCameraControlSpawn);
            m_world.DestroySystem(m_UpdatePlayerCameras);
            m_world.DestroySystem(m_ResolvePlayerCharacterReference);
            m_world.DestroySystem(m_ResolvePlayerReference);
            m_world.DestroySystem(m_UpdateServerEntityComponent);
        }

        if (m_LocalPlayer != Entity.Null)
        {
            PrefabAssetManager.DestroyEntity(m_world.EntityManager, m_LocalPlayer);
        }
    }
 public void CleanupPlayer(Entity player)
 {
     PrefabAssetManager.DestroyEntity(m_world.EntityManager, player);
 }
    public void Shutdown()
    {
        m_GameMode.Shutdown();

        PrefabAssetManager.DestroyEntity(m_World.EntityManager, gameModeEntity);
    }