public CameraMovementJobManager() { this.MainCamera = Camera.main; this.CameraPivotPointTransform = new TransformAccessArray(new Transform[] { GameObject.FindGameObjectWithTag(TagConstants.CAMERA_PIVOT_POINT_TAG).transform }); this.CameraMovementJob = new CameraMovementJob(new NativeArray <CameraMovementJobState>(1, Allocator.Persistent)); this._cameraOrientationSystem = new CameraOrientationSystem(GameInputManager.Get()); this.CameraPanningSystem = new CameraPanningSystem(CameraConfigurationGameObject.Get().CameraMovementConfiguration); this.CameraVerticalRotationSystem = new CameraVerticalRotationSystem(CameraConfigurationGameObject.Get().CameraMovementConfiguration); this._cameraZoomSystem = new CameraZoomSystem(this.MainCamera, GameInputManager.Get()); /// InitState state var CameraMovementJobStateStruct = this.CameraMovementJob.GetCameraMovementJobState(); CameraMovementJobStateStruct.CameraObject.Initialize(this.CameraPivotPointTransform[0], this.MainCamera); this._cameraZoomSystem.InitState(ref CameraMovementJobStateStruct); this.CameraVerticalRotationSystem.InitState(ref CameraMovementJobStateStruct); this.CameraMovementJob.SetCameraMovementJobState(CameraMovementJobStateStruct); }
public void Execute(int index, TransformAccess transform) { var CameraMovementJobStateStruct = this.CameraMovementJobState[0]; var cameraFollowPosition = CameraFollowSystem.CameraFollowTargetMovement(ref CameraMovementJobStateStruct); var cameraDeltaRotation = CameraOrientationSystem.CameraRotation(in CameraMovementJobStateStruct); var cameraPanningDeltaPosition = CameraPanningSystem.CameraPanningMovement(ref CameraMovementJobStateStruct); var cameraVerticalRotationDelta = CameraVerticalRotationSystem.CameraVerticalRotation(ref CameraMovementJobStateStruct); var cameraZoomValue = CameraZoomSystem.CameraZoom(ref CameraMovementJobStateStruct); var CameraObject = CameraMovementJobStateStruct.CameraObject; var rotation = math.mul(cameraDeltaRotation, CameraObject.CameraPivotPointTransformWithoutOffset.rot); CameraObject.CameraPivotPointTransformWithoutOffset = new RigidTransform(rotation, cameraFollowPosition); CameraObject.CameraSize = cameraZoomValue; CameraMovementJobStateStruct.CameraObject = CameraObject; this.CameraMovementJobState[0] = CameraMovementJobStateStruct; transform.position = cameraFollowPosition + cameraPanningDeltaPosition; transform.rotation = math.mul(rotation, cameraVerticalRotationDelta); }