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)));
        }