# 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