<?xml version="1.0"?>
<CSScriptData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ScriptType>CS1</ScriptType>
  <CompilerVersion>4</CompilerVersion>
  <ReferenceAssemblies>
    <string>System.dll</string>
    <string>System.Core.dll</string>
    <string>System.Data.dll</string>
    <string>System.Data.DataSetExtensions.dll</string>
    <string>System.Deployment.dll</string>
    <string>System.Drawing.dll</string>
    <string>System.Windows.Forms.dll</string>
    <string>System.Xml.dll</string>
    <string>System.Xml.Linq.dll</string>
    <string>Microsoft.CSharp.dll</string>
  </ReferenceAssemblies>
  <UsingText>using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using PEPlugin;
using PEPlugin.SDX;
using PEPlugin.Pmd;
using PEPlugin.Vmd;
using PEPlugin.Vme;
using PEPlugin.Form;
using PEPlugin.View;
using SlimDX;
using SlimDX.Direct3D9;
using IES = PEPlugin.Vme.IPEVmeEventState;
using IBS = PEPlugin.Vme.IPEVmeBoneState;
using ISS = PEPlugin.Vme.IPEVmeSingleValueState;
using IMS = PEPlugin.Vme.IPEVmeSingleValueState;
using ICS = PEPlugin.Vme.IPEVmeCameraState;
using ILS = PEPlugin.Vme.IPEVmeLightState;
</UsingText>
  <FullCodeText>
// using項目はメニューから一括管理(ここへの直接追記でも動作可能)

// Scriptプラグインクラス(クラス名変更不可)
public class CSScriptClass : PEPluginClass
{
    // コンストラクタ
    public CSScriptClass() : base()
    {
        // 起動オプション
        // boot時実行(true/false), プラグインメニューへの登録(true/false), メニュー登録名("")
        m_option = new PEPluginOption(false, true, "CSScript生成プラグイン");
    }

