Dayz Explorer 1.29.162510
Loading...
Searching...
No Matches
human.c
Go to the documentation of this file.
1
6
13
14// *************************************************************************************
15// ! HumanInputController - what we know about the input - human.GetInputController()
16// *************************************************************************************
17class HumanInputController
18{
19 //--------------------------------------------------------------
20
22 proto native void SetDisabled(bool pState);
23
25 proto void GetMovement(out float pSpeed, out vector pLocalDirection);
26
28 proto native float GetHeadingAngle();
29
31 proto native vector GetAimChange();
32
34 proto native vector GetAimDelta(float dt);
35
37 proto native vector GetTracking();
38
40 proto native bool CameraViewChanged();
41
43 proto native bool CameraIsFreeLook();
44
46 proto native void ResetFreeLookToggle();
47
49 proto native bool CameraIsTracking();
50
52 proto native bool Camera3rdIsRightShoulder();
53
54 //--------------------------------------------------------------
55
57 proto native bool IsStanceChange();
58
60 proto native bool IsJumpClimb();
61
62
63 //--------------------------------------------------------------
64
66 proto native bool IsMeleeEvade();
67
69 proto native bool IsMeleeFastAttackModifier();
70
72 proto native int IsMeleeLREvade();
73
75 proto native bool IsMeleeWeaponAttack();
76
77 //--------------------------------------------------------------
78
80 proto native bool WeaponWasRaiseClick();
81
83 proto native bool IsWeaponRaised();
84
86 proto native bool WeaponADS();
87
89 proto native void ResetADS();
90
92 proto native bool IsThrowingModeChange();
93
95 proto native void ResetThrowingMode();
96
98 proto native bool IsWalkToggled();
99
100 //--------------------------------------------------------------
101
106 proto native bool IsUseButton();
107
112 proto native bool IsUseButtonDown();
113
115 proto native bool IsUseItemButton();
117 proto native bool IsUseItemButtonDown();
118
120 proto native bool IsAttackButton();
122 proto native bool IsAttackButtonDown();
123
125 proto native bool IsSingleUse();
126
128 proto native bool IsContinuousUse();
129
131 proto native bool IsContinuousUseStart();
132
134 proto native bool IsContinuousUseEnd();
135
138 proto native bool IsImmediateAction(); //TODO: revise, may be obsolete
139
140 //--------------------------------------------------------------
142
144 proto native bool IsReloadOrMechanismSingleUse();
145
147 proto native bool IsReloadOrMechanismContinuousUse();
148
150 proto native bool IsReloadOrMechanismContinuousUseStart();
151
153 proto native bool IsReloadOrMechanismContinuousUseEnd();
154
156 proto native bool IsZoom();
157
159 proto native bool IsZoomToggle();
160
162 proto native void ResetZoomToggle();
163
165 proto native bool IsSightChange();
166
168 proto native bool IsZoomIn();
169
171 proto native bool IsZoomOut();
172
174 proto native bool IsFireModeChange();
175
177 proto native bool IsZeroingUp();
178
180 proto native bool IsZeroingDown();
181
183 proto native bool IsHoldBreath();
184
186 proto native void ResetHoldBreath();
187
188 //--------------------------------------------------------------
189
192 proto native int IsGestureSlot();
193
195 proto native bool IsOtherController();
196
197 //--------------------------------------------------------------
198
200 proto native int IsQuickBarSlot();
201
204 proto native bool IsQuickBarSingleUse();
205
208 proto native bool IsQuickBarContinuousUse();
209
212 proto native bool IsQuickBarContinuousUseStart();
213
216 proto native bool IsQuickBarContinuousUseEnd();
217
218
219
220 //--------------------------------------------------------------
221 // LIMITS
222
224 proto native void LimitsDisableSprint(bool pDisable);
225
227 proto native bool LimitsIsSprintDisabled();
228
229
230 //--------------------------------------------------------------
231 // overrides
232
234 proto native void OverrideMovementSpeed(HumanInputControllerOverrideType overrideType, float value);
235
237 proto native void OverrideMovementAngle(HumanInputControllerOverrideType overrideType, float value);
238
240 proto native void OverrideAimChangeX(HumanInputControllerOverrideType overrideType, float value);
241
243 proto native void OverrideAimChangeY(HumanInputControllerOverrideType overrideType, float value);
244
246 proto native void OverrideMeleeEvade(HumanInputControllerOverrideType overrideType, bool value);
247
249 proto native void OverrideRaise(HumanInputControllerOverrideType overrideType, bool value);
250
252 proto native void Override3rdIsRightShoulder(HumanInputControllerOverrideType overrideType, bool value);
253
255 proto native void OverrideFreeLook(HumanInputControllerOverrideType overrideType, bool value);
256
257
258 //--------------------------------------------------------------
259
261 private void HumanInputController()
262 {
263 }
264
266 private void ~HumanInputController()
267 {
268 }
269}
270
271
272// *************************************************************************************
273// ! HumanInputController - what we know about the input - human.GetInputController()
274// *************************************************************************************
275
278typedef int TAnimGraphTag;
279typedef int TAnimGraphEvent;
280
282class HumanAnimInterface
283{
284 private void HumanAnimInterface();
285 private void ~HumanAnimInterface();
286
287 //-----------------------------------------------------
288 // Binds, returns -1 when error, otherwise if ok
289
291 proto native TAnimGraphCommand BindCommand(string pCommandName);
292
294 proto native TAnimGraphVariable BindVariableFloat(string pVariable);
295 proto native TAnimGraphVariable BindVariableInt(string pVariable);
296 proto native TAnimGraphVariable BindVariableBool(string pVariable);
297
299 proto native TAnimGraphTag BindTag(string pTagName);
300
302 proto native TAnimGraphEvent BindEvent(string pEventName);
303}
304
305
306// *************************************************************************************
307// ! HumanCommandActionCallback - called as action callback
308// *************************************************************************************
310{
311 private void HumanCommandActionCallback();
312 private void ~HumanCommandActionCallback();
313
315 proto native Human GetHuman();
316
318 proto native void Cancel();
319
322 proto native void InternalCommand(int pInternalCommandId);
323
325 proto native void SetAligning(vector pPositionWS, vector pDirectionWS);
326
328 proto native void ResetAligning();
329
333 proto native void EnableCancelCondition(bool pEnable);
334
336 proto native bool DefaultCancelCondition();
337
339 proto native void RegisterAnimationEvent(string pAnimationEventStr, int pId);
340
342 proto native void EnableStateChangeCallback();
343
346 // bool CancelCondition() { return false; }
347
349 static const int STATE_NONE = 0;
350
352 static const int STATE_LOOP_IN = 1;
353 static const int STATE_LOOP_LOOP = 2;
354 static const int STATE_LOOP_END = 3;
355 static const int STATE_LOOP_END2 = 4;
356 static const int STATE_LOOP_LOOP2 = 5;
357 static const int STATE_LOOP_ACTION = 6;
358
360 static const int STATE_NORMAL = 7;
361
363 proto native int GetState();
364
365
366 //----------------------------------
367 // debug helper
368
370 static string GetStateString(int pState)
371 {
372 switch (pState)
373 {
374 case STATE_NONE: return "NONE";
375
376 case STATE_LOOP_IN: return "LOOP_IN";
377 case STATE_LOOP_LOOP: return "LOOP_LOOP";
378 case STATE_LOOP_END: return "LOOP_END";
379 case STATE_LOOP_END2: return "LOOP_END2";
380 case STATE_LOOP_LOOP2: return "LOOP_LOOP2";
381 case STATE_LOOP_ACTION: return "LOOP_ACTION";
382
384 case STATE_NORMAL: return "ONE TIME";
385 }
386
387 return "Undef";
388 }
389
390
392 string GetStateString()
393 {
394 return GetStateString(GetState());
395 }
396
397
398
399 //----------------------------------
400 // callbacks
401
403 void OnAnimationEvent(int pEventID) {};
404
406 void OnFinish(bool pCanceled) {};
407
409 void OnStateChange(int pOldState, int pCurrentState) {};
410
411
412 // helps identify type of callback
413 bool IsUserActionCallback()
414 {
415 return false;
416 }
417
418 bool IsGestureCallback()
419 {
420 return false;
421 }
422
423 bool IsSymptomCallback()
424 {
425 return false;
426 }
427}
428
429
430// *************************************************************************************
431// ! HumanCommandMove
432// *************************************************************************************
433class HumanCommandMove
434{
435 private void HumanCommandMove() {}
436 private void ~HumanCommandMove() {}
437
440 proto native float GetCurrentMovementAngle();
441
445 proto bool GetCurrentInputAngle(out float pAngle);
446
448 proto native float GetCurrentMovementSpeed();
449
451 proto native bool IsChangingStance();
452
454 proto native bool IsOnBack();
455
457 proto native bool IsInRoll();
458
460 proto native bool IsLeavingUncon();
461
463 proto native bool IsStandingFromBack();
464
466 proto native void StartMeleeEvade();
467
469 proto native void StartMeleeEvadeA(float pDirAngle);
470
472 proto native bool IsMeleeEvade();
473
475 proto native void SetMeleeBlock(bool pBlock);
476
479 proto native void ForceStance(int pStanceIdx);
480
481
484 proto native void ForceStanceUp(int pStanceIdx);
485
486
488 proto native void SetRunSprintFilterModifier(float value);
489
491 proto native void SetDirectionFilterModifier(float value);
492
494 proto native void SetDirectionSprintFilterModifier(float value);
495
497 proto native void SetTurnSpanModifier(float value);
498
500 proto native void SetTurnSpanSprintModifier(float value);
501
503 proto native void SetCurrentWaterLevel(float value);
504}
505
506
507
508// *************************************************************************************
509// ! HumanCommandMelee - actual command melee running on
510// *************************************************************************************
511class HumanCommandMelee
512{
513 private void HumanCommandMelee() {}
514 private void ~HumanCommandMelee() {}
515
517 proto native void ContinueCombo();
518
520 proto native bool IsInComboRange();
521
523 proto native bool WasHit();
524
526 proto native void Cancel();
527
529 proto native bool IsOnBack();
530}
531
532
533// *************************************************************************************
534// ! HumanCommandMelee2 - actual command melee running on - Heavy/Light version
535// *************************************************************************************
536class HumanCommandMelee2
537{
538 private void HumanCommandMelee2() {}
539 private void ~HumanCommandMelee2() {}
540
541 static const int HIT_TYPE_LIGHT = 0;
542 static const int HIT_TYPE_HEAVY = 1;
543 static const int HIT_TYPE_FINISHER = 2; //liver stab
544 static const int HIT_TYPE_FINISHER_NECK = 3;
545
547 proto native void ContinueCombo(bool pHeavyHit, float pComboValue, EntityAI target = null, vector hitPos = vector.Zero);
548
550 proto native bool IsInComboRange();
551
553 proto native bool WasHit();
554
556 proto native void Cancel();
557
559 proto native bool IsOnBack();
560
561 proto native int GetComboCount();
562
563 proto native int GetCurrentHitType();
564
565 proto native bool IsFinisher();
566}
567
568
569// *************************************************************************************
570// ! HumanCommandFall - actually falling
571// *************************************************************************************
572class HumanCommandFall
573{
574 private void HumanCommandFall() {}
575 private void ~HumanCommandFall() {}
576
577 static const int LANDTYPE_NONE = 0;
578 static const int LANDTYPE_LIGHT = 1;
579 static const int LANDTYPE_MEDIUM = 2;
580 static const int LANDTYPE_HEAVY = 3;
581
583 proto native bool PhysicsLanded();
584
586 proto native void Land(int pLandType);
587
589 proto native bool IsLanding();
590}
591
592// *************************************************************************************
593// ! HumanCommandDeathCallback - called as action callback
594// *************************************************************************************
595class HumanCommandDeathCallback
596{
597 //----------------------------------
598 // callbacks
599
600 void OnSimulationEnd() {};
601
603 bool ShouldSimulationBeDisabled() { return true; };
604}
605
606// *************************************************************************************
607// ! HumanCommandDeath - actually dying
608// *************************************************************************************
609class HumanCommandDeath
610{
611 private void HumanCommandDeath() {}
612 private void ~HumanCommandDeath() {}
613}
614
616// *************************************************************************************
617// ! HumanCommandUnconscious - actually not dying
618// *************************************************************************************
619class HumanCommandUnconscious
620{
621 private void HumanCommandUnconscious() {}
622 private void ~HumanCommandUnconscious() {}
623
624 proto native void WakeUp(int targetStance = -1);
625 proto native bool IsWakingUp();
626
627 proto native bool IsOnLand();
628 proto native bool IsInWater();
629}
630
631
632// *************************************************************************************
633// ! HumanCommandDamage - additional damage
634// *************************************************************************************
635class HumanCommandDamage
636{
637 private void HumanCommandDamage() {}
638 private void ~HumanCommandDamage() {}
639}
640
641// *************************************************************************************
642// ! HumanCommandLadder ladder
643// *************************************************************************************
644class HumanCommandLadder
645{
646 private void HumanCommandLadder() {}
647 private void ~HumanCommandLadder() {}
648
650 proto native bool CanExit();
651
653 proto native void Exit();
654
656 proto native static bool DebugDrawLadder(Building pBuilding, int pLadderIndex);
657
659 proto native static int DebugGetLadderIndex(string pComponentName);
660
663 proto native vector GetLogoutPosition();
664}
665
666
667
668// *************************************************************************************
669// ! HumanCommandLadder ladder
670// *************************************************************************************
671class HumanCommandSwim
672{
673 private void HumanCommandSwim() {}
674 private void ~HumanCommandSwim() {}
675
677 proto native void StopSwimming();
678
681 proto native static vector WaterLevelCheck(Human pHuman, vector pPosition);
682}
683
684
685
686// *************************************************************************************
687// ! HumanCommandVehicle vehicle
688// *************************************************************************************
689class HumanCommandVehicle
690{
691 private void HumanCommandVehicle() {}
692 private void ~HumanCommandVehicle() {}
693
694 proto native Transport GetTransport();
695 proto native int GetVehicleClass();
696 proto native int GetVehicleSeat();
697 proto native void SetVehicleType(int pVehicleType);
698 proto native int GetVehicleType();
699
700 proto native void GetOutVehicle();
701 proto native void KnockedOutVehicle();
702 proto native bool ShouldBeKnockedOut();
703 proto native void JumpOutVehicle();
704 proto native void SwitchSeat(int pTransportPositionIndex, int pVehicleSeat);
705 proto native bool IsGettingIn();
706 proto native bool IsGettingOut();
707 proto native bool IsSwitchSeat();
708 proto native bool WasGearChange();
709 proto native void SetClutchState(bool pState);
710 proto native void KeepInVehicleSpaceAfterLeave(bool pState);
711 proto native void ProcessLeaveEvents();
712
713 bool IsObjectIgnoredOnGettingOut(IEntity entity)
714 {
715 Object object;
716 if (!Class.CastTo(object, entity))
717 {
718 return true;
719 }
720
721 Transport transport = GetTransport();
722 if (!transport)
723 {
724 return true;
725 }
726
727 if (object == transport || object.GetParent() == transport)
728 {
729 return true;
730 }
731
732 return transport.IsIgnoredObject(object);
733 }
734}
735
736// *************************************************************************************
737// ! HumanCommandClimb
738// *************************************************************************************
739
741class SHumanCommandClimbResult
742{
743 bool m_bIsClimb;
744 bool m_bIsClimbOver;
745 bool m_bFinishWithFall;
746 bool m_bHasParent;
747
748 float m_fClimbHeight;
749
750 vector m_ClimbGrabPoint;
751 vector m_ClimbGrabPointNormal;
752 vector m_ClimbStandPoint;
753 vector m_ClimbOverStandPoint;
754
755 IEntity m_GrabPointParent;
756 IEntity m_ClimbStandPointParent;
757 IEntity m_ClimbOverStandPointParent;
758};
759
760
762enum ClimbStates
763{
764 STATE_MOVE,
765 STATE_TAKEOFF,
766 STATE_ONTOP,
767 STATE_FALLING,
768 STATE_FINISH
769};
770
772class HumanCommandClimb
773{
774 private void HumanCommandClimb() {}
775 private void ~HumanCommandClimb() {}
776
778 proto native int GetState();
779
781 proto native vector GetGrabPointWS();
782
784 proto native vector GetClimbOverStandPointWS();
785
789 proto native static bool DoClimbTest(Human pHuman, SHumanCommandClimbResult pResult, int pDebugDrawLevel);
790
794 proto native static bool DoPerformClimbTest(Human pHuman, SHumanCommandClimbResult pResult, int pDebugDrawLevel);
795
798 proto native static bool DebugDrawClimb(Human pHuman, int pLevel);
799}
800
801
802
803
804// *************************************************************************************
805// ! HumanCommandFullBodyDamage - full body damages
806// *************************************************************************************
807class HumanCommandFullBodyDamage
808{
809 private void HumanCommandFullBodyDamage() {}
810 private void ~HumanCommandFullBodyDamage() {}
811}
812
813
815enum WeaponActions
816{
817 INTERRUPT = 15,
818 NONE = -1,
819 RELOAD = 0,
820 MECHANISM = 1,
821 CHAMBERING = 2,
822 CHAMBERING_LOADER = 3,
823 UNJAMMING = 4,
824 FIRE = 5,
825 HIDE = 6,
826 SHOW = 7,
827 RELOAD_CLIP = 8,
828};
831enum WeaponActionReloadTypes
832{
834 RELOADRIFLE_MAGAZINE_BULLET = 0, // CMD_Reload_Magazine
835 RELOADRIFLE_NOMAGAZINE_BULLET = 1,
836 RELOADRIFLE_MAGAZINE_NOBULLET = 2,
837 RELOADRIFLE_NOMAGAZINE_NOBULLET = 3,
838 RELOADRIFLE_MAGAZINE_NOBULLET_OPEN = 4,
839 RELOADRIFLE_NOMAGAZINE_NOBULLET_OPEN = 5,
840
841 // reload action types - pistols
842 RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_UNCOCKED = 8, // CMD_Reload_Magazine
843 RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_UNCOCKED = 9,
844 RELOADPISTOL_MAGAZINE_BULLET_CLOSED = 10,
845 RELOADPISTOL_NOMAGAZINE_BULLET_CLOSED = 11,
846 RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_COCKED = 12,
847 RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_COCKED = 13,
848 RELOADPISTOL_NOMAGAZINE_NOBULLET_OPENED = 14,
849 RELOADPISTOL_MAGAZINE_NOBULLET_OPENED = 15,
850
851 RELOAD_MAGAZINE_DETACH = 16,
852 RELOADRIFLE_MAGAZINE_DETACH = 17, // CMD_Reload_Magazine
853
854 RELOADSRIFLE_MAGAZINE_BULLET = 20, // CMD_Reload_Magazine
855 RELOADSRIFLE_NOMAGAZINE_BULLET = 21,
856 RELOADSRIFLE_MAGAZINE_NOBULLET = 22,
857 RELOADSRIFLE_NOMAGAZINE_NOBULLET = 23,
858};
859
860enum WeaponActionReloadClipTypes
861{
862 RELOADRIFLE_CLIP_NOBULLET = 0,
863 RELOADRIFLE_CLIP_BULLET = 1,
864}
865
866enum WeaponActionMechanismTypes
867{
869 MECHANISM_OPENED = 0, // CMD_Reload_BoltAction
870 MECHANISM_CLOSED = 1,
871 MECHANISM_SPECIAL = 2, // crossbow, magnum ... special mechanism action apropriate for custom weapons
872 MECHANISM_CLOSED_UNCOCKED = 3,
873};
874
875enum WeaponActionChamberingTypes
876{
877 CHAMBERING_END = -1,
879 CHAMBERING_ONEBULLET_OPENED = 0, // CMD_Reload_Chambering
880 CHAMBERING_ONEBULLET_CLOSED = 1, //
881 CHAMBERING_ONEBULLET_CLOSED_UNCOCKED = 2,
882 CHAMBERING_ONEBULLET_UNIQUE_OPENED = 3, //
883 CHAMBERING_ONEBULLET_UNIQUE_CLOSED = 4, //
884 CHAMBERING_TWOBULLETS_START = 6, // plays one bullet, then second, then ends, when CHAMBERING_TWOBULLETS_END arise, it's canceled
885 CHAMBERING_TWOBULLETS_END = 7, // - one bullet reload with closed mechanism
886
887 CHAMBERING_STARTLOOPABLE_CLOSED_EXTRA = 9,
888 CHAMBERING_STARTLOOPABLE_CLOSED = 10, // start loop chambering
889 CHAMBERING_ENDLOOPABLE = 11, // end loop chambering
890 CHAMBERING_STARTLOOPABLE_CLOSED_KEEP = 12, // start loop chambering and keep last bullet
891 CHAMBERING_STARTLOOPABLE_OPENED = 13, //
892
893 CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER = 14,
894
895 CHAMBERING_STARTLOOPABLE_SHOTGUN_UNCOCKED = 15,
896 CHAMBERING_STARTLOOPABLE_SHOTGUN_COCKED = 16,
897
898 CHAMBERING_DOUBLE_1 = 17,
899 CHAMBERING_DOUBLE_2 = 18,
900 CHAMBERING_DOUBLE_3 = 19,
901 CHAMBERING_DOUBLE_4 = 20,
902
903
904 CHAMBERING_CROSSBOW_OPENED = 21, // chambering crossbow
905 CHAMBERING_CROSSBOW_CLOSED = 22, // chambering crossbow
906 CHAMBERING_CROSSBOW_FULL = 23, // chambering crossbow
907
908 CHAMBERING_DOUBLE_FIREOUT_EJECT = 24, // For manual ejecting during reload
909};
910
911enum WeaponActionChamberingLoaderTypes
912{
913 CHAMBERINGLOADER_OPENED = 0, // CMD_Reload_ChamberingFast - one bullet reload with open mechanism
914 CHAMBERINGLOADER_CLOSED = 1, // - one bullet reload with closed mechanism
915};
916
917enum WeaponActionUnjammingTypes
918{
920 UNJAMMING_START = 1, // CMD_Weapon_Jam - 0
921 UNJAMMING_END = 0, // 1
922 UNJAMMING_INTERRUPT = -1,
923};
924
925enum WeaponActionFireTypes
926{
927 FIRE_NORMAL = 0,
928 FIRE_LAST = 1,
929 FIRE_COCKED = 2,
930 FIRE_UNCOCKED = 3,
931 FIRE_DRY = 4,
932 FIRE_JAM = 5
933};
934
935enum WeaponHideShowTypes
936{
937 HIDESHOW_SLOT_2HDLEFTBACK = 0,
938 HIDESHOW_SLOT_RFLLEFTBACK = 1,
939 HIDESHOW_SLOT_1HDLEFTBACK = 2,
940 HIDESHOW_SLOT_2HDRIGHTBACK = 3,
941 HIDESHOW_SLOT_RFLRIGHTBACK = 4,
942 HIDESHOW_SLOT_1HDRIGHTBACK = 5,
943 HIDESHOW_SLOT_PISTOLBELT = 6,
944 HIDESHOW_SLOT_PISTOLCHEST = 7,
945 HIDESHOW_SLOT_KNIFEBACK = 8,
946 HIDESHOW_SLOT_INVENTORY = 9,
947};
948
949string WeaponActionTypeToString (int A, int AT)
950{
951 switch (A)
952 {
953 case WeaponActions.INTERRUPT: return "Weapon interrupt";
954 case WeaponActions.NONE: return "---";
955 case WeaponActions.RELOAD: return typename.EnumToString(WeaponActionReloadTypes, AT);
956 case WeaponActions.MECHANISM: return typename.EnumToString(WeaponActionMechanismTypes, AT);
957 case WeaponActions.CHAMBERING: return typename.EnumToString(WeaponActionChamberingTypes, AT);
958 case WeaponActions.CHAMBERING_LOADER: return typename.EnumToString(WeaponActionChamberingLoaderTypes, AT);
959 case WeaponActions.UNJAMMING: return typename.EnumToString(WeaponActionUnjammingTypes, AT);
960 case WeaponActions.FIRE: return typename.EnumToString(WeaponActionFireTypes, AT);
961 case WeaponActions.HIDE: return typename.EnumToString(WeaponHideShowTypes, AT);
962 case WeaponActions.SHOW: return typename.EnumToString(WeaponHideShowTypes, AT);
963 }
964 return "---";
965}
966
968enum WeaponEvents
969{
970 ATTACHMENT_HIDE,
971 ATTACHMENT_SHOW,
972 BULLET_EJECT,
973 BULLET_HIDE,
974 BULLET_HIDE2,
975 BULLET_IN_CHAMBER,
976 BULLET_IN_MAGAZINE,
977 BULLET_SHOW,
978 BULLET_SHOW2,
979 CANUNJAM_END,
980 CANUNJAM_START,
981 COCKED,
982 MAGAZINE_ATTACHED,
983 MAGAZINE_DETACHED,
984 MAGAZINE_HIDE,
985 MAGAZINE_SHOW,
986 SLIDER_OPEN,
987 UNJAMMED,
988 HAMMER_UNCOCKED,
989 HAMMER_COCKED,
990 CHANGE_HIDE,
991 CHANGE_SHOW,
992 CYLINDER_ROTATE,
993};
994
995
996// *************************************************************************************
997// ! HumanCommandWeapons - weapon handling
998// *************************************************************************************
999class HumanCommandWeapons
1000{
1001 private void HumanCommandWeapons() {}
1002 private void ~HumanCommandWeapons() {}
1003
1005 proto native bool IsActionFinished();
1006
1008 proto native int GetRunningAction();
1009
1011 proto native int GetRunningActionType();
1012
1014 proto native void SetActionProgressParams(float pStart, float pEnd);
1015
1017 proto native bool StartAction(WeaponActions pAction, int pActionType);
1018
1020 proto native void RegisterEvent(string pName, int pId);
1021
1023 proto native int IsEvent();
1024
1026 proto native bool IsInWeaponReloadBulletSwitchState();
1027
1029 proto native void SetADS(bool pState);
1030
1032 proto native void LiftWeapon(bool pState);
1033
1035 proto native bool IsWeaponLifted();
1036
1038 proto native void ObstructWeapon(float pState01);
1039
1041 proto native float GetWeaponObstruction();
1042
1044 proto native float GetAimingHandsOffsetUD();
1045
1047 proto native float GetAimingHandsOffsetLR();
1048
1050 void RegisterDefaultEvents()
1051 {
1052 RegisterEvent("Weapon_AttachmentHide", WeaponEvents.ATTACHMENT_HIDE);
1053 RegisterEvent("Weapon_AttachmentShow", WeaponEvents.ATTACHMENT_SHOW);
1054 RegisterEvent("Weapon_BulletEject", WeaponEvents.BULLET_EJECT);
1055 RegisterEvent("Weapon_BulletHide", WeaponEvents.BULLET_HIDE);
1056 RegisterEvent("Weapon_BulletHide2", WeaponEvents.BULLET_HIDE2);
1057 RegisterEvent("Weapon_BulletInChamber", WeaponEvents.BULLET_IN_CHAMBER);
1058 RegisterEvent("Weapon_BulletInMagazine", WeaponEvents.BULLET_IN_MAGAZINE);
1059 RegisterEvent("Weapon_BulletShow", WeaponEvents.BULLET_SHOW);
1060 RegisterEvent("Weapon_BulletShow2", WeaponEvents.BULLET_SHOW2);
1061 RegisterEvent("Weapon_CanUnjam_End", WeaponEvents.CANUNJAM_END);
1062 RegisterEvent("Weapon_CanUnjam_Start", WeaponEvents.CANUNJAM_START);
1063 RegisterEvent("Weapon_Cocked", WeaponEvents.COCKED);
1064 RegisterEvent("Weapon_MagazineAttached", WeaponEvents.MAGAZINE_ATTACHED);
1065 RegisterEvent("Weapon_MagazineDetached", WeaponEvents.MAGAZINE_DETACHED);
1066 RegisterEvent("Weapon_MagazineHide", WeaponEvents.MAGAZINE_HIDE);
1067 RegisterEvent("Weapon_MagazineShow", WeaponEvents.MAGAZINE_SHOW);
1068 RegisterEvent("Weapon_SliderOpen", WeaponEvents.SLIDER_OPEN);
1069 RegisterEvent("Weapon_Unjammed", WeaponEvents.UNJAMMED);
1070 RegisterEvent("Weapon_Hammer_Uncocked", WeaponEvents.HAMMER_UNCOCKED);
1071 RegisterEvent("Weapon_Hammer_Cocked", WeaponEvents.HAMMER_COCKED);
1072 RegisterEvent("Weapon_Change_Hide", WeaponEvents.CHANGE_HIDE);
1073 RegisterEvent("Weapon_Change_Show", WeaponEvents.CHANGE_SHOW);
1074 RegisterEvent("Weapon_CylinderRotate", WeaponEvents.CYLINDER_ROTATE);
1075 }
1076
1077 //----------------------------------------------------
1078 // weapon init states
1079
1080
1085 proto native void SetInitState(int pFrameIndex);
1086
1088 proto native static void StaticSetInitState(Human pHuman, int pFrameIdx);
1089
1090
1091 //----------------------------------------------------
1092 //
1093
1095 proto native float GetBaseAimingAngleUD();
1096
1098 proto native float GetBaseAimingAngleLR();
1099
1100
1101 //----------------------------------------------------
1102 // throwing
1103 proto native void SetThrowingMode(bool pState);
1104
1105 proto native bool IsThrowingMode();
1106
1107 proto native void ThrowItem(int throwType);
1108
1109 proto native bool WasItemLeaveHandsEvent();
1110
1111 //----------------------------------------------------
1112 // debug copy
1113
1115 proto native int DebugIsEvent();
1116
1118 proto native void DebugResetEvents();
1119}
1120
1121
1122// *************************************************************************************
1123// ! HumanCommandAdditives - additional damage
1124// *************************************************************************************
1125class HumanCommandAdditives
1126{
1127 private void HumanCommandAdditives() {}
1128 private void ~HumanCommandAdditives() {}
1129
1131 proto native void SetInjured(float pValue, bool pInterpolate);
1132
1134 proto native void SetExhaustion(float pValue, bool pInterpolate);
1135
1137 proto native void SetTalking(bool pValue);
1138
1140 proto native void StartModifier(int pType);
1141
1143 proto native void CancelModifier();
1144
1146 proto native bool IsModifierActive();
1147}
1148
1149
1150// *************************************************************************************
1151// ! HumanMovementState - movement state, command, stance, movement, human.GetMovementState(movementState)
1152// *************************************************************************************
1153class HumanMovementState
1154{
1155 int m_CommandTypeId;
1156 int m_iStanceIdx;
1157 int m_iMovement;
1158 float m_fLeaning;
1159
1160 int m_LocalMovement = -1;
1161
1163 bool IsRaised()
1164 {
1165 return m_iStanceIdx >= DayZPlayerConstants.STANCEIDX_RAISEDERECT;
1166 }
1167
1169 bool IsRaisedInProne()
1170 {
1171 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE;
1172 }
1173
1175 bool IsInProne()
1176 {
1177 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE;
1178 }
1179
1181 bool IsInRaisedProne()
1182 {
1183 return m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE;
1184 }
1185
1187 bool IsLeaning()
1188 {
1189 return m_fLeaning != 0;
1190 }
1191}
1192
1193enum HumanRelativeHeadingMode
1194{
1196 CURRENT,
1197
1199 INPUT,
1200};
1201
1209class HumanCommandScript
1210{
1212 // HumanCommandScript(Human pHuman);
1213
1216 void OnActivate() { };
1217
1219 void OnDeactivate() { };
1220
1221
1222 //---------------------------------------------------------------
1223 // usable everywhere
1224
1226 proto native void SetFlagFinished(bool pFinished);
1227
1228#ifdef FEATURE_NETWORK_RECONCILIATION
1230 proto native void OverrideCorrectionType(AnimPhysCorrectionType correctionType);
1231#endif
1232
1234 proto native void SetHeading(float yawAngle, float filterDt = -1, float maxYawSpeed = FLT_MAX);
1235 proto native void AddHeadingRelativeTo(HumanRelativeHeadingMode mode, float yawAngle, float filterDt = -1, float maxYawSpeed = FLT_MAX);
1236
1238 int GetCurrentStance()
1239 {
1240 return DayZPlayerConstants.STANCEIDX_ERECT;
1241 }
1242
1244 int GetCurrentMovement()
1245 {
1246 return DayZPlayerConstants.MOVEMENT_IDLE;
1247 }
1248
1250 float GetCurrentLeaning()
1251 {
1252 return 0.0;
1253 }
1254
1255 //---------------------------------------------------------------
1256 // PreAnim Update
1257
1261 void PreAnimUpdate(float pDt);
1262
1264 proto native void PreAnim_CallCommand(int pCommand, int pParamInt, float pParamFloat);
1265 proto native void PreAnim_SetFloat(int pVar, float pFlt);
1266 proto native void PreAnim_SetInt(int pVar, int pInt);
1267 proto native void PreAnim_SetBool(int pVar, bool pBool);
1268
1269 void PreAnim_SetFilteredHeading(float pYawAngle, float pFilterDt, float pMaxYawSpeed)
1270 {
1271 SetHeading(pYawAngle, pFilterDt, pMaxYawSpeed);
1272 }
1273
1274 //---------------------------------------------------------------
1275 // PrePhys Update
1276
1279 void PrePhysUpdate(float pDt);
1280
1282 proto native bool PrePhys_IsEvent(int pEvent);
1283 proto native bool PrePhys_IsTag(int pTag);
1284 proto native bool PrePhys_GetTranslation(out vector pOutTransl); // vec3 in local space !
1285 proto native bool PrePhys_GetRotation(out float pOutRot[4]); // quaternion in local space !
1286 proto native void PrePhys_SetTranslation(vector pInTransl); // vec3 in local space !
1287 proto native void PrePhys_SetRotation(float pInRot[4]); // quaternion in local space !
1288
1289 //---------------------------------------------------------------
1290 // PostPhys Update
1291
1295 bool PostPhysUpdate(float pDt);
1296
1298 proto native void PostPhys_GetPosition(out vector pOutTransl);
1299 proto native void PostPhys_GetRotation(out float pOutRot[4]);
1300 proto native void PostPhys_SetPosition(vector pInTransl);
1301 proto native void PostPhys_SetRotation(float pInRot[4]);
1302 proto native void PostPhys_LockRotation();
1303}
1304
1306enum HumanMoveCommandID
1307{
1308 None = 0,
1309 CommandMove = 1,
1310 CommandMelee = 2,
1311 CommandMelee2 = 4,
1312 CommandFall = 8,
1313 CommandClimb = 16,
1314 CommandDeath = 32,
1315 CommandUnconscious = 64,
1316 CommandDamageFullbody = 128,
1317 CommandDamageAdditive = 256,
1318 CommandLadder = 512,
1319 CommandSwim = 1024,
1320 CommandVehicle = 2048,
1321 CommandActionFullbody = 4096,
1322 CommandActionAdditive = 8192
1323}
1324
1325class HumanType : ManType
1326{
1327};
1328
1329// *************************************************************************************
1330// ! Human - human script interface
1331// *************************************************************************************
1332class Human : Man
1333{
1335
1337 proto native void GetTransformWS(out vector pTm[4]);
1338
1341 proto native void PhysicsGetTransformWS(out vector pTm[4]);
1342
1344 proto native void PhysicsGetTransformLS(out vector pTm[4]);
1345
1348 proto native vector PhysicsGetPositionWS();
1349
1351 proto native vector PhysicsGetPositionLS();
1352
1354 proto native bool CheckFreeSpace(vector localDir, float distance, bool useHeading, vector posOffset = vector.Zero, float xzScale = 1.0);
1355
1357 proto float CollisionMoveTest(vector dir, vector offset, float xzScale, IEntity ignoreEntity, out IEntity hitEntity, out vector hitPosition, out vector hitNormal);
1358
1359 //---------------------------------------------------------
1360 // link/unlink to/from local space (enfusion hierachy)
1361 proto native void LinkToLocalSpaceOf(notnull IEntity child, vector pLocalSpaceMatrix[4]);
1362 proto native void UnlinkFromLocalSpace();
1363
1364 //---------------------------------------------------------
1365 // heading component
1366
1368 proto native void AlignPositionWS(vector position);
1369
1371 proto native void AlignTranslationWS(vector translation);
1372
1374 proto native void AlignTranslationLS(vector translation);
1375
1377 proto native void AlignDirectionWS(vector direction);
1378
1381 void OnPhysMove(float dt, vector transform[4]) {}
1382
1383 //---------------------------------------------------------
1384 // bone transforms
1385
1387 proto native int GetBoneIndexByName(string pBoneName);
1388
1389
1391 proto native HumanAnimInterface GetAnimInterface();
1392
1393 //---------------------------------------------------------
1394 // physic props
1395
1397 proto native bool PhysicsIsFalling(bool pValidate);
1398
1400 proto native IEntity PhysicsGetFloorEntity();
1401
1403 proto native IEntity PhysicsGetLinkedEntity();
1404
1407 proto native bool PhysicsWasSlidingOffLinkedEntity();
1408
1410 proto native void PhysicsGetVelocity(out vector pVelocity);
1411
1412 proto native void PhysicsEnableGravity(bool pEnable);
1413
1414 proto native bool PhysicsIsSolid();
1415 proto native void PhysicsSetSolid(bool pSolid);
1416
1418 proto native void PhysicsSetRagdoll(bool pEnable);
1419
1420 //---------------------------------------------------------
1421 // controller
1422
1424 proto native HumanInputController GetInputController();
1425
1426 //---------------------------------------------------------
1427 // item accessor
1428
1429 proto native HumanItemAccessor GetItemAccessor();
1430
1431
1432 //---------------------------------------------------------
1433 // commands
1434
1436 proto native void GetMovementState(HumanMovementState pState);
1437
1439 proto native int GetCurrentCommandID();
1440
1441
1443
1445 proto native HumanCommandMove StartCommand_Move();
1446
1447 proto native HumanCommandMove GetCommand_Move();
1448
1450
1452 proto native HumanCommandMelee StartCommand_Melee(EntityAI pTarget);
1453
1454 proto native HumanCommandMelee GetCommand_Melee();
1455
1457 proto native HumanCommandMelee2 StartCommand_Melee2(EntityAI pTarget, int pHitType, float pComboValue, vector hitPos = vector.Zero);
1458
1459 proto native HumanCommandMelee2 GetCommand_Melee2();
1460
1461
1463
1467 proto native HumanCommandFall StartCommand_Fall(float pYVelocity);
1468
1470 proto native HumanCommandFall GetCommand_Fall();
1471
1472
1474
1476 proto native HumanCommandLadder StartCommand_Ladder(Building pBuilding, int pLadderIndex);
1477
1478 proto native HumanCommandLadder GetCommand_Ladder();
1479
1480
1482
1484 proto native HumanCommandSwim StartCommand_Swim();
1485
1486 proto native HumanCommandSwim GetCommand_Swim();
1487
1488
1490
1492 proto native HumanCommandVehicle StartCommand_Vehicle(Transport pTransport, int pTransportPositionIndex, int pVehicleSeat, bool fromUnconscious = false);
1493
1494 proto native HumanCommandVehicle GetCommand_Vehicle();
1495
1496
1498
1500 proto native HumanCommandClimb StartCommand_Climb(SHumanCommandClimbResult pClimbResult, int pType);
1501
1502 proto native HumanCommandClimb GetCommand_Climb();
1503
1505
1507 proto native HumanCommandDeathCallback StartCommand_Death(int pType, float pDirection, typename pCallbackClass, bool pKeepInLocalSpaceAfterLeave = false);
1508
1509 proto native HumanCommandDeathCallback GetCommand_Death();
1510
1511
1513 proto native HumanCommandUnconscious StartCommand_Unconscious(float pType);
1514
1515 proto native HumanCommandUnconscious GetCommand_Unconscious();
1516
1517
1519
1521 // -> of type 0,...
1522 // -> from direction (lback -180,left -90,0,righ 90,rightback 180)
1523 proto native HumanCommandFullBodyDamage StartCommand_Damage(int pType, float pDirection);
1524
1525 proto native HumanCommandFullBodyDamage GetCommand_Damage();
1526
1527
1528
1530
1533 proto native HumanCommandActionCallback StartCommand_Action(int pActionID, typename pCallbackClass, int pStanceMask);
1534
1536 proto native HumanCommandActionCallback GetCommand_Action();
1537
1538
1539 //---------------------------------------------------------
1540 // command modifiers
1541
1543 proto native int GetCommandModifierCount();
1544
1546 proto native int GetCommandModifierID(int pIndex);
1547
1548
1550
1552 proto native HumanCommandAdditives GetCommandModifier_Additives();
1553
1555 proto native HumanCommandWeapons GetCommandModifier_Weapons();
1556
1557
1558
1559
1560 // --- modifier/additive actions - played on COMMANDID_MOVE command
1561
1563 proto native HumanCommandActionCallback AddCommandModifier_Action(int pActionID, typename pCallbackClass);
1564
1566 proto native void DeleteCommandModifier_Action(HumanCommandActionCallback pCallback);
1567
1569 proto native HumanCommandActionCallback GetCommandModifier_Action();
1570
1571
1572
1574
1576 // -> of type 0,...
1577 // -> from direction (lback -180,left -90,0,righ 90,rightback 180)
1578 proto native HumanCommandDamage AddCommandModifier_Damage(int pType, float pDirection);
1579
1580 proto native void DeleteCommandModifier_Damage(HumanCommandDamage pDamage);
1581
1582 proto native HumanCommandDamage GetCommandModifier_Damage();
1583
1584
1586
1589 proto native HumanCommandScript StartCommand_Script(HumanCommandScript pHumanCommand);
1590 proto native HumanCommandScript StartCommand_ScriptInst(typename pCallbackClass);
1591
1593 proto native HumanCommandScript GetCommand_Script();
1594
1595
1596
1597 //---------------------------------------------------------
1598 // debug info for Item Accessor
1599
1600
1602 proto native owned string DebugGetItemClass();
1603
1605 proto native owned string DebugGetItemSuperClass();
1606
1608 proto native owned string DebugGetItemAnimInstance();
1609
1610
1611 //---------------------------------------------------------
1612 // helper functions for disabling simulation upon death
1613 proto native void StartDeath();
1614 proto native void ResetDeath();
1615
1616 proto native void ResetDeathCooldown();
1617 proto native bool IsDeathProcessed();
1618 proto native bool IsDeathConditionMet();
1619
1620
1621 //--------------------------------------------------------
1622 // commands start/finish events
1623
1624 void OnCommandMoveStart();
1625 void OnCommandMoveFinish();
1626
1627 void OnCommandMeleeStart();
1628 void OnCommandMeleeFinish();
1629
1630 void OnCommandMelee2Start();
1631 void OnCommandMelee2Finish();
1632
1633 void OnCommandFallStart();
1634 void OnCommandFallFinish();
1635
1636 void OnCommandClimbStart();
1637 void OnCommandClimbFinish();
1638
1639 void OnCommandDeathStart();
1640 void OnCommandDeathFinish();
1641
1642 void OnCommandUnconsciousStart();
1643 void OnCommandUnconsciousFinish();
1644
1645 void OnCommandDamageFullbodyStart();
1646 void OnCommandDamageFullbodyFinish();
1647
1648 void OnCommandDamageAdditiveStart();
1649 void OnCommandDamageAdditiveFinish();
1650
1651 void OnCommandLadderStart();
1652 void OnCommandLadderFinish();
1653
1654 void OnCommandSwimStart();
1655 void OnCommandSwimFinish();
1656
1657 void OnCommandVehicleStart();
1658 void OnCommandVehicleFinish();
1659
1660 void OnCommandActionFullbodyStart();
1661 void OnCommandActionFullbodyFinish();
1662
1663 void OnCommandActionAdditiveStart();
1664 void OnCommandActionAdditiveFinish();
1665
1667 void OnStanceChange(int previousStance, int newStance);
1668
1670 bool CanChangeStance(int previousStance, int newStance);
1671
1672 //--------------------------------------------------------
1673 // rolling API
1674
1675 bool CanRoll();
1676 void OnRollStart(bool isToTheRight);
1677 void OnRollFinish();
1678
1679 //--------------------------------------------------------
1680 // vehicle API
1681
1682 void OnVehicleSeatDriverEnter();
1683 void OnVehicleSeatDriverLeft();
1684
1685 proto native bool IsControllingVehicle();
1686
1687}
class LogManager EntityAI
ActionBase GetRunningAction()
returns -1 when no action is running or RELOAD,MECHANISM, ....
override void OnStateChange(int pOldState, int pCurrentState)
override void OnAnimationEvent(int pEventID)
Definition man.c:9
proto native DayZCreatureAnimInterface GetAnimInterface()
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
proto native bool IsDeathProcessed()
proto native void ResetDeath()
proto native void StartDeath()
proto native void PostPhys_LockRotation()
quaternion in world space
proto native void ResetDeathCooldown()
proto native bool IsDeathConditionMet()
override void OnCommandDeathStart()
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
class LOD Object
@ None
Definition enworld.c:73
@ A
Definition ensystem.c:345
@ NONE
body is not in simulation, nor in collision world
Object GetParent()
Get parent of the Effect.
Definition effect.c:422
@ DISABLED
Definition enwidgets.c:79
int TAnimGraphVariable
Definition human.c:277
bool ShouldSimulationBeDisabled()
'OnSimulationEnd' is called before this
Definition human.c:618
int TAnimGraphTag
Definition human.c:278
class HumanAnimInterface HumanCommandActionCallback()
void OnSimulationEnd()
Definition human.c:615
class HumanInputController TAnimGraphCommand
HumanInputControllerOverrideType
Definition human.c:8
@ ONE_FRAME
Permenantly active until DISABLED is passed.
Definition human.c:11
int TAnimGraphEvent
Definition human.c:279
bool GetState()
returns one of STATE_...
void OnActivate()