コード例 #1
0
        public static bool Prefix(long _key, bool _bDisplayed)
        {
            if (DistantTerrain.Instance == null)
            {
                return(true);
            }

            ChunkCluster chunkCluster = GameManager.Instance.World.ChunkClusters[0];

            if (chunkCluster == null)
            {
                return(true);
            }

            if (!GameManager.IsSplatMapAvailable())
            {
                Chunk chunkSync = chunkCluster.GetChunkSync(_key);
                if (_bDisplayed && chunkSync != null && chunkSync.NeedsOnlyCollisionMesh)
                {
                    return(true);
                }

                DistantTerrain.Instance.ActivateChunk(WorldChunkCache.extractX(_key), WorldChunkCache.extractZ(_key), !_bDisplayed);
                return(false);
            }
            return(true);
        }
コード例 #2
0
    public static void SetSnow(int startX, int startZ, int width, int depth, ChunkCluster cluster, bool notifyRpc, bool log, bool AlreadyFilled, int height)
    {
        Write("Set snow " + startX + "," + startZ + " by " + width + "," + depth);

        //WorldBase world = cluster.GetWorld();
        Chunk chunk = cluster.GetChunkSync(World.toChunkXZ(startX), World.toChunkXZ(startZ));

        var worldPos = new Vector3i(startX, 0, startZ);
        var size     = new Vector3i(width, height, depth);

        List <long> processed = new List <long>();

        for (int x = 0; x < width; x++)
        {
            for (int z = 0; z <= depth; z++)
            {
                int worldX      = x + startX;
                int worldZ      = z + startZ;
                int chunkWorldX = World.toChunkXZ(worldX);
                int chunkWorldZ = World.toChunkXZ(worldZ);
                //var chunkX = World.toBlockXZ(worldX);
                //var chunkZ = World.toBlockXZ(worldZ);
                if (chunk == null || chunk.X != chunkWorldX || chunk.Z != chunkWorldZ)
                {
                    Write("Getting chunk at " + chunkWorldX + "," + chunkWorldZ + "     " + worldX + "," + worldZ);
                    chunk = cluster.GetChunkSync(chunkWorldX, chunkWorldZ);

                    if (chunk != null)
                    {
                        if (processed.Contains(chunk.Key))
                        {
                            continue;
                        }
                        processed.Add(chunk.Key);
                        ProcessChunk(chunk, worldPos, size, AlreadyFilled, log, notifyRpc, true);
                    }
                }
            }
        }

        Write("Set Snow Complete");
    }