#![allow(non_camel_case_types, non_snake_case)]
use std::{
ffi::{c_char, c_void},
ops::{Deref, DerefMut},
};
use super::{cbaseentity::CBaseEntity, EHandle};
use crate::{
high::vector::{Matrix3x4, Quaternion, Vector3},
size_assert,
};
#[repr(C)]
#[derive(Debug)]
pub struct AnimRelativeData {
pub vftable: *const c_void,
pub m_animInitialPos: Vector3, pub m_animInitialVel: Vector3, pub m_animInitialRot: Quaternion, pub m_animInitialCorrectPos: Vector3, pub m_animInitialCorrectRot: Quaternion, pub m_animEntityToRefOffset: Vector3, pub m_animEntityToRefRotation: Quaternion, pub m_animBeginTime: f32, pub m_animEndTime: f32, pub m_animScriptSequence: i32, pub m_animScriptModel: i32, pub m_animIgnoreParentRot: bool, pub gap_79: [c_char; 3],
pub m_animMotionMode: i32, }
size_assert!(SIZE_ANIM where AnimRelativeData == 128);
#[repr(C)]
#[derive(Debug)]
pub struct PredictedAnimEventData {
pub vftable: *const c_void,
pub m_predictedAnimEventTimes: [f32; 8], pub m_predictedAnimEventIndices: [i32; 8], pub m_predictedAnimEventCount: i32, pub m_predictedAnimEventTarget: EHandle, pub m_predictedAnimEventSequence: i32, pub m_predictedAnimEventModel: i32, pub m_predictedAnimEventsReadyToFireTime: f32, }
size_assert!(SIZE_PREDICATED_ANIM where PredictedAnimEventData == 96);
#[repr(C)]
#[derive(Debug)]
pub struct CBaseAnimating {
pub base: CBaseEntity,
pub m_bCanUseFastPathFromServer: bool, pub gap_9e1: [c_char; 3],
pub m_flGroundSpeed: f32, pub m_flLastEventCheck: f32, pub m_nForceBone: i32, pub m_vecForce: Vector3, pub m_nSkin: i32, pub m_nBody: i32, pub m_camoIndex: i32, pub m_decalIndex: i32, pub m_nHitboxSet: i32, pub m_flModelScale: f32, pub m_nRagdollImpactFXTableId: i32, pub m_flSkyScaleStartTime: f32, pub m_flSkyScaleEndTime: f32, pub m_flSkyScaleStartValue: f32, pub m_flSkyScaleEndValue: f32, pub m_SequenceTransitioner: [c_char; 376], pub m_flIKGroundContactTime: f32, pub m_flIKGroundMinHeight: f32, pub m_flIKGroundMaxHeight: f32, pub m_flEstIkFloor: f32, pub m_flEstIkOffset: f32, pub gap_bb4: [c_char; 4],
pub m_pIk: *mut c_void, pub m_ikPrevSequence: i32, pub m_bSequenceFinished: bool, pub m_bSequenceLooped: bool, pub m_bSequenceLoops: bool, pub gap_bc7: [c_char; 1],
pub m_numSequenceLoops: i32, pub m_continueAnimatingAfterRagdoll: bool, pub m_useLockedAnimDeltaYaw: bool, pub gap_bce: [c_char; 2],
pub m_lockedAnimDeltaYaw: f32, pub m_threadedBoneSetup: bool, pub m_settingUpBones: bool, pub gap_bd6: [c_char; 2],
pub m_flDissolveStartTime: f32, pub m_baseAnimatingActivity: i32, pub m_flPoseParameter: [f32; 11], pub m_poseParameterOverTimeActive: bool, pub gap_c0d: [c_char; 3],
pub m_poseParameterGoalValue: [f32; 11], pub m_poseParameterEndTime: [f32; 11], pub m_lastTimeSetPoseParametersSameAs: f32, pub m_bClientSideAnimation: bool, pub m_bReallyClientSideAnimation: bool, pub gap_c6e: [c_char; 2],
pub m_nNewSequenceParity: i32, pub m_nResetEventsParity: i32, pub m_boneCacheHandle: i64, pub m_fBoneCacheFlags: i16, pub gap_c82: [c_char; 2],
pub m_animNetworkFlags: i32, pub m_animActive: bool, pub m_animCollisionEnabled: bool, pub m_animInitialCorrection: bool, pub m_animWaitingForCleanup: bool, pub m_animWaitingForCleanupTime: i32, pub m_recordedAnim: i64, pub m_recordedAnimIndex: i32, pub m_recordedAnimCachedFrameIndex: i32, pub m_recordedAnimPlaybackRate: f32, pub m_recordedAnimPlaybackTime: f32, pub m_recordedAnimTransform: Matrix3x4, pub m_recordedAnimPlaybackEnt: EHandle, pub m_recordedAnimBlendTime: f32, pub m_recordedAnimBlendOffset: Vector3, pub m_recordedAnimBlendAngles: Vector3, pub m_animRelativeData: AnimRelativeData, pub m_syncingWithEntity: EHandle, pub gap_d7c: [c_char; 4],
pub m_predictedAnimEventData: PredictedAnimEventData, pub m_animRefEntityAttachmentIndex: i32, pub m_fireAttachmentSmartAmmoIndex: i32, pub m_fireAttachmentChestFocusIndex: i32, pub m_fireAttachmentModelIndex: i32, pub m_keyHitboxes: [c_char; 160], pub m_pStudioHdr: *mut c_void, pub m_animSequence: i32, pub m_animCycle: f32, pub m_animModelIndex: i32, pub m_animStartTime: f32, pub m_animStartCycle: f32, pub m_animPlaybackRate: f32, pub m_animFrozen: bool, }
size_assert!(SIZE_BASE_ANIMATING where CBaseAnimating == 0xeb8);
impl DerefMut for CBaseAnimating {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.base
}
}
impl Deref for CBaseAnimating {
type Target = CBaseEntity;
fn deref(&self) -> &Self::Target {
&self.base
}
}