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

transform.py (2251B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\transform.py
      2 import weakref
      3 import codereload
      4 import enum
      5 import eveui
      6 import geo2
      7 import threadutils
      8 import trinity
      9 
     10 class EssRootTransformController(object):
     11 
     12     def __init__(self, ess_ball, scene):
     13         self._scene_ref = weakref.ref(scene)
     14         self.transform = trinity.EveRootTransform()
     15         self.transform.translationCurve = ess_ball
     16         scene.uiObjects.append(self.transform)
     17 
     18     def __del__(self):
     19         scene = self._scene_ref()
     20         if scene is not None:
     21             scene.uiObjects.fremove(self.transform)
     22 
     23     @property
     24     def world_position(self):
     25         _, _, position = geo2.MatrixDecompose(self.transform.worldTransform)
     26         return position
     27 
     28 
     29 @codereload.reloadable_enum
     30 
     31 class BankTransformSide(enum.IntEnum):
     32     left = 1
     33     right = 2
     34 
     35 
     36 class BankPanelTransformController(object):
     37 
     38     def __init__(self, root, camera, side = None, offset_y = 0.0, radius = 0.0):
     39         self.root = root
     40         self.camera = camera
     41         self.offset_y = offset_y
     42         self.radius = radius
     43         self.side = BankTransformSide(side) if side is not None else None
     44         self._closed = False
     45         self.transform = trinity.EveTransform()
     46         self.root.transform.children.append(self.transform)
     47         self._start_update_loop()
     48 
     49     def __del__(self):
     50         if not self._closed:
     51             self.close()
     52 
     53     def close(self):
     54         if not self._closed:
     55             self._closed = True
     56             self.root.transform.children.fremove(self.transform)
     57             self.root = None
     58 
     59     @threadutils.threaded
     60     def _start_update_loop(self):
     61         while not self._closed:
     62             if self.side is None:
     63                 tangent = (0, 0, 0)
     64             elif self.side == BankTransformSide.left:
     65                 tangent = self.camera.left
     66             elif self.side == BankTransformSide.right:
     67                 tangent = self.camera.right
     68             else:
     69                 raise RuntimeError('Unknown side {!r}'.format(self.side))
     70             self.transform.translation = geo2.Vec3Add((0, self.offset_y, 0), geo2.Vec3Scale(tangent, self.radius))
     71             eveui.wait_for_next_frame()