MenuBar

サンプル

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

フォームを使う


プロジェクトを右クリックして、「追加」→「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;
}

ボタンを押したら、プラグインが終了されるようにしてみる

まず、フォームのプログラム側から、プラグインの情報が得られるようにします。
フォームのコンストラクタに、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関数が呼び出されて、フォームが閉じるようになります。


添付ファイル: fileClassLibrary1.zip 133件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-05-25 (月) 22:01:08 (881d)