Exemplo n.º 1
0
        public void InitCamera(NodeAddedEvent evt, SpectatorTransitionCameraNode transitionCameraNode, TankNode tank, [Context, JoinByTank] WeaponNode weapon, [JoinByUser] FollowedUserNode followedUser)
        {
            float flyTimeSec = 0.55f;
            float flyHeight  = 1f;

            if (transitionCameraNode.transitionCamera.Spawn)
            {
                SpawnCameraConfigUnityComponent spawnCameraConfigUnity = transitionCameraNode.spawnCameraConfigUnity;
                flyTimeSec = spawnCameraConfigUnity.FlyTimeSec;
                flyHeight  = spawnCameraConfigUnity.FlyHeight;
            }
            else
            {
                TransitionCameraConfigUnityComponent transitionCameraConfigUnity = transitionCameraNode.transitionCameraConfigUnity;
                flyTimeSec = transitionCameraConfigUnity.FlyTimeSec;
                flyHeight  = transitionCameraConfigUnity.FlyHeight;
            }
            CameraType type = transitionCameraNode.transitionCamera.CameraSaveData.Type;

            if (type == CameraType.Follow)
            {
                this.InitFollowCamera(transitionCameraNode, weapon, tank, flyTimeSec, flyHeight);
            }
            else if (type == CameraType.MouseOrbit)
            {
                TransformData data = MouseOrbitCameraUtils.GetTargetMouseOrbitCameraTransformData(weapon.cameraTarget.TargetObject.transform, transitionCameraNode.transitionCamera.CameraSaveData.MouseOrbitDistance, transitionCameraNode.transitionCamera.CameraSaveData.MouseOrbitTargetRotation);
                InitCamera(transitionCameraNode, data.Position, data.Rotation.eulerAngles, flyTimeSec, flyHeight);
            }
        }
Exemplo n.º 2
0
        public void UpdateCamera(TimeUpdateEvent e, SpectatorTransitionCameraNode transitionCameraNode, [JoinAll] Optional <SingleNode <CameraTargetComponent> > target)
        {
            CameraSaveData cameraSaveData = transitionCameraNode.transitionCamera.CameraSaveData;

            if ((cameraSaveData.Type == CameraType.Free) || target.IsPresent())
            {
                UpdateCamera(e.DeltaTime, transitionCameraNode);
                ApplyCameraTransformEvent eventInstance = ApplyCameraTransformEvent.ResetApplyCameraTransformEvent();
                eventInstance.PositionSmoothingRatio = SPECTATOR_TRANSITION_CAMERA_POSITION_SMOOTHING_RATIO;
                eventInstance.RotationSmoothingRatio = SPECTATOR_TRANSITION_CAMERA_ROTATION_SMOOTHING_RATIO;
                eventInstance.DeltaTime = e.DeltaTime;
                base.ScheduleEvent(eventInstance, transitionCameraNode);
                if (transitionCameraNode.transitionCamera.TransitionComplete)
                {
                    CameraType type = cameraSaveData.Type;
                    if (type == CameraType.Follow)
                    {
                        transitionCameraNode.bezierPosition.BezierPosition.SetBaseRatio(cameraSaveData.FollowCameraBezierPositionRatio);
                        transitionCameraNode.bezierPosition.BezierPosition.SetRatioOffset(cameraSaveData.FollowCameraBezierPositionRatioOffset);
                        transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraFollowState>();
                    }
                    else if (type == CameraType.MouseOrbit)
                    {
                        MouseOrbitCameraComponent mouseOrbitCamera = transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraOrbitState>().mouseOrbitCamera;
                        mouseOrbitCamera.distance       = cameraSaveData.MouseOrbitDistance;
                        mouseOrbitCamera.targetRotation = cameraSaveData.MouseOrbitTargetRotation;
                    }
                    else if (type == CameraType.Free)
                    {
                        transitionCameraNode.cameraESM.Esm.ChangeState <CameraStates.CameraFreeState>();
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void InitCamera(NodeAddedEvent evt, SpectatorTransitionCameraNode transitionCameraNode)
        {
            TransitionCameraConfigUnityComponent transitionCameraConfigUnity = transitionCameraNode.transitionCameraConfigUnity;

            if (transitionCameraNode.transitionCamera.CameraSaveData.Type == CameraType.Free)
            {
                TransformData transformData = transitionCameraNode.transitionCamera.CameraSaveData.TransformData;
                Vector3       position      = transformData.Position;
                InitCamera(transitionCameraNode, position, transformData.Rotation.eulerAngles, transitionCameraConfigUnity.FlyTimeSec, transitionCameraConfigUnity.FlyHeight);
            }
        }