public void OnUpdate()
    {
        // deal map request
        var dt = DateTime.Now;

        while (mapTasks.Count > 0)
        {
            var task = mapTasks.Dequeue();
            DealMapRequest(task);
            TimeSpan span = DateTime.Now - dt;
            if (span.TotalMilliseconds > 2.0)  //
            {
                break;
            }
        }
        // deal mesh request result
        if (meshDataThreadInfoQueue.Count > 0)
        {
            for (int i = 0; i < meshDataThreadInfoQueue.Count; i++)
            {
                MeshTaskInfo threadInfo = meshDataThreadInfoQueue.Dequeue();
                threadInfo.callBack(threadInfo);
            }
        }
    }
 protected override void DealMeshRequest(MeshTaskInfo info)
 {
     info.meshData = GenerateTerrainMesh(info.mapData, TexWid, info.lod);
     lock (meshDataThreadInfoQueue) {
         meshDataThreadInfoQueue.Enqueue(info);
     }
 }
Exemplo n.º 3
0
    void OnMeshDataReceived(MeshTaskInfo info)
    {
        MeshData meshData = info.meshData;

        //主线程回调
        isWaitForData = false;
        mesh          = meshData.CreateMesh();// TODO pool mesh
        DictionaryPool <MeshData> .Return(meshData);

        hasMesh = true;
        updateCallback();
    }
 protected virtual void DealMeshRequest(MeshTaskInfo info)
 {
 }