camera_facing_container.py (2879B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\battleground_capture_point_ui\client\camera_facing_container.py 2 import weakref 3 import eveui 4 import trinity 5 import uthread2 6 from battleground_capture_point_ui.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 CameraFacingUiContainer(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 self.cameraThresholdingEnabled = True 23 super(CameraFacingUiContainer, self).__init__(name='camera_facing_ui_cont', transform=self._transform, layer=parent, camera=camera, collapse_at_camera_distance=100000.0, clipping_dead_zone=50) 24 self._ui = Transform(name='mainCont', width=50, height=50, scalingCenter=(0.5, 0.5), align=uiconst.CENTER, state=uiconst.UI_HIDDEN) 25 self.tracker.add(self._ui, offset=(-25, -25)) 26 uthread2.start_tasklet(self._camera_update_loop) 27 28 def SetCameraThresholdingEnabled(self, enabled): 29 self.cameraThresholdingEnabled = enabled 30 31 def _show(self): 32 if not self.is_showing: 33 uicore.animations.Tr2DScaleIn(self._ui, duration=0.25) 34 self._ui.state = uiconst.UI_DISABLED 35 self.is_showing = True 36 37 def _hide(self): 38 if self.is_showing: 39 uicore.animations.Tr2DScaleOut(self._ui, startScale=(1.0, 1.0), endScale=(0.0, 0.0), duration=0.25, sleep=True) 40 self._ui.state = uiconst.UI_HIDDEN 41 self.is_showing = False 42 43 def _camera_update_loop(self): 44 while self.run_camera_update_loop: 45 if not self.cameraThresholdingEnabled: 46 self._show() 47 else: 48 distance = self._camera.distance_from_transform(self._transform) 49 if distance < SCALING_BILLBOARD_THRESHOLD and not self.is_showing: 50 self._show() 51 elif distance > SCALING_BILLBOARD_THRESHOLD and self.is_showing: 52 self._hide() 53 eveui.wait_for_next_frame() 54 55 def remove_from_space(self): 56 self.run_camera_update_loop = False 57 scene = self._scene_ref() 58 self.tracker.remove(self._ui) 59 if scene is not None: 60 scene.uiObjects.fremove(self._transform) 61 62 @property 63 def content_bounds(self): 64 return get_absolute_bounds(self._ui) 65 66 def expand(self): 67 pass 68 69 def collapse(self, lock = False): 70 pass