private void NewGroupResolvingEnded(SpotId spotId, List <DesignBodySpotModification> spotDatas, GroupWaitingToBePlanted info, GrassGroupId groupId) { MyProfiler.BeginSample("GrassGroupsPlanter. NewGroupResolvingEnded"); var template = _templatesDictionary[info.Type]; var unplantedInstances = _grassDetailInstancer.Initialize(spotDatas.Count, template); var outAspectsList = new List <Grass2Aspect>(spotDatas.Count); for (int i = 0; i < spotDatas.Count; i++) { var unplantedInstance = unplantedInstances[i]; var flatPosition = _repositioner.Move(info.FlatPositions[i]); var aspects = _aspectsGenerator.GenerateAspect(unplantedInstance, flatPosition); outAspectsList.Add(aspects); } _groupsAspectInfos[groupId] = outAspectsList; _groupsContainer.AddGroup( Enumerable.Range(0, outAspectsList.Count) .SelectMany(i => PositionEntitiesFromAspect(outAspectsList[i], spotDatas[i])).ToList(), groupId); MyProfiler.EndSample(); }
private void GroupMovingEnded(List <DesignBodySpotModification> spotDatas, GrassGroupId groupId) { MyProfiler.BeginSample("GrassGroupsPlanter. GroupMovingEnded"); var aspectInfos = _groupsAspectInfos[groupId]; _groupsContainer.RemoveGroup(groupId); _groupsContainer.AddGroup( Enumerable.Range(0, aspectInfos.Count) .SelectMany(i => PositionEntitiesFromAspect(aspectInfos[i], spotDatas[i])).ToList(), groupId); MyProfiler.EndSample(); }
public void RemoveGroup(GrassGroupId id) { _designBodiesChangeListener.ForgetDesignBodies(new List <SpotId>() { _spotIdToGrassGroupId.Get(id) }); _spotIdToGrassGroupId.Remove(id); if (_groupsAspectInfos.ContainsKey(id)) //it was planteed { _groupsAspectInfos.Remove(id); _groupsContainer.RemoveGroup(id); } }
public bool Equals(GrassGroupId other) { return(Id == other.Id); }