/// <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); }
internal void ImmediatelyRemoveChild(Object2D child) { if (IsAlive) { CoreObject.RemoveChild(child.CoreObject); ChildrenList.Remove(child); } }
/// <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); }
internal void ImmediatelyAddChild( Object2D child, ChildManagementMode managementMode, ChildTransformingMode transformingMode) { CoreObject.AddChild( child.CoreObject, asd.Particular.ChildManagementMode.ToInt(managementMode), (swig.ChildTransformingMode)transformingMode); ChildrenList.Add(child); }
/// <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(); }
/// <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; }
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); } } }
/// <summary> /// 2Dオブジェクトをこのレイアウトの末尾に配置します。 /// </summary> /// <param name="item">配置する2Dオブジェクト。</param> public abstract void AddItem(Object2D item);
/// <summary> /// 2Dオブジェクトをこのレイアウト上に挿入します。 /// </summary> /// <param name="index">挿入する位置のインデックス。</param> /// <param name="item">挿入する2Dオブジェクト。</param> public abstract void InsertItem(int index, Object2D item);
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); }
public override void RemoveItem(Object2D item) { RemoveChild(item); items_.Remove(item); }
/// <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); }
public EventToManageFamilyship2D(Object2D parent, Object2D child) { Parent = parent; Child = child; Command = RegistrationCommand.Invalid; }
/// <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); }
/// <summary> /// 指定した2Dオブジェクトをこのレイヤーから削除する。 /// </summary> /// <param name="object2D">削除される2Dオブジェクト</param> public void RemoveObject(Object2D object2D) { contentsManager.Remove(object2D); coreLayer2D.RemoveObject(object2D.CoreObject); object2D.Layer = null; }
public ParentInfo2D(Object2D parent, ChildManagementMode managementMode) { Parent = parent; ManagementMode = managementMode; }
/// <summary> /// 指定した子オブジェクトをこのインスタンスから削除する。 /// </summary> /// <param name="child"></param> public void RemoveChild(Object2D child) { CoreObject.RemoveChild(child.CoreObject); children_.Remove(child); }
public ItemInfo(LinearPanel owner, Object2D obj) { this.owner = owner; Object = obj; LayoutedPosition = obj.Position; }
/// <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); }
/// <summary> /// 2Dオブジェクトをこのレイアウトから取り除きます。 /// </summary> /// <param name="item">取り除く2Dオブジェクト。</param> public abstract void RemoveItem(Object2D item);
/// <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; }
/// <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(); }
/// <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); }
/// <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); }