/// <summary> /// 在指定的索引位置,插入子节点。 /// </summary> /// <param name="index">索引位置,从 0 开始</param> /// <param name="child">要插入的子节点</param> public virtual void InsertChild(int index, ViNamedObject child) { if (this.Owner != null) { child.SetParent(this); } this.Children.Insert(index, child); }
/// <summary> /// 添加子节点。子节点会按照字母序(不区分大小写)添加到子节点集合中。 /// /// @note 是按照“从小到大”排序的方式加入到子对象集合中的。 /// </summary> /// <param name="child">需要添加的子节点</param> public virtual void AddChild(ViNamedObject child) { if (this.Owner != null) { child.SetParent(this.Owner); } this.Children.SortedAdd(child); }
/// <summary> /// 添加子节点到子节点集合最后。 /// </summary> /// <param name="child">需要添加的子节点</param> public override void AddChild(ViNamedObject child) { this.Children.Add(child); // 注意:SetParent 不能放到 Add(child)前面,因为此时功能块的 PropertyChanged有可能为null,所以功能块在设置Parent的时候, //有可能没法通知UndoEngine来进行记录属性的修改。 if (this.Owner != null) { child.SetParent(this); } }
/// <summary> /// 删除子节点。 /// </summary> /// <param name="child">被删除的子节点</param> /// <returns>如果子节点不在本对象的子节点列表中,则失败</returns> public virtual bool DeleteChild(ViNamedObject child) { if (this.Owner != null) { if (child.GetParent() != this.Owner) { return(false); } child.SetParent(null); } return(this.Children.Remove(child)); }