Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 public bool Equals(GrassGroupId other)
 {
     return(Id == other.Id);
 }