Пример #1
0
        /// <summary>
        /// 一番最初に追加された2Dレイヤーにオブジェクトを削除する。
        /// </summary>
        /// <param name="o">オブジェクト</param>
        /// <returns>成否</returns>
        public static bool RemoveObject2D(Object2D o)
        {
            Scene scene = null;

            if (CurrentScene != null)
            {
                scene = CurrentScene;
            }
            else if (nextScene != null)
            {
                scene = nextScene;
            }

            if (scene == null)
            {
                return(false);
            }

            var layers = scene.Layers;

            foreach (var layer in layers)
            {
                if (layer.LayerType == LayerType.Layer2D)
                {
                    var layer2d = (Layer2D)layer;
                    layer2d.RemoveObject(o);
                    return(true);
                }
            }

            return(false);
        }
Пример #2
0
 internal void ImmediatelyRemoveChild(Object2D child)
 {
     if (IsAlive)
     {
         CoreObject.RemoveChild(child.CoreObject);
         ChildrenList.Remove(child);
     }
 }
Пример #3
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);
        }
Пример #4
0
 internal void ImmediatelyAddChild(
     Object2D child,
     ChildManagementMode managementMode,
     ChildTransformingMode transformingMode)
 {
     CoreObject.AddChild(
         child.CoreObject,
         asd.Particular.ChildManagementMode.ToInt(managementMode),
         (swig.ChildTransformingMode)transformingMode);
     ChildrenList.Add(child);
 }
Пример #5
0
        /// <summary>
        /// 指定した2Dオブジェクトをこのレイヤーに追加する。
        /// </summary>
        /// <param name="object2D">追加する2Dオブジェクト</param>
        public void AddObject(Object2D object2D)
        {
            if (object2D.Layer != null)
            {
                Particular.Helper.ThrowException("指定したオブジェクトは既に別のレイヤーに所属しています。");
            }

            contentsManager.Add(object2D);
            coreLayer2D.AddObject(object2D.CoreObject);
            object2D.Layer = this;
            object2D.Start();
        }
Пример #6
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;
        }
Пример #7
0
 internal void SyncContainerWithChild(Object2D child)
 {
     if (child.IsInheriting(ChildManagementMode.RegistrationToLayer))
     {
         if (child.Layer != null && child.Layer != Layer)
         {
             child.Layer.RemoveObject(child);
         }
         if (child.Layer == null && Layer != null)
         {
             Layer.AddObject(child);
         }
     }
 }
Пример #8
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウトの末尾に配置します。
		/// </summary>
		/// <param name="item">配置する2Dオブジェクト。</param>
		public abstract void AddItem(Object2D item);
Пример #9
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウト上に挿入します。
		/// </summary>
		/// <param name="index">挿入する位置のインデックス。</param>
		/// <param name="item">挿入する2Dオブジェクト。</param>
		public abstract void InsertItem(int index, Object2D item);
Пример #10
0
		public override void InsertItem(int index, Object2D item)
		{
			item.Position = GetPosition(items_.Count);
			AddChild(item, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Position);
			items_.Insert(index, item);
		}
Пример #11
0
		public override void RemoveItem(Object2D item)
		{
			RemoveChild(item);
			items_.Remove(item);
		}
Пример #12
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウト上に挿入します。
		/// </summary>
		/// <param name="index">挿入する位置のインデックス。</param>
		/// <param name="item">挿入する2Dオブジェクト。</param>
        public override void InsertItem(int index, Object2D item)
        {
            item.Position = GetPosition(index);
            AddChild(item, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Position);
            items_.Insert(index, new ItemInfo(this, item));
            Cancellations.Insert(index, null);

            for(int i = index + 1; i < items_.Count; i++)
            {
				items_[i].StartAnimation(GetPosition(i));
            }

			onLayoutChanged_.OnNext(Unit.Default);
		}
Пример #13
0
 public EventToManageFamilyship2D(Object2D parent, Object2D child)
 {
     Parent  = parent;
     Child   = child;
     Command = RegistrationCommand.Invalid;
 }
Пример #14
0
 /// <summary>
 /// 指定した2Dオブジェクトを子オブジェクトとしてこのインスタンスに追加する。
 /// </summary>
 /// <param name="child">追加する子オブジェクト</param>
 /// <param name="mode">子オブジェクトの同期モード</param>
 public void AddChild(Object2D child, ChildMode mode)
 {
     CoreObject.AddChild(child.CoreObject, (swig.ChildMode)mode);
     children_.Add(child);
 }
Пример #15
0
 /// <summary>
 /// 指定した2Dオブジェクトをこのレイヤーから削除する。
 /// </summary>
 /// <param name="object2D">削除される2Dオブジェクト</param>
 public void RemoveObject(Object2D object2D)
 {
     contentsManager.Remove(object2D);
     coreLayer2D.RemoveObject(object2D.CoreObject);
     object2D.Layer = null;
 }
