Ooops
November 25, 2020, 06:00:43 AM

Author Topic: [bb] Alpha cubes demo by BlitzSupport [ 1+ years ago ]  (Read 552 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Alpha cubes demo by BlitzSupport [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Alpha cubes demo
Author : BlitzSupport
Posted : 1+ years ago

Description : Just run it and click the mouse until you're bored or feel trippy :)

(Note that there's no frame-skipping code here, and combining this with loads of alpha-blending, you might see slowdown with loads of cubes on the go!)
 


Code :
Code: BlitzBasic
  1. ; Use left mouse button... note lack of frame-limiting code!
  2.  
  3. Type Timer
  4.         Field start
  5.         Field timeOut
  6. End Type
  7.  
  8. Function SetTimer.Timer (timeOut)
  9.         t.Timer = New Timer
  10.         tstart   = MilliSecs ()
  11.         t       imeOut = tstart + timeOut
  12.         Return t
  13. End Function
  14.  
  15. Function TimeOut (test.Timer)
  16.         If test <> Null
  17.                 If test imeOut < MilliSecs ()
  18.                         Delete test
  19.                         Return 1
  20.                 EndIf
  21.         EndIf
  22. End Function
  23.  
  24. Graphics3D 640, 480
  25.  
  26. SetBuffer BackBuffer ()
  27.  
  28. SeedRnd (MilliSecs ())
  29.  
  30. Global piv = CreatePivot ()
  31. cam = CreateCamera (piv)
  32. PositionEntity cam, 0, 0.1, -5
  33. PointEntity cam, piv
  34. CameraZoom cam, 5
  35.  
  36. AmbientLight 32, 32, 32
  37.  
  38. light = CreateLight ()
  39. PositionEntity light, -5, 0, -5
  40.  
  41. Global cube = CreateCube ()
  42. HideEntity cube
  43.  
  44. Type cubes
  45.         Field entity
  46.         Field alpha#
  47.         Field incdec
  48.         Field kill
  49.         Field zacc#
  50. End Type
  51.  
  52. Global spawn = 4000
  53. Global newCube.Timer = SetTimer (spawn)
  54. Global alpha.Timer   = SetTimer (50)
  55.  
  56. Repeat
  57.  
  58.         If KeyHit (17) Then w = 1 - w: WireFrame w
  59.  
  60.         UpdateGame ()
  61.         UpdateWorld
  62.         RenderWorld
  63.         Flip
  64.        
  65. Until KeyHit (1)
  66.  
  67. End
  68.  
  69. Function UpdateGame ()
  70.  
  71.         TurnEntity piv, 0, 0, 0.1
  72.        
  73.         For a.cubes = Each cubes
  74.                 TurnEntity aentity, azacc, 2, azacc
  75.                 TranslateEntity aentity, 0, 0, azacc * (akill * -1)
  76.         Next
  77.  
  78.         If MouseHit (1)
  79.  
  80.                 cubelist.cubes = New cubes
  81.                 cubelistentity  = CopyEntity (cube)
  82.                 cubelistalpha = 0
  83.                 cubelistincdec = 1
  84.                 cubelistkill = -1
  85.                 cubelistzacc = Rnd (0.025, 1)
  86.                 EntityAlpha cubelistentity, cubelistalpha
  87.                 EntityColor cubelistentity, Rnd (100, 255), Rnd (100, 255), Rnd (100, 255)
  88.                 EntityShininess cubelistentity, Rnd (0.01, 1)
  89.  
  90.         EndIf
  91.  
  92.         If TimeOut (newCube)
  93.  
  94.                 cubelist.cubes = New cubes
  95.                 cubelistentity  = CopyEntity (cube)
  96.                 cubelistalpha = 0
  97.                 cubelistincdec = 1
  98.                 cubelistkill = -1
  99.                 cubelistzacc = Rnd (0.01, 0.5)
  100.                 EntityAlpha cubelistentity, cubelistalpha
  101.                 EntityColor cubelistentity, Rnd (100, 255), Rnd (100, 255), Rnd (100, 255)
  102.                 EntityShininess cubelistentity, Rnd (0.01, 1)
  103.  
  104.                 newCube.Timer = SetTimer (spawn)
  105.  
  106.         EndIf
  107.  
  108.         If TimeOut (alpha)
  109.  
  110.                 For a.cubes = Each cubes
  111.                
  112.                         If aincdec
  113.                                 aalpha = aalpha + azacc / 10
  114.                         Else
  115.                                 aalpha = aalpha - azacc / 10
  116.                         EndIf
  117.                        
  118.                         If aalpha => 1
  119.                                 aincdec = 0
  120.                                 akill = 1
  121.                         EndIf
  122.  
  123.                         EntityAlpha aentity, aalpha
  124.  
  125.                         If aalpha <= 0
  126.                                 If akill = 1
  127.                                         FreeEntity aentity
  128.                                         Delete a
  129.                                 EndIf
  130.                         EndIf
  131.  
  132.                 Next
  133.  
  134.                 alpha.Timer = SetTimer (50)
  135.  
  136.         EndIf
  137.  
  138. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal