inflate and deflate sphere using TIMER

Blitz3D Forums/Blitz3D Tutorials/inflate and deflate sphere using TIMER

Rook Zimbabwe(Posted 2005) [#1]
I got tired of some of the silly questions that are asked about time and case... Combined BOTH into a simple tutorial that is fun to watch in WIREFRAME... Commented heavily...
;weird sphere code
;hit SPACEBAR To see WireFrame
;Rook Zimbabwe  
Graphics3D 800,600  ;							sets GRAPHICS 3D MODE

SetBuffer BackBuffer()

   
camera=CreateCamera()  
PositionEntity camera,0,0,-2 
  
light=CreateLight()  
RotateEntity light,80,0,0 

Global bop ;									BOP controls WHICH phase we are in set by function call
Global segments ;								variable to tell how many segments to make the SPHERE
Global oldtime = MilliSecs() ;					INITIAL timer amount to be used later to segments and suck
Global phase$ ;									A string that tells which phase we are in B / S

bop = 0 ;										sets INITIAL phase to segments
segments = 4 ;									sets INITIAL segments to 4

While Not KeyDown( 1 ) ; ESC

phase$ = " " ; clears previous phase$

sphere = CreateSphere(segments) ;					Create the sphere with the segments

xx=xx+1 ; rotation value in X
yy=yy+2 ; rotation value in Y
zz=zz+3 ; rotation value in Z

RotateEntity sphere,xx,yy,zz ; Make that sphere DANCE!!!

Select bop ;									CASE selector for BOP (we started with 0 so
	Case 1 ;									which function would we call?)
		segmentsdown()
	Case 0
		segmentsup()
End Select

If KeyHit( 57 )=True Then ; SPACEBAR enables wireframe
	enable=1-enable
EndIf

WireFrame enable ; allows WIREFRAME to be enabled

UpdateWorld  
RenderWorld 
    
Text 5,20,"Triangles Rendered: "+TrisRendered()
Text 5,40,"SEGMENTS: "+segments 
Text 5,60,"PHASE: "+phase$

Flip 

Cls

FreeEntity sphere ;							CLEAN UP THE LAST SPHERE!!!

Wend 
  
End	

Function segmentsup()

Color 255,12,12
phase$ = "INFLATE" ; remember this is a GLOBAL VARIABLE (has to be to be passed to a function)

If MilliSecs() > oldtime + 120 Then ; 	if it has been 1/4 second since the last time I made a variable with the timer...

segments = segments + 1 ;				then ADD 1 to the segments value
	If segments > 32 Then ;				If we have 32 segments...
		bop = 1 ;						Switch BOP to 1 (it will be picked up by main program loop)
	EndIf
	
oldtime = MilliSecs() ;					Get new OLDTIME value...

EndIf

End Function


Function segmentsdown()

Color 12,12,255
phase$ = "DEFLATE"

If MilliSecs() > oldtime + 120 Then
segments = segments - 1 ; 				SAME for this but in reverse!
	If segments < 4 Then
		bop = 0
	EndIf
 
oldtime = MilliSecs()

EndIf

End Function
I can't see any questions necessary after this but if you have I am on the board...

: )

RZ