TGC Codebase Backup



primitive smoke generator by Laak

20th Dec 2005 23:32
Summary

a primitive smoke generator. insert alpha fading. basically just an engine to add on to.



Description



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    SET DISPLAY MODE 1280,1024,0
AUTOCAM OFF
MAKE CAMERA 1
POSITION CAMERA 1,0,0,0
POSITION CAMERA 1,0,0,-300

load object "SMOKEMEDIAsquare2.3ds",1
LOAD IMAGE "SMOKEMEDIAGRASS_T.BMP",1

SET IMAGE COLORKEY 255,255,255
MAKE OBJECT SPHERE 101,10
TYPE EACH
XPOS AS FLOAT
YPOS AS FLOAT
ZPOS AS FLOAT
GRAV AS FLOAT
XWIND AS FLOAT
YWIND AS FLOAT
ZWIND AS FLOAT
SCALE AS FLOAT
ID AS INTEGER
LIFE AS FLOAT
TIME AS FLOAT
SHOW AS BOOLEAN
COLR AS BYTE
COLB AS BYTE
COLG AS BYTE
COUNTER AS FLOAT
ENDTYPE

DIM SMOKE(30) AS EACH

SMOKING = 1
CB = 1
TIME = 50

FOR T = 2 TO 30
clONE object t,1
NEXT T

FOR T= 1 TO 30
SMOKE(T).colr = 0
SMOKE(T).COLB = 0
SMOKE(T).COLG = 0


color object T,RGB(SMOKE(T).COLR,SMOKE(T).COLG,SMOKE(T).COLB)

smoke(t).scale = 100
scale object t,smoke(t).scale,SMOKE(T).SCALE,SMOKE(T).SCALE
XROTATE OBJECT T,-90
FIX OBJECT PIVOT T
SET ALPHA MAPPING ON T,50
smoke(t).life = 1000
smoke(t).id = t
smoke(t).grav = .1
smoke(t).xwind = .02
smoke(t).Ywind = 0
smoke(t).Zwind = .02
smoke(t).TIME = 30
SMOKE(T).COUNTER = 10
NEXT T

MAKE MATRIX 1,1000,1000,10,10
PREPARE MATRIX TEXTURE 1,1,1,1
FILL MATRIX 1,0,1
POSITION MATRIX 1,-500,0,-500


DO
MOVE OBJECT 101,SPD#
IF UPKEY() = 0 AND DOWNKEY() = 0 THEN SPD# = SPD# /1.005
IF UPKEY() = 1 AND SPD# < .5 THEN INC SPD#,.005
IF DOWNKEY() = 1 AND SPD# > -.5 THEN DEC SPD#,.005
IF RIGHTKEY() = 1 THEN YROTATE OBJECT 101,OBJECT ANGLE Y(101)+.5
IF LEFTKEY() = 1 THEN YROTATE OBJECT 101,OBJECT ANGLE Y(101)-.5






INC ANG#,.2

SET CAMERA TO FOLLOW 1,OBJECT POSITION X(101),OBJECT POSITION Y(101),OBJECT POSITION Z(101),OBJECT ANGLE Y(101),100,30,100,0

FOR T= 1 TO 30
DEC SMOKE(T).LIFE
POSITION OBJECT T,SMOKE(T).XPOS,SMOKE(T).YPOS,SMOKE(T).ZPOS

IF SMOKE(T).SHOW = 1
ROTATE OBJECT T,CAMERA ANGLE X(1),CAMERA ANGLE Y(1),CAMERA ANGLE Z(1)
SCALE OBJECT T,SMOKE(T).SCALE,SMOKE(T).SCALE,SMOKE(T).SCALE
SHOW OBJECT T

SMOKE(T).XPOS = SMOKE(T).XPOS + SMOKE(T).XWIND
SMOKE(T).YPOS = SMOKE(T).YPOS + SMOKE(T).YWIND + SMOKE(T).GRAV
SMOKE(T).ZPOS = SMOKE(T).ZPOS + SMOKE(T).ZWIND

SMOKE(T).COLR = SMOKE(T).LIFE / 4
SMOKE(T).COLG = SMOKE(T).LIFE / 4
SMOKE(T).COLB = SMOKE(T).LIFE / 4
SMOKE(T).SCALE = SMOKE(T).COUNTER
INC SMOKE(T).COUNTER,.2


ELSE
SMOKE(CB).COUNTER = 10
SCALE OBJECT CB,10,10,10
SMOKE(T).XPOS = OBJECT POSITION X(101)
SMOKE(T).YPOS = OBJECT POSITION Y(101)
SMOKE(T).ZPOS = OBJECT POSITION Z(101)
HIDE OBJECT T
ENDIF




NEXT T

DEC TIME
IF CB =>31 THEN CB = 1
IF SMOKING = 1 AND TIME=< 0
   if smoke(cb).show = 1 then SCALE OBJECT CB,10,10,10
   SMOKE(CB).SHOW = 1 `CHANGE THE BULLET TO FIRING STATE
   SMOKE(CB).LIFE = 10
   SMOKE(CB).COUNTER = 10
   smoke(cb).SCALE = 10
   SCALE OBJECT CB,10,10,10
   SMOKE(CB).XPOS = OBJECT POSITION X(101) `REPOSITIONS BULLETS THAT WERE CALLED
   SMOKE(CB).YPOS = OBJECT POSITION Y(101) `BACK TO THE GUN THAT HAVE NOT REACHED THEIR RANGE
   SMOKE(CB).ZPOS = OBJECT POSITION Z(101)
   TIME = 50
   INC CB

ENDIF





LOOP