[[MenuBar]]

**サンプル [#o8e9d4fc]
サンプルプログラムは、このページに添付してあります。~
LaSysと、LaGameへのリンクを修正する必要があると思います。~

*フォームを使う [#y2bb68d0]
サンプルプログラムは、このページに添付してあります。~
~
プロジェクトを右クリックして、「追加」→「Windows フォーム」を選びます。~
名前はデフォルトのままForm1にして、作成します。~
(本当は自由な名前をつけてよいのですが、下記のサンプルプログラムでForm1という名前を使用するため、ここではForm1とします)~
~
左側の「ツールボックス」から、ボタンと、チェックボックスを配置してみましょう。~
配置したチェックボックスをダブルクリックしてみます。~
~
ここに前回紹介した[[手を大きくする]]のプログラムを入れてみましょう。~
 using Microsoft.Xna.Framework;
 using Microsoft.Xna.Framework.Graphics;
 using LaSys;
 using LaGame;
これらをusing指定しておく必要があります。~
手を大きくするプログラムでは、Sceneオブジェクトが引数で渡されていたので、使用できましたが、こちらにはありません。~
別のところから持ってきます。~
LaApp.ActiveSceneを使用します。~
下記のような、プログラムになります。~
 SkeletonAvatar skelA = LaApp.ActiveScene.ActiveActor.Skeleton as SkeletonAvatar;
 if (skelA != null)
 {
     SkeletonBone boneR = skelA.FindNode("j_te_r_scl") as SkeletonBone;
     if (boneR != null)
     {
         if (checkBox1.Checked)
         {
             boneR.Transform.Scaling.Value = Vector3.One * 2.5f;
         }
         else
         {
             boneR.Transform.Scaling.Value = Vector3.One * 1.0f;
         }
         boneR.Transform.CalcMatrix();
     }
 }

これを呼び出す部分を書きます。~
また、今回は常駐する機能を作成するので、プラグインのタイプは、PlugInType.Persistentを指定します。~
 public override PlugInType Type
 {
     get { return PlugInType.Persistent; }
 }
Start,Update,End関数をオーバーライドして、フォームの作成をします。~
常駐プラグインの場合は、Startが最初に呼び出され、Updateが毎フレーム、Endがプラグインの終了時に呼び出されます。~
プラグインの終了は、「ファイル」→「常駐プラグイン」→「プラグインリスト」から行うことができます。~
 Form1 m_form = null;
 public override bool Start(Scene scene)
 {
     m_form = new Form1()
     m_form.Show();
     return true;
 }
 public override bool Update(Scene scene)
 {
     // 毎フレーム呼ばれる処理
     return true;
 }
 public override bool End(Scene scene)
 {
     m_form.Close();
     return true;
 }

**ボタンを押したら、プラグインが終了されるようにしてみる [#ic6e5c4f]
まず、フォームのプログラム側から、プラグインの情報が得られるようにします。~
フォームのコンストラクタに、LaPlugInを引数として追加します。~
さらに、それを変数に入れるようにします。~
 LaPlugIn m_plugin = null;
 public Form1(LaPlugIn p)
 {
     InitializeComponent();
     m_plugin = p;
 }

コンストラクタに引数をつけたので、Start関数を少し変更する必要があります。~
 public override bool Start(Scene scene)
 {
     m_form = new Form1(this);
     m_form.Show();
     return true;
 }
このようにします。~
~
Visual Studioで、作成したボタンをダブルクリックします。~
そうすると、ボタンを押したときのプログラムを書くことができます。~
 private void button1_Click(object sender, EventArgs e)
 {
     LaApp.RemovePlugIn(m_plugin);
 }
このようにします。~
これで、ボタンを押すことでプラグインが終了されるようになります。~
前の項目で、End関数が呼ばれるとフォームが閉じるように書いたので、ボタンを押すことでEnd関数が呼び出されて、フォームが閉じるようになります。~
~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS