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

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()