DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ CameraHandler()

override int DayZPlayer::CameraHandler ( int pCameraMode)
inlineprotected

This is main camera selection logic

ironsights

get movement state

VKOSTIK: v ostatnich commandech mimo COMMANDID_MOVE je m_MovementState.m_iStanceIdx - DayZPlayerConstants.STANCEIDX_ERECT m_MovementState.m_iMovement = 0 (idle)

COMMANDID_ACTION returns stance right - ERECT/CROUCH

melee camera - not melee - stays in stance camera

special handling to allow the camera to fully blend before transitioning to the raised one

См. определение в файле DayZPlayerImplement.c строка 2777

2778 {
2781 {
2782 ItemOptics optics = null;
2783 EntityAI entityInHands = GetHumanInventory().GetEntityInHands();
2784 Weapon weapon = Weapon.Cast(entityInHands);
2785 if (weapon)
2786 optics = weapon.GetAttachedOptics();
2787 else if (entityInHands)
2788 Class.CastTo(optics,entityInHands);
2789
2790 if (m_CameraOptics && optics)
2791 {
2792 return DayZPlayerCameras.DAYZCAMERA_OPTICS;
2793 }
2794 else if (m_CameraIronsight && weapon)
2795 {
2796 return DayZPlayerCameras.DAYZCAMERA_IRONSIGHTS;
2797 }
2798 }
2799
2800 // If the logic above doesn't reach optics nor ironsights camera,
2801 // yet weapon is still raised and ads is wanted, enforce 1pv camera
2802 // as this will reduce erratic behaviour of camera switching in 3pv
2803 HumanInputController hic = GetInputController();
2804 if (m_Camera3rdPerson && m_IsWeapon && m_IsRaised && hic && hic.WeaponADS())
2805 {
2806 return DayZPlayerCameras.DAYZCAMERA_1ST;
2807 }
2808
2809 //uncon
2810 if ( GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_UNCONSCIOUS )
2811 {
2812 return DayZPlayerCameras.DAYZCAMERA_1ST_UNCONSCIOUS;
2813 }
2814
2815 HumanCommandVehicle vehicleCommand = GetCommand_Vehicle();
2816
2817 if (!m_Camera3rdPerson)
2818 {
2819 if (vehicleCommand)
2820 {
2821 return DayZPlayerCameras.DAYZCAMERA_1ST_VEHICLE;
2822 }
2823
2824 return DayZPlayerCameras.DAYZCAMERA_1ST;
2825 }
2826 else
2827 {
2828 if (vehicleCommand)
2829 {
2830 Transport transport = vehicleCommand.GetTransport();
2831 if (transport && GetParent())
2832 {
2833 return transport.Get3rdPersonCameraType();
2834 }
2835 }
2836
2838 GetMovementState(m_MovementState);
2839
2843
2845
2847
2848 if (m_MovementState.m_CommandTypeId == DayZPlayerConstants.COMMANDID_CLIMB)
2849 {
2850 return DayZPlayerCameras.DAYZCAMERA_3RD_CLIMB;
2851 }
2852
2853 if (m_JumpClimb.m_bIsJumpInProgress)
2854 {
2855 return DayZPlayerCameras.DAYZCAMERA_3RD_JUMP;
2856 }
2857
2858 int targetStanceIndex = m_MovementState.m_iStanceIdx;
2859
2861 HumanCommandMove commandMove = GetCommand_Move();
2862 if (commandMove && commandMove.IsChangingStance() && m_MovementState.IsRaised())
2863 {
2864 targetStanceIndex = m_MovementState.m_iStanceIdx - DayZPlayerConstants.STANCEIDX_RAISED;
2865 }
2866
2867 //
2868 // normal movement cameras
2869 if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_CROUCH)
2870 {
2871 return DayZPlayerCameras.DAYZCAMERA_3RD_CRO;
2872 }
2873 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDCROUCH)
2874 {
2875 return DayZPlayerCameras.DAYZCAMERA_3RD_CRO_RAISED;
2876 }
2877 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_PRONE)
2878 {
2879 return DayZPlayerCameras.DAYZCAMERA_3RD_PRO;
2880 }
2881 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDPRONE)
2882 {
2883 return DayZPlayerCameras.DAYZCAMERA_3RD_PRO_RAISED;
2884 }
2885
2886 if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDERECT)
2887 {
2888 if (m_IsWeapon)
2889 {
2890 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_RAISED;
2891 }
2892 else
2893 {
2894 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_RAISED_MELEE;
2895 }
2896 }
2897 else if (targetStanceIndex == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
2898 {
2899 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_SPR;
2900 }
2901
2902 // DayZPlayerConstants.STANCEIDX_ERECT
2903 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC;
2904 }
2905
2906 return DayZPlayerCameras.DAYZCAMERA_1ST;
2907 }
class LogManager EntityAI
StarlightOptic ItemOptics
ref DayZPlayerImplementJumpClimb m_JumpClimb
Определения DayZPlayerImplement.c:122
bool m_Camera3rdPerson
Определения DayZPlayerImplement.c:133
bool m_CameraIronsight
Определения DayZPlayerImplement.c:139
bool IsWeaponObstructionBlockingADS()
bool m_IsWeapon
Определения DayZPlayerImplement.c:178
bool m_CameraOptics
Определения DayZPlayerImplement.c:140
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:116
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:158
bool m_IsRaised
Определения DayZPlayerImplement.c:131
proto native bool IsChangingStance()
returns true if character is changing stance
proto native Transport GetTransport()
proto native bool WeaponADS()
returns true if weapon ADS mode
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native Widget GetParent()
Get parent of the Effect.
Определения Effect.c:422
void HumanCommandMove()
Определения human.c:514

Перекрестные ссылки Class::CastTo(), DayZPlayerCameras::DAYZCAMERA_1ST, DayZPlayerCameras::DAYZCAMERA_1ST_UNCONSCIOUS, DayZPlayerCameras::DAYZCAMERA_1ST_VEHICLE, DayZPlayerCameras::DAYZCAMERA_3RD_CLIMB, DayZPlayerCameras::DAYZCAMERA_3RD_CRO, DayZPlayerCameras::DAYZCAMERA_3RD_CRO_RAISED, DayZPlayerCameras::DAYZCAMERA_3RD_ERC, DayZPlayerCameras::DAYZCAMERA_3RD_ERC_RAISED, DayZPlayerCameras::DAYZCAMERA_3RD_ERC_RAISED_MELEE, DayZPlayerCameras::DAYZCAMERA_3RD_ERC_SPR, DayZPlayerCameras::DAYZCAMERA_3RD_JUMP, DayZPlayerCameras::DAYZCAMERA_3RD_PRO, DayZPlayerCameras::DAYZCAMERA_3RD_PRO_RAISED, DayZPlayerCameras::DAYZCAMERA_IRONSIGHTS, DayZPlayerCameras::DAYZCAMERA_OPTICS, GetParent(), HumanCommandVehicle::GetTransport(), HumanCommandMove::IsChangingStance(), IsWeaponObstructionBlockingADS(), m_Camera3rdPerson, m_CameraIronsight, m_CameraOptics, m_IsRaised, m_IsWeapon, m_JumpClimb, m_LiftWeapon_player, m_MovementState и HumanInputController::WeaponADS().