コード例 #1
0
        public Vector3 GetAnchorEulerAngle(PlayerEntity player, ECameraArchorType type)
        {
            switch (type)
            {
            case ECameraArchorType.Car:
                var r = player.controlledVehicle.CameraCurrentRotation.eulerAngles;
                return(new Vector3(0, r.y, 0));

            case ECameraArchorType.AirPlane:
                return(Vector3.zero);

            case ECameraArchorType.FollowEntity:
                PlayerEntity follow = _playerContext.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(player.gamePlay.CameraEntityId, (short)EEntityType.Player));
                if (follow != null)
                {
                    return(follow.orientation.EulerAngle);
                }
                else
                {
                    return(player.orientation.EulerAngle);
                }

            case ECameraArchorType.Parachuting:
                return(new Vector3(0, player.playerSkyMove.Rotation.eulerAngles.y, 0));

            default:
                return(player.orientation.EulerAngle);
            }
        }
コード例 #2
0
        public Vector3 GetAnchorPosition(PlayerEntity player, ECameraArchorType type)
        {
            player.cameraArchor.Active = true;
            switch (type)
            {
            case ECameraArchorType.Car:
                var t = player.controlledVehicle.CameraCurrentPosition;
                return(new Vector3(t.x, t.y, t.z));

            case ECameraArchorType.AirPlane:
                return(player.GetAirPlane(_freeMoveContext).position.Value);

            case ECameraArchorType.FollowEntity:
                PlayerEntity follow = _playerContext.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(player.gamePlay.CameraEntityId, (short)EEntityType.Player));
                if (follow != null)
                {
                    return(follow.position.Value);
                }
                else
                {
                    return(player.position.Value);
                }

            case ECameraArchorType.Parachuting:

                return(player.playerSkyMove.Position);

            default:
                if (player.hasAppearanceInterface && player.appearanceInterface.Appearance.IsFirstPerson)
                {
                    var camRoot = player.characterBoneInterface.CharacterBone.GetLocation(SpecialLocation
                                                                                          .FirstPersonCamera, CharacterView.FirstPerson);
                    if (null != camRoot)
                    {
                        return(camRoot.position);
                    }
                    else
                    {
                        Logger.Error("First camera root can't be found");
                    }
                }

                return(player.position.Value);
            }
        }