home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / Auras.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-10-27  |  7.5 KB  |  202 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. '''
  5. # EXAMPLE OF USE
  6. # make an ice aura (just using gradient 2) to last 5 minutes....
  7. aura= Auras.MakeAura ("Player1",5.0*60.0,(25,1.0,1.0,1,0,0), (),(),(2,  0.8,0.8,1.0, 1.0, 0.6  , 0.0,0.0,1.0, 0.0, 1.0))
  8. # interpolate to a fire aura over 1 second
  9. aura.Data.AddEvent(Bladex.GetTime()+1.0, (25,1.0,1.0,1,0,0), (),(),(2,  1.0,0.7,0.0, 1.0, 0.5  , 1.0,0.0,0.0, 0.0, 1.0))
  10. # interpolate back to ice aura over 0.1 seconds
  11. aura.Data.AddEvent(Bladex.GetTime()+0.1, (25,1.0,1.0,1,0,0), (),(),(2,  0.8,0.8,1.0, 1.0, 0.6  , 0.0,0.0,1.0, 0.0, 1.0))
  12.  
  13. # See the special damage functions in the file Damage.py for more examples...
  14.  
  15. '''
  16. import Bladex
  17. Bladex.CreateTimer('Timer20', 1.0 / 20.0)
  18.  
  19. class AnimateableAura:
  20.     
  21.     def __init__(self, aura, time2live, AuraParams, AuraGradient0 = (), AuraGradient1 = (), AuraGradient2 = (), Active = 1, XtraParam = ()):
  22.         self.EventList = []
  23.         self.Name = aura.Name
  24.         self.TimerName = 'Timer20'
  25.         self.TimerFrequency = 1.0 / 20.0
  26.         self.AuraParams = AuraParams
  27.         apply(aura.SetAuraParams, self.AuraParams)
  28.         if AuraGradient0:
  29.             self.AuraGradient0 = AuraGradient0
  30.         else:
  31.             self.AuraGradient0 = (0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
  32.         apply(aura.SetAuraGradient, self.AuraGradient0)
  33.         if AuraGradient1:
  34.             self.AuraGradient1 = AuraGradient1
  35.         else:
  36.             self.AuraGradient1 = (1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
  37.         apply(aura.SetAuraGradient, self.AuraGradient1)
  38.         if AuraGradient2:
  39.             self.AuraGradient2 = AuraGradient2
  40.         else:
  41.             self.AuraGradient2 = (2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
  42.         apply(aura.SetAuraGradient, self.AuraGradient2)
  43.         if time2live > 0.0:
  44.             self.DeathTime = Bladex.GetTime() + time2live
  45.         else:
  46.             self.DeathTime = -1.0
  47.         aura.TimerFunc = self.TimerFunc
  48.         aura.SubscribeToList(self.TimerName)
  49.         self.Active = Active
  50.         aura.SetAuraActive(self.Active)
  51.         self.OldXtraParam = self.XtraParam = XtraParam
  52.         if XtraParam:
  53.             exec_string = XtraParam[0] + '=' + str(XtraParam[1])
  54.             exec exec_string
  55.         
  56.  
  57.     
  58.     def FirstTime(self, e1, e2):
  59.         if e1[0] < e2[0]:
  60.             return -1
  61.         elif e2[0] > e1[0]:
  62.             return 1
  63.         else:
  64.             return 0
  65.  
  66.     
  67.     def AddEvent(self, time, AuraParams, AuraGradient0 = (), AuraGradient1 = (), AuraGradient2 = (), Active = 1, XtraParam = ()):
  68.         self.EventList.append([
  69.             time,
  70.             AuraParams,
  71.             AuraGradient0,
  72.             AuraGradient1,
  73.             AuraGradient2,
  74.             Active,
  75.             XtraParam])
  76.         self.EventList.sort(self.FirstTime)
  77.  
  78.     
  79.     def TimerFunc(self, obj_name, time):
  80.         if self.DeathTime >= 0.0 and time > self.DeathTime:
  81.             del self.EventList
  82.             self.Active = 0
  83.             if self.OldXtraParam:
  84.                 exec_string = self.OldXtraParam[0] + '=' + str(self.OldXtraParam[1])
  85.                 exec exec_string
  86.             
  87.             aura = Bladex.GetEntity(self.Name)
  88.             aura.SetAuraActive(0)
  89.             aura.RemoveFromList(self.TimerName)
  90.             aura.SubscribeToList('Pin')
  91.             return None
  92.         elif len(self.EventList) < 1:
  93.             return None
  94.         else:
  95.             (NextTime, AuraParams, AuraGradient0, AuraGradient1, AuraGradient2, Active, XtraParam) = self.EventList[0]
  96.             if time >= NextTime:
  97.                 aura = Bladex.GetEntity(self.Name)
  98.                 self.AuraParams = AuraParams
  99.                 apply(aura.SetAuraParams, self.AuraParams)
  100.                 if AuraGradient0:
  101.                     self.AuraGradient0 = AuraGradient0
  102.                     apply(aura.SetAuraGradient, self.AuraGradient0)
  103.                 
  104.                 if AuraGradient1:
  105.                     self.AuraGradient1 = AuraGradient1
  106.                     apply(aura.SetAuraGradient, self.AuraGradient1)
  107.                 
  108.                 if AuraGradient2:
  109.                     self.AuraGradient2 = AuraGradient2
  110.                     apply(aura.SetAuraGradient, self.AuraGradient2)
  111.                 
  112.                 if Active != self.Active:
  113.                     self.active = Active
  114.                     aura.SetAuraActive(self.Active)
  115.                 
  116.                 if XtraParam:
  117.                     self.XtraParam = XtraParam
  118.                     exec_string = XtraParam[0] + '=' + str(XtraParam[1])
  119.                     exec exec_string
  120.                 
  121.                 (nNextTime, nAuraParams, nAuraGradient0, nAuraGradient1, nAuraGradient2, nActive, nXtraParam) = self.EventList[1]
  122.                 if not AuraParams != nAuraParams and AuraGradient2 != nAuraGradient2 and XtraParam != nXtraParam and AuraGradient0 != nAuraGradient0:
  123.                     pass
  124.                 if not (AuraGradient1 != nAuraGradient1):
  125.                     aura.RemoveFromList(self.TimerName)
  126.                     Bladex.AddScheduledFunc(nNextTime, aura.SubscribeToList, (self.TimerName,))
  127.                 
  128.                 del self.EventList[0]
  129.             else:
  130.                 a = self.TimerFrequency / (self.TimerFrequency + NextTime - time)
  131.                 aura = Bladex.GetEntity(self.Name)
  132.                 (fSize, fAlpha, fIntensity, iFrontFaceCulling, iBackFaceCulling, iAdditive) = self.AuraParams
  133.                 fSize = fSize + (AuraParams[0] - fSize) * a
  134.                 fAlpha = fAlpha + (AuraParams[1] - fAlpha) * a
  135.                 fIntensity = fIntensity + (AuraParams[2] - fIntensity) * a
  136.                 self.AuraParams = (fSize, fAlpha, fIntensity, iFrontFaceCulling, iBackFaceCulling, iAdditive)
  137.                 apply(aura.SetAuraParams, self.AuraParams)
  138.                 if AuraGradient0:
  139.                     (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd) = self.AuraGradient0
  140.                     fR0 = fR0 + (AuraGradient0[1] - fR0) * a
  141.                     fG0 = fG0 + (AuraGradient0[2] - fG0) * a
  142.                     fB0 = fB0 + (AuraGradient0[3] - fB0) * a
  143.                     fA0 = fA0 + (AuraGradient0[4] - fA0) * a
  144.                     fStart = fStart + (AuraGradient0[5] - fStart) * a
  145.                     fR1 = fR1 + (AuraGradient0[6] - fR1) * a
  146.                     fG1 = fG1 + (AuraGradient0[7] - fG1) * a
  147.                     fB1 = fB1 + (AuraGradient0[8] - fB1) * a
  148.                     fA1 = fA1 + (AuraGradient0[9] - fA1) * a
  149.                     fEnd = fEnd + (AuraGradient0[10] - fEnd) * a
  150.                     self.AuraGradient0 = (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd)
  151.                     apply(aura.SetAuraGradient, self.AuraGradient0)
  152.                 
  153.                 if AuraGradient1:
  154.                     (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd) = self.AuraGradient1
  155.                     fR0 = fR0 + (AuraGradient1[1] - fR0) * a
  156.                     fG0 = fG0 + (AuraGradient1[2] - fG0) * a
  157.                     fB0 = fB0 + (AuraGradient1[3] - fB0) * a
  158.                     fA0 = fA0 + (AuraGradient1[4] - fA0) * a
  159.                     fStart = fStart + (AuraGradient1[5] - fStart) * a
  160.                     fR1 = fR1 + (AuraGradient1[6] - fR1) * a
  161.                     fG1 = fG1 + (AuraGradient1[7] - fG1) * a
  162.                     fB1 = fB1 + (AuraGradient1[8] - fB1) * a
  163.                     fA1 = fA1 + (AuraGradient1[9] - fA1) * a
  164.                     fEnd = fEnd + (AuraGradient1[10] - fEnd) * a
  165.                     self.AuraGradient1 = (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd)
  166.                     apply(aura.SetAuraGradient, self.AuraGradient1)
  167.                 
  168.                 if AuraGradient2:
  169.                     (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd) = self.AuraGradient2
  170.                     fR0 = fR0 + (AuraGradient2[1] - fR0) * a
  171.                     fG0 = fG0 + (AuraGradient2[2] - fG0) * a
  172.                     fB0 = fB0 + (AuraGradient2[3] - fB0) * a
  173.                     fA0 = fA0 + (AuraGradient2[4] - fA0) * a
  174.                     fStart = fStart + (AuraGradient2[5] - fStart) * a
  175.                     fR1 = fR1 + (AuraGradient2[6] - fR1) * a
  176.                     fG1 = fG1 + (AuraGradient2[7] - fG1) * a
  177.                     fB1 = fB1 + (AuraGradient2[8] - fB1) * a
  178.                     fA1 = fA1 + (AuraGradient2[9] - fA1) * a
  179.                     fEnd = fEnd + (AuraGradient2[10] - fEnd) * a
  180.                     self.AuraGradient2 = (iStage, fR0, fG0, fB0, fA0, fStart, fR1, fG1, fB1, fA1, fEnd)
  181.                     apply(aura.SetAuraGradient, self.AuraGradient2)
  182.                 
  183.                 if XtraParam:
  184.                     (Param, Value) = self.XtraParam
  185.                     exec_string = Param + '=' + Param + '+' + '(' + str(XtraParam[1]) + '-' + Param + ')*' + str(a)
  186.                     exec exec_string
  187.                     exec_string2 = 'Value=' + Param
  188.                     exec exec_string2
  189.                     self.XtraParam = (Param, Value)
  190.                 
  191.  
  192.  
  193.  
  194. def MakeAura(EntityName, time2live, StartAuraParams, StartAuraGradient0 = (), StartAuraGradient1 = (), StartAuraGradient2 = (), StartActive = 1, XtraParam = ()):
  195.     me = Bladex.GetEntity(EntityName)
  196.     pos = me.Position
  197.     aura = Bladex.CreateEntity(EntityName + '_Aura', 'Entity Aura', pos[0], pos[1], pos[2])
  198.     me.Link(aura)
  199.     aura.Data = AnimateableAura(aura, time2live, StartAuraParams, StartAuraGradient0, StartAuraGradient1, StartAuraGradient2, StartActive, XtraParam)
  200.     return aura
  201.  
  202.