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