Beispiel #1
0
 public TerrainDetailProvider(
     TerrainDetailGenerator generator, TerrainDetailCornerMerger cornerMerger, TerrainDetailAlignmentCalculator alignmentCalculator)
 {
     _generator           = generator;
     _cornerMerger        = cornerMerger;
     _alignmentCalculator = alignmentCalculator;
 }
        private TerrainDetailProvider CreateTerrainDetailProvider(TerrainDetailGenerator generator, CommonExecutorUTProxy commonExecutorUtProxy)
        {
            var cornerMerger = new TerrainDetailCornerMerger(
                new LateAssignFactory <BaseTerrainDetailProvider>(() => _gameInitializationFields.Retrive <BaseTerrainDetailProvider>()),
                _gameInitializationFields.Retrive <TerrainDetailAlignmentCalculator>(),
                _gameInitializationFields.Retrive <UTTextureRendererProxy>(),
                _gameInitializationFields.Retrive <TextureConcieverUTProxy>(),
                commonExecutorUtProxy,
                _configuration.TerrainMergerConfiguration);

            var provider = new TerrainDetailProvider(generator, cornerMerger, _gameInitializationFields.Retrive <TerrainDetailAlignmentCalculator>());

            return(provider);
        }
        public TerrainShapeDbUnderTest(bool useTextureSavingToDisk  = false, bool useCornerMerging = false,
                                       string terrainDetailFilePath = "C:\\unityCache\\", bool useTextureLoadingFromDisk = false)
        {
            CommonExecutorUTProxy            commonExecutorUtProxy = new CommonExecutorUTProxy();
            ComputeShaderContainerGameObject containerGameObject   = GameObject.FindObjectOfType <ComputeShaderContainerGameObject>();

            var globalHeightTexture = CreateGlobalHeightTexture(commonExecutorUtProxy);

            UTTextureRendererProxy textureRendererProxy = new UTTextureRendererProxy(new TextureRendererService(
                                                                                         new MultistepTextureRenderer(containerGameObject), new TextureRendererServiceConfiguration()
            {
                StepSize = new Vector2(400, 400)
            }));

            UnityThreadComputeShaderExecutorObject computeShaderExecutorObject = new UnityThreadComputeShaderExecutorObject();
            var terrainDetailGenerator = Ring1DebugObjectV2.CreateTerrainDetailGenerator(
                globalHeightTexture, textureRendererProxy, commonExecutorUtProxy, computeShaderExecutorObject,
                containerGameObject);

            TerrainDetailCornerMerger merger = null;
            LateAssignFactory <BaseTerrainDetailProvider> detailProviderFactory = new LateAssignFactory <BaseTerrainDetailProvider>();

            if (useCornerMerging)
            {
                merger = new TerrainDetailCornerMerger(detailProviderFactory, new TerrainDetailAlignmentCalculator(240), textureRendererProxy, new TextureConcieverUTProxy(),
                                                       new CommonExecutorUTProxy(), new TerrainDetailCornerMergerConfiguration());
            }

            var terrainDetailProvider = Ring1DebugObjectV2.CreateTerrainDetailProvider(terrainDetailGenerator, merger);

            _shapeDb = FETerrainShapeDbInitialization.CreateTerrainShapeDb(terrainDetailProvider, commonExecutorUtProxy
                                                                           , new TerrainDetailAlignmentCalculator(240), useCornerMerging, useTextureSavingToDisk, useTextureLoadingFromDisk
                                                                           , new TerrainDetailFileManager(terrainDetailFilePath, commonExecutorUtProxy));

            var baseProvider = new FromTerrainDbBaseTerrainDetailProvider(_shapeDb);

            detailProviderFactory.Assign(baseProvider);
            terrainDetailGenerator.SetBaseTerrainDetailProvider(baseProvider);
        }
        public static TerrainDetailProvider CreateTerrainDetailProvider(TerrainDetailGenerator generator, TerrainDetailCornerMerger cornerMerger = null)
        {
            var provider =
                new TerrainDetailProvider(generator, cornerMerger, new TerrainDetailAlignmentCalculator(240));

            return(provider);
        }