/// <summary> /// Transfers the child node from current group node to another group node. /// </summary> /// <param name="targetGroup">The target group.</param> /// <param name="node">The node.</param> /// <returns></returns> public bool TransferChildNode(SceneNode node, GroupNodeBase targetGroup) { if (targetGroup == this || !itemHashSet.Remove(node.GUID)) { return(false); } ItemsInternal.Remove(node); node.Parent = null; InvalidateSceneGraph(); ChildNodeRemoved?.Invoke(this, new OnChildNodeChangedArgs(node, Operation.Remove)); return(targetGroup.AddChildNode(node)); }
/// <summary> /// Removes the child node. /// </summary> /// <param name="node">The node.</param> /// <returns></returns> public bool RemoveChildNode(SceneNode node) { if (node != null && itemHashSet.Remove(node.GUID)) { node.Detach(); ItemsInternal.Remove(node); node.Parent = null; ChildNodeRemoved?.Invoke(this, new OnChildNodeChangedArgs(node, Operation.Remove)); return(true); } else { return(false); } }