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

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