camera.py (1493B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\client\ess\bracket\camera.py 2 import geo2 3 4 class CameraReference(object): 5 6 def get_camera(self): 7 raise NotImplementedError() 8 9 @property 10 def is_valid(self): 11 return self.get_camera() is not None 12 13 @property 14 def world_position(self): 15 if not self.is_valid: 16 return (0, 0, 0) 17 return self.get_camera().GetEyePosition() 18 19 @property 20 def up(self): 21 if not self.is_valid: 22 return (0, 1.0, 0) 23 return geo2.Vec3Normalize(self.get_camera().GetYAxis()) 24 25 @property 26 def forward(self): 27 if not self.is_valid: 28 return (0, 0, 1.0) 29 return self.get_camera().GetLookAtDirection() 30 31 @property 32 def left(self): 33 return geo2.Vec3Cross(self.up, geo2.Vec3Scale(self.forward, -1.0)) 34 35 @property 36 def right(self): 37 return geo2.Vec3Cross(self.up, self.forward) 38 39 def distance_from(self, position): 40 return geo2.Vec3Length(geo2.Vec3Subtract(position, self.world_position)) 41 42 def distance_from_transform(self, transform): 43 _, _, position = geo2.MatrixDecompose(transform.worldTransform) 44 return self.distance_from(position) 45 46 47 class InFlightCameraReference(CameraReference): 48 49 def __init__(self, scene_manager): 50 self._scene_manager = scene_manager 51 52 def get_camera(self): 53 return self._scene_manager.GetActiveSpaceCamera()