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(); }
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); }