Esempio n. 1
0
        public void Start()
        {
            TaskUtils.SetGlobalMultithreading(false);
            TextureRendererServiceConfiguration textureRendererServiceConfiguration = new TextureRendererServiceConfiguration();

            textureRendererServiceConfiguration.StepSize = new Vector2(10, 10);

            UTTextureRendererProxy utTextureRenderer = new UTTextureRendererProxy(new TextureRendererService(
                                                                                      new MultistepTextureRenderer(Object.FindObjectOfType <ComputeShaderContainerGameObject>()), textureRendererServiceConfiguration));

            TextureConcieverUTProxy utTextureConciever = new TextureConcieverUTProxy();

            LateAssignFactory <BaseTerrainDetailProvider> terrainDetailProviderFactory = new LateAssignFactory <BaseTerrainDetailProvider>(() => _mockProvider);

            _merger = new TerrainDetailCornerMerger(terrainDetailProviderFactory, new TerrainDetailAlignmentCalculator(240), utTextureRenderer, utTextureConciever, new CommonExecutorUTProxy(), new TerrainDetailCornerMergerConfiguration());

            //TaskUtils.DebuggerAwareWait(Test1());
            //TaskUtils.DebuggerAwareWait(Test2());
            //TaskUtils.DebuggerAwareWait(Test3());
            //TaskUtils.DebuggerAwareWait(Test4());
            //TaskUtils.DebuggerAwareWait(Test5());
            //TaskUtils.DebuggerAwareWait(Test6());
            //TaskUtils.DebuggerAwareWait(Test7());
            TaskUtils.DebuggerAwareWait(Test8());
        }
        private void InitializeFields()
        {
            TextureRendererServiceConfiguration rendererServiceConfiguration = new TextureRendererServiceConfiguration()
            {
                StepSize = new Vector2(500, 500)
            };

            _utTextureRendererProxy = new UTTextureRendererProxy(
                new TextureRendererService(new MultistepTextureRenderer(ContainerGameObject),
                                           rendererServiceConfiguration));
        }
        private TerrainAndNormalTexture CreateTerrainAndNormalTexture(RenderTexture mainTexture)
        {
            TextureRendererServiceConfiguration rendererServiceConfiguration = new TextureRendererServiceConfiguration()
            {
                StepSize = new Vector2(500, 500)
            };

            _utTextureRendererProxy = new UTTextureRendererProxy(
                new TextureRendererService(new MultistepTextureRenderer(ContainerGameObject),
                                           rendererServiceConfiguration));

            var provider =
                CreateTerrainDetailProvider(
                    TerrainDetailProviderDebugUtils.CreateFeatureAppliers(_utTextureRendererProxy, ContainerGameObject,
                                                                          new CommonExecutorUTProxy(), new UnityThreadComputeShaderExecutorObject()), mainTexture);

            MyRectangle queryArea = null;

            if (_terrainResolution == TerrainCardinalResolution.MIN_RESOLUTION)
            {
                queryArea = new MyRectangle(0, 0, 24 * 240, 24 * 240);
            }
            else if (_terrainResolution == TerrainCardinalResolution.MID_RESOLUTION)
            {
                queryArea = new MyRectangle(3 * 240, 3 * 240, 3 * 240, 3 * 240);
            }
            else
            {
                queryArea =
                    new MyRectangle(5 * 0.375f * 240, 5 * 0.375f * 240, 0.375f * 240, 0.375f * 240);
            }

            var outTex    = provider.GenerateHeightDetailElementAsync(queryArea, _terrainResolution, CornersMergeStatus.NOT_MERGED).Result.Texture;
            var outNormal = provider.GenerateNormalDetailElementAsync(queryArea, _terrainResolution, CornersMergeStatus.NOT_MERGED).Result.Texture;

            return(new TerrainAndNormalTexture()
            {
                HeightTexture = outTex.Texture,
                NormalTexture = outNormal.Texture
            });
        }