ChildEffect.py (2778B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\effects\ChildEffect.py 2 from eve.client.script.environment.effects.GenericEffect import GenericEffect, STOP_REASON_DEFAULT, STOP_REASON_BALL_REMOVED 3 import trinity 4 import os.path as path 5 from eve.common.lib import appConst as const 6 from uthread2 import call_after_simtime_delay 7 8 class ChildEffect(GenericEffect): 9 __guid__ = 'effects.ChildEffect' 10 11 def __init__(self, trigger, effect = None, graphicFile = None): 12 super(ChildEffect, self).__init__(trigger, effect, graphicFile) 13 self.ball = self.GetEffectShipBall() 14 fileName = path.basename(self.graphicFile) 15 self.fxName = path.splitext(fileName)[0].lower() 16 self.effect = trinity.Load(self.graphicFile) 17 self.timeFromStart = trigger.timeFromStart 18 self.lingerOnDeathTimer = 0.0 19 if self.graphicInfo is not None and hasattr(self.graphicInfo, 'get'): 20 self.lingerOnDeathTimer = self.graphicInfo.get('lingerOnDeathTimer') or 0.0 21 22 def Start(self, duration): 23 self._AddEffectToTarget() 24 curveSets = self.effect.curveSets 25 secondsFromStart = self.timeFromStart / float(const.SEC) 26 if len(curveSets) > 0: 27 if self.scaleTime: 28 length = self.effect.curveSets[0].GetMaxCurveDuration() 29 if length > 0.0: 30 scaleValue = length / (duration / 1000.0) 31 self.effect.curveSets[0].scale = scaleValue 32 curveSets[0].PlayFrom(secondsFromStart) 33 if hasattr(self.effect, 'controllers'): 34 self.effect.SetControllerVariable('elapsedTime', secondsFromStart) 35 self.effect.StartControllers() 36 37 def _CleanUp(self): 38 self._RemoveEffectFromTarget() 39 self.effect = None 40 self.ball = None 41 42 def Stop(self, reason = STOP_REASON_DEFAULT): 43 if self.lingerOnDeathTimer > 0.0 and reason != STOP_REASON_BALL_REMOVED: 44 call_after_simtime_delay(self._CleanUp, self.lingerOnDeathTimer) 45 else: 46 self._CleanUp() 47 48 def Repeat(self, duration): 49 self._RemoveEffectFromTarget() 50 self._AddEffectToTarget() 51 52 def _AddEffectToTarget(self): 53 if not hasattr(self.ball, 'model') or self.ball.model is None: 54 return False 55 if len(self.ball.model.effectChildren) > 0: 56 for child in self.ball.model.effectChildren: 57 if child.name.lower() == self.fxName: 58 return False 59 60 try: 61 self.ball.AddChildEffect(self.effect) 62 return True 63 except AttributeError: 64 return False 65 66 def _RemoveEffectFromTarget(self): 67 self.ball.RemoveChildEffect(self.effect)