コード例 #1
0
 public void RemoveFromParent(ElementModel model, ElementModel parentToLeave)
 {
     model.RemoveParent(parentToLeave);
     parentToLeave.RemoveChild(model);
     if (!model.Parents.Any())
     {
         _models.Remove(model.Id);
     }
 }
コード例 #2
0
        public void RemoveLight(ElementModel target, Light light)
        {
            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            if (light == null)
            {
                throw new ArgumentNullException(nameof(light));
            }

            if (target.IsLeaf)
            {
                var success = target.RemoveLight(light);
                //_lightToModel.Remove(light.Id);
                if (success)
                {
                    if (!target.Lights.Any())
                    {
                        //remove me from all my parents so I can be deleted
                        foreach (var parentId in target.Parents.ToList())
                        {
                            ElementModel parentElementModel;
                            if (_models.TryGetValue(parentId, out parentElementModel))
                            {
                                parentElementModel.RemoveChild(target);
                                target.RemoveParent(parentElementModel);
                            }
                        }

                        //Remove me
                        _models.Remove(target.Id);
                    }
                }
            }
        }