beacon_ui_container.py (3046B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\analysisbeacon\client\beacon_ui_container.py 2 import math 3 import weakref 4 import eveui 5 import geo2 6 import trinity 7 import uthread2 8 from analysisbeacon.client.const import SCALING_BILLBOARD_THRESHOLD 9 from carbonui import uiconst 10 from carbonui.primitives.transform import Transform 11 from carbonui.ui3d import InSceneContainer 12 from carbonui.uicore import uicore 13 14 class BeaconUiContainer(InSceneContainer): 15 16 def __init__(self, ball, scene, camera): 17 self._scale = 10000 18 self._scene_ref = weakref.ref(scene) 19 self.run_camera_update_loop = True 20 self._camera = camera 21 self.transform = trinity.EveRootTransform() 22 self.transform.translationCurve = ball 23 scene.uiObjects.append(self.transform) 24 self.is_showing = True 25 super(BeaconUiContainer, self).__init__(name='CrabTimerRing', state=uiconst.UI_DISABLED, scene=scene, sceneParent=scene.uiObjects, parentTransform=self.transform, trackType=self.TRACKTYPE_TRANSFORM, width=500, height=500, clearBackground=True, backgroundColor=(0.0, 0.0, 0.0, 0.0), renderJob=uicore.uilib.GetRenderJob(), isFullscreen=False) 26 self.transform.scaling = (self._scale, self._scale, self._scale) 27 self.transform.translation = (0.0, 0.0, 0.0) 28 self.transform.rotation = geo2.QuaternionRotationSetYawPitchRoll(0, -math.pi / 2.0, 0) 29 self.mainCont = Transform(parent=self, name='mainCont', scalingCenter=(0.5, 0.5), align=uiconst.TOALL) 30 uthread2.start_tasklet(self._camera_update_loop) 31 32 def _update_loop(self): 33 counter = 0.0 34 while not self.destroyed: 35 eveui.wait_for_next_frame() 36 self.transform.translation = (0.0, 100 * math.sin(counter), 0.0) 37 counter += 0.01 38 39 def _camera_update_loop(self): 40 while self.run_camera_update_loop: 41 distance = self._camera.distance_from_transform(self.transform) 42 if distance > SCALING_BILLBOARD_THRESHOLD and self.is_showing: 43 uicore.animations.Tr2DScaleOut(self.mainCont, startScale=(1.0, 1.0), endScale=(0.0, 0.0), duration=0.25, sleep=True) 44 self.mainCont.Hide() 45 self.is_showing = False 46 elif distance < SCALING_BILLBOARD_THRESHOLD and not self.is_showing: 47 self.mainCont.Show() 48 uicore.animations.Tr2DScaleIn(self.mainCont, duration=0.25, sleep=True) 49 self.is_showing = True 50 eveui.wait_for_next_frame() 51 52 @property 53 def scale(self): 54 return float(self._scale) 55 56 @scale.setter 57 def scale(self, scale): 58 self._scale = scale 59 60 def remove_from_space(self): 61 self.run_camera_update_loop = False 62 scene = self._scene_ref() 63 if scene is not None: 64 scene.uiObjects.fremove(self.transform) 65 self.Close() 66 67 def __del__(self): 68 scene = self._scene_ref() 69 if scene is not None: 70 scene.uiObjects.fremove(self.transform)