home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 56 / CDPowerplay56Disc2.iso / demos / blade / data1.cab / Program_Executable_Files / Lib / AuxFuncs.py < prev    next >
Encoding:
Python Source  |  2000-10-27  |  16.6 KB  |  505 lines

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