private GRing2PatchesCreator CreateRing2PatchesCreator() { var ring2ShaderRepository = Ring2PlateShaderRepository.Create(); TextureConcieverUTProxy conciever = new TextureConcieverUTProxy(); _updatableContainer.AddUpdatableElement(conciever); _ring2PatchesPainterUtProxy = new Ring2PatchesPainterUTProxy( new Ring2PatchesPainter( new Ring2MultishaderMaterialRepository(ring2ShaderRepository, Ring2ShaderNames.ShaderNames))); _updatableContainer.AddUpdatableElement(_ring2PatchesPainterUtProxy); Ring2RandomFieldFigureGenerator figureGenerator = new Ring2RandomFieldFigureGenerator(new TextureRenderer(), new Ring2RandomFieldFigureGeneratorConfiguration() { PixelsPerUnit = new Vector2(2, 2) }); var utFigureGenerator = new RandomFieldFigureGeneratorUTProxy(figureGenerator); _updatableContainer.AddUpdatableElement(utFigureGenerator); var randomFieldFigureRepository = new Ring2RandomFieldFigureRepository(utFigureGenerator, new Ring2RandomFieldFigureRepositoryConfiguration(2, new Vector2(20, 20))); Quadtree <Ring2Region> regionsTree = Ring2TestUtils.CreateRegionsTreeWithPath3(randomFieldFigureRepository); return(new GRing2PatchesCreator( new MonoliticRing2RegionsDatabase(regionsTree), new GRing2RegionsToPatchTemplateConventer(), new Ring2PatchTemplateCombiner(), new Ring2PatchCreator(), new Ring2IntensityPatternProvider(conciever), new GRing2Deviser(), new Ring2PatchesOverseerConfiguration() { IntensityPatternPixelsPerUnit = new Dictionary <int, float>() { { 1, 1 } } //PatchSize = new Vector2(90, 90) } )); }
public void Start() { var ring2ShaderRepository = Ring2PlateShaderRepository.Create(); var conciever = _gameInitializationFields.Retrive <TextureConcieverUTProxy>(); var detailEnhancer = new Ring2IntensityPatternEnhancer(_gameInitializationFields.Retrive <UTTextureRendererProxy>(), _ring2InitializerConfiguration.Ring2IntensityPatternEnhancingSizeMultiplier); var ring2PatchesPainterUtProxy = new Ring2PatchesPainterUTProxy(new Ring2PatchesPainter( new Ring2MultishaderMaterialRepository(ring2ShaderRepository, Ring2ShaderNames.ShaderNames))); _ultraUpdatableContainer.Add(ring2PatchesPainterUtProxy); var patchesCreator = new GRing2PatchesCreator( _gameInitializationFields.Retrive <IRing2RegionsDatabase>(), new GRing2RegionsToPatchTemplateConventer(), new Ring2PatchTemplateCombiner(), new Ring2PatchCreator(), new Ring2IntensityPatternProvider(conciever, detailEnhancer), new GRing2Deviser(), _ring2InitializerConfiguration.Ring2PatchesOverseerConfiguration ); var gRing2PatchesCreatorProxy = new GRing2PatchesCreatorProxy(patchesCreator); _ultraUpdatableContainer.AddOtherThreadProxy(gRing2PatchesCreatorProxy); _gameInitializationFields.SetField(gRing2PatchesCreatorProxy); UTRing2PlateStamperProxy stamperProxy = new UTRing2PlateStamperProxy( new Ring2PlateStamper(_ring2InitializerConfiguration.Ring2PlateStamperConfiguration, _gameInitializationFields.Retrive <ComputeShaderContainerGameObject>())); _ultraUpdatableContainer.Add(stamperProxy); Ring2PatchStamplingOverseerFinalizer patchStamper = new Ring2PatchStamplingOverseerFinalizer( stamperProxy, _gameInitializationFields.Retrive <UTTextureRendererProxy>(), _gameInitializationFields.Retrive <CommonExecutorUTProxy>()); _gameInitializationFields.SetField(patchStamper); }
public static ESurfacePatchProvider ConstructProvider(UltraUpdatableContainer updatableContainer, Dictionary <int, float> intensityPatternPixelsPerUnit, ComputeShaderContainerGameObject shaderContainerGO, int mipmapLevelToExtract, Dictionary <int, float> plateStampPixelsPerUnit) { var ring2ShaderRepository = Ring2PlateShaderRepository.Create(); TextureConcieverUTProxy conciever = new TextureConcieverUTProxy(); updatableContainer.Add(conciever); var ring2PatchesPainterUtProxy = new Ring2PatchesPainterUTProxy( new Ring2PatchesPainter( new Ring2MultishaderMaterialRepository(ring2ShaderRepository, Ring2ShaderNames.ShaderNames))); updatableContainer.Add(ring2PatchesPainterUtProxy); UTRing2PlateStamperProxy stamperProxy = new UTRing2PlateStamperProxy( new Ring2PlateStamper(new Ring2PlateStamperConfiguration() { PlateStampPixelsPerUnit = plateStampPixelsPerUnit }, shaderContainerGO)); updatableContainer.Add(stamperProxy); UTTextureRendererProxy textureRendererProxy = new UTTextureRendererProxy(new TextureRendererService( new MultistepTextureRenderer(shaderContainerGO), new TextureRendererServiceConfiguration() { StepSize = new Vector2(500, 500) })); updatableContainer.Add(textureRendererProxy); CommonExecutorUTProxy commonExecutorUtProxy = new CommonExecutorUTProxy(); //todo updatableContainer.Add(commonExecutorUtProxy); Ring2PatchStamplingOverseerFinalizer patchStamperOverseerFinalizer = new Ring2PatchStamplingOverseerFinalizer(stamperProxy, textureRendererProxy, commonExecutorUtProxy); MipmapExtractor mipmapExtractor = new MipmapExtractor(textureRendererProxy); var patchesCreatorProxy = new GRing2PatchesCreatorProxy(CreateRing2PatchesCreator(updatableContainer, intensityPatternPixelsPerUnit)); return(new ESurfacePatchProvider(patchesCreatorProxy, patchStamperOverseerFinalizer, commonExecutorUtProxy, mipmapExtractor, mipmapLevelToExtract)); }