コード例 #1
0
    public void LeaveSubworld()
    {
        UnloadSubworldChunks();

        if (!CurrentSubworld.ShouldUnloadWorldOnEnter())
        {
            foreach (KeyValuePair <Vec2i, LoadedChunk2> kvp in LoadedChunks)
            {
                kvp.Value.gameObject.SetActive(true);
                EntityManager.Instance?.LoadChunk(kvp.Key);
            }
        }

        CurrentSubworld    = null;
        LoadedChunksCentre = null;
        return;

        /*
         * InSubworld = false;
         * foreach (KeyValuePair<Vec2i, LoadedChunk> kvp in SubworldChunks)
         * {
         *  Destroy(kvp.Value.gameObject);
         *
         * }
         * SubworldChunks.Clear();*/
    }
コード例 #2
0
    public void LoadSubworldChunks(Subworld sub)
    {
        CurrentSubworld = sub;


        if (sub.ShouldUnloadWorldOnEnter())
        {
            UnloadAllChunks();
        }
        else
        {
            foreach (KeyValuePair <Vec2i, LoadedChunk2> kvp in LoadedChunks)
            {
                kvp.Value.gameObject.SetActive(false);
            }
        }



        SubworldChunks.Clear();

        foreach (ChunkData cd in sub.SubworldChunks)
        {
            //Debug.Log("Object count:" + cd.WorldObjects.Count);
            SubworldChunks.Add(cd.Position, ChunkLoader.GetLoadedChunk(cd, 1));
            //Debug.Log("sub chunk: " + cd.Position);
            //ChunkLoader.LoadChunk(cd);
        }
        CurrentSubworld = sub;
        //ChunkLoader.ForceLoadAll();

        //TODO - fix this bad boy
        return;
    }