#![allow(non_camel_case_types, non_snake_case)]
use std::{
ffi::{c_char, c_void},
ops::{Deref, DerefMut},
};
use crate::{
bindings::{
cvar::convar::Color,
server::cbasecombatcharacter::CBaseCombatCharacter,
server::{cbaseentity::CBaseEntity, EHandle},
},
high::vector::{Matrix3x4, Quaternion, Vector3},
size_assert,
};
#[repr(C)]
#[derive(Debug)]
pub struct fogparams_t {
pub gap: [c_char; 8],
pub botAlt: f32, pub topAlt: f32, pub halfDistBot: f32, pub halfDistTop: f32, pub distColorStr: f32, pub dirColorStr: f32, pub distOffset: f32, pub densityScale: f32, pub halfAngleDeg: f32, pub HDRColorScale: f32, pub distColor: Color, pub dirColor: Color, pub direction: Vector3, pub minFadeTime: f32, pub forceOntoSky: bool, pub enable: bool, pub gap_4a: [c_char; 2],
pub id: i32, }
size_assert!(FOG_SIZE where fogparams_t == 80);
#[repr(C)]
#[derive(Debug)]
pub struct sky3dparams_t {
pub gap: [c_char; 8],
pub scale: i32, pub cellNum: i32, pub useWorldFog: bool, pub gap_11: [c_char; 7],
pub fog: fogparams_t, }
size_assert!(SKY_SIZE where sky3dparams_t == 104);
#[repr(C)]
#[derive(Debug)]
pub struct fogplayerparamsstate_t {
pub gap: [c_char; 8],
pub enable: bool, pub gap_9: [c_char; 3],
pub botAlt: f32, pub topAlt: f32, pub halfDistBot: f32, pub halfDistTop: f32, pub distOffset: f32, pub densityScale: f32, pub halfAngleDeg: f32, pub distColorStr: f32, pub dirColorStr: f32, pub HDRColorScale: f32, pub minFadeTime: f32, pub forceOntoSky: bool, pub distColor: Color, pub dirColor: Color, pub direction: Vector3, pub id: i32, pub gap_54: [c_char; 4],
}
size_assert!(FOG_SIZE_PLAYER where fogplayerparamsstate_t == 88);
#[repr(C)]
#[derive(Debug)]
pub struct fogplayerparams_t {
pub gap: [c_char; 8],
pub m_hCtrl: EHandle, pub m_flTransitionStartTime: f32, pub m_Old: fogplayerparamsstate_t, pub m_New: fogplayerparamsstate_t, pub m_OldSky: fogplayerparamsstate_t, pub m_NewSky: fogplayerparamsstate_t, }
size_assert!(FOG_PARAMS_SIZE where fogplayerparams_t == 368);
#[repr(C)]
#[derive(Debug)]
pub struct audioparams_t {
pub gap_0: [c_char; 8],
pub localSound: [Vector3; 8], pub soundscapeIndex: i32, pub localBits: i32, pub entIndex: i32, pub gap_74: [c_char; 4],
}
size_assert!(AUDIO_SIZE where audioparams_t == 120);
#[repr(C)]
#[derive(Debug)]
pub struct CPlayerState {
pub vftable: *const c_void,
pub currentClass: i32, pub requestedClass: i32, pub onDeathClass: i32, pub oldClass: i32, pub a_angle: Vector3, pub gap_24: [c_char; 4],
pub netname: u64, pub fixangle: i32, pub anglechange: Vector3, pub index: i32, pub replay: bool, pub gap_45: [c_char; 3],
pub lastPlayerView_tickcount: i32, pub lastPlayerView_origin: Vector3, pub lastPlayerView_angle: Vector3, pub deadflag: bool, pub gap_65: [c_char; 3],
pub localViewAngles: Vector3, pub worldViewAngles: Vector3, }
size_assert!(PLAYER_STATE_SIZE where CPlayerState == 128);
#[repr(C)]
#[derive(Debug)]
pub struct Rodeo_PlayerData {
pub vftable: *const c_void,
pub stage: i32, pub canRodeo: bool,
pub gap_d: [c_char; 3],
pub rodeoCountParity: i32, pub startTime: f32, pub endTime: f32, pub targetEnt: EHandle, pub prevEnt: EHandle, pub prevEntCooldown: f32, pub pilot1pSequenceIndex: i32, pub pilot3pSequenceIndex: i32, pub targetAttachmentIndex: i32, pub rodeoStabilizeStrength: f32, pub rodeoStabilizeViewFirstFrame: bool, pub gap_39: [c_char; 3],
pub lastPlayerToWorld: Matrix3x4, pub initialCameraCorrection: Quaternion, }
size_assert!(SIZE_RODEO where Rodeo_PlayerData == 128);
#[repr(C)]
#[derive(Debug)]
pub struct ClassModValues {
pub health: f32, pub healthShield: f32, pub healthDoomed: f32, pub healthPerSegment: f32, pub powerRegenRate: f32, pub dodgeDuration: f32, pub dodgeSpeed: f32, pub dodgePowerDrain: f32, pub smartAmmoLockTimeModifier: f32, pub wallrunAccelerateVertical: f32, pub wallrunAccelerateHorizontal: f32, pub wallrunMaxSpeedHorizontal: f32, pub wallrun_timeLimit: f32, pub wallrun_hangTimeLimit: f32, pub wallrunAllowed: bool, pub gap_39: [c_char; 3],
pub wallrunAdsType: i32, pub doubleJumpAllowed: bool, pub gap_41: [c_char; 3],
pub pitchMaxUp: f32, pub pitchMaxDown: f32, pub mantlePitchLeveling: bool, pub dodgeAllowed: bool, pub sprintAllowed: bool, pub stealthSounds: bool, pub hoverEnabled: bool, pub gap_51: [c_char; 3],
pub grapple_power_regen_delay: f32, pub grapple_power_regen_rate: f32, pub slideFOVScale: f32, pub slideFOVLerpInTime: f32, pub slideFOVLerpOutTime: f32, pub airSlowMoSpeed: f32, pub sharedEnergyTotal: i32, pub sharedEnergyRegenRate: f32, }
size_assert!(SIZE_CLASS_MOD where ClassModValues == 116);
#[repr(C)]
#[derive(Debug)]
pub struct PerPosClassModValues {
pub speed_: f32, pub sprintSpeed_: f32, }
size_assert!(SIZE_PER_CLASS where PerPosClassModValues == 8);
#[repr(C)]
#[derive(Debug)]
pub struct ThirdPersonViewData {
pub vftable: *const c_void,
pub m_thirdPersonEntViewOffset: Vector3, pub m_thirdPersonEntPitchIsFreelook: bool, pub m_thirdPersonEntYawIsFreelook: bool, pub m_thirdPersonEntUseFixedDist: bool, pub m_thirdPersonEntPushedInByGeo: bool, pub m_thirdPersonEntDrawViewmodel: bool, pub gap_19: [c_char; 3],
pub m_thirdPersonEntBlendTotalDuration: f32, pub m_thirdPersonEntBlendEaseInDuration: f32, pub m_thirdPersonEntBlendEaseOutDuration: f32, pub m_thirdPersonEntFixedPitch: f32, pub m_thirdPersonEntFixedYaw: f32, pub m_thirdPersonEntFixedDist: f32, pub m_thirdPersonEntMinYaw: f32, pub m_thirdPersonEntMaxYaw: f32, pub m_thirdPersonEntMinPitch: f32, pub m_thirdPersonEntMaxPitch: f32, pub m_thirdPersonEntSpringToCenterRate: f32, pub m_thirdPersonEntLookaheadLowerEntSpeed: f32, pub m_thirdPersonEntLookaheadUpperEntSpeed: f32, pub m_thirdPersonEntLookaheadMaxAngle: f32, pub m_thirdPersonEntLookaheadLerpAheadRate: f32, pub m_thirdPersonEntLookaheadLerpToCenterRate: f32, }
size_assert!(SIZE_THRID where ThirdPersonViewData == 96);
#[repr(C)]
#[derive(Debug)]
pub struct GrappleData {
pub vftable: *const c_void,
pub m_grappleVel: Vector3, pub m_grapplePoints: [Vector3; 4], pub m_grapplePointCount: i32, pub m_grappleAttached: bool, pub m_grapplePulling: bool, pub m_grappleRetracting: bool, pub m_grappleForcedRetracting: bool, pub m_grappleUsedPower: f32, pub m_grapplePullTime: f32, pub m_grappleAttachTime: f32, pub m_grappleDetachTime: f32, pub m_grappleMeleeTarget: EHandle, pub m_grappleHasGoodVelocity: bool, pub gap_61: [c_char; 3],
pub m_grappleLastGoodVelocityTime: f32, }
size_assert!(SIZE_GRAPPLE where GrappleData == 104);
#[repr(C)]
#[derive(Debug)]
pub struct PlayerZiplineData {
pub vftable: *const c_void,
pub m_ziplineReenableWeapons: bool, pub gap_9: [c_char; 3],
pub m_mountingZiplineDuration: f32, pub m_mountingZiplineAlpha: f32, pub m_ziplineStartTime: f32, pub m_ziplineEndTime: f32, pub m_mountingZiplineSourcePosition: Vector3, pub m_mountingZiplineSourceVelocity: Vector3, pub m_mountingZiplineTargetPosition: Vector3, pub m_ziplineUsePosition: Vector3, }
size_assert!(SIZE_PLAYER_ZIP where PlayerZiplineData == 80);
#[repr(C)]
#[derive(Debug)]
pub struct Player_OperatorData {
pub vftable: *const c_void,
pub diving: bool, pub cameraEnabled: bool, pub gap_a: [c_char; 2],
pub minPitch: f32, pub maxPitch: f32, pub followDistance: f32, pub followHeight: f32, pub shootFromPlayer: bool, pub gap_1d: [c_char; 3],
pub smoothDuration: f32, pub smoothFollowDistanceStartTime: f32, pub smoothFollowDistanceStartValue: f32, pub smoothFollowDistanceEndValue: f32, pub smoothFollowHeightStartTime: f32, pub smoothFollowHeightStartValue: f32, pub smoothFollowHeightEndValue: f32, pub smoothMinPitchStartTime: f32, pub smoothMinPitchStartValue: f32, pub smoothMinPitchEndValue: f32, pub smoothMaxPitchStartTime: f32, pub smoothMaxPitchStartValue: f32, pub smoothMaxPitchEndValue: f32, pub forceDefaultFloorHeight: bool, pub gap_55: [c_char; 3],
pub defaultFloorHeight: f32, pub ignoreWorldForMovement: bool, pub ignoreWorldForFloorTrace: bool, pub gap_5e: [c_char; 2],
pub moveGridSizeScale: f32, pub moveFloorHeightOffset: f32, pub jumpIsDodge: bool, pub gap_69: [c_char; 3],
pub jumpAcceleration: f32, pub jumpMaxSpeed: f32, pub hoverAcceleration: f32, pub hoverMaxSpeed: f32, }
size_assert!(SIZE_PLAYER_OPERATOR where Player_OperatorData == 128);
#[repr(C)]
#[derive(Debug)]
pub struct Player_ViewOffsetEntityData {
pub vftable: *const c_void,
pub viewOffsetEntityHandle: EHandle, pub lerpInDuration: f32, pub lerpOutDuration: f32, pub stabilizePlayerEyeAngles: bool, }
size_assert!(PLAYER_VIEW_SIZE where Player_ViewOffsetEntityData == 24);
#[repr(C)]
#[derive(Debug)]
pub struct Player_AnimViewEntityData {
pub vftable: *const c_void,
pub animViewEntityHandle: EHandle, pub animViewEntityAngleLerpInDuration: f32, pub animViewEntityOriginLerpInDuration: f32, pub animViewEntityLerpOutDuration: f32, pub animViewEntityStabilizePlayerEyeAngles: bool, pub gap_19: [c_char; 3],
pub animViewEntityThirdPersonCameraParity: i32, pub animViewEntityThirdPersonCameraAttachment: [i32; 6], pub animViewEntityNumThirdPersonCameraAttachments: i32, pub animViewEntityThirdPersonCameraVisibilityChecks: bool, pub gap_3d: [c_char; 3],
pub animViewEntityParity: i32, pub lastAnimViewEntityParity: i32, pub animViewEntityCameraPosition: Vector3, pub animViewEntityCameraAngles: Vector3, pub animViewEntityBlendStartTime: f32, pub animViewEntityBlendStartEyePosition: Vector3, pub animViewEntityBlendStartEyeAngles: Vector3, }
size_assert!(SIZE_PLAYER_ANIM where Player_AnimViewEntityData == 128);
#[repr(C)]
#[derive(Debug)]
pub struct CurrentData_Player {
pub vftable: *const c_void,
pub m_flHullHeight: f32, pub m_traversalAnimProgress: f32, pub m_sprintTiltFrac: f32, pub m_angEyeAngles: Vector3, }
size_assert!(SIZE_CURRENT where CurrentData_Player == 32);
#[repr(C)]
#[derive(Debug)]
pub struct CurrentData_LocalPlayer {
pub vftable: *const c_void,
pub m_viewConeAngleMin: Vector3, pub m_viewConeAngleMax: Vector3, pub m_stepSmoothingOffset: Vector3, pub m_vecPunchBase_Angle: Vector3, pub m_vecPunchBase_AngleVel: Vector3, pub m_vecPunchWeapon_Angle: Vector3, pub m_vecPunchWeapon_AngleVel: Vector3, }
size_assert!(SIZE_CURRENT_DATA where CurrentData_LocalPlayer == 96);
#[repr(C)]
#[derive(Debug)]
pub struct ScriptOriginatedDamageInfo {
pub m_scriptDamageType: i32, pub m_damageSourceIdentifier: i32, pub m_scriptAttackerClass: i32, }
size_assert!(SIZE_SCRIPT_ORI where ScriptOriginatedDamageInfo == 12);
#[repr(C)]
#[derive(Debug)]
pub struct CTakeDamageInfo {
pub m_vecDamageForce: Vector3, pub m_vecDamagePosition: Vector3, pub m_vecReportedPosition: Vector3, pub m_hInflictor: EHandle, pub m_hAttacker: EHandle, pub m_hWeapon: EHandle, pub m_hWeaponFileInfo: std::os::raw::c_short, pub m_forceKill: bool, pub gap_33: [c_char; 1],
pub m_flDamage: f32, pub m_damageCriticalScale: f32, pub m_flMaxDamage: f32, pub m_flHeavyArmorDamageScale: f32, pub m_bitsDamageType: i32, pub m_flRadius: f32, pub m_hitGroup: i32, pub m_hitBox: i32, pub m_scriptDamageInfo: ScriptOriginatedDamageInfo, pub m_deathPackage: i32, pub m_distanceFromAttackOrigin: f32, pub m_distanceFromExplosionCenter: f32, pub m_doDeathForce: bool, pub gap_6d: [c_char; 3],
pub m_damageFlags: i32, pub m_flinchDirection: i32, }
size_assert!(SIZE_DAMAGE where CTakeDamageInfo == 120);
#[repr(C)]
#[derive(Debug)]
pub struct PlayerMelee_PlayerData {
pub vftable: *const c_void,
pub attackActive: bool, pub attackRecoveryShouldBeQuick: bool, pub gap_a: [c_char; 2],
pub attackStartTime: f32, pub attackHitEntity: EHandle, pub attackHitEntityTime: f32, pub attackLastHitNonWorldEntity: f32, pub scriptedState: i32, pub pendingMeleePress: bool, }
size_assert!(SIZE_MELEE where PlayerMelee_PlayerData == 40);
#[repr(C)]
#[derive(Debug)]
pub struct CPlayerShared {
pub vftable: *const c_void,
pub m_nPlayerCond: i32, pub m_bLoadoutUnavailable: bool, pub gap_d: [c_char; 3],
pub m_flCondExpireTimeLeft: [f32; 2], pub m_pOuter: *mut c_void, pub m_flNextCritUpdate: f32, pub m_flTauntRemoveTime: f32, pub m_damageInfo: CTakeDamageInfo, }
size_assert!(SIZE_SHARED where CPlayerShared == 160);
#[repr(C)]
#[derive(Debug)]
pub struct StatusEffectTimedData {
pub vftable: *const c_void,
pub seComboVars: i32, pub seTimeEnd: f32, pub seEaseOut: f32, }
size_assert!(SIZE_STATUS_EFFECT where StatusEffectTimedData == 24);
#[repr(C)]
#[derive(Debug)]
pub struct StatusEffectEndlessData {
pub vftable: *const c_void,
pub seComboVars: i32, }
size_assert!(SIZE_ENDLESS where StatusEffectEndlessData == 16);
#[repr(C)]
#[derive(Debug)]
pub struct PushHistoryEntry {
pub time: f32, pub pushed: Vector3, }
size_assert!(SIZE_PUSH_HISTORY where PushHistoryEntry == 16);
#[repr(C)]
#[derive(Debug)]
pub struct PredictableServerEvent {
pub r#type: i32, pub deadlineTime: f32, pub fullSizeOfUnion: [i32; 4], }
size_assert!(SIZE_PREDICTABLE_EVENT where PredictableServerEvent == 24);
#[repr(C)]
#[derive(Debug)]
pub struct CPlayerLocalData {
pub vftable: *const c_void,
pub m_iHideHUD: i32, pub m_vecOverViewpoint: Vector3, pub m_duckToggleOn: bool, pub gap_19: [c_char; 3],
pub m_forceStance: i32, pub m_nDuckTransitionTimeMsecs: i32, pub m_superJumpsUsed: i32, pub m_jumpedOffRodeo: bool, pub gap_29: [c_char; 3],
pub m_flSuitPower: f32, pub m_flSuitJumpPower: f32, pub m_flSuitGrapplePower: f32, pub m_nStepside: i32, pub m_flFallVelocity: f32, pub m_nOldButtons: i32, pub m_oldForwardMove: f32, pub m_pOldSkyCamera: *mut CBaseEntity, pub m_accelScale: f32, pub m_powerRegenRateScale: f32, pub m_dodgePowerDelayScale: f32, pub m_bDrawViewmodel: bool, pub gap_5d: [c_char; 3],
pub m_flStepSize: f32, pub m_bAllowAutoMovement: bool, pub gap_65: [c_char; 3],
pub m_airSlowMoFrac: f32, pub predictableFlags: i32, pub m_bitsActiveDevices: i32, pub m_hSkyCamera: EHandle, pub m_skybox3d: sky3dparams_t, pub m_PlayerFog: fogplayerparams_t, pub m_fog: fogparams_t, pub m_audio: audioparams_t, pub m_animNearZ: f32, pub m_airMoveBlockPlanes: [Vector3; 2], pub m_airMoveBlockPlaneTime: f32, pub m_airMoveBlockPlaneCount: i32, pub m_queuedMeleePressTime: f32, pub m_queuedGrappleMeleeTime: f32, pub m_queuedMeleeAttackAnimEvent: bool, pub m_disableMeleeUntilRelease: bool, pub gap_346: [c_char; 2],
pub m_meleePressTime: f32, pub m_meleeDisabledCounter: i32, pub lastAttacker: EHandle, pub attackedCount: i32, pub m_trackedChildProjectileCount: i32, pub m_oneHandedWeaponUsage: bool, pub m_prevOneHandedWeaponUsage: bool, pub gap_35e: [c_char; 2],
pub m_flCockpitEntryTime: f32, pub m_ejectStartTime: f32, pub m_disembarkStartTime: f32, pub m_hotDropImpactTime: f32, pub m_outOfBoundsDeadTime: f32, pub m_objectiveIndex: i32, pub m_objectiveEntity: EHandle, pub m_objectiveEndTime: f32, pub m_cinematicEventFlags: i32, pub m_forcedDialogueOnly: bool, pub gap_385: [c_char; 3],
pub m_titanBuildTime: f32, pub m_titanBubbleShieldTime: f32, pub m_titanEmbarkEnabled: bool, pub m_titanDisembarkEnabled: bool, pub gap_392: [c_char; 2],
pub m_voicePackIndex: i32, pub m_playerAnimUpdateTime: f32, pub m_playerAnimLastAimTurnTime: f32, pub m_playerAnimCurrentFeetYaw: f32, pub m_playerAnimEstimateYaw: f32, pub m_playerAnimGoalFeetYaw: f32, pub m_playerAnimJumping: bool, pub gap_3ad: [c_char; 3],
pub m_playerAnimJumpStartTime: f32, pub m_playerAnimFirstJumpFrame: bool, pub m_playerAnimDodging: bool, pub gap_3b6: [c_char; 2],
pub m_playerLandStartTime: f32, pub m_playerAnimJumpActivity: i32, pub m_playerAnimLastWallRunNormal: Vector3, pub m_playerAnimLanding: bool, pub m_playerAnimShouldLand: bool, pub gap_3ce: [c_char; 2],
pub m_playerAnimLandStartTime: f32, pub m_playerAnimInAirWalk: bool, pub gap_3d5: [c_char; 3],
pub m_playerAnimPrevFrameSequenceMotionYaw: f32, pub m_playerAnimMovementPlaybackRate: f32, pub m_fake_playerAnimUpdateTime: f32, pub m_fake_playerAnimLastAimTurnTime: f32, pub m_fake_playerAnimCurrentFeetYaw: f32, pub m_fake_playerAnimEstimateYaw: f32, pub m_fake_playerAnimGoalFeetYaw: f32, pub m_fake_playerAnimJumping: bool, pub gap_3f5: [c_char; 3],
pub m_fake_playerAnimJumpStartTime: f32, pub m_fake_playerAnimFirstJumpFrame: bool, pub m_fake_playerAnimDodging: bool, pub gap_3fe: [c_char; 2],
pub m_fake_playerLandStartTime: f32, pub m_fake_playerAnimJumpActivity: i32, pub m_fake_playerAnimLastWallRunNormal: Vector3, pub m_fake_playerAnimLanding: bool, pub m_fake_playerAnimShouldLand: bool, pub gap_416: [c_char; 2],
pub m_fake_playerAnimLandStartTime: f32, pub m_fake_playerAnimInAirWalk: bool, pub gap_41d: [c_char; 3],
pub m_fake_playerAnimPrevFrameSequenceMotionYaw: f32, pub m_fake_playerAnimMovementPlaybackRate: f32, }
size_assert!(SIZE_LOCAL_DATA where CPlayerLocalData == 1064);
#[allow(non_snake_case)]
#[repr(C)]
#[derive(Debug)]
pub struct CPlayer {
pub base: CBaseCombatCharacter,
pub m_szNetname: [c_char; 256], pub m_bZooming: bool, pub m_zoomToggleOn: bool, pub gap_159a: [c_char; 2],
pub m_zoomBaseFrac: f32, pub m_zoomBaseTime: f32, pub m_zoomFullStartTime: f32, pub m_physicsSolidMask: i32, pub m_StuckLast: i32, pub m_Local: CPlayerLocalData, pub m_PlayerFog: fogplayerparams_t, pub m_hTriggerTonemapList: [c_char; 32], pub m_hColorCorrectionCtrl: EHandle, pub gap_1b6c: [c_char; 4],
pub m_hTriggerSoundscapeList: [c_char; 32], pub pl: CPlayerState, pub m_rodeo: Rodeo_PlayerData, pub m_hasBadReputation: bool, pub m_communityName: [c_char; 64], pub m_communityClanTag: [c_char; 16], pub m_factionName: [c_char; 16], pub m_hardwareIcon: [c_char; 16], pub m_happyHourActive: bool, pub gap_1d02: [c_char; 6],
pub m_platformUserId: u64, pub m_classModsActive: i32, pub m_classModsActiveOld: i32, pub m_classModValues: ClassModValues, pub m_posClassModsActive: [i32; 4], pub m_posClassModsActiveOld: [i32; 4], pub m_perPosValues: [PerPosClassModValues; 4], pub m_passives: [bool; 128], pub m_communityId: i32, pub m_nButtons: i32, pub m_afButtonPressed: i32, pub m_afButtonReleased: i32, pub m_afButtonLast: i32, pub m_afButtonDisabled: i32, pub m_afButtonForced: i32, pub m_forwardMove: f32, pub m_sideMove: f32, pub m_prevForwardMove: f32, pub m_prevSideMove: f32, pub m_bLagCompensation: bool, pub m_bPredictWeapons: bool, pub m_bPredictionEnabled: bool, pub m_wantedToMatchmake: bool, pub m_skyCamera: EHandle, pub m_titanSoulBeingRodeoed: EHandle, pub m_entitySyncingWithMe: EHandle, pub m_playerFlags: i32, pub m_hasMic: bool, pub m_inPartyChat: bool, pub gap_1e8e: [c_char; 2],
pub m_playerMoveSpeedScale: f32, pub m_gestureSequences: [i32; 4], pub m_gestureStartTimes: [f32; 4], pub m_gestureBlendInDuration: [f32; 4], pub m_gestureBlendOutDuration: [f32; 4], pub m_gestureFadeOutStartTime: [f32; 4], pub m_gestureFadeOutDuration: [f32; 4], pub m_gestureAutoKillBitfield: i32, pub m_bDropEnabled: bool, pub m_bDuckEnabled: bool, pub gap_1efa: [c_char; 2],
pub m_iRespawnFrames: i32, pub m_afPhysicsFlags: i32, pub m_remoteTurret: EHandle, pub m_flTimeLastTouchedGround: f32, pub m_flTimeLastJumped: f32, pub m_flTimeLastLanded: f32, pub m_upDirWhenLastTouchedGround: Vector3, pub m_bHasJumpedSinceTouchedGround: bool, pub gap_1f21: [c_char; 3],
pub m_holdToUseTimeLeft: f32, pub m_fTimeLastHurt: f32, pub m_fLastAimBotCheckTime: f32, pub m_accumDamageImpulseVel: Vector3, pub m_accumDamageImpulseTime: f32, pub m_damageImpulseNoDecelEndTime: f32, pub m_hDmgEntity: EHandle, pub m_DmgTake: f32, pub m_bitsDamageType: i32, pub m_bitsHUDDamage: i32, pub m_xpRate: f32, pub m_flDeathTime: f32, pub m_flDeathAnimTime: f32, pub m_frozen: bool, pub m_stressAnimation: bool, pub gap_1f62: [c_char; 2],
pub m_iObserverMode: i32, pub m_iObserverLastMode: i32, pub m_hObserverTarget: EHandle, pub m_observerModeStaticPosition: Vector3, pub m_observerModeStaticAngles: Vector3, pub m_isValidChaseObserverTarget: bool, pub gap_1f89: [c_char; 3],
pub m_vphysicsCollisionState: i32, pub m_bHasVPhysicsCollision: bool, pub gap_1f91: [c_char; 3],
pub m_fNextSuicideTime: f32, pub m_iSuicideCustomKillFlags: i32, pub m_preNoClipPhysicsFlags: i32, pub m_hTonemapController: EHandle, pub m_activeBurnCardIndex: i32, pub m_CommandContext: [c_char; 32], pub m_pPhysicsController: *mut c_void, pub m_pShadowStand: *mut c_void, pub m_pShadowCrouch: *mut c_void, pub m_oldOrigin: Vector3, pub m_vecSmoothedVelocity: Vector3, pub m_bTouchedPhysObject: bool, pub m_bPhysicsWasFrozen: bool, pub gap_1ffa: [c_char; 2],
pub m_iTargetVolume: i32, pub m_flDuckTime: f32, pub m_flDuckJumpTime: f32, pub m_VDU: bool, pub m_fInitHUD: bool, pub m_fGameHUDInitialized: bool, pub m_fWeapon: bool, pub m_iUpdateTime: i32, pub m_iConnected: i32, pub m_iPlayerLocked: i32, pub m_gameStats: [i32; 12], pub m_firstPersonProxy: EHandle, pub m_predictedFirstPersonProxy: EHandle, pub m_grappleHook: EHandle, pub m_petTitan: EHandle, pub m_petTitanMode: i32, pub m_xp: i32, pub m_generation: i32, pub m_rank: i32, pub m_serverForceIncreasePlayerListGenerationParity: i32, pub m_isPlayingRanked: bool, pub gap_206d: [c_char; 3],
pub m_skill_mu: f32, pub m_hardpointEntity: EHandle, pub m_nextTitanRespawnAvailable: f32, pub m_activeViewmodelModifiers: [bool; 25], pub m_activeViewmodelModifiersChanged: bool, pub gap_2096: [c_char; 2],
pub m_hViewModel: EHandle, pub gap_209c: [c_char; 4],
pub m_LastCmd: [c_char; 312], pub m_pCurrentCommand: *mut c_void, pub m_flStepSoundTime: f32, pub m_flStepSoundReduceTime: f32, pub m_hThirdPersonEnt: EHandle, pub gap_21ec: [c_char; 4],
pub m_thirdPerson: ThirdPersonViewData, pub m_duckState: i32, pub m_StandHullMin: Vector3, pub m_StandHullMax: Vector3, pub m_DuckHullMin: Vector3, pub m_DuckHullMax: Vector3, pub m_upDir: Vector3, pub m_upDirPredicted: Vector3, pub m_lastWallRunStartPos: Vector3, pub m_wallRunStartTime: f32, pub m_wallRunClearTime: f32, pub m_wallRunCount: i32, pub m_wallRunWeak: bool, pub gap_22b5: [c_char; 3],
pub m_wallRunPushAwayTime: f32, pub m_wallrunFrictionScale: f32, pub m_groundFrictionScale: f32, pub m_wallrunRetryTime: f32, pub m_wallrunRetryPos: Vector3, pub m_wallrunRetryNormal: Vector3, pub m_wallHanging: bool, pub gap_22e1: [c_char; 3],
pub m_wallHangStartTime: f32, pub m_wallHangTime: f32, pub m_traversalType: i32, pub m_traversalState: i32, pub m_traversalBegin: Vector3, pub m_traversalMid: Vector3, pub m_traversalEnd: Vector3, pub m_traversalMidFrac: f32, pub m_traversalForwardDir: Vector3, pub m_traversalRefPos: Vector3, pub m_traversalProgress: f32, pub m_traversalStartTime: f32, pub m_traversalHandAppearTime: f32, pub m_traversalReleaseTime: f32, pub m_traversalBlendOutStartTime: f32, pub m_traversalBlendOutStartOffset: Vector3, pub m_traversalYawDelta: f32, pub m_traversalYawPoseParameter: i32, pub m_wallDangleJumpOffTime: f32, pub m_wallDangleMayHangHere: bool, pub m_wallDangleForceFallOff: bool, pub m_wallDangleLastPushedForward: bool, pub gap_2363: [c_char; 1],
pub m_wallDangleDisableWeapon: i32, pub m_wallDangleClimbProgressFloor: f32, pub m_prevMoveYaw: f32, pub m_sprintTiltVel: f32, pub m_sprintTiltPoseParameter: i32, pub m_sprintFracPoseParameter: i32, pub gap_237c: [c_char; 4],
pub m_grapple: GrappleData, pub m_grappleActive: bool, pub m_grappleNeedWindowCheck: bool, pub gap_23ea: [c_char; 2],
pub m_grappleNextWindowHint: EHandle, pub m_sliding: bool, pub m_slideLongJumpAllowed: bool, pub gap_23f2: [c_char; 2],
pub m_lastSlideTime: f32, pub m_lastSlideBoost: f32, pub m_activeZipline: EHandle, pub m_ziplineReverse: bool, pub gap_2401: [c_char; 3],
pub m_lastZipline: EHandle, pub m_useLastZiplineCooldown: f32, pub m_ziplineValid3pWeaponLayerAnim: bool, pub gap_240d: [c_char; 3],
pub m_ziplineState: i32, pub gap_2414: [c_char; 4],
pub m_zipline: PlayerZiplineData, pub m_operator: Player_OperatorData, pub m_viewOffsetEntity: Player_ViewOffsetEntityData, pub m_animViewEntity: Player_AnimViewEntityData, pub m_highSpeedViewmodelAnims: bool, pub gap_2581: [c_char; 3],
pub m_gravityGrenadeStatusEffect: i32, pub m_onSlopeTime: f32, pub m_lastWallNormal: Vector3, pub m_dodgingInAir: bool, pub m_dodging: bool, pub gap_259a: [c_char; 2],
pub m_lastDodgeTime: f32, pub m_airSpeed: f32, pub m_airAcceleration: f32, pub m_iSpawnParity: bool, pub m_boosting: bool, pub m_repeatedBoost: bool, pub gap_25ab: [c_char; 1],
pub m_boostMeter: f32, pub m_jetpack: bool, pub m_gliding: bool, pub gap_25b2: [c_char; 2],
pub m_glideMeter: f32, pub m_glideRechargeDelayAccumulator: f32, pub m_hovering: bool, pub m_climbing: bool, pub m_isPerformingBoostAction: bool, pub gap_25bf: [c_char; 1],
pub m_lastJumpHeight: f32, pub m_numPingsUsed: i32, pub m_numPingsAvailable: i32, pub m_lastPingTime: f32, pub m_pingGroupStartTime: f32, pub m_pingGroupAccumulator: i32, pub m_lastBodySound1p: u64, pub m_lastBodySound3p: u64, pub m_lastFinishSound1p: u64, pub m_lastFinishSound3p: u64, pub m_primedSound1p: u64, pub m_primedSound3p: u64, pub m_currentFramePlayer: CurrentData_Player, pub m_currentFrameLocalPlayer: CurrentData_LocalPlayer, pub m_nImpulse: i32, pub m_flFlashTime: f32, pub m_flForwardMove: f32, pub m_flSideMove: f32, pub m_nNumCrateHudHints: i32, pub m_needStuckCheck: bool, pub gap_269d: [c_char; 3],
pub m_totalFrameTime: f32, pub m_joinFrameTime: f32, pub m_lastUCmdSimulationTicks: i32, pub m_lastUCmdSimulationRemainderTime: f32, pub m_totalExtraClientCmdTimeAttempted: f32, pub m_bGamePaused: bool, pub m_bPlayerUnderwater: bool, pub gap_26b6: [c_char; 2],
pub m_hPlayerViewEntity: EHandle, pub m_bShouldDrawPlayerWhileUsingViewEntity: bool, pub gap_26bd: [c_char; 3],
pub m_hConstraintEntity: EHandle, pub m_vecConstraintCenter: Vector3, pub m_flConstraintRadius: f32, pub m_flConstraintWidth: f32, pub m_flConstraintSpeedFactor: f32, pub m_bConstraintPastRadius: bool, pub gap_26dd: [c_char; 3],
pub m_lastActiveTime: f32, pub m_flLaggedMovementValue: f32, pub m_lastMoveInputTime: f32, pub m_vNewVPhysicsPosition: Vector3, pub m_vNewVPhysicsVelocity: Vector3, pub m_vNewVPhysicsWishVel: Vector3, pub m_vecPreviouslyPredictedOrigin: Vector3, pub m_nBodyPitchPoseParam: i32, pub m_lastNavArea: u64, pub m_szNetworkIDString: [c_char; 64], pub m_squad: u64, pub m_SquadName: u64, pub m_gameMovementUtil: [c_char; 56], pub m_flTimeAllSuitDevicesOff: f32, pub m_bIsStickySprinting: bool, pub gap_27b5: [c_char; 3],
pub m_fStickySprintMinTime: f32, pub m_bPlayedSprintStartEffects: bool, pub gap_27bd: [c_char; 3],
pub m_autoSprintForced: i32, pub m_fIsSprinting: bool, pub m_fIsWalking: bool, pub gap_27c6: [c_char; 2],
pub m_useHeldTime: f32, pub m_sprintStartedTime: f32, pub m_sprintStartedFrac: f32, pub m_sprintEndedTime: f32, pub m_sprintEndedFrac: f32, pub m_stickySprintStartTime: f32, pub m_bSinglePlayerGameEnding: bool, pub gap_27e1: [c_char; 3],
pub m_ubEFNoInterpParity: i32, pub m_viewConeActive: bool, pub m_viewConeParented: bool, pub gap_27ea: [c_char; 2],
pub m_viewConeParity: i32, pub m_lastViewConeParityTick: i32, pub m_viewConeLerpTime: f32, pub m_viewConeSpecificEnabled: bool, pub gap_27f9: [c_char; 3],
pub m_viewConeSpecific: Vector3, pub m_viewConeRelativeAngleMin: Vector3, pub m_viewConeRelativeAngleMax: Vector3, pub m_hReservedSpawnPoint: EHandle, pub m_hLastSpawnPoint: EHandle, pub m_autoKickDisabled: bool, pub gap_2829: [c_char; 3],
pub m_movementCollisionNormal: Vector3, pub m_groundNormal: Vector3, pub m_stuckCharacter: EHandle, pub m_title: [c_char; 32], pub sentHUDScriptChecksum: bool, pub m_bIsFullyConnected: bool, pub gap_286a: [c_char; 2],
pub m_lastDeathInfo: CTakeDamageInfo, pub gap_28e4: [c_char; 4],
pub m_melee: PlayerMelee_PlayerData, pub m_lungeTargetEntity: EHandle, pub m_isLungingToPosition: bool, pub gap_2915: [c_char; 3],
pub m_lungeTargetPosition: Vector3, pub m_lungeStartPositionOffset: Vector3, pub m_lungeStartPositionOffset_notLagCompensated: Vector3, pub m_lungeEndPositionOffset: Vector3, pub m_lungeStartTime: f32, pub m_lungeEndTime: f32, pub m_lungeCanFly: bool, pub m_lungeLockPitch: bool, pub gap_2952: [c_char; 2],
pub m_lungeStartPitch: f32, pub m_lungeSmoothTime: f32, pub m_lungeMaxTime: f32, pub m_lungeMaxEndSpeed: f32, pub m_useCredit: bool, pub gap_2965: [c_char; 3],
pub m_smartAmmoNextTarget: u64, pub m_smartAmmoPrevTarget: u64, pub m_smartAmmoHighestLocksOnMeFractionValues: [f32; 4], pub m_smartAmmoHighestLocksOnMeEntities: [EHandle; 4], pub m_smartAmmoPreviousHighestLockOnMeFractionValue: f32, pub m_smartAmmoPendingHighestLocksOnMeFractionValues: [f32; 4], pub gap_29ac: [c_char; 4],
pub m_smartAmmoPendingHighestLocksOnMeEntities: [*mut CBaseEntity; 4], pub m_smartAmmoRemoveFromTargetList: bool, pub gap_29d1: [c_char; 3],
pub m_delayedFlinchEvents: i32, pub m_delayedFlinchEventCount: u64, pub m_extraWeaponModNames: [c_char; 512], pub m_extraWeaponModNamesArray: [c_char; 64], pub m_extraWeaponModNameCount: u64, pub m_pPlayerAISquad: u64, pub m_flAreaCaptureScoreAccumulator: f32, pub m_flCapPointScoreRate: f32, pub m_flConnectionTime: f32, pub m_fullyConnectedTime: f32, pub m_connectedForDurationCallback_duration: f32, pub m_flLastForcedChangeTeamTime: f32, pub m_iBalanceScore: i32, pub gap_2c4c: [c_char; 4],
pub m_PlayerAnimState: u64, pub m_vWorldSpaceCenterHolder: Vector3, pub m_vPrevGroundNormal: Vector3, pub m_threadedPostProcessJob: i32, pub gap_2c74: [c_char; 4],
pub m_Shared: CPlayerShared, pub m_statusEffectsTimedPlayerNV: [StatusEffectTimedData; 10], pub m_statusEffectsEndlessPlayerNV: [StatusEffectEndlessData; 10], pub m_pilotClassIndex: i32, pub m_latestCommandRun: i32, pub m_nearbyPushers: [c_char; 480], pub m_nearbyPusherCount: i32, pub m_pushHistory: [PushHistoryEntry; 16], pub m_pushHistoryEntryIndex: i32, pub m_baseVelocityLastServerTime: f32, pub m_pushedThisFrame: Vector3, pub m_pushedThisSnapshotAccum: Vector3, pub m_pushedFixedPointOffset: [i32; 3], pub m_lastCommandContextWarnTime: f32, pub m_pushAwayFromTopAcceleration: Vector3, pub m_trackedState: [f32; 52], pub m_prevTrackedState: i32, pub m_prevTrackedStatePos: Vector3, pub m_recordingAnim: u64, pub m_animRecordFile: u64, pub m_animRecordButtons: i32, pub m_prevAbsOrigin: Vector3, pub m_sendMovementCallbacks: bool, pub m_sendInputCallbacks: bool, pub gap_32d2: [c_char; 2],
pub m_predictableServerEvents: [PredictableServerEvent; 16], pub m_predictableServerEventCount: i32, pub m_predictableServerEventAcked: i32, pub m_playerScriptNetDataGlobal: EHandle, pub m_playerScriptNetDataExclusive: EHandle, }
size_assert!(PLAYER_SIZE where CPlayer == 0x3468);
impl DerefMut for CPlayer {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.base
}
}
impl Deref for CPlayer {
type Target = CBaseCombatCharacter;
fn deref(&self) -> &Self::Target {
&self.base
}
}