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

jumpCamera.py (2977B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\camera\jumpCamera.py
      2 import blue
      3 from eve.client.script.ui.camera.baseSpaceCamera import BaseSpaceCamera
      4 from eve.client.script.ui.camera.cameraUtil import IsValidSpaceCameraPosition
      5 import evecamera
      6 import geo2
      7 import logging
      8 logger = logging.getLogger(__name__)
      9 
     10 class JumpCamera(BaseSpaceCamera):
     11     name = 'JumpCamera'
     12     cameraID = evecamera.CAM_JUMP
     13     default_fov = 1.0
     14 
     15     def __init__(self):
     16         BaseSpaceCamera.__init__(self)
     17         self.bp = None
     18         self.oldCameraZoom = 0
     19         self.egoPos = None
     20 
     21     def OnActivated(self, lastCamera = None, itemID = None, **kwargs):
     22         BaseSpaceCamera.OnActivated(self, **kwargs)
     23         self.bp = sm.GetService('michelle').GetBallpark()
     24         if lastCamera and lastCamera.cameraID in evecamera.INSPACE_CAMERAS:
     25             lastAtPos = lastCamera.atPosition
     26             if lastCamera.cameraID == evecamera.CAM_TACTICAL:
     27                 lastAtPos = lastCamera.GetAtPositionClosestToShip()
     28             if not self.SetEyeAndAtPosition(lastCamera.eyePosition, lastAtPos):
     29                 logger.warning('JumpCamera: Previous camera has invalid positions, keeping current ones. %s', lastCamera)
     30             self.oldCameraZoom = super(JumpCamera, self).GetZoom()
     31             self.fov = lastCamera.fov
     32         self.SetFovTarget(self.default_fov)
     33         self.egoPos = self.bp.GetCurrentEgoPos() if self.bp else None
     34 
     35     def SetEyeAndAtPosition(self, eyePos, atPos):
     36         if eyePos == atPos or not IsValidSpaceCameraPosition(eyePos) or not IsValidSpaceCameraPosition(atPos):
     37             return False
     38         self._atPosition = atPos
     39         self.eyePosition = eyePos
     40         return True
     41 
     42     def GetZoom(self):
     43         return self.oldCameraZoom
     44 
     45     @property
     46     def transitionDelay(self):
     47         if sm.GetService('subway').Enabled():
     48             return 0.7 / blue.os.simDilation
     49         else:
     50             return 0.1
     51 
     52     def GetItemID(self):
     53         return self.ego
     54 
     55     def IsLocked(self):
     56         return True
     57 
     58     def Track(self, itemID, **kwargs):
     59         pass
     60 
     61     def LookAt(self, itemID, radius = None, **kwargs):
     62         if kwargs.get('force', False):
     63             super(BaseSpaceCamera, self).LookAt(itemID, radius, **kwargs)
     64 
     65     def OnBallRemoved(self, ball):
     66         if ball.id == self.ego:
     67             self.bp = None
     68 
     69     def Update(self):
     70         BaseSpaceCamera.Update(self)
     71         if not self.bp:
     72             return
     73         newPos = self.bp.GetCurrentEgoPos()
     74         if self.egoPos is None:
     75             self.egoPos = newPos
     76             return
     77         diff = geo2.Vec3SubtractD(newPos, self.egoPos)
     78         self.egoPos = newPos
     79         atPos = geo2.Vec3SubtractD(self._atPosition, diff)
     80         eyePos = geo2.Vec3SubtractD(self._eyePosition, diff)
     81         if not self.SetEyeAndAtPosition(eyePos, atPos):
     82             logger.warning('JumpCamera: Ignoring ego position jump of %r, %s', diff, self)