NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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')