ユーザー部
【UserFunc.h】
Kodatunoカーネル部とUserアプリケーション部を繋ぐブリッジとして機能します。ユーザーはここに独自のソースコードを記述します。
■シンボル
#define LABELNAMEMAX 256 メニューに登録するメニュー名バッファ
#define USERFUNCNUMMAX 8 UserFuncの最大登録数
#define USERPROPNUM 15 利用できるUserプロパティ数
■インクルードライブラリ
"BODY.h" "Command.h" " StdAfx.h" "SampleFunc.h"
■型定義
<Userステータス値格納用構造体 >
typedef struct{
int Mode; Userステータスの"Mode"番号
double Prop[USERPROPNUM]; Userステータスの15個のプロパティ値
}UserStat_;
<8つのUserボタンをenumで定義>
enum Sub_Menu_Label{
M_Label1, ボタン1
M_Label2, ボタン2
M_Label3, ボタン3
M_Label4, ボタン4
M_Label5 ボタン5
M_Label6 ボタン6
M_Label7 ボタン7
M_Label8 ボタン8
};
■クラス
USER
<継承>
なし
■関数(Class USER)
public
USER();
<説明>
コンストラクタ
ユーザが独自に作成した関数とUserボタンとの関連付け及び、Userステータスの初期化を行う。
<引数>
なし
<戻り値>
なし
public
int (USER::*UserFunc[USERFUNCNUMMAX])(BODYList *BodyList,OBJECTList *ObjList,int pickcount);
<説明>
UserFunc関数へのポインタ
<引数>
*BodyList:BODYリストの先頭アドレス
*ObjList:セレクションされたエンティティの情報(セレクションの数だけリスト化)
pickcount:セレクション数
<戻り値>
成功:KOD_TRUE
失敗:KOD_FALSE
public
char *GetMenuLabelName(int val);
<説明>
Userボタンラベル名を取得する。
<引数>
val:ラベル番号
<戻り値>
成功:ラベル名
失敗:NULL
public
void SetMenuLabelName();
<説明>
Userメニュー名を登録する。(Userボタンの表示名)
<引数>
なし
<戻り値>
なし
public
void RegistUserCommand(CommandMap *CmdMap);
<説明>
Userコマンドを登録する。
<引数>
*CmdMap:コマンドマップ
<戻り値>
なし
public
void Command(BODYList *BodyList,OBJECTList *ObjList,int pickcount,int CmdNo,int argc,char *argv[]);
<説明>
Userコマンドを実行する。
<引数>
*BodyList:BODYリストの先頭アドレス
*ObjList:セレクションされたエンティティの情報(セレクションの数だけリスト化)
pickcount:セレクション数
CmdNo:実行されたコマンド番号
argc:コマンドライン引数の数
*argv[]:コマンドライン引数
<戻り値>
なし
public
int MasterUserFunc(BODYList *,OBJECTList *,int);
<説明>
UserFunc関数へのポインタの初期値として使用する。
<引数>
*BodyList:BODYリストの先頭アドレス
*ObjList:セレクションされたエンティティの情報(セレクションの数だけリスト化)
pickcount:セレクション数
<戻り値>
成功:KOD_TRUE
public
void SetUserStatus(int,double []);
<説明>
UserステータスをUserStat構造体に格納する。
<引数>
mode:モード番号
prop[]:プロパティ
<戻り値>
なし
public
void ExecdClear();
<説明>
KODATUNOのViewメニューのCanncelボタンが押されるとこの関数が実行される。
<引数>
なし
<戻り値>
なし
public
int ExecWidgetFunc(int);
<説明>
UserがWidgetの機能を使い新たなDialogをポップアップさせたい場合は、ここにそのExecWidgetFunc処理を記述する。
<引数>
val:ラベル番号
<戻り値>
成功:KOD_TRUE
private
int CalcIntersecPts(BODYList *BodyList,OBJECTList *ObjList,int pickcount);
<説明>
サンプル。
<引数>
*BodyList:BODYリストの先頭アドレス
*ObjList:セレクションされたエンティティの情報(セレクションの数だけリスト化)
pickcount:セレクション数
<戻り値>
成功:KOD_TRUE
失敗:KOD_FALSE
■変数(Class Describe_BODY)
private
char MenuLabel1[LABELNAMEMAX]; User関数1のメニュー名
char MenuLabel2[LABELNAMEMAX]; User関数2のメニュー名
char MenuLabel3[LABELNAMEMAX]; User関数3のメニュー名
char MenuLabel4[LABELNAMEMAX]; User関数4のメニュー名
char MenuLabel5[LABELNAMEMAX]; User関数5のメニュー名
UserStat_ UserStat; Userステータス