sample08_hgimg4.hsp

sample\sample_hgimg4\ sample08_hgimg4.hsp

#include "hgimg4.as"

#include "hsp3dish.as"
#include "ezlocal-dish-js.hsp"
ezLocalJS

title "HGIMG4 Test"

	;
	;  HSP3同梱サンプル掛け合わせ
	;  sample\hgimg4\ test11.hsp + tamane2.hsp
	;
	;	物理エンジンテスト
	;	スペースキーまたはクリックで新しい箱を落とします
	;
	randomize
	gpreset

	setcls CLSMODE_SOLID, $808080		; 画面クリア設定

	setpos GPOBJ_CAMERA, 0,1,5		; カメラ位置を設定
	gplookat GPOBJ_CAMERA, 0,0.3,0		; カメラから指定した座標を見る

	gptexmat id_texmat, "res/qbox.png"
	gpbox id_box, 0.5, -1, id_texmat		; 箱ノードを追加
	setpos id_box,	0, 3, 0
	gppbind id_box, 1, 0.5				; 箱の物理設定を行なう

	gpfloor id_floor, 30,30, $404040		; 床ノードを追加
	gppbind id_floor, 0				; 床の物理設定を行なう
	exec {"
		HEAP32["}+varptr(ENV_HSP_SX)+{" >> 2] = ENV.HSP_SX;
		HEAP32["}+varptr(ENV_HSP_SY)+{" >> 2] = ENV.HSP_SY;
	"}
repeat
	stick key,15
	if key&128 : end

	redraw 0			; 描画開始
	
	;	タッチでカメラ位置を動かす
	if dragmd {	; ドラッグ中
		getkey a,1
		if a=1 {
			dx=0.05*(dragx-mousex)+cx
			dy=0.05*(mousey-dragy)+cy
			setpos GPOBJ_CAMERA, dx,dy,cz
		} else {
			dragmd=0
		}
	} else {	; ドラッグなし
		getkey a,1
		if a {
			dragx=mousex:dragy=mousey
			getpos GPOBJ_CAMERA, cx,cy,cz
			dragmd=1
		}
	}
	gplookat GPOBJ_CAMERA, 0,0.3,0		; カメラから指定した座標を見る

	;	スペースキーまたはクリックで箱を追加
	if key&$110 {
		gpclone i, id_box			; 最初の箱をクローン
		x=0.02*rnd(20)-0.2:z=0.02*rnd(20)-0.2
		setpos i, x, 3, z			; 落とす位置を微調整
		gppbind i, 1, 0.5			; 箱の物理設定を行なう
	}

	gpdraw				; シーンの描画
	
	py=sin(0.1*cnt)*32

	color 255  ; サイズ感を把握するための枠線
	line 0,0,380,0 : line 0,0,0,700
	line 10,10,380,10 : line 10,10,10,700
	line 100,799,479,799 : line 479,200,479,799
	line 100,789,469,789 : line 469,200,469,789

	color 255,255,255
	pos 8,8:mes "HGIMG4 sample"
	mes "ENV.HSP_WX=480 : ENV.HSP_WY=800"
	mes "ENV.HSP_SX="+ENV_HSP_SX+" : ENV.HSP_SY="+ENV_HSP_SY
	mes strf("mouse xy : (%d,%d)",mousex,mousey)
	mes strf("dragstart : (%d,%d)",dragx,dragy)
	mtlist touchid
	repeat stat
		mtinfo touch,touchid(cnt)
		mes "mtinfo("+cnt+") : "+touch(1)+", "+touch(2)+" @ "+touch(3)
	loop
	
	redraw 1			; 描画終了
	await 1000/60			; 待ち時間

loop