Exemple #1
0
        public async Task <GrassBandInfo> GrowGrassBandAsync(MyRectangle growingArea)
        {
            var retrived = (await _grassIntensityMapProvider.ProvideMapsAtAsync(_providerGenerationRepositioner.Move(growingArea)));
            List <GrassTypeWithUvedIntensity> grassTypeIntensities = retrived.CoordedPart.Part
                                                                     .Select(c => new GrassTypeWithUvedIntensity()
            {
                Type   = c.GrassType,
                Figure = new IntensityFieldFigureWithUv()
                {
                    FieldFigure = c.IntensityFigure,
                    Uv          = retrived.Uv
                }
            })
                                                                     .Where(c => _supportedGrassTypes.Contains(c.Type))
                                                                     .ToList();

            var groupIds = new List <GrassGroupId>();

            foreach (var intensityData in grassTypeIntensities)
            {
                var intensityProvider =
                    new IntensityFromRandomFigureProvider(intensityData.Figure);
                var newGroupId = _grassGroupsPlanter.AddGrassGroup(growingArea, intensityData.Type, intensityProvider);
                groupIds.Add(newGroupId);
            }

            return(new GrassBandInfo()
            {
                GroupIds = groupIds
            });
        }
        public Task RegisterDesignBodiesAsync(List <FlatPositionWithSpotId> bodiesWithIds)
        {
            Dictionary <SpotId, DesignBodySpotModification> modifications = new Dictionary <SpotId, DesignBodySpotModification>();

            foreach (var pair in bodiesWithIds)
            {
                var elevationId = _elevationManager.RegisterProp(_repositioner.Move(pair.FlatPosition));
                _spotIdToElevationIdDict[pair.SpotId] = elevationId;

                modifications[pair.SpotId] = new DesignBodySpotModification()
                {
                    Uniforms = CreatePackWithPointerUniform(elevationId)
                };
            }

            _changesListener.SpotsWereChanged(modifications);
            return(TaskUtils.EmptyCompleted());
        }
        public MyTransformTriplet ProvideTriplet()
        {
            var debugTestDivider = 1; ///*240f;
            var upScale          = _heightDenormalizer.DenormalizationMultiplier;

            var position = new Vector3(_inGamePosition.X / debugTestDivider, _heightDenormalizer.DenormalizationOffset,
                                       _inGamePosition.Y / debugTestDivider);

            position = _repositioner.Move(position);
            return(new MyTransformTriplet(
                       position,
                       Vector3.zero,
                       new Vector3(_inGamePosition.Width / debugTestDivider, upScale,
                                   _inGamePosition.Height / debugTestDivider)));
        }