예제 #1
0
        private void Handle(PlayerEntity player, IUserCmd cmd)
        {
            if (!player.hasCameraStateNew)
            {
                return;
            }
            if (!player.hasCameraStateOutputNew)
            {
                return;
            }

            DummyCameraMotorState.Convert(player.cameraStateNew, _state);

            var archotRotation = player.cameraArchor.ArchorEulerAngle;

            if (player.cameraStateNew.CameraMotorInput == null)
            {
                player.cameraStateNew.CameraMotorInput = new DummyCameraMotorInput();
            }
            DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput;

            _input.Generate(_contexts, player, cmd, archotRotation.y, archotRotation.x, _state);

            for (int i = 0; i < (int)SubCameraMotorType.End; i++)
            {
                var type = (SubCameraMotorType)i;
                PreProcessInput(player, _input, _motors.GetDict(type), _state.Get(type), _state);
            }
            DummyCameraMotorState.Convert(_state, player.cameraStateNew);
        }
예제 #2
0
        private void UpdateCamera(IUserCmdOwner owner, IUserCmd cmd)
        {
            PlayerEntity player = owner.OwnerEntity as PlayerEntity;

            if (!player.hasCameraStateNew)
            {
                return;
            }
            if (!player.hasCameraStateOutputNew)
            {
                return;
            }
//            var finalOutput = player.cameraStateOutputNew;
            DummyCameraMotorState.Convert(player.cameraStateNew, _state);


            var archotRotation = player.cameraArchor.ArchorEulerAngle;

            if (player.cameraStateNew.CameraMotorInput == null)
            {
                player.cameraStateNew.CameraMotorInput = new DummyCameraMotorInput();
            }
            DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput;

            _input.Generate(player, cmd, archotRotation.y, archotRotation.x);
            foreach (SubCameraMotorType i in _subCameraMotorTypeArray)
            {
                var type = i;
                PreProcessInput(player, _input, _motors.GetDict(type), _state.Get(type), _state);
            }

            DummyCameraMotorState.Convert(_state, player.cameraStateNew);
        }
예제 #3
0
        private void Handle(PlayerEntity player, IUserCmd cmd)
        {
            if (!player.hasCameraStateNew)
            {
                return;
            }
            if (!player.hasCameraStateOutputNew)
            {
                return;
            }
            if (player.cameraStateNew.CameraMotorInput == null)
            {
                player.cameraStateNew.CameraMotorInput = new DummyCameraMotorInput();
            }

            DummyCameraMotorState.Convert(player.cameraStateNew, _state);
            DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput;

            _input.Generate(player, cmd, _state, LockView);

            for (int i = 0; i < (int)SubCameraMotorType.End; i++)
            {
                var type = (SubCameraMotorType)i;
                PreProcessInput(player, _input, _motors.GetDict(type), _state.Get(type), _state);
            }

            DummyCameraMotorState.Convert(_state, player.cameraStateNew);
        }
예제 #4
0
        private void PreProcessInput(PlayerEntity player, DummyCameraMotorInput input,
                                     Dictionary <int, ICameraNewMotor> dict, SubCameraMotorState subState, DummyCameraMotorState state)
        {
            if (!dict.ContainsKey(subState.NowMode))
            {
                return;
            }
            if (!dict.ContainsKey(subState.LastMode))
            {
                return;
            }
            var nowMotor = dict[subState.NowMode];

            nowMotor.PreProcessInput(player, input, state);
        }
예제 #5
0
        private void UpdateCamera(IUserCmdOwner owner, IUserCmd cmd)
        {
            PlayerEntity player = owner.OwnerEntity as PlayerEntity;

            if (!player.hasCameraStateNew)
            {
                return;
            }
            if (!player.hasCameraStateOutputNew)
            {
                return;
            }

            //观战玩家时,摄像机方向由被观战玩家决定
            if (player.gamePlay.IsObserving())
            {
                int objId  = player.gamePlay.CameraEntityId;
                var entity = _contexts.player.GetEntityWithEntityKey(new EntityKey(objId, (short)EEntityType.Player));
                if (entity != null)
                {
                    return;
                }
            }

            DummyCameraMotorState.Convert(player.cameraStateNew, _state);

            var archotRotation = player.cameraArchor.ArchorEulerAngle;

            if (player.cameraStateNew.CameraMotorInput == null)
            {
                player.cameraStateNew.CameraMotorInput = new DummyCameraMotorInput();
            }
            DummyCameraMotorInput _input = (DummyCameraMotorInput)player.cameraStateNew.CameraMotorInput;

            _input.Generate(_contexts, player, cmd, archotRotation.y, archotRotation.x);

            for (int i = 0; i < (int)SubCameraMotorType.End; i++)
            {
                var type = (SubCameraMotorType)i;
                PreProcessInput(player, _input, _motors.GetDict(type), _state.Get(type), _state);
            }

            DummyCameraMotorState.Convert(_state, player.cameraStateNew);
        }