jump to navigation

memo 2013/04/09

Posted by dbot in ツールのメモ, MMDのメモ.
Tags: , , ,
trackback

そもそもプラグインを作成するための仕様が何処かにあるわけで
・・・

PMDeフォルダ→Lib→PEPlugin
①プラグイン解説.txt(「doc」フォルダ中)
②PEPlugin.dll
③PEPlugin.xml

20130408001

①プラグイン解説より
※各インターフェイス内の個別データについての説明は、
プラグインDLLをオブジェクトブラウザなどで確認するなどしてください(基本的にはエディタ本体と同じ構造になっています)

②PEPlugin.dll
VisualStudioで参照可能
「オブジェクトブラウザー」を開く
「ソリューションエクスプローラー」の「参照設定」の項目上でダブルクリック
ただし、項目の並びは一部昇順になっているため、PMDeの表示項目順とならない模様(VisualStudio2010)

20130408002

③PEPlugin.xml
PEPlugin.dllの内容らしい(明記されてないけど)。
member name
T:(インターフェース)
P:(プロパティ)
M:(メソッド)
F:(Enum項目)
らしいよ

オブジェクトブラウザを探して旅にでてみたり
時代はUTF-8とExecl2000の限界をメモ帳でANSI保存で乗り越えたり

いろいろ納得したというか観念したので
http://www.atmarkit.co.jp/ait/subtop/features/da/dt_csharp_abc2_index.html

http://ch.nicovideo.jp/t0r0/blomaga/ar152399
BoneSample.csを参考に「親ボーン」を設定する記述を作成
まさかのボーンINDEXの代入で赤ペン先生;;
型が違うから代入できないと、赤ペン先生は言う。

<NG>
int i = this.GetBoneIndex(BoneName);
int j = this.GetBoneIndex(ParentName);

IPXBone bone = this.PMX.Bone[i];
bone.Parent = j;

どこかで、数値は全部float型と見た気がするが
int System.Int32 符号付き32ビット整数
float System.Single 単精度実数
double System.Double 倍精度実数
「ボーンを回転連動にしよう」の記述を参考に修正

<OK>
int i = this.GetBoneIndex(BoneName);
int j = this.GetBoneIndex(ParentName);

IPXBone bone = this.PMX.Bone[i];
IPXBone ParentNo = this.PMX.Bone[j];

bone.Parent = ParentNo;

とりあえず、関数としての動きは出来たけど、呼び元の記述が違った
PMDeのプラグインは起動中に差し替えても認識しない。
using BoneSample;は夢だった

RenameBone関数ぱくり、関数にした理由はかっこよさそうなので。

        /// ボーンの親ボーンを変更。
        /// </summary>
        /// <param name="BoneName"></param>
        /// <param name="ParentName"></param>
        public void ReParentBone(string BoneName, string ParentName)
        {
            int i = this.GetBoneIndex(BoneName);
            int j = this.GetBoneIndex(ParentName);

            if (i >= 0)
            {
                if (j >= 0)
                {
                    IPXBone bone = this.PMX.Bone[i];
                    IPXBone ParentNo = this.PMX.Bone[j];

                    bone.Parent = ParentNo;
                }
                else
                {
                    throw new System.Exception(ParentName + "が存在しません。");
                }
            }
            else
            {
                throw new System.Exception(BoneName + "が存在しません。");
            }
        }

 

例外考えると泣けてきますな。

修正履歴キチンととって毎度PMDeで手で修正した方がトータルの時間はかからない気がする。

広告

コメント»

1. uvlgoh - 2013/04/15

|д゚)チラッ

2. dbot - 2013/04/15

???
い、いきてます><

3. uvlgoh - 2013/04/15

いや、Wordpress.comにアカウント取ったのでご挨拶とテストを兼ねてw
Wordpress.comにブログは作ってないけどw

dbot - 2013/04/15

アカウントだけ取れるんですか、知らなかったw

uvlgoh - 2013/04/16

インストール型のWordpressでスパム防止のプラグイン入れたい場合にWordpress.comのアカウントが必要になるんですよー
だからブログ作らずアカウントだけある人も多いはず

それと個人的にはBloggerがいつサービス終了しても避難してこれるように準備のためもあるw

dbot - 2013/04/16

>uvlgohさん
返信は2段階までみたいなので
そいや、Wordpressはソース自体配布してましたね。
Wordpress.orgのアカウントの方が必要なのかと思いました。

Bloggerサービスの危機がせまってるのですかw

uvlgoh - 2013/04/18

Google先生は大掃除好きなので><
放置気味なのでちょっと不安w


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。