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

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