MobileWarpDisruptor.py (1951B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\MobileWarpDisruptor.py 2 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject 3 SOUND_EFFECT_EMITTER_NAME = 'forcefield_audio' 4 5 class MobileWarpDisruptor(SpaceObject): 6 7 def Assemble(self): 8 godmaStateManager = self.sm.GetService('godma').GetStateManager() 9 godmaType = godmaStateManager.GetType(self.typeID) 10 self.effectRadius = godmaType.warpScrambleRange 11 if self.model is not None: 12 anchored = not self.isFree 13 if anchored: 14 self.ShowForcefield(animated=False) 15 else: 16 self.SetColor('green') 17 self.ScaleAttenuation(self.effectRadius) 18 19 def ShowForcefield(self, animated = True): 20 self.SetRadius(self.effectRadius) 21 for cs in self.model.Find('trinity.TriCurveSet'): 22 if cs.name == 'Collapse': 23 if animated: 24 cs.Play() 25 else: 26 cs.PlayFrom(cs.GetMaxCurveDuration()) 27 break 28 29 def SetColor(self, col): 30 if col == 'red': 31 self.ShowForcefield() 32 elif col == 'green': 33 self.SetRadius(0.0) 34 self.FadeOutEffectSound() 35 36 def SetRadius(self, r): 37 scale = r / 20000.0 38 for cs in self.model.Find('trinity.TriCurveSet'): 39 if cs.name == 'Collapse': 40 cs.bindings[0].scale = scale 41 break 42 43 def ScaleAttenuation(self, effectRadius): 44 emitter = self.GetNamedAudioEmitterFromObservers(SOUND_EFFECT_EMITTER_NAME) 45 if emitter is not None: 46 emitter.SetAttenuationScalingFactor(effectRadius) 47 48 def FadeOutEffectSound(self): 49 emitter = self.GetNamedAudioEmitterFromObservers(SOUND_EFFECT_EMITTER_NAME) 50 if emitter is not None: 51 emitter.SendEvent('fade_out')