spaceToSpaceTransition.py (4971B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\view\spaceToSpaceTransition.py 2 import logging 3 import geo2 4 import uthread 5 from eve.client.script.ui.services.viewStateSvc import Transition 6 from fsdBuiltData.common.graphicIDs import GetGraphicFile 7 logger = logging.getLogger(__name__) 8 9 class SpaceToSpaceTransition(Transition): 10 __guid__ = 'viewstate.SpaceToSpaceTransition' 11 12 def __init__(self, sceneManager = None): 13 self.sceneManager = sceneManager 14 if self.sceneManager is None: 15 self.sceneManager = sm.GetService('sceneManager') 16 self.scene = None 17 self.effect = None 18 self.active = False 19 Transition.__init__(self) 20 21 def _GetInflightCamera(self): 22 return sm.GetService('sceneManager').GetActiveSpaceCamera() 23 24 def _GetSolarSystemScene(self, destSolarSystemID): 25 sceneRes = self.sceneManager.GetSceneForSystem(destSolarSystemID) 26 return self.sceneManager.LoadScene(sceneRes, registerKey='default', applyScene=False)[0] 27 28 def _GetClosest(self, position, rowSet, maxDist): 29 closestDist = float('inf') 30 closestPlanet = None 31 for each in rowSet: 32 pos = (each.x, each.y, each.z) 33 dist = geo2.Vec3DistanceSq(position, pos) 34 if dist < maxDist * maxDist and dist < closestDist: 35 closestPlanet = each.itemID 36 closestDist = dist 37 38 return closestPlanet 39 40 def _PrioritizeStargateLoads(self, stargateID, systemId): 41 items = [stargateID] 42 systemItems = sm.GetService('map').GetSolarsystemItems(systemId, False) 43 stargateRow = systemItems.Filter('itemID')[stargateID][0] 44 planet = self._GetClosest((stargateRow.x, stargateRow.y, stargateRow.z), systemItems.Filter('groupID')[const.groupPlanet], maxDist=const.AU * 0.5) 45 if planet is not None: 46 items.append(planet) 47 sm.GetService('space').PrioritizeLoadingForIDs(items) 48 49 def _GetSceneFromPath(self, path): 50 return self.sceneManager.LoadScene(path, registerKey='default', applyScene=False)[0] 51 52 def _ApplySceneInflightAttribs(self, scene): 53 self.sceneManager.ApplyScene(scene, 'default') 54 self.sceneManager.ApplySolarsystemAttributes(scene) 55 self.sceneManager.ApplySceneInflightAttributes(scene) 56 self.sceneManager.AddPersistentUIObjects(scene) 57 58 def _SetScene(self, scene): 59 self.sceneManager.SetActiveScene(scene, 'default') 60 61 def SetTransitionEffect(self, effect): 62 self.effect = effect 63 64 def InitializeGateTransition(self, destSolarSystemID, destObjectID = None): 65 self.active = True 66 self.destObjectID = destObjectID 67 self.destSolarSystemID = destSolarSystemID 68 self.camera = self._GetInflightCamera() 69 self.scene = self._GetSolarSystemScene(destSolarSystemID) 70 uthread.new(self._PrioritizeStargateLoads, destObjectID, destSolarSystemID) 71 72 def InitializeCynoTransition(self, destSolarSystemID): 73 self.active = True 74 self.destSolarSystemID = destSolarSystemID 75 self.camera = self._GetInflightCamera() 76 self.scene = self._GetSolarSystemScene(destSolarSystemID) 77 78 def InitializeWormholeTransition(self, scenePath): 79 self.active = True 80 self.camera = self._GetInflightCamera() 81 self.scene = self._GetSceneFromPath(scenePath) 82 83 def InitializeAbyssalTransition(self, destSolarSystemID, nebulaGraphicID): 84 self.active = True 85 self.camera = self._GetInflightCamera() 86 self.nebulaGraphicID = nebulaGraphicID 87 if nebulaGraphicID: 88 logging.debug('initializing abyssal transition with nebula %s', nebulaGraphicID) 89 nebulaResPath = GetGraphicFile(nebulaGraphicID) 90 self.scene = self.sceneManager.LoadScene(nebulaResPath, registerKey='default', applyScene=False)[0] 91 else: 92 logging.debug('initializing abyssal transition with nebula from solar system %s', destSolarSystemID) 93 self.scene = self._GetSolarSystemScene(destSolarSystemID) 94 95 def Finalize(self): 96 logging.debug('finalizing transition') 97 self._ApplySceneInflightAttribs(self.scene) 98 self.effect.Stop() 99 self.scene = None 100 self.camera = None 101 self.effect = None 102 self.active = False 103 104 def Abort(self): 105 self._ApplySceneInflightAttribs(self.sceneManager.GetRegisteredScene('default')) 106 self.sceneManager.SetRegisteredScenes('default') 107 self.scene = None 108 self.camera = None 109 self.effect = None 110 self.active = False 111 112 def ApplyDestinationScene(self): 113 if self.effect is None or self.scene is None: 114 return 115 self.effect.SetScene(self.scene) 116 self._SetScene(self.scene) 117 118 def StartTransition(self, fromView, toView): 119 self.ApplyDestinationScene() 120 121 def EndTransition(self, fromView, toView): 122 pass