public void RequestWorldChunkData(WorldChunk chunk, WorldChunkSettings setting, Action <WorldChunkData> callback)
    {
        ThreadStart threadStart = delegate {
            // Loading
            WorldChunkData chunkData = new WorldChunkData(chunk, setting);

            lock (chunkDataThreadInQueue) {
                chunkDataThreadInQueue.Enqueue(new MapThreadInfo <WorldChunkData>(callback, chunkData));
            }
            // End Loading..
        };

        new Thread(threadStart).Start();
    }
Пример #2
0
    public void OnWorldChunkDataReceived(WorldChunkData _chunkData)
    {
        WorldChunkSettings setting = MapEngine.instance.worldChunkSetting;

        // Loaded
        this.chunkData = _chunkData;
        this.state     = ChunkStates.Loaded;
        this.isLoading = false;

        // @TODO: if the chunk are loaded when it's no more displayed, will not be handled on `worldChunkInView`
        this.isVisible = true;

        // If it's not a border chunk (to compute the next chunk) request for computing
        if (this.requireState >= ChunkStates.Computed)
        {
            this.requestComputed(setting);
        }

        // Rendering
        MapDisplay.instance.UpdateChunkDisplay(this);

        // Inform MapEndless
        MapEndless.instance.OnWorldChunkThreadReceived(this);
    }