Esempio n. 1
0
        /// <summary>
        /// 指定した2Dオブジェクトを子オブジェクトとしてこのインスタンスに追加する。
        /// </summary>
        /// <param name="child">追加する子オブジェクト</param>
        /// <param name="managementMode">子オブジェクトの管理に関する同期設定。フラグをOR演算でつなげて複数指定することができる。</param>
        /// <param name="transformingMode">子オブジェクトの変形に関する同期設定。</param>
        /// <remarks>実際に追加されるのはこのメソッドを呼び出したフレームの最後になるので注意が必要。</remarks>
        public void AddChild(Object2D child, ChildManagementMode managementMode, ChildTransformingMode transformingMode)
        {
            var e = new EventToManageFamilyship2D(this, child);

            e.SetUpAsAddEvent(managementMode, transformingMode);
            Engine.ChangesToBeCommited.Enqueue(e);

            child.ParentInfo = new ParentInfo2D(this, managementMode);
            SyncContainerWithChild(child);
        }
Esempio n. 2
0
        /// <summary>
        /// 指定した子オブジェクトをこのインスタンスから削除する。
        /// </summary>
        /// <param name="child">削除する子オブジェクト</param>
        /// <remarks>実際に削除されるのはこのメソッドを呼び出したフレームの最後になるので注意が必要。</remarks>
        public void RemoveChild(Object2D child)
        {
            var e = new EventToManageFamilyship2D(this, child);

            e.SetUpAsRemoveEvent();
            Engine.ChangesToBeCommited.Enqueue(e);

            if (child.IsInheriting(ChildManagementMode.RegistrationToLayer))
            {
                Layer.RemoveObject(child);
            }
            child.ParentInfo = null;
        }