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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import BInput
  6. import Raster
  7. import math
  8. import InitDataField
  9. import B3DLib
  10. import whrandom
  11. import ScriptSkip
  12. import darfuncs
  13.  
  14. def Normalize(vector):
  15.     return B3DLib.Normalize(vector)
  16.  
  17.  
  18. def Scale(vector, scalar):
  19.     return B3DLib.Scale(vector, scalar)
  20.  
  21.  
  22. def Module(vector):
  23.     return B3DLib.Modulo(vector[0], vector[1], vector[2])
  24.  
  25.  
  26. def Pos2PosXZAngle(p1, p2):
  27.     return B3DLib.Pos2PosXZAngle(p1[0], p1[1], p1[2], p2[0], p2[1], p2[2])
  28.  
  29.  
  30. def GetSpot(obj):
  31.     n_child = obj.GetNChildren()
  32.     for n in range(n_child):
  33.         child = Bladex.GetEntity(obj.GetChild(n))
  34.     
  35.  
  36.  
  37. def GetFire(obj):
  38.     n_child = obj.GetNChildren()
  39.     for n in range(n_child):
  40.         child = Bladex.GetEntity(obj.GetChild(n))
  41.     
  42.  
  43.  
  44. def SpotIntensityVariationGrad(light_name, time):
  45.     light = Bladex.GetEntity(light_name)
  46.     light.Intensity = light.Intensity + light.Data.IntensityVar
  47.     if light.Data.SizeVar:
  48.         light.SizeFactor = light.SizeFactor + light.Data.SizeVar
  49.     
  50.     if light.Data.IntensityVar >= 0.0 and light.Intensity >= light.Data.EndIntensity and light.Data.IntensityVar < 0.0 and light.Intensity <= light.Data.EndIntensity:
  51.         if light.Data.SizeVar:
  52.             light.SizeFactor = light.Data.EndSize
  53.         
  54.         light.Intensity = light.Data.EndIntensity
  55.         light.RemoveFromList(light.Data.Timer)
  56.         light.TimerFunc = ''
  57.         if light.Data.DestroyOnEnd:
  58.             light.SubscribeToList('Pin')
  59.         
  60.     
  61.  
  62.  
  63. def SpotIntensityVariation(light_name, init_int, end_int, var_time, destroy = 0, init_size = 0.0, end_size = 0.0, timer = 'Timer60', timespersec = 60):
  64.     light = Bladex.GetEntity(light_name)
  65.     light.Intensity = init_int
  66.     InitDataField.Initialise(light)
  67.     light.Data.EndIntensity = end_int
  68.     light.Data.IntensityVar = (end_int - init_int) / (timespersec * var_time)
  69.     light.Data.DestroyOnEnd = destroy
  70.     light.Data.SizeVar = (end_size - init_size) / (timespersec * var_time)
  71.     light.Data.EndSize = end_size
  72.     light.Data.Timer = timer
  73.     if init_size or end_size:
  74.         light.SizeFactor = init_size
  75.     
  76.     light.TimerFunc = SpotIntensityVariationGrad
  77.     light.SubscribeToList(timer)
  78.  
  79.  
  80. def DeactivateKeyboard():
  81.     Bladex.DeactivateInput()
  82.     Bladex.ActivateInput()
  83.     InputManager = BInput.GetInputManager()
  84.     InputManager.AddInputActionsSet('EmptySet')
  85.     InputManager.SetInputActionsSet('EmptySet')
  86.     Bladex.AddInputAction('Abort', 0)
  87.     Bladex.AssocKey('Abort', 'Keyboard', 'Enter')
  88.     Bladex.AssocKey('Abort', 'Keyboard', 'Esc')
  89.     Bladex.AddBoundFunc('Abort', ScriptSkip.SkipCalled)
  90.  
  91.  
  92. def ActivateKeyboard():
  93.     InputManager = BInput.GetInputManager()
  94.     InputManager.SetInputActionsSet('Default')
  95.  
  96.  
  97. def StopCamTravelling(entity_name, camera_element, node):
  98.     cam = Bladex.GetEntity('Camera')
  99.     if node == 1:
  100.         cam.SType = 0
  101.         cam.TType = 0
  102.         cam.CameraClearPath(0)
  103.         cam.CameraClearPath(1)
  104.         if EndFunc:
  105.             EndFunc()
  106.         
  107.     
  108.  
  109.  
  110. def MoveCamFromTo(ox1, oy1, oz1, ox2, oy2, oz2, tx1, ty1, tz1, tx2, ty2, tz2, time, endfunc = ''):
  111.     global EndFunc
  112.     EndFunc = endfunc
  113.     cam = Bladex.GetEntity('Camera')
  114.     cam.AddCameraNode(0, time, ox1, oy1, oz1)
  115.     cam.AddCameraNode(0, time / 2.0, ox2, oy2, oz2)
  116.     cam.AddCameraNode(0, time / 2.0, (ox1 + ox2) / 2.0, (oy1 + oy2) / 2.0, (oz1 + oz2) / 2.0)
  117.     cam.AddCameraNode(1, time, tx1, ty1, tz1)
  118.     cam.AddCameraNode(1, time / 2.0, tx2, ty2, tz2)
  119.     cam.AddCameraNode(1, time / 2.0, (tx1 + tx2) / 2.0, (ty1 + ty2) / 2.0, (tz1 + tz2) / 2.0)
  120.     cam.SType = 1
  121.     cam.TType = 1
  122.     cam.CameraStartPath(0)
  123.     cam.CameraStartPath(1)
  124.     cam.ChangeNodeFunc = StopCamTravelling
  125.  
  126.  
  127. def ResetScene(cut = 1, persndsrc = 1, actinput = 1):
  128.     cam = Bladex.GetEntity('Camera')
  129.     cam.SetPersonView('Player1')
  130.     if cut:
  131.         cam.Cut()
  132.     
  133.     if persndsrc:
  134.         Bladex.SetListenerPosition(1)
  135.     
  136.     if actinput:
  137.         Bladex.ActivateInput()
  138.     
  139.  
  140.  
  141. class ScreenFadeEffect:
  142.     
  143.     def __init__(self):
  144.         self.FadeTime = 1.0
  145.         self.InitFadeTime = 1.0
  146.         self.EndFadeTime = 1.0
  147.         self.TotalFadeTime = 2.0
  148.         self.RColor = 0
  149.         self.GColor = 0
  150.         self.BColor = 0
  151.         self.InitAlpha = 1.0
  152.         self.EndAlpha = 0.0
  153.         self.AlphaVar = -1.0
  154.         self.InitTime = Bladex.GetTime()
  155.         self.ScreenSize = Raster.GetSize()
  156.  
  157.  
  158.  
  159. def Fade(time):
  160.     if Bladex.GetAppMode() == 'Menu':
  161.         return None
  162.     
  163.     pass_time = time - fade_effect.InitTime
  164.     if pass_time < fade_effect.InitFadeTime:
  165.         alpha = fade_effect.InitAlpha
  166.     elif fade_effect.AlphaVar > 0:
  167.         alpha = min(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime)
  168.     else:
  169.         alpha = max(fade_effect.EndAlpha, fade_effect.InitAlpha + (pass_time - fade_effect.InitFadeTime) * fade_effect.AlphaVar / fade_effect.FadeTime)
  170.     Raster.SetFillColor(fade_effect.RColor, fade_effect.GColor, fade_effect.BColor)
  171.     Raster.SetAlpha(alpha)
  172.     Raster.SolidRectangle(0, 0, fade_effect.ScreenSize[0], fade_effect.ScreenSize[1])
  173.     if pass_time >= fade_effect.TotalFadeTime:
  174.         Bladex.RemoveAfterFrameFunc('Fade')
  175.     
  176.  
  177.  
  178. def FadeTo(fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  179.     global fade_effect
  180.     fade_effect = ScreenFadeEffect()
  181.     fade_effect.FadeTime = fade_time
  182.     fade_effect.InitFadeTime = 0.0
  183.     fade_effect.EndFadeTime = end_fade_time
  184.     fade_effect.TotalFadeTime = fade_time + end_fade_time
  185.     fade_effect.RColor = rcolor
  186.     fade_effect.GColor = gcolor
  187.     fade_effect.BColor = bcolor
  188.     fade_effect.InitAlpha = 0.0
  189.     fade_effect.EndAlpha = 1.0
  190.     fade_effect.AlphaVar = 1.0
  191.     Bladex.SetAfterFrameFunc('Fade', Fade)
  192.  
  193.  
  194. def FadeFrom(fade_time = 1.0, init_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  195.     global fade_effect
  196.     fade_effect = ScreenFadeEffect()
  197.     fade_effect.FadeTime = fade_time
  198.     fade_effect.InitFadeTime = init_fade_time
  199.     fade_effect.EndFadeTime = 0.0
  200.     fade_effect.TotalFadeTime = fade_time + init_fade_time
  201.     fade_effect.RColor = rcolor
  202.     fade_effect.GColor = gcolor
  203.     fade_effect.BColor = bcolor
  204.     fade_effect.InitAlpha = 1.0
  205.     fade_effect.EndAlpha = 0.0
  206.     fade_effect.AlphaVar = -1.0
  207.     Bladex.SetAfterFrameFunc('Fade', Fade)
  208.  
  209.  
  210. def FadeFromTo(init_alpha, end_alpha, fade_time = 1.0, init_fade_time = 1.0, end_fade_time = 1.0, rcolor = 0, gcolor = 0, bcolor = 0):
  211.     global fade_effect
  212.     fade_effect = ScreenFadeEffect()
  213.     fade_effect.FadeTime = fade_time
  214.     fade_effect.InitFadeTime = init_fade_time
  215.     fade_effect.EndFadeTime = end_fade_time
  216.     fade_effect.TotalFadeTime = fade_time + init_fade_time + end_fade_time
  217.     fade_effect.RColor = rcolor
  218.     fade_effect.GColor = gcolor
  219.     fade_effect.BColor = bcolor
  220.     fade_effect.InitAlpha = float(init_alpha)
  221.     fade_effect.EndAlpha = float(end_alpha)
  222.     fade_effect.AlphaVar = fade_effect.EndAlpha - fade_effect.InitAlpha
  223.     Bladex.SetAfterFrameFunc('Fade', Fade)
  224.  
  225.  
  226. class SingleFrameScreenFadeEffect:
  227.     
  228.     def __init__(self):
  229.         self.RColor = 0
  230.         self.GColor = 0
  231.         self.BColor = 0
  232.         self.ScreenSize = Raster.GetSize()
  233.  
  234.  
  235.  
  236. def SingleFrameFadeFunc(time):
  237.     if Bladex.GetAppMode() == 'Menu':
  238.         return None
  239.     
  240.     Raster.SetFillColor(single_frame_fade_effect.RColor, single_frame_fade_effect.GColor, single_frame_fade_effect.BColor)
  241.     Raster.SetAlpha(1.0)
  242.     Raster.SolidRectangle(0, 0, single_frame_fade_effect.ScreenSize[0], single_frame_fade_effect.ScreenSize[1])
  243.     Bladex.RemoveAfterFrameFunc('SingleFrameFadeFunc')
  244.  
  245.  
  246. def SingleFrameFade(rcolor = 0, gcolor = 0, bcolor = 0):
  247.     global single_frame_fade_effect
  248.     single_frame_fade_effect = SingleFrameScreenFadeEffect()
  249.     single_frame_fade_effect.RColor = rcolor
  250.     single_frame_fade_effect.GColor = gcolor
  251.     single_frame_fade_effect.BColor = bcolor
  252.     Bladex.SetAfterFrameFunc('SingleFrameFadeFunc', SingleFrameFadeFunc)
  253.  
  254. DESTROY_METHOD_BIN = 1
  255. DESTROY_METHOD_REMOVE = 2
  256.  
  257. def FadeObjectGrad(obj_name, time):
  258.     obj = Bladex.GetEntity(obj_name)
  259.     obj.Alpha = obj.Alpha + obj.Data.AlphaVar
  260.     if obj.Data.AlphaVar >= 0.0:
  261.         if obj.Alpha >= obj.Data.EndAlpha:
  262.             obj.Alpha = obj.Data.EndAlpha
  263.             obj.RemoveFromList('Timer60')
  264.             obj.TimerFunc = ''
  265.         
  266.     elif obj.Alpha <= obj.Data.EndAlpha:
  267.         obj.Alpha = obj.Data.EndAlpha
  268.         obj.RemoveFromList('Timer60')
  269.         obj.TimerFunc = ''
  270.         if obj.Data.DestroyOnEnd:
  271.             if obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  272.                 obj.RemoveFromWorld()
  273.             
  274.             if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN:
  275.                 obj.SubscribeToList('Pin')
  276.             
  277.         
  278.     
  279.  
  280.  
  281. def FadeObject(obj_name, init_alpha, end_alpha, fade_time, destroy = 0):
  282.     obj = Bladex.GetEntity(obj_name)
  283.     obj.Alpha = init_alpha
  284.     InitDataField.Initialise(obj)
  285.     obj.Data.EndAlpha = end_alpha
  286.     obj.Data.AlphaVar = (end_alpha - init_alpha) / (60.0 * fade_time)
  287.     obj.Data.DestroyOnEnd = destroy
  288.     obj.TimerFunc = FadeObjectGrad
  289.     obj.SubscribeToList('Timer60')
  290.  
  291.  
  292. def ColorObjectGrad(obj_name, time):
  293.     obj = Bladex.GetEntity(obj_name)
  294.     (r, g, b) = (obj.Color[0] + obj.Data.RVar, obj.Color[1] + obj.Data.GVar, obj.Color[2] + obj.Data.BVar)
  295.     if obj.Data.RVar >= 0.0:
  296.         r = min(r, obj.Data.EndColor[0])
  297.     else:
  298.         r = max(r, obj.Data.EndColor[0])
  299.     if obj.Data.GVar >= 0.0:
  300.         g = min(g, obj.Data.EndColor[1])
  301.     else:
  302.         g = max(g, obj.Data.EndColor[1])
  303.     if obj.Data.BVar >= 0.0:
  304.         b = min(b, obj.Data.EndColor[2])
  305.     else:
  306.         b = max(b, obj.Data.EndColor[2])
  307.     obj.Color = (r, g, b)
  308.     if r == obj.Data.EndColor[0] and g == obj.Data.EndColor[1] and b == obj.Data.EndColor[2]:
  309.         obj.RemoveFromList('Timer60')
  310.         obj.TimerFunc = ''
  311.         if obj.Data.DestroyOnEnd:
  312.             if obj.Data.DestroyOnEnd & DESTROY_METHOD_REMOVE:
  313.                 obj.RemoveFromWorld()
  314.             
  315.             if obj.Data.DestroyOnEnd & DESTROY_METHOD_BIN:
  316.                 obj.SubscribeToList('Pin')
  317.             
  318.         
  319.     
  320.  
  321.  
  322. def ColorObject(obj_name, init_color, end_color, fade_time, destroy = 0):
  323.     obj = Bladex.GetEntity(obj_name)
  324.     init_r = min(max(init_color[0], 0), 255)
  325.     init_g = min(max(init_color[1], 0), 255)
  326.     init_b = min(max(init_color[2], 0), 255)
  327.     end_r = min(max(end_color[0], 0), 255)
  328.     end_g = min(max(end_color[1], 0), 255)
  329.     end_b = min(max(end_color[2], 0), 255)
  330.     obj.Color = (init_r, init_g, init_b)
  331.     InitDataField.Initialise(obj)
  332.     obj.Data.EndColor = (end_r, end_g, end_b)
  333.     obj.Data.RVar = (end_color[0] - init_color[0]) / (60.0 * fade_time)
  334.     obj.Data.GVar = (end_color[1] - init_color[1]) / (60.0 * fade_time)
  335.     obj.Data.BVar = (end_color[2] - init_color[2]) / (60.0 * fade_time)
  336.     obj.Data.DestroyOnEnd = destroy
  337.     obj.TimerFunc = ColorObjectGrad
  338.     obj.SubscribeToList('Timer60')
  339.  
  340.  
  341. def ScaleObjectGrad(obj_name, time):
  342.     obj = Bladex.GetEntity(obj_name)
  343.     obj.Scale = obj.Scale + obj.Data.ScaleVar
  344.     if obj.Data.ScaleVar >= 0.0:
  345.         if obj.Scale >= obj.Data.EndScale:
  346.             obj.Scale = obj.Data.EndScale
  347.             obj.RemoveFromList('Timer60')
  348.             obj.TimerFunc = ''
  349.         
  350.     elif obj.Scale <= obj.Data.EndScale:
  351.         obj.Scale = obj.Data.EndScale
  352.         obj.RemoveFromList('Timer60')
  353.         obj.TimerFunc = ''
  354.     
  355.  
  356.  
  357. def ScaleObject(obj_name, init_scale, end_scale, scale_time):
  358.     obj = Bladex.GetEntity(obj_name)
  359.     obj.Scale = init_scale
  360.     InitDataField.Initialise(obj)
  361.     obj.Data.EndScale = end_scale
  362.     obj.Data.ScaleVar = (end_scale - init_scale) / (60.0 * scale_time)
  363.     obj.TimerFunc = ScaleObjectGrad
  364.     obj.SubscribeToList('Timer60')
  365.  
  366.  
  367. def GlowSizeVariationGrad(light_name, time):
  368.     light = Bladex.GetEntity(light_name)
  369.     light.SizeFactor = light.SizeFactor + light.Data.SizeVar
  370.     if light.Data.SizeVar >= 0.0 and light.SizeFactor >= light.Data.EndSize and light.Data.SizeVar < 0.0 and light.SizeFactor <= light.Data.EndSize:
  371.         light.SizeFactor = light.Data.EndSize
  372.         light.RemoveFromList('Timer30')
  373.         light.TimerFunc = ''
  374.         if light.Data.DestroyOnEnd:
  375.             light.SubscribeToList('Pin')
  376.         
  377.     
  378.  
  379.  
  380. def GlowSizeVariation(light_name, init_size, end_size, var_time, destroy = 0):
  381.     light = Bladex.GetEntity(light_name)
  382.     light.SizeFactor = init_size
  383.     InitDataField.Initialise(light)
  384.     light.Data.EndSize = end_size
  385.     light.Data.SizeVar = (end_size - init_size) / (30.0 * var_time)
  386.     light.Data.DestroyOnEnd = destroy
  387.     light.TimerFunc = GlowSizeVariationGrad
  388.     light.SubscribeToList('Timer30')
  389.  
  390.  
  391. def FadeAndScaleAuraGrad(ent_name, time):
  392.     aura = Bladex.GetEntity(ent_name)
  393.     aura.Data.CurrentSize = aura.Data.CurrentSize + aura.Data.SizeVar
  394.     aura.Data.CurrentAlpha = aura.Data.CurrentAlpha + aura.Data.AlphaVar
  395.     if aura.Data.CurrentAlpha < 0.0:
  396.         aura.Data.CurrentAlpha = 0.0
  397.     elif aura.Data.CurrentAlpha > 1.0:
  398.         aura.Data.CurrentAlpha = 1.0
  399.     
  400.     aura.SetAuraParams(aura.Data.CurrentSize, aura.Data.CurrentAlpha, 1, 0, 0, 1)
  401.     if aura.Data.SizeVar > 0 and aura.Data.CurrentSize >= aura.Data.EndSize and aura.Data.SizeVar < 0 and aura.Data.CurrentSize <= aura.Data.EndSize:
  402.         aura.RemoveFromList(aura.Data.Timer)
  403.         aura.TimerFunc = ''
  404.         if aura.Data.DestroyOnEnd:
  405.             aura.SubscribeToList('Pin')
  406.         else:
  407.             aura.SetAuraParams(aura.Data.EndSize, aura.Data.EndAlpha, 1, 0, 0, 1)
  408.         if aura.Data.OnEndFunc:
  409.             apply(aura.Data.OnEndFunc, aura.Data.OnEndArgs)
  410.         
  411.     
  412.  
  413.  
  414. def FadeAndScaleAura(aura_name, init_size, end_size, init_alpha, end_alpha, time, destroy = 0, OnEndFunc = '', OnEndArgs = (), timer = 'Timer30', timespersec = 30):
  415.     aura = Bladex.GetEntity(aura_name)
  416.     InitDataField.Initialise(aura)
  417.     aura.Data.CurrentSize = init_size
  418.     aura.Data.EndSize = end_size
  419.     aura.Data.SizeVar = (end_size - init_size) / (time * timespersec)
  420.     aura.Data.CurrentAlpha = init_alpha
  421.     aura.Data.EndAlpha = end_alpha
  422.     aura.Data.AlphaVar = (end_alpha - init_alpha) / (time * timespersec)
  423.     aura.Data.DestroyOnEnd = destroy
  424.     aura.Data.OnEndFunc = OnEndFunc
  425.     aura.Data.OnEndArgs = OnEndArgs
  426.     aura.Data.Timer = timer
  427.     aura.TimerFunc = FadeAndScaleAuraGrad
  428.     aura.SubscribeToList(timer)
  429.  
  430.  
  431. def FadeAndScaleGrad(obj_name, time):
  432.     obj = Bladex.GetEntity(obj_name)
  433.     curr_time = Bladex.GetTime() - obj.Data.InitTime
  434.     obj.Alpha = obj.Data.InitAlpha + obj.Data.AlphaInitVel * curr_time + 0.5 * obj.Data.AlphaAcc * curr_time ** 2
  435.     obj.Scale = obj.Data.InitScale + obj.Data.ScaleInitVel * curr_time + 0.5 * obj.Data.ScaleAcc * curr_time ** 2
  436.     if obj.Data.AngleVar:
  437.         (x, y, z) = obj.Data.Axis
  438.         ang = whrandom.uniform(-(obj.Data.AngleVar), obj.Data.AngleVar)
  439.         obj.RotateRel(0, 0, 0, x, y, z, ang)
  440.     
  441.     if curr_time >= obj.Data.TotalTime:
  442.         obj.Alpha = obj.Data.EndAlpha
  443.         obj.Scale = obj.Data.EndScale
  444.         obj.RemoveFromList('Timer30')
  445.         obj.TimerFunc = ''
  446.         if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN:
  447.             obj.SubscribeToList('Pin')
  448.         elif obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  449.             obj.RemoveFromWorld()
  450.         
  451.     
  452.  
  453.  
  454. def FadeAndScale(obj_name, pos, init_alpha, end_alpha, alpha_acc, init_scl, end_scl, scl_acc, time, ang_var = 0, destroy = 0, axis = (0, 0, 1)):
  455.     obj = Bladex.GetEntity(obj_name)
  456.     obj.Alpha = init_alpha
  457.     obj.Scale = init_scl
  458.     obj.Position = pos
  459.     InitDataField.Initialise(obj)
  460.     obj.Data.InitAlpha = init_alpha
  461.     obj.Data.EndAlpha = end_alpha
  462.     obj.Data.AlphaAcc = alpha_acc * 2.0 * (end_alpha - init_alpha) / time ** 2
  463.     obj.Data.AlphaInitVel = (end_alpha - init_alpha - alpha_acc * (end_alpha - init_alpha)) / time
  464.     obj.Data.InitScale = init_scl
  465.     obj.Data.EndScale = end_scl
  466.     obj.Data.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2
  467.     obj.Data.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time
  468.     obj.Data.AngleVar = ang_var
  469.     obj.Data.Axis = axis
  470.     obj.Data.DestroyOnEnd = destroy
  471.     obj.Data.InitTime = Bladex.GetTime()
  472.     obj.Data.TotalTime = time
  473.     obj.TimerFunc = FadeAndScaleGrad
  474.     obj.SubscribeToList('Timer30')
  475.  
  476.  
  477. def ScaleObjectV2Grad(obj_name, time):
  478.     obj = Bladex.GetEntity(obj_name)
  479.     curr_time = Bladex.GetTime() - obj.Data.InitTime
  480.     obj.Scale = obj.Data.InitScale + obj.Data.ScaleInitVel * curr_time + 0.5 * obj.Data.ScaleAcc * curr_time ** 2
  481.     if obj.Data.WhileSclFunc:
  482.         apply(obj.Data.WhileSclFunc, obj.Data.WhileSclArgs)
  483.     
  484.     if curr_time >= obj.Data.TotalTime:
  485.         obj.Scale = obj.Data.EndScale
  486.         obj.RemoveFromList('Timer30')
  487.         obj.TimerFunc = ''
  488.         if obj.Data.EndSclFunc:
  489.             apply(obj.Data.EndSclFunc, obj.Data.EndSclArgs)
  490.         
  491.         if obj.Data.DestroyOnEnd == DESTROY_METHOD_BIN:
  492.             obj.SubscribeToList('Pin')
  493.         elif obj.Data.DestroyOnEnd == DESTROY_METHOD_REMOVE:
  494.             obj.RemoveFromWorld()
  495.         
  496.     
  497.  
  498.  
  499. def ScaleObjectV2(obj_name, init_scl, end_scl, scl_acc, time, WhileSclFunc = '', WhileSclArgs = (), EndSclFunc = '', EndSclArgs = (), destroy = 0):
  500.     obj = Bladex.GetEntity(obj_name)
  501.     obj.Scale = init_scl
  502.     InitDataField.Initialise(obj)
  503.     obj.Data.InitScale = init_scl
  504.     obj.Data.EndScale = end_scl
  505.     obj.Data.ScaleAcc = scl_acc * 2.0 * (end_scl - init_scl) / time ** 2
  506.     obj.Data.ScaleInitVel = (end_scl - init_scl - scl_acc * (end_scl - init_scl)) / time
  507.     obj.Data.WhileSclFunc = WhileSclFunc
  508.     obj.Data.WhileSclArgs = WhileSclArgs
  509.     obj.Data.EndSclFunc = EndSclFunc
  510.     obj.Data.EndSclArgs = EndSclArgs
  511.     obj.Data.DestroyOnEnd = destroy
  512.     obj.Data.InitTime = Bladex.GetTime()
  513.     obj.Data.TotalTime = time
  514.     obj.TimerFunc = ScaleObjectV2Grad
  515.     obj.SubscribeToList('Timer30')
  516.  
  517.  
  518. def SetRadialFireDamageObject(object_name, radius = 500.0, floor_displ = 1000.0, roof_displ = 2000.0):
  519.     (x, y, z) = Bladex.GetEntity(object_name).Position
  520.     dx = radius / 2.0
  521.     dz = radius * (math.sqrt(3.0) / 2.0)
  522.     trsector_name = object_name + '_TrSectorFire'
  523.     Bladex.AddTriggerSector(trsector_name, 'SectoresTriggerFuego', y + floor_displ, y - roof_displ, [
  524.         (x + dx, z + dz),
  525.         (x - dx, z + dz),
  526.         (x - radius, z),
  527.         (x - dx, z - dz),
  528.         (x + dx, z - dz),
  529.         (x + radius, z)])
  530.     darfuncs.FireOnGS(trsector_name)
  531.  
  532.