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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import InitDataField
  6. import B3DLib
  7. import GameStateAux
  8. import pdb
  9. import ObjStore
  10. REL = 0
  11. ABS = 1
  12.  
  13. def DisplaceAndRotateObjectFunc(obj_name, time):
  14.     obj = Bladex.GetEntity(obj_name)
  15.     dinobj = obj.Data.dinobjdata
  16.     if dinobj.OnMovement == 0 and dinobj.OnRotation == 0:
  17.         obj.RemoveFromList(dinobj.Timer)
  18.         obj.TimerFunc = ''
  19.         return None
  20.     
  21.     if dinobj.OnMovement == 1:
  22.         if time < dinobj.end_time:
  23.             itime = time - dinobj.last_time
  24.             dinobj.displ = dinobj.init_vel * itime + dinobj.acc * itime ** 2 / 2.0
  25.             x = dinobj.displ_vector[0] * dinobj.displ
  26.             y = dinobj.displ_vector[1] * dinobj.displ
  27.             z = dinobj.displ_vector[2] * dinobj.displ
  28.             obj.Move(x, y, z)
  29.             iend_vel = dinobj.init_vel + dinobj.acc * itime
  30.             dinobj.init_vel = iend_vel
  31.             dinobj.last_time = time
  32.             if dinobj.while_displ_sound:
  33.                 dinobj.while_displ_sound.Position = dinobj.obj.Position
  34.             
  35.             if dinobj.WhileDisplFunc:
  36.                 apply(dinobj.WhileDisplFunc, dinobj.WhileDisplArgs)
  37.             
  38.         else:
  39.             itime = dinobj.end_time - dinobj.last_time
  40.             dinobj.displ = dinobj.init_vel * itime + dinobj.acc * itime ** 2 / 2.0
  41.             x = dinobj.displ_vector[0] * dinobj.displ
  42.             y = dinobj.displ_vector[1] * dinobj.displ
  43.             z = dinobj.displ_vector[2] * dinobj.displ
  44.             obj.Move(x, y, z)
  45.             dinobj.OnMovement = 0
  46.             if dinobj.while_displ_sound and dinobj.while_displ_sound != dinobj.next_while_displ_sound or dinobj.last_displ:
  47.                 dinobj.while_displ_sound.StopSound()
  48.             
  49.             if dinobj.end_displ_sound:
  50.                 dinobj.end_displ_sound.Position = dinobj.obj.Position
  51.                 dinobj.end_displ_sound.PlaySound(0)
  52.             
  53.             if dinobj.OnRotation == 0:
  54.                 obj.RemoveFromList(dinobj.Timer)
  55.                 obj.TimerFunc = ''
  56.             
  57.             if dinobj.EndDisplFunc:
  58.                 apply(dinobj.EndDisplFunc, dinobj.EndDisplArgs)
  59.             
  60.     
  61.     if dinobj.OnRotation == 1:
  62.         if time < dinobj.end_time_w:
  63.             itime = time - dinobj.last_time_w
  64.             dinobj.angle = dinobj.init_w * itime + dinobj.acc_w * itime ** 2 / 2.0
  65.             ce = dinobj.center
  66.             ax = dinobj.axis
  67.             if dinobj.rotation_type == REL:
  68.                 obj.RotateRel(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  69.             else:
  70.                 obj.RotateAbs(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  71.             iend_w = dinobj.init_w + dinobj.acc_w * itime
  72.             dinobj.init_w = iend_w
  73.             dinobj.last_time_w = time
  74.             if dinobj.while_rot_sound:
  75.                 dinobj.while_rot_sound.Position = dinobj.obj.Position
  76.             
  77.             if dinobj.WhileRotFunc:
  78.                 apply(dinobj.WhileRotFunc, dinobj.WhileRotArgs)
  79.             
  80.         else:
  81.             itime = dinobj.end_time_w - dinobj.last_time_w
  82.             dinobj.angle = dinobj.init_w * itime + dinobj.acc_w * itime ** 2 / 2.0
  83.             ce = dinobj.center
  84.             ax = dinobj.axis
  85.             if dinobj.rotation_type == REL:
  86.                 obj.RotateRel(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  87.             else:
  88.                 obj.RotateAbs(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  89.             dinobj.OnRotation = 0
  90.             if dinobj.while_rot_sound and dinobj.while_rot_sound != dinobj.next_while_rot_sound or dinobj.last_rot:
  91.                 dinobj.while_rot_sound.StopSound()
  92.             
  93.             if dinobj.end_rot_sound:
  94.                 dinobj.end_rot_sound.Position = dinobj.obj.Position
  95.                 dinobj.end_rot_sound.PlaySound(0)
  96.             
  97.             if dinobj.OnMovement == 0:
  98.                 obj.RemoveFromList(dinobj.Timer)
  99.                 obj.TimerFunc = ''
  100.             
  101.             if dinobj.EndRotFunc:
  102.                 apply(dinobj.EndRotFunc, dinobj.EndRotArgs)
  103.             
  104.     
  105.  
  106.  
  107. class DinObj:
  108.     ObjId = ''
  109.     OnMovement = 0
  110.     OnRotation = 0
  111.     prev_while_displ_sound = ''
  112.     next_while_displ_sound = ''
  113.     last_displ = 1
  114.     prev_while_rot_sound = ''
  115.     next_while_rot_sound = ''
  116.     last_rot = 1
  117.     Timer = 'Timer60'
  118.     Activado = 0
  119.     obj = None
  120.     EndDisplFunc = None
  121.     EndRotFunc = None
  122.     
  123.     def __init__(self):
  124.         self.ObjId = ObjStore.GetNewId()
  125.         ObjStore.ObjectsStore[self.ObjId] = self
  126.  
  127.     
  128.     def __del__(self):
  129.         del ObjStore.ObjectsStore[self.ObjId]
  130.  
  131.     
  132.     def DisplaceDinObj(self):
  133.         self.OnMovement = 1
  134.         if self.OnRotation == 0:
  135.             self.obj.TimerFunc = DisplaceAndRotateObjectFunc
  136.             self.obj.SubscribeToList(self.Timer)
  137.         
  138.  
  139.     
  140.     def RotateDinObj(self):
  141.         self.OnRotation = 1
  142.         if self.OnMovement == 0:
  143.             self.obj.TimerFunc = DisplaceAndRotateObjectFunc
  144.             self.obj.SubscribeToList(self.Timer)
  145.         
  146.  
  147.     
  148.     def Stop(self):
  149.         self.OnMovement = 0
  150.         self.OnRotation = 0
  151.  
  152.     
  153.     def StopOnStep(self):
  154.         self.EndDisplFunc = None
  155.         self.EndRotFunc = None
  156.  
  157.     
  158.     def StopDisplacement(self):
  159.         self.OnMovement = 0
  160.  
  161.     
  162.     def StopDisplacementOnStep(self):
  163.         self.EndDisplFunc = None
  164.  
  165.     
  166.     def StopRotation(self):
  167.         self.OnRotation = 0
  168.  
  169.     
  170.     def StopRotationOnStep(self):
  171.         self.EndRotFunc = None
  172.  
  173.     
  174.     def persistent_id(self):
  175.         return self.ObjId
  176.  
  177.     
  178.     def __getstate__(self):
  179.         return (1, self.ObjId, self.Activado, self.OnMovement, self.OnRotation, self.prev_while_displ_sound, self.next_while_displ_sound, self.last_displ, self.prev_while_rot_sound, self.last_rot, self.Timer, GameStateAux.SaveEntityAux(self.obj), GameStateAux.SaveNewMembers(self), GameStateAux.SaveFunctionAux(self.EndRotFunc), GameStateAux.SaveFunctionAux(self.EndDisplFunc))
  180.  
  181.     
  182.     def __setstate__(self, parm):
  183.         if parm[0] == 1:
  184.             self.ObjId = parm[1]
  185.             ObjStore.ObjectsStore[self.ObjId] = self
  186.             self.Activado = parm[2]
  187.             self.OnMovement = parm[3]
  188.             self.OnRotation = parm[4]
  189.             self.prev_while_displ_sound = parm[5]
  190.             self.next_while_displ_sound = parm[6]
  191.             self.last_displ = parm[7]
  192.             self.prev_while_rot_sound = parm[8]
  193.             self.last_rot = parm[9]
  194.             self.Timer = parm[10]
  195.             self.obj = GameStateAux.LoadEntityAux(parm[11])
  196.             GameStateAux.LoadNewMembers(self, parm[12])
  197.             self.EndRotFunc = GameStateAux.LoadFunctionAux(parm[13])
  198.             self.EndDisplFunc = GameStateAux.LoadFunctionAux(parm[14])
  199.             if self.obj:
  200.                 self.obj.Data = self
  201.             
  202.         else:
  203.             print 'DinObj.__setstate__() -> Version mismatch'
  204.             self.ObjId = ObjStore.GetNewId()
  205.             ObjStore.ObjectsStore[self.ObjId] = self
  206.  
  207.  
  208.  
  209. def DisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound = '', while_displ_sound = '', end_displ_sound = '', WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  210.     dinobj.displ = displ
  211.     dinobj.displ_vector = B3DLib.Normalize(displ_vector)
  212.     dinobj.init_vel = float(init_vel)
  213.     dinobj.init_displ_sound = init_displ_sound
  214.     dinobj.while_displ_sound = while_displ_sound
  215.     dinobj.end_displ_sound = end_displ_sound
  216.     dinobj.WhileDisplFunc = WhileDisplFunc
  217.     dinobj.WhileDisplArgs = WhileDisplArgs
  218.     dinobj.EndDisplFunc = EndDisplFunc
  219.     dinobj.EndDisplArgs = EndDisplArgs
  220.     dinobj.acc = (end_vel ** 2 - init_vel ** 2) / (2.0 * displ)
  221.     if dinobj.acc == 0.0:
  222.         displ_time = displ / float(init_vel)
  223.     else:
  224.         displ_time = (end_vel - init_vel) / dinobj.acc
  225.     if dinobj.init_displ_sound:
  226.         dinobj.init_displ_sound.Position = dinobj.obj.Position
  227.         dinobj.init_displ_sound.PlaySound(0)
  228.     
  229.     if dinobj.while_displ_sound and dinobj.while_displ_sound != dinobj.prev_while_displ_sound:
  230.         dinobj.while_displ_sound.Position = dinobj.obj.Position
  231.         dinobj.while_displ_sound.PlaySound(-1)
  232.     
  233.     start_time = Bladex.GetTime()
  234.     dinobj.last_time = Bladex.GetTime()
  235.     dinobj.end_time = start_time + displ_time
  236.     dinobj.DisplaceDinObj()
  237.  
  238.  
  239. def DisplaceObjectFromTo(dinobj, init_point, end_point, init_vel, end_vel, init_displ_sound = '', while_displ_sound = '', end_displ_sound = '', WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  240.     displ_vector = (end_point[0] - init_point[0], end_point[1] - init_point[1], end_point[2] - init_point[2])
  241.     displ = (displ_vector[0] ** 2 + displ_vector[1] ** 2 + displ_vector[2] ** 2) ** 0.5
  242.     dinobj.obj.Position = init_point
  243.     DisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound, WhileDisplFunc, WhileDisplArgs, EndDisplFunc, EndDisplArgs)
  244.  
  245.  
  246. def RotateObject(dinobj, angle, init_w, end_w, center, axis, rotation_type = REL, init_rot_sound = '', while_rot_sound = '', end_rot_sound = '', WhileRotFunc = '', WhileRotArgs = (), EndRotFunc = '', EndRotArgs = ()):
  247.     dinobj.angle = angle
  248.     if angle < 0:
  249.         init_w = -init_w
  250.         end_w = -end_w
  251.     
  252.     dinobj.init_w = float(init_w)
  253.     dinobj.center = center
  254.     dinobj.axis = axis
  255.     dinobj.rotation_type = rotation_type
  256.     dinobj.init_rot_sound = init_rot_sound
  257.     dinobj.while_rot_sound = while_rot_sound
  258.     dinobj.end_rot_sound = end_rot_sound
  259.     dinobj.WhileRotFunc = WhileRotFunc
  260.     dinobj.WhileRotArgs = WhileRotArgs
  261.     dinobj.EndRotFunc = EndRotFunc
  262.     dinobj.EndRotArgs = EndRotArgs
  263.     dinobj.acc_w = (end_w ** 2 - init_w ** 2) / (2.0 * angle)
  264.     if dinobj.acc_w == 0.0:
  265.         rotat_time = angle / float(init_w)
  266.     else:
  267.         rotat_time = (end_w - init_w) / dinobj.acc_w
  268.     if dinobj.init_rot_sound:
  269.         dinobj.init_rot_sound.Position = dinobj.obj.Position
  270.         dinobj.init_rot_sound.PlaySound(0)
  271.     
  272.     if dinobj.while_rot_sound and dinobj.while_rot_sound != dinobj.prev_while_rot_sound:
  273.         dinobj.while_rot_sound.Position = dinobj.obj.Position
  274.         dinobj.while_rot_sound.PlaySound(-1)
  275.     
  276.     start_time = Bladex.GetTime()
  277.     dinobj.last_time_w = Bladex.GetTime()
  278.     dinobj.end_time_w = start_time + rotat_time
  279.     dinobj.RotateDinObj()
  280.  
  281.  
  282. def NDisplacement(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound):
  283.     dinobj.currentdispl = dinobj.currentdispl + 1
  284.     n = dinobj.currentdispl
  285.     dinobj.prev_while_displ_sound = while_displ_sound[n - 1]
  286.     if n < dinobj.ndispl - 1:
  287.         dinobj.next_while_displ_sound = while_displ_sound[n + 1]
  288.         DisplaceObject(dinobj, displ[n], displ_vector[n], init_vel[n], end_vel[n], init_displ_sound[n], while_displ_sound[n], end_displ_sound[n], dinobj.WhileDisplFunc, dinobj.WhileDisplArgs, NDisplacement, (dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound))
  289.     else:
  290.         dinobj.next_while_displ_sound = ''
  291.         dinobj.last_displ = 1
  292.         DisplaceObject(dinobj, displ[n], displ_vector[n], init_vel[n], end_vel[n], init_displ_sound[n], while_displ_sound[n], end_displ_sound[n], dinobj.WhileDisplFunc, dinobj.WhileDisplArgs, dinobj.EndNDisplFunc, dinobj.EndNDisplArgs)
  293.  
  294.  
  295. def NDisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_soundlist = (), while_displ_soundlist = (), end_displ_soundlist = (), WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  296.     init_displ_sound = []
  297.     while_displ_sound = []
  298.     end_displ_sound = []
  299.     for n in range(len(displ)):
  300.         init_displ_sound.append('')
  301.         while_displ_sound.append('')
  302.         end_displ_sound.append('')
  303.     
  304.     for n in range(len(init_displ_soundlist)):
  305.         init_displ_sound[n] = init_displ_soundlist[n]
  306.     
  307.     for n in range(len(while_displ_soundlist)):
  308.         while_displ_sound[n] = while_displ_soundlist[n]
  309.     
  310.     for n in range(len(end_displ_soundlist)):
  311.         end_displ_sound[n] = end_displ_soundlist[n]
  312.     
  313.     dinobj.EndNDisplFunc = EndDisplFunc
  314.     dinobj.EndNDisplArgs = EndDisplArgs
  315.     dinobj.ndispl = len(displ)
  316.     dinobj.currentdispl = 0
  317.     dinobj.prev_while_displ_sound = ''
  318.     dinobj.next_while_displ_sound = while_displ_sound[1]
  319.     dinobj.last_displ = 0
  320.     DisplaceObject(dinobj, displ[0], displ_vector[0], init_vel[0], end_vel[0], init_displ_sound[0], while_displ_sound[0], end_displ_sound[0], WhileDisplFunc, WhileDisplArgs, NDisplacement, (dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound))
  321.  
  322.  
  323. def NRotation(dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound):
  324.     dinobj.currentangle = dinobj.currentangle + 1
  325.     n = dinobj.currentangle
  326.     dinobj.prev_while_rot_sound = while_rot_sound[n - 1]
  327.     if n < dinobj.nangle - 1:
  328.         dinobj.next_while_rot_sound = while_rot_sound[n + 1]
  329.         RotateObject(dinobj, angle[n], init_w[n], end_w[n], center[n], axis[n], dinobj.rotation_type, init_rot_sound[n], while_rot_sound[n], end_rot_sound[n], dinobj.WhileRotFunc, dinobj.WhileRotArgs, NRotation, (dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound))
  330.     else:
  331.         dinobj.next_while_rot_sound = ''
  332.         dinobj.last_rot = 1
  333.         RotateObject(dinobj, angle[n], init_w[n], end_w[n], center[n], axis[n], dinobj.rotation_type, init_rot_sound[n], while_rot_sound[n], end_rot_sound[n], dinobj.WhileRotFunc, dinobj.WhileRotArgs, dinobj.EndNRotFunc, dinobj.EndNRotArgs)
  334.  
  335.  
  336. def NRotateObject(dinobj, angle, init_w, end_w, center, axis, rotation_type = REL, init_rot_soundlist = (), while_rot_soundlist = (), end_rot_soundlist = (), WhileRotFunc = '', WhileRotArgs = (), EndRotFunc = '', EndRotArgs = ()):
  337.     init_rot_sound = []
  338.     while_rot_sound = []
  339.     end_rot_sound = []
  340.     for n in range(len(angle)):
  341.         init_rot_sound.append('')
  342.         while_rot_sound.append('')
  343.         end_rot_sound.append('')
  344.     
  345.     for n in range(len(init_rot_soundlist)):
  346.         init_rot_sound[n] = init_rot_soundlist[n]
  347.     
  348.     for n in range(len(while_rot_soundlist)):
  349.         while_rot_sound[n] = while_rot_soundlist[n]
  350.     
  351.     for n in range(len(end_rot_soundlist)):
  352.         end_rot_sound[n] = end_rot_soundlist[n]
  353.     
  354.     dinobj.EndNRotFunc = EndRotFunc
  355.     dinobj.EndNRotArgs = EndRotArgs
  356.     dinobj.nangle = len(angle)
  357.     dinobj.currentangle = 0
  358.     dinobj.prev_while_rot_sound = ''
  359.     dinobj.next_while_rot_sound = while_rot_sound[1]
  360.     dinobj.last_rot = 0
  361.     RotateObject(dinobj, angle[0], init_w[0], end_w[0], center[0], axis[0], rotation_type, init_rot_sound[0], while_rot_sound[0], end_rot_sound[0], WhileRotFunc, WhileRotArgs, NRotation, (dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound))
  362.  
  363.  
  364. def CreateDinamicObject(obj_name):
  365.     dinobj = DinObj()
  366.     dinobj.obj = Bladex.GetEntity(obj_name)
  367.     InitDataField.Initialise(dinobj.obj)
  368.     dinobj.obj.Data.dinobjdata = dinobj
  369.     return dinobj
  370.  
  371.