/// <summary> /// このControl本体に、GUIPartsを追加。 /// 追加する瞬間に、GUIPartsは初期化(OnInitの呼び出し)がなされる。 /// </summary> /// <remarks> /// このメソッドでOnInitが呼び出される。そのときにControlContextがパラメータとして渡される。 /// よって、ControlContextはこのメソッド呼び出しより先行して初期化されていなければならない。 /// /// たとえば、TextureGUIControlにAddControlでTextureGUIControl(これはITexture派生クラスなので /// AddControlできる)する場合、次の順番で行なう必要がある。 /// TextureGUIControl master_control; /// TextureGUIControl sub_control; /// TextureButton button; /// /// master_control.AddControl(sub_control,10,20); /// sub_control.AddControl(button,30,30); /// ※ ちなみに、この場合buttonは、(10,20)+(30,30) = (40,50)に描画される。 /// この順番を逆にして、 /// sub_control.AddControl(button,30,30); /// master_control.AddControl(sub_control,10,20); /// こうした場合、sub_controlのControlContextが初期化されていないので、 /// sub_control.AddControl(button,30,30)で、buttonのOnInitを呼び出すときに /// OnInit(null)で呼び出してしまいマズイ。 /// /// </remarks> /// <param name="c"></param> public void AddControl(Control c) { c.Parts.OnInit(this.controlContext); Controls.AddLast(c); }