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)