camera_facing_ui_container.py (2572B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\analysisbeacon\client\camera_facing_ui_container.py 2 import weakref 3 import eveui 4 import trinity 5 import uthread2 6 from analysisbeacon.client.const import SCALING_BILLBOARD_THRESHOLD 7 from carbonui import uiconst 8 from carbonui.primitives.transform import Transform 9 from carbonui.uicore import uicore 10 from dynamicresources.client.ess.bracket.panel import BracketPanel, get_absolute_bounds 11 12 class BeaconCameraFacingUiContainer(BracketPanel): 13 14 def __init__(self, parent, ball, camera, scene): 15 self._transform = trinity.EveRootTransform() 16 self._transform.translationCurve = ball 17 scene.uiObjects.append(self._transform) 18 self._scene_ref = weakref.ref(scene) 19 self.run_camera_update_loop = True 20 self._camera = camera 21 self.is_showing = True 22 super(BeaconCameraFacingUiContainer, self).__init__(name='beacon_camera_facing_ui_cont', transform=self._transform, layer=parent, camera=camera, collapse_at_camera_distance=100000.0, clipping_dead_zone=50) 23 self._ui = Transform(name='mainCont', width=50, height=50, scalingCenter=(0.5, 0.5), align=uiconst.CENTER, state=uiconst.UI_HIDDEN) 24 self.tracker.add(self._ui, offset=(-25, -25)) 25 uthread2.start_tasklet(self._camera_update_loop) 26 27 def hide_gauge(self): 28 self._ui.state = uiconst.UI_HIDDEN 29 self.is_showing = False 30 31 def show_gauge(self): 32 self._ui.state = uiconst.UI_DISABLED 33 self.is_showing = True 34 35 def remove_from_space(self): 36 self.run_camera_update_loop = False 37 scene = self._scene_ref() 38 self.tracker.remove(self._ui) 39 if scene is not None: 40 scene.uiObjects.fremove(self._transform) 41 42 def _camera_update_loop(self): 43 while self.run_camera_update_loop: 44 distance = self._camera.distance_from_transform(self._transform) 45 if distance > SCALING_BILLBOARD_THRESHOLD and not self.is_showing: 46 self.show_gauge() 47 uicore.animations.Tr2DScaleIn(self._ui, duration=0.25) 48 elif distance < SCALING_BILLBOARD_THRESHOLD and self.is_showing: 49 uicore.animations.Tr2DScaleOut(self._ui, startScale=(1.0, 1.0), endScale=(0.0, 0.0), duration=0.25, sleep=True) 50 self.hide_gauge() 51 eveui.wait_for_next_frame() 52 53 @property 54 def content_bounds(self): 55 return get_absolute_bounds(self._ui) 56 57 def expand(self): 58 pass 59 60 def collapse(self, lock = False): 61 pass