// ************************************************************************************* // ! HumanItemBehaviorCfg - per item config of stances / movements // ************************************************************************************* class HumanItemBehaviorCfg { // static int DEFMOVEMENT = MOVEMENT_IDLE | MOVEMENT_WALK | MOVEMENT_RUN | SPRINT; //! bit mask of ik settings static int IKSETTING_AIMING = 0x1; static int IKSETTING_RHAND = 0x2; static int IKSETTING_LHAND = 0x4; int m_iType; int m_iStanceMask; //!< combinations of STANCEMASK_ int m_StanceMovements[6]; //! 6 stances -> all has movement mask, STANCEIDX_ ... is index int m_StanceRotation[6]; //! int m_IKSettings[24]; //! [stance][movement] mask for ik int m_IKSettingsMelee[2]; //! [inpact type] mask for ik (0 - light/1 - heavy) int m_iPerItemCameraUserData; //! per item camera user data - can be obtained in runtime by DayZPlayer.GetPerItemCameraUD() //! movement caps float m_fMoveHeadingFilterSpan; //! default delay of alignment when moving float m_fMoveHeadingSprintFilterSpan; //! delay of alignment when sprintinh float m_fMoveHeadingProneFilterSpan; //! delay of alignment when moving in prone stance float m_fMoveHeadingFilterSpeed; //! max speed of alignment when moving //! evade caps float m_fMeleeEvadeHeadingFilterSpan; //! delay of alignment when evading float m_fMeleeEvadeHeadingFilterSpeed; //! max speed of alignment when evading //! per weapon lean forward bool m_bAttackLean; //! default false //! per weapon lean forward bool m_bJumpAllowed; //! default true private bool m_bPlaceholder; void SetIK(int pStance, int pMovement, bool pAim, bool pRArm, bool pLArm) { int val = 0; if (pAim) val |= IKSETTING_AIMING; if (pRArm) val |= IKSETTING_RHAND; if (pLArm) val |= IKSETTING_LHAND; // Print("Setting ik " + pStance.ToString() + "," + pMovement.ToString() ); pStance = pStance * 4; pStance = pStance + pMovement; // Print("Setting ik " + pStance.ToString() + " to value " + val.ToString() ); m_IKSettings[pStance] = val; } void SetIKStance(int pStance, bool pAim, bool pRArm, bool pLArm) { int val = 0; if (pAim) val |= IKSETTING_AIMING; if (pRArm) val |= IKSETTING_RHAND; if (pLArm) val |= IKSETTING_LHAND; int bo = pStance * 4; for (int i = 0; i < 4; i++) { m_IKSettings[bo+i] = val; } } void SetIKMelee(int pHitType, bool pAim, bool pRArm, bool pLArm) { int val = 0; if (pAim) val |= IKSETTING_AIMING; if (pRArm) val |= IKSETTING_RHAND; if (pLArm) val |= IKSETTING_LHAND; m_IKSettingsMelee[pHitType] = val; } void SetIKAll(bool pAim, bool pRArm, bool pLArm) { int val = 0; if (pAim) val |= IKSETTING_AIMING; if (pRArm) val |= IKSETTING_RHAND; if (pLArm) val |= IKSETTING_LHAND; int i; for (i = 0; i < 24; i++) { m_IKSettings[i] = val; } for (i = 0; i < 2; i++) { m_IKSettingsMelee[i] = val; } } } // ************************************************************************************* // ! HumanItemAccessor - item helpers // ************************************************************************************* class HumanItemAccessor { //! signalization from script to engine that item in hands changed proto native void OnItemInHandsChanged(bool pInstant = false); //! reset weapon anim override in case of premature death proto native void ResetWeaponInHands(); //! hides item in hands visually proto native void HideItemInHands(bool pState); //! returns if item in hands is hidden visually proto native bool IsItemInHandsHidden(); //! returns true if item in hands is a weapon proto native bool IsItemInHandsWeapon(); //! returns true if weapon is item and it has camera point - local pos, dir in weapon space proto native bool WeaponGetCameraPoint(out vector pPos, out vector pRot); //! returns true if weapon is item and it has camera point - model space matrix - proto native bool WeaponGetCameraPointMSTransform (notnull EntityAI pCamEntity, vector pCamPoint, vector pCamDir, out vector pTm[4]); //! returns true if weapon is item and it has camera point - model space matrix - proto native bool WeaponGetCameraPointBoneRelative(notnull EntityAI pCamEntity, vector pCamPoint, vector pCamDir, int pBoneIndex, out vector pTm[4]); //! return current aiming point from aiming model (additive swaying applied - no recoil points) proto native bool WeaponGetAimingModelDirTm(out vector pTm[4]); //! proto native HumanItemBehaviorCfg GetItemInHandsBehaviourCfg(); private void HumanItemAccessor() { } private void ~HumanItemAccessor() { } }