light_test5eff.hsp

sample\hgimg4\light_test5eff.hsp » Plain Format

#include "hgimg4.as"
#include "mod_posteffect.as"

title "HGIMG4 Test"

	;	ポイントライト色変化テスト
	;	マウス/タッチドラッグでカメラを動かすことができます
	;
	randomize

	gpreset
	post_reset
	post_select POSTID_GLOW2		; ポストエフェクト設定
	post_setprm 192,0.55,6			; ポストエフェクトのパラメーター

	gpresetlight 1,1			; ポイントライトを1個追加する

	setcolor GPOBJ_LIGHT, 0.8,0.8,0.8	; 標準ライトカラーを設定
	setdir GPOBJ_LIGHT, 0.2,0.2,0.2		; 標準アンビエントカラーを設定

	;	nullライトとして設定します
	gpnull id_model
	gplight id_model, GPOBJ_LGTOPT_POINT,10	; ポイントライトとして設定する
	setcolor id_model, 1,1,1			; ライトカラーを設定
	gpuselight id_model				; ポイントライトを使用する
	setpos id_model,0,5,0

	;	イベントリストを登録
	;
	newevent ev1			; 新しいイベントIDを取得
	event_addang ev1, 0.02, 0.02, 0	; 少しずつ回転する
	event_wait ev1, 1
	event_jump ev1

	;	モデルをたくさん配置する
	;
	i=-1
	mdx=10:mdz=10				; X,Z方向の個数
	px=20.0/mdx:pz=20.0/mdz			; 間隔を計算する
	z=-10.0					; 配置開始Z座標
	repeat mdz
	x=-10.0					; 配置開始X座標
	repeat mdx
		if i<0 {
			;gpload id_base,"res/duck"	; モデル読み込み
			gpbox id_base, 1, $c0c0c0	; 箱ノードを生成する
			i=id_base
		} else {
			gpclone i, id_base	; クローンでモデルを作成する
		}
		y=rnd(11)+2	
		setpos i, x,y,z
		setangr i, rnd(256),rnd(256)
		setevent i,ev1
		x+=px
	loop
	z+=pz
	loop

	gpfloor id_floor, 40,40, $606060	; 床ノードを追加

	camang = 0.0
	camdist = 10.0
	speed = 0.01
	camy=3.0
	hval=0

*main
	stick key,15+256
	if key&128 : end
	if key&2 : camy-=0.025
	if key&8 : camy+=0.025

	camang+=speed
	camx=sin(camang)*camdist
	camz=cos(camang)*camdist
	setpos GPOBJ_CAMERA, camx,camy,camz		; カメラ位置を設定
	gplookat GPOBJ_CAMERA, 0,5,0		; カメラから指定した座標を見る

	;	ライトの色を変化させる
	;	hsvcolorの値をRGB値に変換する
	hsvcolor hval,255,255
	hval+:if hval>192 : hval=0
	rval=double(ginfo_r)/255.0
	gval=double(ginfo_g)/255.0
	bval=double(ginfo_b)/255.0
	setcolor id_model, rval,gval,bval	; ライトカラーを設定

	addang id_model,0,0.02		; ノード回転

	post_drawstart			; 描画開始
	rgbcolor $303030:boxf		; 背景クリア
	gpdraw				; シーンの描画
	gmode 0
	color 255,255,255
	pos 8,8:mes "HGIMG4 sample"
	post_drawend			; 描画終了

	await 1000/60			; 待ち時間

	goto *main