LotusParticleSystem R1

Blitz3D Forums/Blitz3D Beginners Area/LotusParticleSystem R1

ingenium(Posted 2006) [#1]
Ok I gave up with RootParticles(see the post) And now I'm working with Lotus. Hoping someone use it, I 'm here to ask help. I'm tring to draw 5-6 fires, but I don't know If it is the right way... here it is (the code):


;use the arrow keys to move
;refer to Example.lps for the emitter settings

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Include "h_lotus.bb"


InitLotus()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Using a type to draw some fires

Type fire 
 Field x#
 Field y#
 Field z#
 Field flame#
End Type

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


C = CreateCamera()
PositionEntity C,-10,10,-10
CameraClsColor C,32,32,32
CameraClsMode C,1,1
CameraRange C,.01,10000
SetLotusCamera C

;; FPS
MFPS = 45
Period = 1000/MFPS
Time = MilliSecs()-Period

Global fps,timenext,frames

;; LIGHT
L = CreateLight(2)
PositionEntity L,24,24,24
LightRange L,Sqr(64*64*3)/4
LightColor L,255,255,255
AmbientLight 128,128,128

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Here I create 6 fires... Is the right way???

For a = 0 To 5
 fire1.fire = New fire
  fire1\flame = LoadASCIIEmitters("Example.lps")
  fire1\x = Rand(0,50)
  fire1\y = Rand(0,50)
  fire1\z = Rand(0,50)
Next

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

S = CreateSphere(32)
ScaleMesh S,32,32,32
FlipMesh S
UpdateNormals S
EntityColor S,128,128,1
EntityShininess S,.05
T = LoadTexture("media/diffuse4.bmp")
ScaleTexture T,.25,.25
EntityTexture S,T,0,0

Repeat
     Repeat
          Elapsed = MilliSecs() - time
     Until Elapsed

     Ticks=Elapsed/Period
     Tween#=Float(Elapsed Mod Period) / Float(Period)

If KeyDown(57) Then WireFrame 1 Else WireFrame 0
     For U = 0 To Ticks
          Time = Time + Period

          ;; UPDATE CAMERA
          mxs# = mxs + Float(MouseXSpeed())/3
          mys# = mys + Float(MouseYSpeed())/3
          mxs = mxs - mxs/4
          mys = mys - mys/4
          TurnEntity C,mys,-mxs,0
          RotateEntity C,Min(Max(EntityPitch(C),80),-80),EntityYaw(C),0
          MoveEntity C,(KeyDown(205)-KeyDown(203))*.2,0,(KeyDown(200)-KeyDown(208))*.2
          MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

          ;; UPDATE PARTICLES
          UpdateLotusParticles()

          UpdateWorld

          If U = Ticks Then CaptureWorld
     Next

     RenderWorld Tween

     Text 2,2,"FPS: "+GetFPS(False)
     Text 2,22,"Particles: "+gLotusParticleCount

     Flip False
Until KeyHit(1)

KillLotus()

Function GetFPS(JustChecking = False)
     If Not JustChecking Then frames = frames+1

     If MilliSecs() > timenext Then
          timenext = MilliSecs()+1000
          fps = frames
          frames = 0
     EndIf
     Return fps
End Function


And It doesn't works... Why??? What I have to do???


Rook Zimbabwe(Posted 2006) [#2]
at a guess:

" fire1\flame = LoadASCIIEmitters("Example.lps") "

You are attempting to LOAD this file 5 times and then set the values in a type...

I need to reread the docs... I haven't played with this in such a long time... where is Filax? He would know... Filax knows everything!