home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / storm.py < prev    next >
Encoding:
Text File  |  2000-10-27  |  2.2 KB  |  84 lines

  1. ##########################################################
  2. #
  3. #    SCRIPT    : libreria para poner viruta delante de la camara
  4. #
  5. #    AUTH    : Yuio
  6. #
  7. #
  8. ##########################################################
  9.  
  10. #
  11. # esto se lo dedico a uno de mis idolos : al pitufo gru±on
  12. # (al que le seguia encima siempre una nube con tormenta) 
  13. #
  14.  
  15. import math
  16. import Bladex
  17. import AuxFuncs
  18. import cameraAux
  19.  
  20.  
  21. distances={}
  22.  
  23. # import storm; storm.createDustStorm("test",2500); storm.setupStorm("test");
  24.  
  25. Bladex.CreateTimer("dustStormTimer",0.1)
  26. B_PARTICLE_GTYPE_BLEND=1
  27. Bladex.AddParticleGType("dustStormPT","SmokeParticle",B_PARTICLE_GTYPE_BLEND,32)
  28. for i in range(64):
  29.     r=200
  30.     g=170
  31.     b=140
  32.     a=i + 25.0
  33.     size= (i/64.0)*1000.0
  34.     Bladex.SetParticleGVal("dustStormPT",i,r,g,b,a,size)
  35.  
  36. def setupStorm(name,dist,fov=3.14*0.57):
  37.     storm=Bladex.GetEntity(name)
  38.     cameraAux.updateInfo()
  39.     cam = Bladex.GetEntity("Camera")
  40.     opos=cam.Position
  41.     tpos=cam.TPos
  42.     v=tpos[0]-opos[0], tpos[1]-opos[1], tpos[2]-opos[2]
  43.  
  44.     hfovtan            = math.tan(fov*0.5)
  45.     disthfov        = dist*hfovtan
  46.  
  47.     px                = cam.Position[0]+cameraAux.n[0]*dist
  48.     py                = cam.Position[1]+cameraAux.n[1]*dist
  49.     pz                = cam.Position[2]+cameraAux.n[2]*dist
  50.  
  51.     dx                = -cameraAux.u[0]*disthfov
  52.     dy                = -cameraAux.u[1]*disthfov
  53.     dz                = -cameraAux.u[2]*disthfov
  54.     
  55.     storm.Position    = px-dx-cameraAux.v[0]*disthfov, py-dy-cameraAux.v[1]*disthfov, pz-dz-cameraAux.v[2]*disthfov
  56.     storm.D1        = dx*2.0, dy*2.0, dz*2.0
  57.  
  58. def deleteStorm(storm):
  59.     partSys = Bladex.GetEntity(storm)
  60.     partSys.SubscribeToList("Pin")
  61.  
  62. def updateTimer(ent, time):
  63.     setupStorm(ent,    distances[ent])
  64.  
  65. def createDustStorm(name,dist):
  66.     char = Bladex.GetEntity("Player1")
  67.     partSys=Bladex.CreateEntity(name, "Entity Particle System D2", char.Position[0],char.Position[1],char.Position[2] )
  68.     partSys.D1= 1000,0,0
  69.     partSys.ParticleType="dustStormPT"
  70.     partSys.YGravity=-1030.0
  71.     partSys.Friction=0.2
  72.     partSys.PPS=400
  73.     partSys.DeathTime=Bladex.GetTime()+999999.0
  74.     partSys.Time2Live=31
  75.     partSys.Velocity=0.0, 20000.0, 0.0
  76.     partSys.RandomVelocity=200.0
  77.  
  78.     partSys.TimerFunc = updateTimer
  79.     partSys.SubscribeToList("Timer15")
  80.  
  81.     distances[name]=dist
  82.  
  83.     return partSys
  84.