public Entity Clone() { Entity entity = new Entity(); foreach (Entity child in Children) { entity.AddChild(child.Clone()); } entity.X = X; entity.Y = Y; entity.Active = Active; entity.Visible = Visible; if (UpdateComponent != null) { entity.AddUpdateComponent((IUpdateComponent)UpdateComponent.Clone()); } if (RenderComponent != null) { entity.AddRenderComponent((IRenderComponent)RenderComponent.Clone()); } foreach (KeyValuePair <Type, Component> entry in ComponentList) { entity.AddComponent(entry.Value.Clone()); } foreach (KeyValuePair <string, UpdateChain> chain in UpdateChains) { foreach (IUpdateComponent component in chain.Value) { entity.AddChainComponent(chain.Key, (IUpdateComponent)component.Clone()); } } return(entity); }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="render">標準描画コンポーネントのコピー元。</param> /// <param name="text">テキストコンポーネントのコピー元。</param> /// <param name="textClipping"> /// テキストを1つ上のオブジェクトでクリッピングするならば true 。 /// </param> /// <param name="withoutUnused"> /// AviUtl拡張編集ファイル用設定で利用されないパラメータをクリアするならば true 。 /// </param> public ExoTextStyleTemplate( RenderComponent render, TextComponent text, bool textClipping, bool withoutUnused = false) { if (render == null) { throw new ArgumentNullException(nameof(render)); } if (text == null) { throw new ArgumentNullException(nameof(text)); } this.Render = render.Clone(); this.Text = text.Clone(); this.IsTextClipping = textClipping; if (withoutUnused) { this.ClearUnused(); } }