Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
dayzplayercamera3rdperson.c
Go to the documentation of this file.
1// *************************************************************************************
2// ! DayZPlayerCamera3rdPerson - base for 3rd person cameras
3// *************************************************************************************
5{
6 static const float CONST_UD_MIN = -85.0;
7 static const float CONST_UD_MAX = 85.0;
8
9 static const float CONST_LR_MIN = -160.0;
10 static const float CONST_LR_MAX = 160.0;
11
13 {
14 if (pInput.Camera3rdIsRightShoulder())
15 {
17 }
18 else
19 {
21 }
22
26 m_fLeanDistance = 0.3;
28 }
29
30
31 //
32 override void OnActivate(DayZPlayerCamera pPrevCamera, DayZPlayerCameraResult pPrevCameraResult)
33 {
34 super.OnActivate(pPrevCamera, pPrevCameraResult);
35
36 if (pPrevCamera)
37 {
38 vector baseAngles = pPrevCamera.GetBaseAngles();
39 m_fUpDownAngle = baseAngles[0];
40 m_fLeftRightAngle = baseAngles[1];
41
42 vector addAngles = pPrevCamera.GetAdditiveAngles();
43 m_fUpDownAngleAdd = addAngles[0];
44 m_fLeftRightAngleAdd = addAngles[1];
45 }
46 }
47
48 //
49 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
50 {
51 m_pPlayer.GetMovementState(m_MovementState);
52
56
58
59 // update l/r offsets and set it as
60 if (m_pInput.Camera3rdIsRightShoulder())
61 {
63 }
64 else
65 {
67 }
68
69 float shoulderDist = m_fCameraLRShoulder * m_fShoulderWidth + m_MovementState.m_fLeaning * m_fLeanDistance;
70
72 Math3D.YawPitchRollMatrix(GetCurrentOrientation(), pOutResult.m_CameraTM);
73
75 if (m_iBoneIndex != -1)
76 {
77 pOutResult.m_CameraTM[3] = m_pPlayer.GetBonePositionMS(m_iBoneIndex);
78 }
79 else
80 {
81 pOutResult.m_CameraTM[3] = "0 0 0";
82 }
83
85 vector msOffset = m_CameraOffsetMS;
86 vector lsOffset = m_CameraOffsetLS;
87
89 {
90 lsOffset[0] = lsOffset[0] + shoulderDist;
91 }
92 else
93 {
94 msOffset[0] = msOffset[0] + shoulderDist;
95 }
96
97 // ls offset + ms offset + shoulder width
98 pOutResult.m_CameraTM[3] = pOutResult.m_CameraTM[3] + pOutResult.m_CameraTM[0] * lsOffset[0] + pOutResult.m_CameraTM[1] * lsOffset[1] + pOutResult.m_CameraTM[2] * lsOffset[2] + msOffset;
99
101 pOutResult.m_fDistance = m_fDistance;
102 pOutResult.m_fUseHeading = 1.0;
103 pOutResult.m_fInsideCamera = 0.0;
104 pOutResult.m_fPredictCollisionRadius = m_fPredictCollisionRadius;
105
107 StdFovUpdate(pDt, pOutResult);
109 }
110
112 {
113 vector a;
114 a[0] = m_fUpDownAngle;
115 a[1] = m_fLeftRightAngle;
116 a[2] = 0;
117 return a;
118 }
119
121 {
122 vector a;
123 a[0] = m_fUpDownAngleAdd;
125 a[2] = 0;
126 return a;
127 }
128
129 override string GetCameraName()
130 {
131 return "DayZPlayerCamera3rdPerson";
132 }
133
135 protected int m_iBoneIndex = -1;
138 protected float m_fDistance;
139 protected float m_fShoulderWidth;
140 protected bool m_bShoulderInLS;
141 protected float m_fRoll;
142 protected float m_fLeanDistance;
143
144
146 protected float m_fUpDownAngle;
147 protected float m_fUpDownAngleAdd;
148 protected float m_fLeftRightAngle;
149 protected float m_fLeftRightAngleAdd;
150
152 protected float m_fCameraLRShoulder; // -1..1 shoulderness :)
153 protected float m_fCameraLRShoulderVel[1]; // 0
154
157
160}
161
162
163
164
165// *************************************************************************************
166// ! DayZPlayerCamera3rdPersonErc - 3rd person erected
167// *************************************************************************************
169{
172 //Print("new camera: DayZPlayerCamera3rdPersonErc");
173
175 m_CameraOffsetMS = "0.0 1.4 0.0";
176 m_CameraOffsetLS = "0.0 0.3 0.0";
179 }
180}
181
182
183// *************************************************************************************
184// ! DayZPlayerCamera3rdPersonJump - 3rd person jump
185// *************************************************************************************
187{
189 {
190 //Print("new camera: DayZPlayerCamera3rdPersonJump");
191
193 m_fDelay = 0.15;
194 m_fDamping = 0.25;
195
197 m_fJumpStartY = pPlayer.GetOrigin()[1];
198 m_fJumpOffset = 0;
199 m_fDelayTimer = 0;
200 }
201
202 //
203 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
204 {
205 super.OnUpdate(pDt, pOutResult);
206
207 float yPos = m_pPlayer.GetOrigin()[1];
208 float yDiff = yPos - m_fJumpStartY;
209 yDiff = Math.Clamp(yDiff, 0.0, 2.0);
210
211 if( m_fDelayTimer < m_fDelay )
212 {
213 m_fDelayTimer += pDt;
215 }
216 else
217 {
218 m_fJumpOffset = Math.SmoothCD(m_fJumpOffset, -(m_fDamping * yDiff), m_jumpOffsetVelocity, 0.3, 1000, pDt);
219 }
220
221 float newY = pOutResult.m_CameraTM[3][1] - m_fJumpOffset;
222 pOutResult.m_CameraTM[3][1] = newY;
223 }
224
226 float m_fDelay;
228
234}
235
236// *************************************************************************************
237// ! DayZPlayerCamera3rdPersonJump - 3rd person jump
238// *************************************************************************************
240{
243 //Print("new camera: DayZPlayerCamera3rdPersonClimb");
244 m_fDistance = 1.0;
245 m_CameraOffsetMS = "0.0 0.3 -0.6";
246 m_iBoneIndex = pPlayer.GetBoneIndexByName("Spine");
248 }
249}
250
251// *************************************************************************************
252// ! DayZPlayerCamera3rdPersonErc - 3rd person erected sprint
253// *************************************************************************************
255{
257 {
258 //Print("new camera: DayZPlayerCamera3rdPersonErcSpr");
259
260 m_fDistance = 2.0;
261 m_CameraOffsetMS = "0.0 1.3 0.0";
262 m_CameraOffsetLS = "0.0 0.3 0.0";
263 m_fShoulderWidth = 0.15;
264
265 m_iPelvisBone = pPlayer.GetBoneIndexByName("Pelvis");
266 if (m_iPelvisBone == -1)
267 {
268 Print("DayZPlayerCamera3rdPersonErcSpr: hips bone not found");
269 }
270
271 m_fTime = 0.0;
272 }
273
274
275
276 //
277 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
278 {
279 m_fTime += pDt * 5;
281 vector tm[4];
282
283 m_pPlayer.GetBoneTransformLS(m_iPelvisBone, tm);
285 float xShift = tm[1][0];
286 m_CurrentCameraRoll = xShift * 3.0; // 3 is just made up value i like :)
288 // m_CurrentCameraRoll = (sin(1.5 * m_fTime)); // + 0.3 * sin(3.6 * m_fTime) + 0.2 * sin(0.7 * m_fTime)) / 1.3 * 3;
289
291 super.OnUpdate(pDt, pOutResult);
292
293 //pOutResult.m_fFovMultiplier = 1.2;
295
296
297 protected int m_iPelvisBone;
298 protected float m_fTime;
299
303// *************************************************************************************
304// ! DayZPlayerCamera3rdPersonErcRaised - 3rd person erected raised
305// *************************************************************************************
310 //Print("new camera: DayZPlayerCamera3rdPersonErcRaised");
313 if ( pPlayer.GetCurrentPerItemCameraUD () == DayZPlayerCameras.PERITEMUD_EMPTYHANDED )
315 // no item in hands
316 m_fDistance = 1.2;
318 m_CameraOffsetMS = "0.0 1.3 0.2";
319 m_CameraOffsetLS = "0.0 0.3 0.0";
320
321 }
322 else if ( pPlayer.GetCurrentPerItemCameraUD () == DayZPlayerCameras.PERITEMUD_TWOHANDED )
323 {
324 // two handed
325 m_fDistance = 1.2;
326 m_fShoulderWidth = 0.4;
327 m_CameraOffsetMS = "0.0 1.3 0.2";
328 m_CameraOffsetLS = "0.0 0.3 0.0";
329 }
330 else if ( pPlayer.GetCurrentPerItemCameraUD () == DayZPlayerCameras.PERITEMUD_ONEHANDED )
331 {
332 // one handed
333 m_fDistance = 1.2;
334 m_fShoulderWidth = 0.4;
335 m_CameraOffsetMS = "0.0 1.3 0.2";
336 m_CameraOffsetLS = "0.0 0.3 0.0";
337 }
338 else
339 {
340 // weapons in hands
341 m_fDistance = 0.8;
342 m_CameraOffsetMS = "0.0 1.3 0.2";
343 m_CameraOffsetLS = "0.0 0.3 0.0";
344 m_fShoulderWidth = 0.5;
345 }
346 }
347
348 override bool IsCamera3rdRaised()
349 {
350 return true;
352}
353
354
355// *************************************************************************************
356// ! DayZPlayerCamera3rdPersonErcRaised - 3rd person erected raised
357// *************************************************************************************
358class DayZPlayerCamera3rdPersonErcRaisedMelee extends DayZPlayerCamera3rdPersonErcRaised
359{
365}
366
367
368// *************************************************************************************
369// ! DayZPlayerCamera3rdPersonCrouch - 3rd person crouch
370// *************************************************************************************
372{
373 static const float CONST_CAMERAMOVEMENTHEIGH = 0.4; // 0 idle, 0.15 walk 0.3 run/sprint
374
376 {
377 //Print("new camera: DayZPlayerCamera3rdPersonCrouch");
378
379 m_fDistance = 1.4;
380 m_CameraOffsetMS = "0.0 0.7 0.1";
381 m_CameraOffsetLS = "0.0 0.3 0.0";
382 m_fShoulderWidth = 0.3;
383 }
384
385 //
386 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
387 {
388 m_pPlayer.GetMovementState(m_MovementState);
389
391 float movement = (Limit(m_MovementState.m_iMovement, 1, 3) - 1.0) * 0.5;
392 movement *= CONST_CAMERAMOVEMENTHEIGH;
393 m_fCameraHeight = Math.SmoothCD(m_fCameraHeight, movement, m_fCameraHeightVel, 0.2, 1000, pDt);
395
397 super.OnUpdate(pDt, pOutResult);
398 }
399
400 protected float m_fCameraHeight; // -1..1 shoulderness :)
401 protected float m_fCameraHeightVel[1]; // 0
402}
403
404
405// *************************************************************************************
406// ! DayZPlayerCamera3rdPersonCrouchRaised- 3rd person crouch raised
407// *************************************************************************************
409{
411 {
412 //Print("new camera: DayZPlayerCamera3rdPersonCrouchRaised");
413
414 m_fDistance = 0.8;
415 m_CameraOffsetMS = "0.0 0.8 0.1"; // being overwritten by m_CameraOffsetMS[1] from DayZPlayerCamera3rdPersonCrouch
416 m_CameraOffsetLS = "0.0 0.3 0.0";
417 m_fShoulderWidth = 0.5;
418 }
419
420 override bool IsCamera3rdRaised()
421 {
422 return true;
423 }
424}
425
426
427// *************************************************************************************
428// ! DayZPlayerCamera3rdPersonProneRaised - 3rd person prone raised
429// *************************************************************************************
431{
432 protected vector m_BaseOffset
434 protected float m_LookAtLRAngle;
435
436 float UpdateLRAngleLookAt(float pMin, float pMax, float pDt)
437 {
439 if (m_pInput.CameraIsFreeLook() || m_bForceFreeLook)
440 {
441 m_LookAtLRAngle += m_pInput.GetAimChange()[0] * Math.RAD2DEG;
443
444 m_fLRAngleVel[0] = 0; // reset filter
445 }
446 else
447 {
448 // smooth value back to 0
450 // m_fLeftRightAngle = 0.9 * (1.0 - pDt);
451 }
452
453 return m_LookAtLRAngle;
454 }
455
456 override void OnActivate(DayZPlayerCamera pPrevCamera, DayZPlayerCameraResult pPrevCameraResult)
457 {
458 super.OnActivate(pPrevCamera, pPrevCameraResult);
459
460 if (m_iBoneIndex != -1)
461 {
462 m_BaseOffset = m_pPlayer.GetBonePositionMS(m_iBoneIndex);
463 }
464 else
465 {
466 m_BaseOffset = "0 0 0";
467 }
468 }
469
470
471 //
472 override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
473 {
476
477 float orientYaw = m_pPlayer.GetOrientation()[0];
478 float headYaw = m_pInput.GetHeadingAngle() * Math.RAD2DEG;
479 m_CurrentCameraYaw = -fixAngle_180_180(orientYaw + headYaw);
480
481 // Print("OY: " + orientYaw.ToString() + " HY: " + headYaw.ToString());
482
483 // update l/r offsets and set it as
484
486
488 {
489 m_fCameraLRShoulder = Math.SmoothCD(m_fCameraLRShoulder, 1.0, m_fCameraLRShoulderVel, 0.14, 1000, pDt);
490 }
491 else
492 {
493 m_fCameraLRShoulder = Math.SmoothCD(m_fCameraLRShoulder, -1.0, m_fCameraLRShoulderVel, 0.14, 1000, pDt);
494 }
495
496 float shoulderDist = m_fCameraLRShoulder * m_fShoulderWidth;
497
499 Math3D.YawPitchRollMatrix(GetCurrentOrientation(), pOutResult.m_CameraTM);
500
502 if (m_iBoneIndex != -1)
503 {
504 vector bonePos = m_pPlayer.GetBonePositionMS(m_iBoneIndex);
505 m_BaseOffset[0] = Math.SmoothCD(m_BaseOffset[0], bonePos[0], m_BaseOffsetVelX, 0.14, 1000, pDt);
506 m_BaseOffset[1] = Math.SmoothCD(m_BaseOffset[1], bonePos[1], m_BaseOffsetVelY, 0.14, 1000, pDt);
507 m_BaseOffset[2] = Math.SmoothCD(m_BaseOffset[2], bonePos[2], m_BaseOffsetVelZ, 0.14, 1000, pDt);
508 }
509
511 vector msOffset = m_CameraOffsetMS;
512 vector lsOffset = m_CameraOffsetLS;
513
514 lsOffset[0] = lsOffset[0] + shoulderDist;
515
516 // ls offset + ms offset + shoulder width
517 pOutResult.m_CameraTM[3] = m_BaseOffset + pOutResult.m_CameraTM[0] * lsOffset[0] + pOutResult.m_CameraTM[1] * lsOffset[1] + pOutResult.m_CameraTM[2] * lsOffset[2] + msOffset;
518
519 m_CurrentCameraYaw = UpdateLRAngleLookAt(-180, 180, pDt);
520 Math3D.YawPitchRollMatrix(GetCurrentOrientation(), pOutResult.m_CameraTM);
521
523 pOutResult.m_fDistance = m_fDistance;
524 pOutResult.m_fUseHeading = 1.0;
525 pOutResult.m_fInsideCamera = 0.0;
526 pOutResult.m_fPositionModelSpace = 1.0;
527 pOutResult.m_bUpdateWhenBlendOut = false;
528
530 StdFovUpdate(pDt, pOutResult);
531 UpdateCameraNV(PlayerBase.Cast(m_pPlayer));
532 }
533}
534
535// *************************************************************************************
536// ! DayZPlayerCamera3rdPersonProne - 3rd person prone
537// *************************************************************************************
539{
541 {
542 //Print("new camera: DayZPlayerCamera3rdPersonProne");
543 m_iBoneIndex = pPlayer.GetBoneIndexByName ("Camera3rd_Helper");
544 m_fDistance = 1.0;
545 m_CameraOffsetMS = "0.0 0.4 0.0";
546 m_CameraOffsetLS = "0.0 0.2 0.0";
547 m_fShoulderWidth = 0.5;
548 }
549
550}
551
552// *************************************************************************************
553// ! DayZPlayerCamera3rdPersonProneRaised - 3rd person prone raised
554// *************************************************************************************
556{
557 void DayZPlayerCamera3rdPersonProneRaised(DayZPlayer pPlayer, HumanInputController pInput)
559 //Print("new camera: DayZPlayerCamera3rdPersonProneRaised");
560 m_iBoneIndex = pPlayer.GetBoneIndexByName ("Camera3rd_Helper");
561 m_fDistance = 1.0;
562 m_CameraOffsetMS = "0.0 0.4 0.0";
563 m_CameraOffsetLS = "0.0 0.2 0.0";
564 m_fShoulderWidth = 0.5;
565 }
566
567 override bool IsCamera3rdRaised()
568 {
569 return true;
570 }
571}
void DayZPlayerCamera3rdPersonCrouchRaised(DayZPlayer pPlayer, HumanInputController pInput)
override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
void DayZPlayerCamera3rdPersonJump(DayZPlayer pPlayer, HumanInputController pInput)
void DayZPlayerCamera3rdPersonErcSpr(DayZPlayer pPlayer, HumanInputController pInput)
override void HandleShoulderCameraOverride(HumanInputController pInput)
void DayZPlayerCamera3rdPersonProne(DayZPlayer pPlayer, HumanInputController pInput)
this is main camera class
override void OnActivate(DayZPlayerCamera pPrevCamera, DayZPlayerCameraResult pPrevCameraResult)
vector m_CameraOffsetMS
model space offset
static const float CONST_UD_MAX
up limit
static const float CONST_LR_MAX
up limit
override void OnUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
float m_fLeftRightAngle
left right angle in rad (in freelook only)
float m_fUpDownAngle
up down angle in rad
float m_fLeftRightAngleAdd
left right angle in rad (in freelook only)
float m_fShoulderWidth
shoulder camera widths
float m_fUpDownAngleAdd
up down angle in rad
float m_fDistance
distance from start
float m_fPredictCollisionRadius
collision prediction
static const float CONST_LR_MIN
down limit
float m_fRoll
camera roll (deprecated)
void DayZPlayerCamera3rdPerson(DayZPlayer pPlayer, HumanInputController pInput)
static const float CONST_UD_MIN
down limit
float m_fCameraLRShoulder
shoulder offsets
ref HumanMovementState m_MovementState
movement state
vector m_CameraOffsetLS
local space offset
float m_fLeanDistance
shift on leaning
bool m_bShoulderInLS
true - shoulder is in local space
static const int PERITEMUD_EMPTYHANDED
uninitialized / invalid per item camera user data
proto native float GetHeadingAngle()
returns main heading angle (in radians) -PI .. PI (this is world Y angle player is actualy pointing t...
proto native bool Camera3rdIsRightShoulder()
returns true if camera is on right/ false-left shoulder
proto native void Override3rdIsRightShoulder(HumanInputControllerOverrideType overrideType, bool value)
int m_iMovement
current stance (DayZPlayerConstants.STANCEIDX_ERECT, ...), only if the command has a stance
Definition human.c:1157
Definition enmath.c:7
void DayZPlayerCameraResult()
cannot be instanced from script (always created from C++)
Definition dayzplayer.c:83
float m_fDistance
camera distance (external cameras only)
Definition dayzplayer.c:63
float m_fPredictCollisionRadius
sphere radius used for collision prediction
Definition dayzplayer.c:65
DayZPlayer m_pPlayer
data
Definition dayzplayer.c:135
HumanInputController m_pInput
human input
Definition dayzplayer.c:136
class DayZPlayerCameraResult DayZPlayerCamera(DayZPlayer pPlayer, HumanInputController pInput)
Definition dayzplayer.c:56
vector GetCurrentOrientation()
Definition dayzplayer.c:112
int m_iBoneIndex
main bone
static const float CONST_UD_MAX
up limit
static const float CONST_LR_MIN
down limit
static const float CONST_LR_MAX
up limit
static const float CONST_UD_MIN
down limit
float m_fCameraHeight
vector m_CameraOffsetMS
model space offset
class DayZPlayerCamera3rdPersonCrouchRaised extends DayZPlayerCamera3rdPersonCrouch m_BaseOffsetVelZ[1]
float m_jumpOffsetVelocity[1]
int m_iBoneIndex
runtime config
float m_fLeftRightAngle
left right angle in rad (in freelook only)
class DayZPlayerCamera3rdPerson extends DayZPlayerCameraBase DayZPlayerCamera3rdPersonErc(DayZPlayer pPlayer, HumanInputController pInput)
float m_fUpDownAngle
runtime values
static const float CONST_UD_MAX
up limit
class DayZPlayerCamera3rdPersonJump extends DayZPlayerCamera3rdPersonErc DayZPlayerCamera3rdPersonClimb(DayZPlayer pPlayer, HumanInputController pInput)
float m_fShoulderWidth
shoulder camera widths
float m_fUpDownAngleAdd
up down angle in rad
float m_fDistance
distance from start
void DayZPlayerCamera3rdPersonCrouch(DayZPlayer pPlayer, HumanInputController pInput)
class DayZPlayerCamera3rdPersonProne extends DayZPlayerCamera3rdPersonProneBase DayZPlayerCamera3rdPersonProneRaised(DayZPlayer pPlayer, HumanInputController pInput)
override bool IsCamera3rdRaised()
class DayZPlayerCamera3rdPersonCrouchRaised extends DayZPlayerCamera3rdPersonCrouch m_BaseOffsetVelY[1]
class DayZPlayerCamera3rdPersonErcSpr extends DayZPlayerCamera3rdPersonErc DayZPlayerCamera3rdPersonErcRaised(DayZPlayer pPlayer, HumanInputController pInput)
void DayZPlayerCamera3rdPersonErcSpr(DayZPlayer pPlayer, HumanInputController pInput)
void DayZPlayerCamera3rdPerson(DayZPlayer pPlayer, HumanInputController pInput)
float m_fDelayTimer
runtime values
class DayZPlayerCamera3rdPersonCrouchRaised extends DayZPlayerCamera3rdPersonCrouch m_BaseOffsetVelX[1]
float m_fCameraLRShoulder
shoulder offsets
ref HumanMovementState m_MovementState
movement state
float UpdateLRAngleLookAt(float pMin, float pMax, float pDt)
float m_fCameraLRShoulderVel[1]
static const float CONST_UD_MIN
down limit
float m_fJumpStartY
vector m_CameraOffsetLS
local space offset
float m_fJumpOffset
class DayZPlayerCamera3rdPersonErcRaisedMelee extends DayZPlayerCamera3rdPersonErcRaised CONST_CAMERAMOVEMENTHEIGH
float m_LookAtLRAngle
float m_fCameraHeightVel[1]
float UpdateLRAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
float m_CurrentCameraYaw
float m_CurrentCameraPitch
float UpdateUDAngleUnlocked(out float pAngle, out float pAngleAdd, float pMin, float pMax, float pDt)
void StdFovUpdate(float pDt, out DayZPlayerCameraResult pOutResult)
float m_CurrentCameraRoll
bool m_bForceFreeLook
void InitCameraOnPlayer(bool force=false)
float fixAngle_180_180(float pAngle)
float m_WeaponSwayModifier
void UpdateCameraNV(PlayerBase player)
void ProcessCameraShake(float delta, out float leftRight, out float upDown)
float m_fLRAngleVel[1]
proto void Print(void var)
Prints content of variable to console/log.
static proto void YawPitchRollMatrix(vector ang, out vector mat[3])
Creates rotation matrix from angles.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float SmoothCD(float val, float target, inout float velocity[], float smoothTime, float maxVelocity, float dt)
Does the CD smoothing function - easy in | easy out / S shaped smoothing.
static const float RAD2DEG
Definition enmath.c:16
Limit
proto native void OnUpdate()
Definition tools.c:349
HumanInputControllerOverrideType
Definition human.c:8
void OnActivate()