2007年11月30日金曜日

あーあ、俺の脳にパッチあたんねぇかなぁ!!

Worldtool Kit修練

選択肢のジオメトリをクリックしたら次の状態に移る奴を作りたかったのでだらだらと作る。
マウス更新関数をつくればいいみたい。


static void mouse_phase1(WTsensor *sensor)
{
/*********************************
オリジナルマウス挙動関数
クリックしたものがどのジオメトリかを取得する
********************************/
long buttons; /* ボタン情報 */
FLAG lclick; /* 左クリックフラグ */
WTmouse_rawdata *raw; /* マウスXY座標値 */
WTp3 p; /* WTsensor_setrecod関数設定用 */
WTq q; /* WTsensor_setrecod関数設定用 */
float speed; /* センサー感度値 */
WTwindow *w; /* ウインドウオブジェクトポインタ */
int x,y,width,height; /* ウインドウ配置情報 */

//////////////////////////////////////////
WTpoly *clickpoly; /* クリックされたポリゴン */
WTp3 clickp3; /* なんかとりあえずいらねーかも */
WTgeometry *clickgeometry; /* クリックされたジオメトリ */
char clickgeoname[256]; /* クリックされたジオメトリの名前 */
//////////////////////////////////////////
WTp3_init(clickp3); /* 初期化 */
//////////////////////////////////////////

WTmouse_rawupdate(sensor); /* マウス新規情報を取得 */

w = WTmouse_whichwindow(sensor); /* マウスウインドウを取得 */
if(!w){
WTp3_init(p); WTq_init(q);
WTsensor_setrecord(sensor,p,q);
return;
}
WTwindow_getposition(w,&x,&y,&width,&height); /* ウインドウ配置情報を取得 */
raw = (WTmouse_rawdata *)WTsensor_getrawdata(sensor); /* ウインドウ座標系のマウス情報を取得 */

speed = WTsensor_getsensitivity(sensor); /* あーいらないかも */

buttons = WTsensor_getmiscdata(sensor); /* マウスのボタン情報をゲット */
/* 押されたか */
lclick = buttons & WTMOUSE_LEFTBUTTON; /* 左クリックON/OFF */

if(lclick){ /* 左クリックされてんの? */
clickpoly = WTscreen_pickpoly(0,raw->pos,NULL,clickp3); /* どのポリゴンクリックしたの? */
WTmessage( "X:%f Y:%f\n",clickpos[X],clickpos[Y] ); /* クリック座標表示 */
if(clickpoly != NULL){ /* クリックした場所にポリゴンがあるならば */
clickgeometry = WTpoly_getgeometry(clickpoly); /* ポリゴンからジオメトリを取得 */
strcpy(clickgeoname,WTgeometry_getname(clickgeometry)); /* ジオメトリの名前を取得 */
WTmessage( "geoname[%s]\n",clickgeoname); /* ジオメトリの名前を表示 */
if(strcmp(clickgeoname,"botton1") == 0){ /* botton1さんですか? */
/* A発動 */
WTmessage( "A\n");
}else if(strcmp(clickgeoname,"botton2") == 0){ /* botton2さんですか? */
/* B発動 */
WTmessage( "B\n");
}else{
/* 特に何もないです */
}
}
}
return;
}


予め「botton1」「botton2」という名前を付けたジオメトリを配置してある。
このマウス更新関数でジオメトリをクリックしたらAとかBとか表示されるものが出来た。
当然てきとーに作ってあるので品質に保証は出来ないし、
よくわかんねーで書いてある処理もあるので困る。


追記:returnを書き忘れる俺は死ぬべき