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

shipOrbitRestrictedCamera.py (3312B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\camera\shipOrbitRestrictedCamera.py
      2 import evecamera
      3 from eve.client.script.ui.camera import cameraUtil
      4 from eve.client.script.ui.camera.shipOrbitCamera import ShipOrbitCamera
      5 import logging
      6 logger = logging.getLogger(__name__)
      7 
      8 class RestrictedShipOrbitCamera(ShipOrbitCamera):
      9     cameraID = evecamera.CAM_SHIPORBIT_RESTRICTED
     10     name = 'ShipOrbitCamera'
     11 
     12     def __init__(self):
     13         self.isLocked = False
     14         self.isRotationEnabled = True
     15         self.ResetZoom()
     16         ShipOrbitCamera.__init__(self)
     17 
     18     def OnActivated(self, **kwargs):
     19         super(RestrictedShipOrbitCamera, self).OnActivated(**kwargs)
     20 
     21     def ResetZoom(self):
     22         self.lockedMinZoom = None
     23         self.lockedMaxZoom = None
     24 
     25     def IsMinZoomValid(self, minZoom, maxZoom):
     26         return not minZoom or not maxZoom or minZoom > maxZoom
     27 
     28     def CorrectMinZoom(self, minZoom, maxZoom):
     29         if self.IsMinZoomValid(minZoom, maxZoom):
     30             return minZoom
     31         return maxZoom + 1
     32 
     33     def SqueezeZoom(self, minZoom, maxZoom):
     34         self.lockedMaxZoom = maxZoom
     35         if self.lockedMaxZoom:
     36             self.SetMaxZoom(self.lockedMaxZoom)
     37         self.lockedMinZoom = self.CorrectMinZoom(minZoom, self.lockedMaxZoom)
     38         if self.lockedMinZoom:
     39             self.SetMinZoom(self.lockedMinZoom)
     40 
     41     def SqueezePitch(self, minPitch, maxPitch):
     42         self.kMinPitch = max(minPitch, self.kMinPitch)
     43         self.kMaxPitch = min(maxPitch, self.kMaxPitch)
     44         currentPitch = self.GetPitch()
     45         desiredPitch = self.ClampPitch(currentPitch)
     46         self.SetPitch(desiredPitch)
     47 
     48     def UpdateMaxZoom(self):
     49         ball = self.lookAtBall
     50         nearClip = self.nearClip
     51         ballMaxZoom = cameraUtil.GetBallMaxZoom(ball, nearClip)
     52         newMaxZoom = max(ballMaxZoom, self.lockedMaxZoom or 0.0)
     53         newMinZoom = self.CorrectMinZoom(self.lockedMinZoom, newMaxZoom)
     54         if newMinZoom:
     55             self.SetMinMaxZoom(newMinZoom, newMaxZoom)
     56         else:
     57             self.SetMaxZoom(newMaxZoom)
     58 
     59     def Lock(self, minZoom, maxZoom, minPitch, maxPitch, isRotationEnabled):
     60         self.isLocked = True
     61         if not isRotationEnabled:
     62             self.DisableRotation()
     63         self.SqueezeZoom(minZoom, maxZoom)
     64         self.SqueezePitch(minPitch, maxPitch)
     65 
     66     def Unlock(self):
     67         self.isLocked = False
     68         self.EnableRotation()
     69         self.ResetZoom()
     70 
     71     def IsLocked(self):
     72         return self.isLocked
     73 
     74     def EnableRotation(self):
     75         self.isRotationEnabled = True
     76         self.EnableManualControl()
     77 
     78     def DisableRotation(self):
     79         self.isRotationEnabled = False
     80         self.DisableManualControl()
     81 
     82     def Orbit(self, *args, **kwargs):
     83         if self.isRotationEnabled:
     84             super(RestrictedShipOrbitCamera, self).Orbit(*args, **kwargs)
     85 
     86     def Rotate(self, *args, **kwargs):
     87         if self.isRotationEnabled:
     88             super(RestrictedShipOrbitCamera, self).Rotate(*args, **kwargs)
     89 
     90     def Track(self, *args, **kwargs):
     91         if self.isRotationEnabled:
     92             super(RestrictedShipOrbitCamera, self).Track(*args, **kwargs)
     93 
     94     def RegisterActivated(self):
     95         settings.char.ui.Set('spaceCameraID', evecamera.CAM_SHIPORBIT_RESTRICTED)