    // エントリポイント
    public override void Run(IPERunArgs args)
    {
        try {
            // ここへ処理を追加してください.
            

        }
        catch (Exception ex) {
            MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
}
</FullCodeText>
  <CodeText>
// ---- サンプルコード ----
// オブジェクトとカメラ制御
//

// 標準ヘッダは使わない
IPEPluginHost host = args.Host;
IPEConnector connect = host.Connector;

// 拡張PMDとして作成
IPEXPmd pex = PEStaticBuilder.SC.XPmd();

// 追加する新規材質作成
pex.Material.Add(PEStaticBuilder.SC.XMaterial());
pex.Material[0].Diffuse = new V4(0.5f, 0.5f, 1f, 1);
pex.Material[0].Ambient = new V3(0.5f, 0.5f, 1f);
pex.Material[0].Edge = true;

// 対応ボーン
IPEXBone bone = PEStaticBuilder.SC.XBone();
bone.Name = "minna";
bone.Kind = BoneKind.RotateMove;
pex.Bone.Add(bone);

// プリミティブ追加
pex.Primitive.AddText(0, new V3(), System.Drawing.SystemFonts.DefaultFont, "こっちみんな", 4, 0.3f, bone);

// PMD化
IPEPmd pmd = pex.ToPmd();

// VME作成
IPEVme vme = PEStaticBuilder.SC.Vme();
vme.Init(pmd);

// プリミティブ移動
vme.Bone[0].P.MoveTo(0, 30, new Vector3(-10, 5, 0));
vme.Bone[0].P.MoveTo(30, 60, new Vector3(-10, 15, 10));
vme.Bone[0].P.MoveTo(60, 90, new Vector3(20, 15, 10));
vme.Bone[0].P.MoveTo(90, 120, new Vector3(10, 0, -30));
vme.Bone[0].P.MoveTo(90, 120, new Vector3(-20, -10, -30));
vme.Bone[0].P.MoveTo(120, 150, new Vector3(-10, 5, -30));
vme.Bone[0].P.MoveTo(150, 180, new Vector3(0, 5, 0));

// カメラ初期配置
vme.Camera.Pos.P.Set(0, new Vector3(0, 10, -20));
vme.Camera.Tgt.P.Set(0, new Vector3(0, 0, 0));
vme.Camera.Up.P.Set(0, new Vector3(0, 1, 0));

// カメラの向きをプリミティブの方へ常に向ける = 注視点の位置を設定
vme.Camera.Tgt.P.Set(0, 180, (IES state) =&gt; vme.Bone[0].BS.P.PV);


// カメラ移動
vme.Camera.Pos.P.MoveTo(210, 240, new Vector3(-20, 5, -20));
vme.Camera.Pos.P.MoveTo(240, 270, new Vector3(20, 5, -20));
vme.Camera.Pos.P.MoveTo(270, 300, new Vector3(10, 5, 20));
vme.Camera.Pos.P.MoveTo(300, 330, new Vector3(-10, 25, 20));
vme.Camera.Pos.P.MoveTo(330, 360, new Vector3(0, 5, -10));
vme.Camera.Pos.P.MoveTo(330, 360, new Vector3(0, 10, -20));

// プリミティブの向きを常にカメラの方へ向ける(ビルボード動作)
// カメラの現在位置に対応するのでID=1を指定する → カメラ制御の後に実行される
vme.Bone[0].R.Set(210, 360, (IES state) =&gt; Q.Dir(vme.Camera.GetCameraPos() - (state as IBS).P.PV), OpType.Set, 1);


// プレビュー
vme.Preview();</CodeText>
  <CodeHeader>//
// ---- 簡易編集用ヘッダコード ----

// 常用接続変数一括登録

// ホスト配下
IPEPluginHost host = args.Host;
IPEBuilder builder = host.Builder;
IPEShortBuilder bd = host.Builder.SC;		// 短絡系ビルダ
IPEConnector connect = host.Connector;
IPEPMDViewConnector view = host.Connector.View.PMDView;

// PMD関連

IPEPmd pmd = connect.Pmd.GetCurrentState();         // PMD取得
// IPEXPmd pex = connect.Pmd.GetCurrentStateEx();       // 拡張PMDを使う場合はコメント解除(拡張用データへの接続変数は未登録)

IPEHeader header = pmd.Header;                  // header   :ヘッダ
IList&lt;IPEVertex&gt; vertex = pmd.Vertex;           // vertex   :頂点   | リスト
IList&lt;int&gt; face = pmd.Face;                     // face     :面     | リスト
IList&lt;IPEMaterial&gt; material = pmd.Material;     // material :材質   | リスト
IList&lt;IPEBone&gt; bone = pmd.Bone;                 // bone     :ボーン | リスト
IList&lt;IPEIK&gt; ik = pmd.IK;                       // ik       :IK     | リスト
IList&lt;IPEExpression&gt; exp = pmd.Expression;      // exp      :表情   | リスト

IList&lt;int&gt; frameExp = pmd.FrameExpression;      // frameExp :表情枠 | リスト
IList&lt;IPEFrameBone&gt; frameBone = pmd.FrameBone;  // frameBone:ボーン表示枠 | リスト

string[] toon = pmd.ToonName;                   // toon     :Toon   | 配列

IList&lt;IPEBody&gt; body = pmd.Body;                 // body     :剛体   | リスト
IList&lt;IPEJoint&gt; joint = pmd.Joint;              // joint    :Joint  | リスト


</CodeHeader>
  <CodeFooter>//
// ---- 簡易編集用フッタコード ----

// 更新処理
// デフォルト設定ではフッタコードはOFF

// PMD更新
connect.Pmd.Update(pmd);
//connect.Pmd.UpdateEx(pex);

// Form更新
connect.Form.UpdateList(UpdateObject.All);  // 重い場合は引数を変更して個別に更新

// PMDView更新
connect.View.PMDView.UpdateModel();         // Viewの更新が不要な場合はコメントアウト
connect.View.PMDView.UpdateView();


</CodeFooter>
  <EnableHeader>false</EnableHeader>
  <EnableFooter>false</EnableFooter>
  <ActivePages>1</ActivePages>
</CSScriptData>