void Update()
        {
            if (MTerrain.current == null)
            {
                return;
            }
            freeCamera.enabled = Input.GetMouseButton(1);

            if (Input.GetMouseButton(0))
            {
                commandQueue.Add(lastFrameWorking);
                CommandBuffer bf = geometryEvt.afterGeometryBuffer;
                bf.SetComputeBufferParam(terrainEditShader, 0, "_DistanceBuffer", distanceBuffer);
                bf.SetComputeTextureParam(terrainEditShader, 0, ShaderIDs._CameraDepthTexture, new RenderTargetIdentifier(ShaderIDs._CameraDepthTexture));
                uv = ((float3)Input.mousePosition).xy / float2(Screen.width, Screen.height);
                bf.SetComputeVectorParam(terrainEditShader, "_UV", float4(uv, 1, 1));
                bf.DispatchCompute(terrainEditShader, 0, 1, 1, 1);
                bf.RequestAsyncReadback(distanceBuffer, complateFunc);
                lastFrameWorking = true;
            }
            else
            {
                lastFrameWorking = false;
            }
            if (Input.GetKeyDown(KeyCode.P))
            {
                MTerrain.current.SaveMask();
            }
        }
示例#2
0
        public MaskBuffer ScheduleLoadingJob(int2 chunkCoord)
        {
            MaskBuffer mb = new MaskBuffer(GetByteOffset(chunkCoord, terrainMaskCount), size);

            loadingCommandQueue.Add(mb);
            loadingThread.AddMission(loadingThreadExecutor);
            return(mb);
        }
        public LoadingHandler LoadChunk(int2 position, int targetMipLevel)
        {
            LoadingHandler lh = new LoadingHandler(position, targetMipLevel);

            lock (lockerObj)
            {
                handlerQueue.Add(lh);
            }
            return(lh);
        }