__init__.py (3578B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\root\__init__.py 2 import eveui 3 import threadutils 4 from carbon.common.script.sys.serviceManager import ServiceManager 5 from carbonui.uicore import uicore 6 from dynamicresources.client.ess.bracket.camera import InFlightCameraReference 7 from dynamicresources.client.ess.bracket.root.online import Online 8 from dynamicresources.client.ess.bracket.root.status import Offline 9 from dynamicresources.client.ess.bracket.state_machine import State, StateMachine 10 from dynamicresources.client.ess.bracket.transform import EssRootTransformController 11 from dynamicresources.client.ess.state import EssStatus 12 from dynamicresources.client.service import get_dynamic_resource_service 13 14 class EssBracket(object): 15 __notifyevents__ = ('OnWarpActive', 'OnClientEvent_WarpFinished') 16 17 def __init__(self, item_id): 18 self._item_id = item_id 19 self._closed = False 20 self._ess_root = None 21 self._camera = None 22 self._status_update_token = None 23 self._michelle = ServiceManager.Instance().GetService('michelle') 24 self._scene_manager = ServiceManager.Instance().GetService('sceneManager') 25 self._dynamic_resource_service = get_dynamic_resource_service() 26 self._state_machine = StateMachine() 27 self._init() 28 29 @property 30 def item_id(self): 31 return self._item_id 32 33 @property 34 def ess_root(self): 35 return self._ess_root 36 37 @property 38 def camera(self): 39 return self._camera 40 41 @property 42 def ess_state_provider(self): 43 return self._dynamic_resource_service.ess_state_provider 44 45 @property 46 def layer(self): 47 return uicore.layer.space_ui 48 49 @threadutils.threaded 50 def _init(self): 51 ball = self._wait_for_ball() 52 scene = self._scene_manager.GetRegisteredScene('default') 53 self._ess_root = EssRootTransformController(ess_ball=ball, scene=scene) 54 self._camera = InFlightCameraReference(self._scene_manager) 55 self._on_ess_status_changed() 56 ServiceManager.Instance().RegisterNotify(self) 57 58 def _wait_for_ball(self): 59 ball = None 60 while ball is None: 61 if self._closed: 62 return 63 ball = self._michelle.GetBall(self._item_id) 64 if ball is not None: 65 break 66 eveui.wait_for_next_frame() 67 68 return ball 69 70 def _on_ess_status_changed(self, *_args): 71 if self._closed: 72 return 73 (status, in_range), self._status_update_token = self.ess_state_provider.select(self._on_ess_status_changed, lens=lambda state: (state.status, state.in_range)) 74 if status == EssStatus.loading or self._michelle.InWarp(): 75 self._state_machine.move_to(Hidden()) 76 elif status == EssStatus.offline: 77 self._state_machine.move_to(Offline(self)) 78 elif status == EssStatus.online: 79 self._state_machine.move_to(Online(self)) 80 81 def close(self): 82 if self._status_update_token: 83 self._status_update_token.unsubscribe() 84 self._state_machine.close() 85 ServiceManager.Instance().UnregisterNotify(self) 86 self._closed = True 87 88 def OnWarpActive(self, _warp_to_item_id, _warp_to_type_id): 89 self._on_ess_status_changed() 90 91 def OnClientEvent_WarpFinished(self, _warp_to_item_id, _warp_to_type_id): 92 self._on_ess_status_changed() 93 94 95 class Hidden(State): 96 pass 97 98 99 from dynamicresources.client.ess.bracket.debug import __reload_update__