cameraSpeedOffsetter.py (1766B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\camera\util\cameraSpeedOffsetter.py 2 import math 3 import blue 4 import geo2 5 from carbonui.uianimations import animations 6 from eve.client.script.ui.camera.cameraUtil import IsDynamicCameraMovementEnabled, GetBallRadius, GetSpeedDirection, Vector3Chaser 7 K_OFFSET = 350.0 8 9 class CameraSpeedOffsetter: 10 11 def __init__(self): 12 self.speedDir = None 13 self.offset = (0, 0, 0) 14 self.vectorChaser = Vector3Chaser(speed=1.0) 15 self.rampValue = 0.0 16 17 def Reset(self): 18 self.vectorChaser.ResetValue() 19 20 def GetSpeedOffset(self): 21 return self.vectorChaser.GetValue() 22 23 def _Update(self, ball, maxZoom, isTracking): 24 if IsDynamicCameraMovementEnabled() and not isTracking: 25 speedProp = self._GetSpeedOffsetProportion(ball) 26 maxOffset = min(0.95 * maxZoom - GetBallRadius(ball), GetBallRadius(ball)) 27 offsetAmount = maxOffset * speedProp * self.rampValue 28 speedDir = GetSpeedDirection(ball) 29 self.offset = geo2.Vec3Scale(speedDir, offsetAmount) 30 else: 31 self.offset = (0, 0, 0) 32 self.vectorChaser.SetTargetValue(self.offset) 33 34 def _GetSpeedOffsetProportion(self, ball): 35 speed = self.GetLookAtBallSpeed(ball) 36 velocity = geo2.Vec3Length(speed) 37 if velocity <= 0.0: 38 return 0.0 39 else: 40 return math.exp(-K_OFFSET / velocity) 41 42 def GetLookAtBallSpeed(self, ball): 43 vec = ball.GetVectorDotAt(blue.os.GetSimTime()) 44 vec = (vec.x, vec.y, vec.z) 45 return vec 46 47 def OnActivated(self): 48 animations.MorphScalar(self, 'rampValue', 0.0, 1.0, duration=2.0) 49 self.Reset()