public GrassEntitiesWithMaterials GenerateUniformRectangleTufts(Material material, IGrassPlacer placer) { var mesh = _generator.GetGrassBladeMesh(1); var outList = new List <GrassEntity>(); var tuftCount = 50; //todo do sth with it for (var i = 0; i < tuftCount; i++) { var entitiesSet = _tuftGenerator.CreateGrassTuft(); placer.Set(entitiesSet); outList.AddRange(entitiesSet.EntitiesAfterTransform); } //return new GrassEntitiesWithMaterials(outList, material, mesh); return(null); }
public IGrassSplat GenerateSplat(MapAreaPosition position, int entityLodLevel) { List <GrassEntitiesSet> singleEntities = new List <GrassEntitiesSet>(); for (int i = 0; i < 20; i++) { var aTuft = _grassTuftGenerator.CreateGrassTuft(); _grassTuftPositionProvider.SetPosition(aTuft, position); _grassTuftAbstractSettingGenerator.SetSettings(aTuft); if (entityLodLevel == 0) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(99.0f, 0f, 0.0f, 1.0f))); } if (entityLodLevel == 1) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(99.0f, 99.0f, 0.0f, 1.0f))); } if (entityLodLevel == 2) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(99.0f, 99.0f, 99.0f, 1.0f))); } if (entityLodLevel == 3) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(0.0f, 99.0f, 0.0f, 1.0f))); } if (entityLodLevel == 4) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(0.0f, 99.0f, 99.0f, 1.0f))); } if (entityLodLevel == 5) { aTuft.EntitiesBeforeTransform.ForEach(c => c.AddUniform(GrassShaderUniformName._Color, new Vector4(0.0f, 0.0f, 99.0f, 1.0f))); } singleEntities.Add(aTuft); } var bladeTriangleCount = (int)Mathf.Max(Constants.MAX_GRASS_MESH_LEVEL - entityLodLevel, Constants.MIN_GRASS_MESH_LEVEL); Mesh mesh = _meshGenerator.GetGrassBladeMesh(bladeTriangleCount); return(_grassInstanceContainer.AddGrassEntities( new GrassEntitiesWithMaterials(singleEntities.SelectMany(c => c.EntitiesAfterTransform).ToList(), _grassTuftMaterial, mesh, ContainerType.Instancing))); }