Пример #16
0
 public ParentInfo2D(Object2D parent, ChildManagementMode managementMode)
 {
     Parent         = parent;
     ManagementMode = managementMode;
 }
Пример #17
0
 /// <summary>
 /// 指定した子オブジェクトをこのインスタンスから削除する。
 /// </summary>
 /// <param name="child"></param>
 public void RemoveChild(Object2D child)
 {
     CoreObject.RemoveChild(child.CoreObject);
     children_.Remove(child);
 }
Пример #18
0
 /// <summary>
 /// 指定した子オブジェクトをこのインスタンスから削除する。
 /// </summary>
 /// <param name="child"></param>
 public void RemoveChild(Object2D child)
 {
     CoreObject.RemoveChild(child.CoreObject);
     children_.Remove(child);
 }
Пример #19
0
			public ItemInfo(LinearPanel owner, Object2D obj)
			{
				this.owner = owner;
				Object = obj;
				LayoutedPosition = obj.Position;
			}
Пример #20
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウトから取り除きます。
		/// </summary>
		/// <param name="item">取り除く2Dオブジェクト。</param>
        public override void RemoveItem(Object2D item)
        {
            var index = items_.IndexOf(x => x.Object == item);
            RemoveChild(item);
            items_.RemoveAt(index);
            Cancellations.RemoveAt(index);
            
            for(int i = index; i < items_.Count; i++)
			{
				items_[i].StartAnimation(GetPosition(i));
            }

			onLayoutChanged_.OnNext(Unit.Default);
		}
Пример #21
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウトから取り除きます。
		/// </summary>
		/// <param name="item">取り除く2Dオブジェクト。</param>
		public abstract void RemoveItem(Object2D item);
Пример #22
0
 /// <summary>
 /// 指定した2Dオブジェクトをこのレイヤーから削除する。
 /// </summary>
 /// <param name="object2D">削除される2Dオブジェクト</param>
 public void RemoveObject(Object2D object2D)
 {
     contentsManager.Remove(object2D);
     coreLayer2D.RemoveObject(object2D.CoreObject);
     object2D.Layer = null;
 }
Пример #23
0
        /// <summary>
        /// 一番最初に追加された2Dレイヤーにオブジェクトを削除する。
        /// </summary>
        /// <param name="o">オブジェクト</param>
        /// <returns>成否</returns>
        public static bool RemoveObject2D(Object2D o)
        {
            Scene scene = null;

            if(CurrentScene != null)
            {
                scene = CurrentScene;
            }
            else if(nextScene != null)
            {
                scene = nextScene;
            }

            if(scene == null) return false;

            var layers = scene.Layers;

            foreach(var layer in layers)
            {
                if(layer.LayerType == LayerType.Layer2D)
                {
                    var layer2d = (Layer2D)layer;
                    layer2d.RemoveObject(o);
                    return true;
                }
            }

            return false;
        }
Пример #24
0
        /// <summary>
        /// 指定した2Dオブジェクトをこのレイヤーに追加する。
        /// </summary>
        /// <param name="object2D">追加する2Dオブジェクト</param>
        public void AddObject(Object2D object2D)
        {
            if(object2D.Layer != null)
            {
                Particular.Helper.ThrowException("指定したオブジェクトは既に別のレイヤーに所属しています。");
            }

            contentsManager.Add(object2D);
            coreLayer2D.AddObject(object2D.CoreObject);
            object2D.Layer = this;
            object2D.Start();
        }
Пример #25
0
 /// <summary>
 /// 指定した2Dオブジェクトを子オブジェクトとしてこのインスタンスに追加する。
 /// </summary>
 /// <param name="child">追加する子オブジェクト</param>
 /// <param name="mode">子オブジェクトの同期モード</param>
 public void AddChild(Object2D child, ChildMode mode)
 {
     // TODO C++版と合わせる
     CoreObject.AddChild(child.CoreObject, 0, swig.ChildTransformingMode.Position);
     children_.Add(child);
 }
Пример #26
0
		/// <summary>
		/// 2Dオブジェクトをこのレイアウトの末尾に配置します。
		/// </summary>
		/// <param name="item">配置する2Dオブジェクト。</param>
        public override void AddItem(Object2D item)
        {
            item.Position = GetPosition(items_.Count);
            AddChild(item, ChildManagementMode.RegistrationToLayer | ChildManagementMode.Disposal, ChildTransformingMode.Position);
            items_.Add(new ItemInfo(this, item));
            Cancellations.Add(null);
			onLayoutChanged_.OnNext(Unit.Default);
        }