public void RemoveFromParent(ElementModel model, ElementModel parentToLeave) { model.RemoveParent(parentToLeave); parentToLeave.RemoveChild(model); if (!model.Parents.Any()) { _models.Remove(model.Id); } }
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); } } } }