sample_18_poly_particle.hsp

sample\d3module\sample_18_poly_particle.hsp » Plain Format

;============================================================
;                                                 2006/--/--
;	d3module  sample script
;	for HSP 3.0
;
;============================================================
;
; d3mkparticle 命令での、自由形状パーティクルのサンプルです。
;
; d3mkparticle 命令の第 5 パラメータを使用すると、円形の
; パーティクルだけでなく、三角形、星型、ランダム放射型など
; さまざまな形状のパーティクルをプログラマブルに
; 定義することができます。
;
;============================================================

#include "d3m.hsp"

	title "S.Programs d3module sample"


	; パーティクル作成
	; (作成するパーティクルの複雑度に応じて、d3mkparticle の実行に時間がかかります。)

	; ランダム放射形
	repeat 100
		arr(cnt) = rnd(50) + 50
	loop
	arr = 1, 47
	d3mkparticle  0,  300, 300, 600,  arr

	; ×型
	arr = 4, 4,  30, 30, 140, 30
	d3mkparticle  1,  200, 200, 400,  arr

	; 星
	arr = 5, 2,  100, 45
	d3mkparticle  2,  500, 500, 100,  arr

	; サクラ
	arr = 5, 6,  80, 100, 75, 40, 75, 100
	d3mkparticle  3,  400, 200, 200,  arr

	; プロペラ
	arr = 7, 6,  100, 90, 80, 70, 60, 50
	d3mkparticle  4,  300, 300, 300,  arr



*mainloop
	time = d3timer()

	redraw 0

	color : boxf


	; カメラ座標を回転させる
	d3setcam cos(0.001 * time) * 1000, sin(0.001 * time) * 1000, cos(0.0003 * time) * 500


	; パーティクル描画時のコピーモードを設定
	gmode 5, , , 224


	; パーティクルを描画
	randomize 0
	repeat 100
		x = rnd(1000) - 500
		y = rnd(1000) - 500
		z = rnd(1000) - 500

		d3particle rnd(5), x, y, z, 90
	loop


	redraw 1
	await

	goto *mainloop