public IntensityFromRandomFiguresCompositionProvider(IntensityFieldFigure baseIntensityFieldFigure,
                                                      IntensityFieldFigure additionalIntensityFieldFigure, float additionalWeight)
 {
     _baseIntensityFieldFigure       = baseIntensityFieldFigure;
     _additionalIntensityFieldFigure = additionalIntensityFieldFigure;
     _additionalWeight = additionalWeight;
 }
コード例 #2
0
        private List <Grass2TypeWithIntensity> RetriveIntensityFiguresFromTextureArray(
            float[] intensitiesArray,
            List <GrassType> generatedGrassTypes,
            IntVector2 figureSize)
        {
            var outList = new List <Grass2TypeWithIntensity>();
            int i       = 0;

            foreach (var type in generatedGrassTypes)
            {
                var intensityFigure = new IntensityFieldFigure(figureSize.X, figureSize.Y);
                for (int y = 0; y < figureSize.Y; y++)
                {
                    for (int x = 0; x < figureSize.X; x++)
                    {
                        intensityFigure.SetPixel(x, y,
                                                 intensitiesArray[i * (figureSize.X * figureSize.Y) + y * figureSize.X + x]);
                    }
                }
                i++;

                outList.Add(new Grass2TypeWithIntensity()
                {
                    GrassType       = type,
                    IntensityFigure = intensityFigure
                });
            }
            return(outList);
        }
コード例 #3
0
        public IntensityFieldFigure LoadSingleLevelMipmapData(Texture2D tex, int level, int height)
        {
            var figure = new IntensityFieldFigure(height, height);
            var colors = tex.GetPixels(level);

            for (int x = 0; x < height; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    figure.SetPixel(x, y, colors[y * height + x].r);
                }
            }
            return(figure);
        }
コード例 #4
0
        public static IntensityFieldFigure CreateDebugRandomFieldFigure()
        {
            int width  = 16;
            int height = 16;

            var fieldFigure = new IntensityFieldFigure(width, height);

            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < width; y++)
                {
                    fieldFigure.SetPixel(x, y, x / (float)(width - 1));
                }
            }
            return(fieldFigure);
        }
コード例 #5
0
        public static Texture CreateTextureFrom(IntensityFieldFigure intensityFigure)
        {
            int width  = intensityFigure.Width;
            int height = intensityFigure.Height;

            var tex = new Texture2D(width, height, TextureFormat.RGB24, false);

            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    tex.SetPixel(x, y, new Color(intensityFigure.GetPixel(x, y), 0, 0));
                }
            }
            tex.wrapMode = TextureWrapMode.Clamp;
            tex.Apply(false);

            SavingFileManager.SaveTextureToPngFile($@"C:\inz2\tex{texNo++}.png", tex);
            return(tex);
        }
コード例 #6
0
        public static IGrassIntensityMapProvider CreateDebugIntensityMapProvider()
        {
            var grass1Intensity = new IntensityFieldFigure(16, 16);
            var grass2Intensity = new IntensityFieldFigure(16, 16);

            for (int x = 0; x < 16; x++)
            {
                for (int y = 0; y < 16; y++)
                {
                    grass1Intensity.SetPixel(x, y, Mathf.InverseLerp(4, 10, x));
                    grass2Intensity.SetPixel(x, y, Mathf.InverseLerp(0, 4, y));
                }
            }

            return(new DebugGrassIntensityMapProvider(new List <GrassTypeWithUvedIntensity>()
            {
                new GrassTypeWithUvedIntensity()
                {
                    Figure = new IntensityFieldFigureWithUv()
                    {
                        FieldFigure = grass1Intensity,
                        Uv = new MyRectangle(0, 0, 1, 1)
                    },
                    Type = GrassType.Debug1,
                },
                new GrassTypeWithUvedIntensity()
                {
                    Figure = new IntensityFieldFigureWithUv()
                    {
                        FieldFigure = grass2Intensity,
                        Uv = new MyRectangle(0, 0, 1, 1)
                    },
                    Type = GrassType.Debug2,
                },
            }));
        }