DayZ 1.30
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 строка 2845

2846 {
2849 {
2850 ItemOptics optics = null;
2851 EntityAI entityInHands = GetEntityInHands();
2852 Weapon weapon = Weapon.Cast(entityInHands);
2853 if (weapon)
2854 optics = weapon.GetAttachedOptics();
2855 else if (entityInHands)
2856 Class.CastTo(optics,entityInHands);
2857
2858 if (m_CameraOptics && optics)
2859 {
2860 return DayZPlayerCameras.DAYZCAMERA_OPTICS;
2861 }
2862 else if (m_CameraIronsight && weapon)
2863 {
2864 return DayZPlayerCameras.DAYZCAMERA_IRONSIGHTS;
2865 }
2866 }
2867
2868 // If the logic above doesn't reach optics nor ironsights camera,
2869 // yet weapon is still raised and ads is wanted, enforce 1pv camera
2870 // as this will reduce erratic behaviour of camera switching in 3pv
2871 HumanInputController hic = GetInputController();
2872 if (m_Camera3rdPerson && m_IsWeapon && m_IsRaised && hic && hic.WeaponADS())
2873 {
2874 return DayZPlayerCameras.DAYZCAMERA_1ST;
2875 }
2876
2877 //uncon
2878 if ( GetCurrentCommandID() == DayZPlayerConstants.COMMANDID_UNCONSCIOUS )
2879 {
2880#ifdef USER_kumarjac
2881 HumanCommandUnconscious hcu = GetCommand_Unconscious();
2882 if (hcu && hcu.IsRagdoll() && m_Camera3rdPerson)
2883 {
2884 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC;
2885 }
2886#endif
2887
2888 return DayZPlayerCameras.DAYZCAMERA_1ST_UNCONSCIOUS;
2889 }
2890
2891 // Vehicle
2892 HumanCommandVehicle vehicleCommand = GetCommand_Vehicle();
2893 int thirdPersonViewMode = g_Game.GetWorld().GetThirdPersonViewMode();
2894 if (vehicleCommand)
2895 {
2896 if (thirdPersonViewMode >= ThirdPersonMode.ENABLED)
2897 {
2898 if (!m_Camera3rdPerson)
2899 {
2900 return DayZPlayerCameras.DAYZCAMERA_1ST_VEHICLE;
2901 }
2902 else
2903 {
2904 Transport transport = vehicleCommand.GetTransport();
2905 if (transport && GetParent())
2906 {
2907 return transport.Get3rdPersonCameraType();
2908 }
2909 }
2910 }
2911 else
2912 {
2913 return DayZPlayerCameras.DAYZCAMERA_1ST_VEHICLE;
2914 }
2915 }
2916
2917 // Character
2918 if (thirdPersonViewMode == ThirdPersonMode.DISABLED || thirdPersonViewMode == ThirdPersonMode.VEHICLES_ONLY)
2919 m_Camera3rdPerson = false;
2920
2921 if (!m_Camera3rdPerson)
2922 {
2923 return DayZPlayerCameras.DAYZCAMERA_1ST;
2924 }
2925 else
2926 {
2928 GetMovementState(m_MovementState);
2929
2933
2935
2937
2938 if (m_MovementState.m_CommandTypeId == DayZPlayerConstants.COMMANDID_CLIMB)
2939 {
2940 return DayZPlayerCameras.DAYZCAMERA_3RD_CLIMB;
2941 }
2942
2943 if (m_JumpClimb.m_bIsJumpInProgress)
2944 {
2945 return DayZPlayerCameras.DAYZCAMERA_3RD_JUMP;
2946 }
2947
2948 int targetStanceIndex = m_MovementState.m_iStanceIdx;
2949
2951 HumanCommandMove commandMove = GetCommand_Move();
2952 if (commandMove && commandMove.IsChangingStance() && m_MovementState.IsRaised())
2953 {
2954 targetStanceIndex = m_MovementState.m_iStanceIdx - DayZPlayerConstants.STANCEIDX_RAISED;
2955 }
2956
2957 //
2958 // normal movement cameras
2959 if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_CROUCH)
2960 {
2961 return DayZPlayerCameras.DAYZCAMERA_3RD_CRO;
2962 }
2963 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDCROUCH)
2964 {
2965 return DayZPlayerCameras.DAYZCAMERA_3RD_CRO_RAISED;
2966 }
2967 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_PRONE)
2968 {
2969 return DayZPlayerCameras.DAYZCAMERA_3RD_PRO;
2970 }
2971 else if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDPRONE)
2972 {
2973 return DayZPlayerCameras.DAYZCAMERA_3RD_PRO_RAISED;
2974 }
2975
2976 if (targetStanceIndex == DayZPlayerConstants.STANCEIDX_RAISEDERECT)
2977 {
2978 if (m_IsWeapon)
2979 {
2980 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_RAISED;
2981 }
2982 else
2983 {
2984 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_RAISED_MELEE;
2985 }
2986 }
2987 else if (targetStanceIndex == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
2988 {
2989 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC_SPR;
2990 }
2991
2992 // DayZPlayerConstants.STANCEIDX_ERECT
2993 return DayZPlayerCameras.DAYZCAMERA_3RD_ERC;
2994 }
2995
2996 return DayZPlayerCameras.DAYZCAMERA_1ST;
2997 }
class LogManager EntityAI
DayZGame g_Game
Определения DayZGame.c:4074
StarlightOptic ItemOptics
int GetCurrentCommandID()
Определения StateManager.c:279
ref DayZPlayerImplementJumpClimb m_JumpClimb
Определения DayZPlayerImplement.c:98
bool m_Camera3rdPerson
Определения DayZPlayerImplement.c:109
bool m_CameraIronsight
Определения DayZPlayerImplement.c:115
bool IsWeaponObstructionBlockingADS()
bool m_IsWeapon
Определения DayZPlayerImplement.c:155
bool m_CameraOptics
Определения DayZPlayerImplement.c:116
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:92
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:134
bool m_IsRaised
Определения DayZPlayerImplement.c:107
proto native bool IsChangingStance()
returns true if character is changing stance
proto native bool IsRagdoll()
proto native Transport GetTransport()
proto native bool WeaponADS()
returns true if weapon ADS mode
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
ThirdPersonMode
Определения World.c:302
proto native Widget GetParent()
Get parent of the Effect.
Определения Effect.c:422
void HumanCommandMove()
Определения human.c:534
void HumanCommandUnconscious()
Определения human.c:660

Перекрестные ссылки 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, g_Game, GetCurrentCommandID(), GetParent(), HumanCommandVehicle::GetTransport(), HumanCommandMove::IsChangingStance(), HumanCommandUnconscious::IsRagdoll(), IsWeaponObstructionBlockingADS(), m_Camera3rdPerson, m_CameraIronsight, m_CameraOptics, m_IsRaised, m_IsWeapon, m_JumpClimb, m_LiftWeapon_player, m_MovementState и HumanInputController::WeaponADS().