primitive smoke generator by Laak20th 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 |