08.11.2024 (Kesha)

This commit is contained in:
Konstantin 'cpz' L. 2024-11-08 17:13:12 +03:00
parent cef5650f51
commit ebd82a6a66
13718 changed files with 72129 additions and 73770 deletions

View File

@ -17,7 +17,7 @@ namespace source2sdk::animationsystem
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x130
// Size: 0x148
// Has VTable
// Construct allowed
//
@ -47,7 +47,10 @@ namespace source2sdk::animationsystem
// m_szScripts has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CBufferString> m_szScripts;
char m_szScripts[0x18]; // 0x110
[[maybe_unused]] std::uint8_t pad_0x128[0x8];
// m_AdditionalExtRefs has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CStrongHandleVoid> m_AdditionalExtRefs;
char m_AdditionalExtRefs[0x18]; // 0x128
[[maybe_unused]] std::uint8_t pad_0x140[0x8];
};
#pragma pack(pop)
@ -58,6 +61,7 @@ namespace source2sdk::animationsystem
static_assert(offsetof(CAnimationGroup, m_directHSeqGroup_Handle) == 0x90);
static_assert(offsetof(CAnimationGroup, m_decodeKey) == 0x98);
static_assert(offsetof(CAnimationGroup, m_szScripts) == 0x110);
static_assert(offsetof(CAnimationGroup, m_AdditionalExtRefs) == 0x128);
static_assert(sizeof(CAnimationGroup) == 0x130);
static_assert(sizeof(CAnimationGroup) == 0x148);
};

View File

@ -0,0 +1,36 @@
#pragma once
#include "source2sdk/modellib/AttachmentHandle_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animationsystem
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animationsystem
{
// Registered alignment: 0x4
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x8
// Has Trivial Destructor
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
class FollowAttachmentData
{
public:
int32_t m_boneIndex; // 0x0
modellib::AttachmentHandle_t m_attachmentHandle; // 0x4
[[maybe_unused]] std::uint8_t pad_0x05[0x3];
};
#pragma pack(pop)
static_assert(offsetof(FollowAttachmentData, m_boneIndex) == 0x0);
static_assert(offsetof(FollowAttachmentData, m_attachmentHandle) == 0x4);
static_assert(sizeof(FollowAttachmentData) == 0x8);
};

View File

@ -8,7 +8,7 @@
namespace source2sdk::animgraphlib
{
// Enumerator count: 36
// Enumerator count: 37
// Alignment: 4
// Size: 0x4
enum class AnimValueSource : std::uint32_t
@ -25,65 +25,67 @@ namespace source2sdk::animgraphlib
FacingHeading = 0x4,
// MPropertyFriendlyName "Look Heading"
LookHeading = 0x5,
// MPropertyFriendlyName "Look Heading Normalized"
LookHeadingNormalized = 0x6,
// MPropertyFriendlyName "Look Pitch"
LookPitch = 0x6,
LookPitch = 0x7,
// MPropertyFriendlyName "Look Distance"
LookDistance = 0x7,
LookDistance = 0x8,
// MPropertyFriendlyName "Parameter"
Parameter = 0x8,
Parameter = 0x9,
// MPropertyFriendlyName "Waypoint Heading"
WayPointHeading = 0x9,
WayPointHeading = 0xa,
// MPropertyFriendlyName "Waypoint Distance"
WayPointDistance = 0xa,
WayPointDistance = 0xb,
// MPropertyFriendlyName "Boundary Radius"
BoundaryRadius = 0xb,
BoundaryRadius = 0xc,
// MPropertyFriendlyName "Target Move Heading"
TargetMoveHeading = 0xc,
TargetMoveHeading = 0xd,
// MPropertyFriendlyName "Target Move Speed"
TargetMoveSpeed = 0xd,
TargetMoveSpeed = 0xe,
// MPropertyFriendlyName "Acceleration Heading"
AccelerationHeading = 0xe,
AccelerationHeading = 0xf,
// MPropertyFriendlyName "Acceleration Speed"
AccelerationSpeed = 0xf,
AccelerationSpeed = 0x10,
// MPropertyFriendlyName "Slope Heading"
SlopeHeading = 0x10,
SlopeHeading = 0x11,
// MPropertyFriendlyName "Slope Angle"
SlopeAngle = 0x11,
SlopeAngle = 0x12,
// MPropertyFriendlyName "Slope Pitch"
SlopePitch = 0x12,
SlopePitch = 0x13,
// MPropertyFriendlyName "Slope Yaw"
SlopeYaw = 0x13,
SlopeYaw = 0x14,
// MPropertyFriendlyName "Goal Distance"
GoalDistance = 0x14,
GoalDistance = 0x15,
// MPropertyFriendlyName "Acceleration Left-Right"
AccelerationLeftRight = 0x15,
AccelerationLeftRight = 0x16,
// MPropertyFriendlyName "Acceleration Forward-Back"
AccelerationFrontBack = 0x16,
AccelerationFrontBack = 0x17,
// MPropertyFriendlyName "Root Motion Speed"
RootMotionSpeed = 0x17,
RootMotionSpeed = 0x18,
// MPropertyFriendlyName "Root Motion Turn Speed"
RootMotionTurnSpeed = 0x18,
RootMotionTurnSpeed = 0x19,
// MPropertyFriendlyName "Move Heading Relative to Look Heading"
MoveHeadingRelativeToLookHeading = 0x19,
MoveHeadingRelativeToLookHeading = 0x1a,
// MPropertyFriendlyName "Max Move Speed"
MaxMoveSpeed = 0x1a,
MaxMoveSpeed = 0x1b,
// MPropertyFriendlyName "Finger Curl - Thumb"
FingerCurl_Thumb = 0x1b,
FingerCurl_Thumb = 0x1c,
// MPropertyFriendlyName "Finger Curl - Index"
FingerCurl_Index = 0x1c,
FingerCurl_Index = 0x1d,
// MPropertyFriendlyName "Finger Curl - Middle"
FingerCurl_Middle = 0x1d,
FingerCurl_Middle = 0x1e,
// MPropertyFriendlyName "Finger Curl - Ring"
FingerCurl_Ring = 0x1e,
FingerCurl_Ring = 0x1f,
// MPropertyFriendlyName "Finger Curl - Pinky"
FingerCurl_Pinky = 0x1f,
FingerCurl_Pinky = 0x20,
// MPropertyFriendlyName "Finger Splay - Thumb:Index"
FingerSplay_Thumb_Index = 0x20,
FingerSplay_Thumb_Index = 0x21,
// MPropertyFriendlyName "Finger Splay - Index:Middle"
FingerSplay_Index_Middle = 0x21,
FingerSplay_Index_Middle = 0x22,
// MPropertyFriendlyName "Finger Splay - Middle:Ring"
FingerSplay_Middle_Ring = 0x22,
FingerSplay_Middle_Ring = 0x23,
// MPropertyFriendlyName "Finger Splay - Ring:Pinky"
FingerSplay_Ring_Pinky = 0x23,
FingerSplay_Ring_Pinky = 0x24,
};
};

View File

@ -43,7 +43,8 @@ namespace source2sdk::animgraphlib
[[maybe_unused]] std::uint8_t pad_0x9e[0x2]; // 0x9e
float m_flTurnToFaceOffset; // 0xa0
bool m_bTurnToFace; // 0xa4
[[maybe_unused]] std::uint8_t pad_0xa5[0x3];
bool m_bAlignRootMotionWithMoveDirection; // 0xa5
[[maybe_unused]] std::uint8_t pad_0xa6[0x2];
};
#pragma pack(pop)

View File

@ -17,7 +17,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xc8
// Size: 0xd0
// Has VTable
// Construct allowed
//
@ -26,18 +26,18 @@ namespace source2sdk::animgraphlib
class CFootPinningUpdateNode : public animgraphlib::CUnaryUpdateNode
{
public:
[[maybe_unused]] std::uint8_t pad_0x68[0x8]; // 0x68
animgraphlib::FootPinningPoseOpFixedData_t m_poseOpFixedData; // 0x70
animgraphlib::FootPinningTimingSource m_eTimingSource; // 0xa0
[[maybe_unused]] std::uint8_t pad_0xa4[0x4]; // 0xa4
[[maybe_unused]] std::uint8_t pad_0x68[0x10]; // 0x68
animgraphlib::FootPinningPoseOpFixedData_t m_poseOpFixedData; // 0x78
animgraphlib::FootPinningTimingSource m_eTimingSource; // 0xa8
[[maybe_unused]] std::uint8_t pad_0xac[0x4]; // 0xac
// m_params has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::CAnimParamHandle> m_params;
char m_params[0x18]; // 0xa8
bool m_bResetChild; // 0xc0
[[maybe_unused]] std::uint8_t pad_0xc1[0x7];
char m_params[0x18]; // 0xb0
bool m_bResetChild; // 0xc8
[[maybe_unused]] std::uint8_t pad_0xc9[0x7];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CFootPinningUpdateNode because it is not a standard-layout class
static_assert(sizeof(CFootPinningUpdateNode) == 0xc8);
static_assert(sizeof(CFootPinningUpdateNode) == 0xd0);
};

View File

@ -16,7 +16,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xd0
// Size: 0xd8
// Has VTable
// Construct allowed
//
@ -25,19 +25,19 @@ namespace source2sdk::animgraphlib
class CJumpHelperUpdateNode : public animgraphlib::CSequenceUpdateNode
{
public:
animgraphlib::CAnimParamHandle m_hTargetParam; // 0xa8
[[maybe_unused]] std::uint8_t pad_0xaa[0x2]; // 0xaa
Vector m_flOriginalJumpMovement; // 0xac
float m_flOriginalJumpDuration; // 0xb8
float m_flJumpStartCycle; // 0xbc
float m_flJumpEndCycle; // 0xc0
animgraphlib::JumpCorrectionMethod m_eCorrectionMethod; // 0xc4
bool m_bTranslationAxis[3]; // 0xc8
bool m_bScaleSpeed; // 0xcb
[[maybe_unused]] std::uint8_t pad_0xcc[0x4];
animgraphlib::CAnimParamHandle m_hTargetParam; // 0xb0
[[maybe_unused]] std::uint8_t pad_0xb2[0x2]; // 0xb2
Vector m_flOriginalJumpMovement; // 0xb4
float m_flOriginalJumpDuration; // 0xc0
float m_flJumpStartCycle; // 0xc4
float m_flJumpEndCycle; // 0xc8
animgraphlib::JumpCorrectionMethod m_eCorrectionMethod; // 0xcc
bool m_bTranslationAxis[3]; // 0xd0
bool m_bScaleSpeed; // 0xd3
[[maybe_unused]] std::uint8_t pad_0xd4[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CJumpHelperUpdateNode because it is not a standard-layout class
static_assert(sizeof(CJumpHelperUpdateNode) == 0xd0);
static_assert(sizeof(CJumpHelperUpdateNode) == 0xd8);
};

View File

@ -26,14 +26,15 @@ namespace source2sdk::animgraphlib
public:
[[maybe_unused]] std::uint8_t pad_0x30[0x4]; // 0x30
animgraphlib::CAnimParamHandle m_hLookHeading; // 0x34
animgraphlib::CAnimParamHandle m_hLookHeadingVelocity; // 0x36
animgraphlib::CAnimParamHandle m_hLookPitch; // 0x38
animgraphlib::CAnimParamHandle m_hLookDistance; // 0x3a
animgraphlib::CAnimParamHandle m_hLookDirection; // 0x3c
animgraphlib::CAnimParamHandle m_hLookTarget; // 0x3e
animgraphlib::CAnimParamHandle m_hLookTargetWorldSpace; // 0x40
bool m_bNetworkLookTarget; // 0x42
[[maybe_unused]] std::uint8_t pad_0x43[0x5];
animgraphlib::CAnimParamHandle m_hLookHeadingNormalized; // 0x36
animgraphlib::CAnimParamHandle m_hLookHeadingVelocity; // 0x38
animgraphlib::CAnimParamHandle m_hLookPitch; // 0x3a
animgraphlib::CAnimParamHandle m_hLookDistance; // 0x3c
animgraphlib::CAnimParamHandle m_hLookDirection; // 0x3e
animgraphlib::CAnimParamHandle m_hLookTarget; // 0x40
animgraphlib::CAnimParamHandle m_hLookTargetWorldSpace; // 0x42
bool m_bNetworkLookTarget; // 0x44
[[maybe_unused]] std::uint8_t pad_0x45[0x3];
};
#pragma pack(pop)

View File

@ -0,0 +1,48 @@
#pragma once
#include "source2sdk/animgraphlib/AnimValueSource.hpp"
#include "source2sdk/animgraphlib/CAnimInputDamping.hpp"
#include "source2sdk/animgraphlib/CAnimParamHandle.hpp"
#include "source2sdk/animgraphlib/CUnaryUpdateNode.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animgraphlib
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animgraphlib
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xa0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
class COrientationWarpUpdateNode : public animgraphlib::CUnaryUpdateNode
{
public:
[[maybe_unused]] std::uint8_t pad_0x68[0x4]; // 0x68
animgraphlib::AnimValueSource m_eTarget; // 0x6c
animgraphlib::CAnimParamHandle m_hTargetParam; // 0x70
animgraphlib::CAnimParamHandle m_hTargetPositionParam; // 0x72
float m_flTargetOffset; // 0x74
animgraphlib::CAnimInputDamping m_damping; // 0x78
float m_flSmoothDampingDuration; // 0x88
bool m_bAddRootMotionIfNeeded; // 0x8c
[[maybe_unused]] std::uint8_t pad_0x8d[0x3]; // 0x8d
float m_flMaxRootMotionScale; // 0x90
bool m_bEnablePreferredRotationDirection; // 0x94
[[maybe_unused]] std::uint8_t pad_0x95[0x3]; // 0x95
animgraphlib::AnimValueSource m_ePreferredRotationDirection; // 0x98
float m_flPreferredRotationThreshold; // 0x9c
};
#pragma pack(pop)
// Cannot assert offsets of fields in COrientationWarpUpdateNode because it is not a standard-layout class
static_assert(sizeof(COrientationWarpUpdateNode) == 0xa0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x80
// Size: 0x88
// Has VTable
// Construct allowed
//
@ -23,11 +23,11 @@ namespace source2sdk::animgraphlib
class CPairedSequenceUpdateNode : public animgraphlib::CSequenceUpdateNodeBase
{
public:
CGlobalSymbol m_sPairedSequenceRole; // 0x70
[[maybe_unused]] std::uint8_t pad_0x78[0x8];
CGlobalSymbol m_sPairedSequenceRole; // 0x78
[[maybe_unused]] std::uint8_t pad_0x80[0x8];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CPairedSequenceUpdateNode because it is not a standard-layout class
static_assert(sizeof(CPairedSequenceUpdateNode) == 0x80);
static_assert(sizeof(CPairedSequenceUpdateNode) == 0x88);
};

View File

@ -16,7 +16,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xa8
// Size: 0xc0
// Has VTable
// Construct allowed
//
@ -28,23 +28,26 @@ namespace source2sdk::animgraphlib
// m_ragdollNodePaths has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::CAnimNodePath> m_ragdollNodePaths;
char m_ragdollNodePaths[0x18]; // 0x30
// m_followAttachmentNodePaths has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::CAnimNodePath> m_followAttachmentNodePaths;
char m_followAttachmentNodePaths[0x18]; // 0x48
// m_boneIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<int32_t> m_boneIndices;
char m_boneIndices[0x18]; // 0x48
char m_boneIndices[0x18]; // 0x60
// m_boneNames has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlString> m_boneNames;
char m_boneNames[0x18]; // 0x60
char m_boneNames[0x18]; // 0x78
// m_weightLists has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::WeightList> m_weightLists;
char m_weightLists[0x18]; // 0x78
float m_flSpringFrequencyMin; // 0x90
float m_flSpringFrequencyMax; // 0x94
float m_flMaxStretch; // 0x98
bool m_bSolidCollisionAtZeroWeight; // 0x9c
[[maybe_unused]] std::uint8_t pad_0x9d[0xb];
char m_weightLists[0x18]; // 0x90
float m_flSpringFrequencyMin; // 0xa8
float m_flSpringFrequencyMax; // 0xac
float m_flMaxStretch; // 0xb0
bool m_bSolidCollisionAtZeroWeight; // 0xb4
[[maybe_unused]] std::uint8_t pad_0xb5[0xb];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CRagdollComponentUpdater because it is not a standard-layout class
static_assert(sizeof(CRagdollComponentUpdater) == 0xa8);
static_assert(sizeof(CRagdollComponentUpdater) == 0xc0);
};

View File

@ -17,7 +17,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xa8
// Size: 0xb0
// Has VTable
// Construct allowed
//
@ -26,15 +26,15 @@ namespace source2sdk::animgraphlib
class CSequenceUpdateNode : public animgraphlib::CSequenceUpdateNodeBase
{
public:
animationsystem::HSequence m_hSequence; // 0x70
float m_duration; // 0x74
animgraphlib::CParamSpanUpdater m_paramSpans; // 0x78
animationsystem::HSequence m_hSequence; // 0x78
float m_duration; // 0x7c
animgraphlib::CParamSpanUpdater m_paramSpans; // 0x80
// m_tags has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::TagSpan_t> m_tags;
char m_tags[0x18]; // 0x90
char m_tags[0x18]; // 0x98
};
#pragma pack(pop)
// Cannot assert offsets of fields in CSequenceUpdateNode because it is not a standard-layout class
static_assert(sizeof(CSequenceUpdateNode) == 0xa8);
static_assert(sizeof(CSequenceUpdateNode) == 0xb0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x70
// Size: 0x78
// Has VTable
// Is Abstract
// Construct allowed
@ -24,13 +24,13 @@ namespace source2sdk::animgraphlib
class CSequenceUpdateNodeBase : public animgraphlib::CLeafUpdateNode
{
public:
[[maybe_unused]] std::uint8_t pad_0x58[0xc]; // 0x58
float m_playbackSpeed; // 0x64
bool m_bLoop; // 0x68
[[maybe_unused]] std::uint8_t pad_0x69[0x7];
[[maybe_unused]] std::uint8_t pad_0x58[0x14]; // 0x58
float m_playbackSpeed; // 0x6c
bool m_bLoop; // 0x70
[[maybe_unused]] std::uint8_t pad_0x71[0x7];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CSequenceUpdateNodeBase because it is not a standard-layout class
static_assert(sizeof(CSequenceUpdateNodeBase) == 0x70);
static_assert(sizeof(CSequenceUpdateNodeBase) == 0x78);
};

View File

@ -16,7 +16,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xa8
// Size: 0xa0
// Has VTable
// Construct allowed
//
@ -29,10 +29,10 @@ namespace source2sdk::animgraphlib
// CUtlVector<animgraphlib::CSolveIKTargetHandle_t> m_targetHandles;
char m_targetHandles[0x18]; // 0x68
animgraphlib::SolveIKChainPoseOpFixedSettings_t m_opFixedData; // 0x80
[[maybe_unused]] std::uint8_t pad_0xa0[0x8];
[[maybe_unused]] std::uint8_t pad_0x98[0x8];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CSolveIKChainUpdateNode because it is not a standard-layout class
static_assert(sizeof(CSolveIKChainUpdateNode) == 0xa8);
static_assert(sizeof(CSolveIKChainUpdateNode) == 0xa0);
};

View File

@ -37,7 +37,8 @@ namespace source2sdk::animgraphlib
[[maybe_unused]] std::uint8_t pad_0xf0[0x4]; // 0xf0
bool m_bBlockWaningTags; // 0xf4
bool m_bLockStateWhenWaning; // 0xf5
[[maybe_unused]] std::uint8_t pad_0xf6[0x2];
bool m_bResetWhenActivated; // 0xf6
[[maybe_unused]] std::uint8_t pad_0xf7[0x1];
};
#pragma pack(pop)

View File

@ -38,7 +38,9 @@ namespace source2sdk::animgraphlib
uint8_t m_bIsStartState: 1;
uint8_t m_bIsEndState: 1;
uint8_t m_bIsPassthrough: 1;
// end of bitfield block // 3 bits
uint8_t m_bIsPassthroughRootMotion: 1;
uint8_t m_bPreEvaluatePassthroughTransitionPath: 1;
// end of bitfield block // 5 bits
[[maybe_unused]] std::uint8_t pad_0x45[0x3];
};
#pragma pack(pop)
@ -51,6 +53,8 @@ namespace source2sdk::animgraphlib
// Cannot assert offset of bitfield CStateUpdateData::m_bIsStartState
// Cannot assert offset of bitfield CStateUpdateData::m_bIsEndState
// Cannot assert offset of bitfield CStateUpdateData::m_bIsPassthrough
// Cannot assert offset of bitfield CStateUpdateData::m_bIsPassthroughRootMotion
// Cannot assert offset of bitfield CStateUpdateData::m_bPreEvaluatePassthroughTransitionPath
static_assert(sizeof(CStateUpdateData) == 0x48);
};

View File

@ -0,0 +1,44 @@
#pragma once
#include "source2sdk/animgraphlib/CAnimParamHandle.hpp"
#include "source2sdk/animgraphlib/CAnimUpdateNodeBase.hpp"
#include "source2sdk/animgraphlib/CAnimUpdateNodeRef.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animgraphlib
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animgraphlib
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x88
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
class CTargetSelectorUpdateNode : public animgraphlib::CAnimUpdateNodeBase
{
public:
[[maybe_unused]] std::uint8_t pad_0x58[0x8]; // 0x58
// m_children has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::CAnimUpdateNodeRef> m_children;
char m_children[0x18]; // 0x60
[[maybe_unused]] std::uint8_t pad_0x78[0x4]; // 0x78
animgraphlib::CAnimParamHandle m_hTargetPosition; // 0x7c
animgraphlib::CAnimParamHandle m_hTargetFacePositionParameter; // 0x7e
animgraphlib::CAnimParamHandle m_hForwardDirectionOverrideParameter; // 0x80
bool m_bTargetPositionIsWorldSpace; // 0x82
bool m_bTargetFacePositionIsWorldSpace; // 0x83
[[maybe_unused]] std::uint8_t pad_0x84[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CTargetSelectorUpdateNode because it is not a standard-layout class
static_assert(sizeof(CTargetSelectorUpdateNode) == 0x88);
};

View File

@ -0,0 +1,39 @@
#pragma once
#include "source2sdk/animgraphlib/CAnimParamHandle.hpp"
#include "source2sdk/animgraphlib/CUnaryUpdateNode.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animgraphlib
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animgraphlib
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x78
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
class CTargetWarpUpdateNode : public animgraphlib::CUnaryUpdateNode
{
public:
[[maybe_unused]] std::uint8_t pad_0x68[0x4]; // 0x68
animgraphlib::CAnimParamHandle m_hTargetPositionParameter; // 0x6c
animgraphlib::CAnimParamHandle m_hTargetUpVectorParameter; // 0x6e
animgraphlib::CAnimParamHandle m_hTargetFacePositionParameter; // 0x70
bool m_bTargetFacePositionIsWorldSpace; // 0x72
bool m_bTargetPositionIsWorldSpace; // 0x73
[[maybe_unused]] std::uint8_t pad_0x74[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CTargetWarpUpdateNode because it is not a standard-layout class
static_assert(sizeof(CTargetWarpUpdateNode) == 0x78);
};

View File

@ -26,7 +26,6 @@ namespace source2sdk::animgraphlib
public:
int32_t m_nChainIndex; // 0x0
animgraphlib::IKSolverSettings_t m_SolverSettings; // 0x4
[[maybe_unused]] std::uint8_t pad_0x0c[0x4]; // 0xc
animgraphlib::IKTargetSettings_t m_TargetSettings; // 0x10
animgraphlib::SolveIKChainAnimNodeDebugSetting m_DebugSetting; // 0x38
float m_flDebugNormalizedValue; // 0x3c

View File

@ -0,0 +1,31 @@
#pragma once
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animgraphlib
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animgraphlib
{
// Enumerator count: 5
// Alignment: 4
// Size: 0x4
enum class EIKEndEffectorRotationFixUpMode : std::uint32_t
{
// MPropertyFriendlyName "None"
// MPropertyDescription "However the end effector ends up after the solve, it's rotation will remain unchanged."
None = 0x0,
// MPropertyFriendlyName "Match Target Orientation"
// MPropertyDescription "The targets orientation will be stamped onto the end effector."
MatchTargetOrientation = 0x1,
// MPropertyFriendlyName "Look At Target Forward"
// MPropertyDescription "The targets forward vector will be used to build a look orientation while preserving the rotation of the end effector after the solve as much as possible."
LookAtTargetForward = 0x2,
// MPropertyFriendlyName "Maintain Parent Orientation"
// MPropertyDescription "Use the parent bone's orientation as the end effector's orientation."
MaintainParentOrientation = 0x3,
// MPropertySuppressEnumerator
Count = 0x4,
};
};

View File

@ -1,4 +1,5 @@
#pragma once
#include "source2sdk/modellib/AttachmentHandle_t.hpp"
#include "source2sdk/modellib/CAnimAttachment.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
@ -25,16 +26,18 @@ namespace source2sdk::animgraphlib
public:
modellib::CAnimAttachment m_attachment; // 0x0
int32_t m_boneIndex; // 0x80
bool m_bMatchTranslation; // 0x84
bool m_bMatchRotation; // 0x85
[[maybe_unused]] std::uint8_t pad_0x86[0xa];
modellib::AttachmentHandle_t m_attachmentHandle; // 0x84
bool m_bMatchTranslation; // 0x85
bool m_bMatchRotation; // 0x86
[[maybe_unused]] std::uint8_t pad_0x87[0x9];
};
#pragma pack(pop)
static_assert(offsetof(FollowAttachmentSettings_t, m_attachment) == 0x0);
static_assert(offsetof(FollowAttachmentSettings_t, m_boneIndex) == 0x80);
static_assert(offsetof(FollowAttachmentSettings_t, m_bMatchTranslation) == 0x84);
static_assert(offsetof(FollowAttachmentSettings_t, m_bMatchRotation) == 0x85);
static_assert(offsetof(FollowAttachmentSettings_t, m_attachmentHandle) == 0x84);
static_assert(offsetof(FollowAttachmentSettings_t, m_bMatchTranslation) == 0x85);
static_assert(offsetof(FollowAttachmentSettings_t, m_bMatchRotation) == 0x86);
static_assert(sizeof(FollowAttachmentSettings_t) == 0x90);
};

View File

@ -1,4 +1,5 @@
#pragma once
#include "source2sdk/animgraphlib/EIKEndEffectorRotationFixUpMode.hpp"
#include "source2sdk/animgraphlib/IKSolverType.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
@ -14,7 +15,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: unknown
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x8
// Size: 0xc
// Has Trivial Destructor
#pragma pack(push, 1)
struct IKSolverSettings_t
@ -26,11 +27,14 @@ namespace source2sdk::animgraphlib
// metadata: MPropertyFriendlyName "Num Iterations "
// metadata: MPropertyAttrStateCallback
int32_t m_nNumIterations; // 0x4
// metadata: MPropertyFriendlyName "End Effector Rotation Behaviour"
animgraphlib::EIKEndEffectorRotationFixUpMode m_EndEffectorRotationFixUpMode; // 0x8
};
#pragma pack(pop)
static_assert(offsetof(IKSolverSettings_t, m_SolverType) == 0x0);
static_assert(offsetof(IKSolverSettings_t, m_nNumIterations) == 0x4);
static_assert(offsetof(IKSolverSettings_t, m_EndEffectorRotationFixUpMode) == 0x8);
static_assert(sizeof(IKSolverSettings_t) == 0x8);
static_assert(sizeof(IKSolverSettings_t) == 0xc);
};

View File

@ -14,14 +14,19 @@ namespace source2sdk::animgraphlib
enum class IKSolverType : std::uint32_t
{
// MPropertyFriendlyName "Perlin"
// MPropertyDescription "Classic perlin 2-bone solver"
IKSOLVER_Perlin = 0x0,
// MPropertyFriendlyName "Two Bone"
// MPropertyDescription "2-bone solver that does not have singularities that Perlin does, and should be used as a default starting point for 2 bone solves."
IKSOLVER_TwoBone = 0x1,
// MPropertyFriendlyName "FABRIK"
// MPropertyDescription ""Forward And Backward Reaching Inverse Kinematics" solver - A solver that can handle any number of bones and works by iteratively solving for the position of each bone in the chain."
IKSOLVER_Fabrik = 0x2,
// MPropertyFriendlyName "Dog Leg (3 Bone)"
// MPropertyFriendlyName "Dog Leg (3-Bone)"
// MPropertyDescription "A 3-bone solver that uses two 2-bone solves under the hood to emulate a dog leg."
IKSOLVER_DogLeg3Bone = 0x3,
// MPropertyFriendlyName "CCD"
// MPropertyDescription "Cyclic Coordinate Descent solver - A solver that can handle any number of bones and works by iteratively solving for the rotation of each bone in the chain."
IKSOLVER_CCD = 0x4,
// MPropertySuppressEnumerator
IKSOLVER_COUNT = 0x5,

View File

@ -14,7 +14,7 @@ namespace source2sdk::animgraphlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x20
// Size: 0x18
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -25,13 +25,10 @@ namespace source2sdk::animgraphlib
// m_ChainsToSolveData has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<animgraphlib::ChainToSolveData_t> m_ChainsToSolveData;
char m_ChainsToSolveData[0x18]; // 0x0
bool m_bMatchTargetOrientation; // 0x18
[[maybe_unused]] std::uint8_t pad_0x19[0x7];
};
#pragma pack(pop)
static_assert(offsetof(SolveIKChainPoseOpFixedSettings_t, m_ChainsToSolveData) == 0x0);
static_assert(offsetof(SolveIKChainPoseOpFixedSettings_t, m_bMatchTargetOrientation) == 0x18);
static_assert(sizeof(SolveIKChainPoseOpFixedSettings_t) == 0x20);
static_assert(sizeof(SolveIKChainPoseOpFixedSettings_t) == 0x18);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x88
// Size: 0x90
// Has VTable
// Construct allowed
//
@ -29,5 +29,5 @@ namespace source2sdk::animlib
#pragma pack(pop)
// Cannot assert offsets of fields in CNmBlend1DNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmBlend1DNode__CDefinition) == 0x88);
static_assert(sizeof(CNmBlend1DNode__CDefinition) == 0x90);
};

View File

@ -0,0 +1,35 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: animlib
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::animlib
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x20
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct CNmBoneMask__SerializedData_t
{
public:
CGlobalSymbol m_ID; // 0x0
// m_weights has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<float> m_weights;
char m_weights[0x18]; // 0x8
};
#pragma pack(pop)
static_assert(offsetof(CNmBoneMask__SerializedData_t, m_ID) == 0x0);
static_assert(offsetof(CNmBoneMask__SerializedData_t, m_weights) == 0x8);
static_assert(sizeof(CNmBoneMask__SerializedData_t) == 0x20);
};

View File

@ -37,7 +37,10 @@ namespace source2sdk::animlib
// m_compressedPoseOffsets has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<uint32_t> m_compressedPoseOffsets;
char m_compressedPoseOffsets[0x18]; // 0x40
[[maybe_unused]] std::uint8_t pad_0x58[0x48]; // 0x58
[[maybe_unused]] std::uint8_t pad_0x58[0x28]; // 0x58
// m_secondaryAnimations has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVectorFixedGrowable<animlib::CNmClip*,1> m_secondaryAnimations;
char m_secondaryAnimations[0x20]; // 0x80
animlib::CNmSyncTrack m_syncTrack; // 0xa0
animlib::CNmRootMotionData m_rootMotion; // 0x150
bool m_bIsAdditive; // 0x1a0
@ -51,6 +54,7 @@ namespace source2sdk::animlib
static_assert(offsetof(CNmClip, m_compressedPoseData) == 0x10);
static_assert(offsetof(CNmClip, m_trackCompressionSettings) == 0x28);
static_assert(offsetof(CNmClip, m_compressedPoseOffsets) == 0x40);
static_assert(offsetof(CNmClip, m_secondaryAnimations) == 0x80);
static_assert(offsetof(CNmClip, m_syncTrack) == 0xa0);
static_assert(offsetof(CNmClip, m_rootMotion) == 0x150);
static_assert(offsetof(CNmClip, m_bIsAdditive) == 0x1a0);

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x30
// Size: 0x40
// Has VTable
// Construct allowed
//
@ -25,13 +25,13 @@ namespace source2sdk::animlib
public:
// m_optionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_optionNodeIndices;
char m_optionNodeIndices[0x10]; // 0x10
char m_optionNodeIndices[0x18]; // 0x10
// m_conditionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_conditionNodeIndices;
char m_conditionNodeIndices[0x10]; // 0x20
char m_conditionNodeIndices[0x18]; // 0x28
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmClipSelectorNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmClipSelectorNode__CDefinition) == 0x30);
static_assert(sizeof(CNmClipSelectorNode__CDefinition) == 0x40);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x48
// Size: 0x60
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -29,7 +29,7 @@ namespace source2sdk::animlib
// m_resources has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CStrongHandleVoid> m_resources;
char m_resources[0x18]; // 0x10
[[maybe_unused]] std::uint8_t pad_0x28[0x20];
[[maybe_unused]] std::uint8_t pad_0x28[0x38];
};
#pragma pack(pop)
@ -37,5 +37,5 @@ namespace source2sdk::animlib
static_assert(offsetof(CNmGraphDataSet, m_skeleton) == 0x8);
static_assert(offsetof(CNmGraphDataSet, m_resources) == 0x10);
static_assert(sizeof(CNmGraphDataSet) == 0x48);
static_assert(sizeof(CNmGraphDataSet) == 0x60);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x50
// Size: 0x68
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -33,5 +33,5 @@ namespace source2sdk::animlib
static_assert(offsetof(CNmGraphVariation, m_graphDefinition) == 0x0);
static_assert(offsetof(CNmGraphVariation, m_dataSet) == 0x8);
static_assert(sizeof(CNmGraphVariation) == 0x50);
static_assert(sizeof(CNmGraphVariation) == 0x68);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x60
// Size: 0x68
// Has VTable
// Construct allowed
//
@ -31,10 +31,10 @@ namespace source2sdk::animlib
char m_IDs[0x30]; // 0x18
// m_values has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<float,5> m_values;
char m_values[0x18]; // 0x48
char m_values[0x20]; // 0x48
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmIDToFloatNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmIDToFloatNode__CDefinition) == 0x60);
static_assert(sizeof(CNmIDToFloatNode__CDefinition) == 0x68);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x40
// Size: 0x48
// Has VTable
// Construct allowed
//
@ -29,10 +29,10 @@ namespace source2sdk::animlib
[[maybe_unused]] std::uint8_t pad_0x13[0x5]; // 0x13
// m_layerDefinition has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<animlib::CNmLayerBlendNode__LayerDefinition_t,3> m_layerDefinition;
char m_layerDefinition[0x28]; // 0x18
char m_layerDefinition[0x30]; // 0x18
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmLayerBlendNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmLayerBlendNode__CDefinition) == 0x40);
static_assert(sizeof(CNmLayerBlendNode__CDefinition) == 0x48);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x40
// Size: 0x38
// Has VTable
// Construct allowed
//
@ -23,9 +23,12 @@ namespace source2sdk::animlib
class CNmLegacyEvent : public animlib::CNmEvent
{
public:
[[maybe_unused]] std::uint8_t pad_0x18[0x28];
CUtlString m_animEventClassName; // 0x18
KeyValues3 m_KV; // 0x20
[[maybe_unused]] std::uint8_t pad_0x30[0x8];
};
#pragma pack(pop)
static_assert(sizeof(CNmLegacyEvent) == 0x40);
// Cannot assert offsets of fields in CNmLegacyEvent because it is not a standard-layout class
static_assert(sizeof(CNmLegacyEvent) == 0x38);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x48
// Size: 0x50
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -24,13 +24,13 @@ namespace source2sdk::animlib
public:
// m_blendRanges has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<animlib::CNmParameterizedBlendNode__BlendRange_t,5> m_blendRanges;
char m_blendRanges[0x40]; // 0x0
Range_t m_parameterRange; // 0x40
char m_blendRanges[0x48]; // 0x0
Range_t m_parameterRange; // 0x48
};
#pragma pack(pop)
static_assert(offsetof(CNmParameterizedBlendNode__Parameterization_t, m_blendRanges) == 0x0);
static_assert(offsetof(CNmParameterizedBlendNode__Parameterization_t, m_parameterRange) == 0x40);
static_assert(offsetof(CNmParameterizedBlendNode__Parameterization_t, m_parameterRange) == 0x48);
static_assert(sizeof(CNmParameterizedBlendNode__Parameterization_t) == 0x48);
static_assert(sizeof(CNmParameterizedBlendNode__Parameterization_t) == 0x50);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x28
// Size: 0x30
// Has VTable
// Construct allowed
//
@ -25,12 +25,12 @@ namespace source2sdk::animlib
public:
// m_optionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_optionNodeIndices;
char m_optionNodeIndices[0x10]; // 0x10
int16_t m_parameterNodeIdx; // 0x20
[[maybe_unused]] std::uint8_t pad_0x22[0x6];
char m_optionNodeIndices[0x18]; // 0x10
int16_t m_parameterNodeIdx; // 0x28
[[maybe_unused]] std::uint8_t pad_0x2a[0x6];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmParameterizedClipSelectorNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmParameterizedClipSelectorNode__CDefinition) == 0x28);
static_assert(sizeof(CNmParameterizedClipSelectorNode__CDefinition) == 0x30);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x28
// Size: 0x30
// Has VTable
// Construct allowed
//
@ -25,12 +25,12 @@ namespace source2sdk::animlib
public:
// m_optionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_optionNodeIndices;
char m_optionNodeIndices[0x10]; // 0x10
int16_t m_parameterNodeIdx; // 0x20
[[maybe_unused]] std::uint8_t pad_0x22[0x6];
char m_optionNodeIndices[0x18]; // 0x10
int16_t m_parameterNodeIdx; // 0x28
[[maybe_unused]] std::uint8_t pad_0x2a[0x6];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmParameterizedSelectorNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmParameterizedSelectorNode__CDefinition) == 0x28);
static_assert(sizeof(CNmParameterizedSelectorNode__CDefinition) == 0x30);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x30
// Size: 0x40
// Has VTable
// Construct allowed
//
@ -25,13 +25,13 @@ namespace source2sdk::animlib
public:
// m_optionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_optionNodeIndices;
char m_optionNodeIndices[0x10]; // 0x10
char m_optionNodeIndices[0x18]; // 0x10
// m_conditionNodeIndices has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVectorFixedGrowable<int16_t,5> m_conditionNodeIndices;
char m_conditionNodeIndices[0x10]; // 0x20
char m_conditionNodeIndices[0x18]; // 0x28
};
#pragma pack(pop)
// Cannot assert offsets of fields in CNmSelectorNode::CDefinition because it is not a standard-layout class
static_assert(sizeof(CNmSelectorNode__CDefinition) == 0x30);
static_assert(sizeof(CNmSelectorNode__CDefinition) == 0x40);
};

View File

@ -1,5 +1,5 @@
#pragma once
#include "source2sdk/animlib/CNmBoneMask.hpp"
#include "source2sdk/animlib/CNmBoneMask__SerializedData_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
@ -14,7 +14,7 @@ namespace source2sdk::animlib
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x78
// Size: 0x88
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -37,9 +37,10 @@ namespace source2sdk::animlib
char m_modelSpaceReferencePose[0x18]; // 0x48
int32_t m_numBonesToSampleAtLowLOD; // 0x60
[[maybe_unused]] std::uint8_t pad_0x64[0x4]; // 0x64
// m_boneMasks has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVector<animlib::CNmBoneMask> m_boneMasks;
char m_boneMasks[0x10]; // 0x68
// m_serializedMasks has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlLeanVector<animlib::CNmBoneMask__SerializedData_t> m_serializedMasks;
char m_serializedMasks[0x10]; // 0x68
[[maybe_unused]] std::uint8_t pad_0x78[0x10];
};
#pragma pack(pop)
@ -49,7 +50,7 @@ namespace source2sdk::animlib
static_assert(offsetof(CNmSkeleton, m_parentSpaceReferencePose) == 0x30);
static_assert(offsetof(CNmSkeleton, m_modelSpaceReferencePose) == 0x48);
static_assert(offsetof(CNmSkeleton, m_numBonesToSampleAtLowLOD) == 0x60);
static_assert(offsetof(CNmSkeleton, m_boneMasks) == 0x68);
static_assert(offsetof(CNmSkeleton, m_serializedMasks) == 0x68);
static_assert(sizeof(CNmSkeleton) == 0x78);
static_assert(sizeof(CNmSkeleton) == 0x88);
};

View File

@ -15,6 +15,6 @@ namespace source2sdk::animlib
{
Overlay = 0,
Additive = 1,
GlobalSpace = 2,
ModelSpace = 2,
};
};

View File

@ -0,0 +1,38 @@
#pragma once
#include "source2sdk/client/ArtyGameObjectDef_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xf0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyCannonDef_t : public client::ArtyGameObjectDef_t
{
public:
bool m_bDirectAimAtTarget; // 0xb0
[[maybe_unused]] std::uint8_t pad_0xb1[0x7]; // 0xb1
// m_vecWeapons has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlString> m_vecWeapons;
char m_vecWeapons[0x18]; // 0xb8
[[maybe_unused]] std::uint8_t pad_0xd0[0x18]; // 0xd0
Vector2D m_vShotOffset; // 0xe8
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtyCannonDef_t because it is not a standard-layout class
static_assert(sizeof(ArtyCannonDef_t) == 0xf0);
};

View File

@ -0,0 +1,64 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x4
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x34
// Has Trivial Destructor
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyConstants_t
{
public:
float m_flWindAccel; // 0x0
float m_flG0; // 0x4
float m_flDragCoeff; // 0x8
bool m_bPuzzle; // 0xc
[[maybe_unused]] std::uint8_t pad_0x0d[0x3]; // 0xd
float m_flMinVelocityForFallDamage; // 0x10
float m_flFallDamageMult; // 0x14
float m_flMinAirTimeForDamage; // 0x18
bool m_bRefillAmmoEachLevel; // 0x1c
[[maybe_unused]] std::uint8_t pad_0x1d[0x3]; // 0x1d
float m_flMaxClimbHeight; // 0x20
bool m_bShowPathProjection; // 0x24
bool m_bShowTrails; // 0x25
bool m_bClearOldTrailsOnFire; // 0x26
[[maybe_unused]] std::uint8_t pad_0x27[0x1]; // 0x27
float m_flTrailLingerSeconds; // 0x28
float m_flVelocityPerChargeSecond; // 0x2c
float m_flMinimumGameObjectY; // 0x30
};
#pragma pack(pop)
static_assert(offsetof(ArtyConstants_t, m_flWindAccel) == 0x0);
static_assert(offsetof(ArtyConstants_t, m_flG0) == 0x4);
static_assert(offsetof(ArtyConstants_t, m_flDragCoeff) == 0x8);
static_assert(offsetof(ArtyConstants_t, m_bPuzzle) == 0xc);
static_assert(offsetof(ArtyConstants_t, m_flMinVelocityForFallDamage) == 0x10);
static_assert(offsetof(ArtyConstants_t, m_flFallDamageMult) == 0x14);
static_assert(offsetof(ArtyConstants_t, m_flMinAirTimeForDamage) == 0x18);
static_assert(offsetof(ArtyConstants_t, m_bRefillAmmoEachLevel) == 0x1c);
static_assert(offsetof(ArtyConstants_t, m_flMaxClimbHeight) == 0x20);
static_assert(offsetof(ArtyConstants_t, m_bShowPathProjection) == 0x24);
static_assert(offsetof(ArtyConstants_t, m_bShowTrails) == 0x25);
static_assert(offsetof(ArtyConstants_t, m_bClearOldTrailsOnFire) == 0x26);
static_assert(offsetof(ArtyConstants_t, m_flTrailLingerSeconds) == 0x28);
static_assert(offsetof(ArtyConstants_t, m_flVelocityPerChargeSecond) == 0x2c);
static_assert(offsetof(ArtyConstants_t, m_flMinimumGameObjectY) == 0x30);
static_assert(sizeof(ArtyConstants_t) == 0x34);
};

View File

@ -0,0 +1,30 @@
#pragma once
#include "source2sdk/client/ArtyUnitDef_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xc0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyEnemyDef_t : public client::ArtyUnitDef_t
{
public:
};
#pragma pack(pop)
static_assert(sizeof(ArtyEnemyDef_t) == 0xc0);
};

View File

@ -0,0 +1,35 @@
#pragma once
#include "source2sdk/client/EArtyOrderFlag.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x4
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x8
// Has Trivial Destructor
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyEnemyOrder_t
{
public:
float m_flDuration; // 0x0
client::EArtyOrderFlag m_unOrders; // 0x4
};
#pragma pack(pop)
static_assert(offsetof(ArtyEnemyOrder_t, m_flDuration) == 0x0);
static_assert(offsetof(ArtyEnemyOrder_t, m_unOrders) == 0x4);
static_assert(sizeof(ArtyEnemyOrder_t) == 0x8);
};

View File

@ -0,0 +1,36 @@
#pragma once
#include "source2sdk/client/ArtyGameModeLevelInfo_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x20
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyGameModeInfo_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x8]; // 0x0
// m_vecLevels has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ArtyGameModeLevelInfo_t> m_vecLevels;
char m_vecLevels[0x18]; // 0x8
};
#pragma pack(pop)
static_assert(offsetof(ArtyGameModeInfo_t, m_vecLevels) == 0x8);
static_assert(sizeof(ArtyGameModeInfo_t) == 0x20);
};

View File

@ -0,0 +1,32 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x8
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyGameModeLevelInfo_t
{
public:
CUtlString m_szLevelName; // 0x0
};
#pragma pack(pop)
static_assert(offsetof(ArtyGameModeLevelInfo_t, m_szLevelName) == 0x0);
static_assert(sizeof(ArtyGameModeLevelInfo_t) == 0x8);
};

View File

@ -0,0 +1,115 @@
#pragma once
#include "source2sdk/client/ArtyGameObjectID_t.hpp"
#include "source2sdk/client/ArtyGameObjectInstance_t.hpp"
#include "source2sdk/client/EArtyGameObjectType.hpp"
#include "source2sdk/client/EArtyHitboxType.hpp"
#include "source2sdk/client/EArtyLayer.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0xb0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
// static metadata: MVDataNodeType "1"
#pragma pack(push, 1)
struct ArtyGameObjectDef_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x10]; // 0x0
client::ArtyGameObjectID_t m_unID; // 0x10
[[maybe_unused]] std::uint8_t pad_0x14[0x4]; // 0x14
// metadata: MPropertyCustomFGDType "vdata_choice:scripts/events/crownfall/artillery_graphics.vdata"
CUtlString m_szGraphicsDef; // 0x18
[[maybe_unused]] std::uint8_t pad_0x20[0x8]; // 0x20
CUtlString m_szDeathSound; // 0x28
client::EArtyHitboxType m_eHitboxType; // 0x30
[[maybe_unused]] std::uint8_t pad_0x31[0x3]; // 0x31
Vector2D m_vHitboxMin; // 0x34
Vector2D m_vHitboxMax; // 0x3c
float m_flHitboxRadius; // 0x44
float m_flHitboxExtents; // 0x48
bool m_bInheritTransform; // 0x4c
bool m_bInheritRotation; // 0x4d
bool m_bInheritVisibility; // 0x4e
bool m_bInheritState; // 0x4f
bool m_bDestroyOnFallThrough; // 0x50
[[maybe_unused]] std::uint8_t pad_0x51[0x3]; // 0x51
float m_flFallDamagePerVelocity; // 0x54
bool m_bDeathCausesExplosion; // 0x58
[[maybe_unused]] std::uint8_t pad_0x59[0x3]; // 0x59
float m_flExplosionDamage; // 0x5c
float m_flExplosionRadius; // 0x60
float m_flExplosionTerrainRadius; // 0x64
float m_flGravityMult; // 0x68
float m_flDragMult; // 0x6c
float m_flWindMult; // 0x70
float m_flDeathMaxScaleFactor; // 0x74
bool m_bAllowPhysicsInDying; // 0x78
client::EArtyGameObjectType m_eType; // 0x79
[[maybe_unused]] std::uint8_t pad_0x7a[0x2]; // 0x7a
client::EArtyLayer m_eLayer; // 0x7c
float m_flMaxHealth; // 0x80
float m_flHealth; // 0x84
bool m_bVisible; // 0x88
bool m_bCanCollide; // 0x89
bool m_bDoPhysics; // 0x8a
[[maybe_unused]] std::uint8_t pad_0x8b[0x1]; // 0x8b
float m_flLifetime; // 0x8c
float m_flDieTime; // 0x90
[[maybe_unused]] std::uint8_t pad_0x94[0x4]; // 0x94
// m_vecChildren has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ArtyGameObjectInstance_t> m_vecChildren;
char m_vecChildren[0x18]; // 0x98
};
#pragma pack(pop)
static_assert(offsetof(ArtyGameObjectDef_t, m_unID) == 0x10);
static_assert(offsetof(ArtyGameObjectDef_t, m_szGraphicsDef) == 0x18);
static_assert(offsetof(ArtyGameObjectDef_t, m_szDeathSound) == 0x28);
static_assert(offsetof(ArtyGameObjectDef_t, m_eHitboxType) == 0x30);
static_assert(offsetof(ArtyGameObjectDef_t, m_vHitboxMin) == 0x34);
static_assert(offsetof(ArtyGameObjectDef_t, m_vHitboxMax) == 0x3c);
static_assert(offsetof(ArtyGameObjectDef_t, m_flHitboxRadius) == 0x44);
static_assert(offsetof(ArtyGameObjectDef_t, m_flHitboxExtents) == 0x48);
static_assert(offsetof(ArtyGameObjectDef_t, m_bInheritTransform) == 0x4c);
static_assert(offsetof(ArtyGameObjectDef_t, m_bInheritRotation) == 0x4d);
static_assert(offsetof(ArtyGameObjectDef_t, m_bInheritVisibility) == 0x4e);
static_assert(offsetof(ArtyGameObjectDef_t, m_bInheritState) == 0x4f);
static_assert(offsetof(ArtyGameObjectDef_t, m_bDestroyOnFallThrough) == 0x50);
static_assert(offsetof(ArtyGameObjectDef_t, m_flFallDamagePerVelocity) == 0x54);
static_assert(offsetof(ArtyGameObjectDef_t, m_bDeathCausesExplosion) == 0x58);
static_assert(offsetof(ArtyGameObjectDef_t, m_flExplosionDamage) == 0x5c);
static_assert(offsetof(ArtyGameObjectDef_t, m_flExplosionRadius) == 0x60);
static_assert(offsetof(ArtyGameObjectDef_t, m_flExplosionTerrainRadius) == 0x64);
static_assert(offsetof(ArtyGameObjectDef_t, m_flGravityMult) == 0x68);
static_assert(offsetof(ArtyGameObjectDef_t, m_flDragMult) == 0x6c);
static_assert(offsetof(ArtyGameObjectDef_t, m_flWindMult) == 0x70);
static_assert(offsetof(ArtyGameObjectDef_t, m_flDeathMaxScaleFactor) == 0x74);
static_assert(offsetof(ArtyGameObjectDef_t, m_bAllowPhysicsInDying) == 0x78);
static_assert(offsetof(ArtyGameObjectDef_t, m_eType) == 0x79);
static_assert(offsetof(ArtyGameObjectDef_t, m_eLayer) == 0x7c);
static_assert(offsetof(ArtyGameObjectDef_t, m_flMaxHealth) == 0x80);
static_assert(offsetof(ArtyGameObjectDef_t, m_flHealth) == 0x84);
static_assert(offsetof(ArtyGameObjectDef_t, m_bVisible) == 0x88);
static_assert(offsetof(ArtyGameObjectDef_t, m_bCanCollide) == 0x89);
static_assert(offsetof(ArtyGameObjectDef_t, m_bDoPhysics) == 0x8a);
static_assert(offsetof(ArtyGameObjectDef_t, m_flLifetime) == 0x8c);
static_assert(offsetof(ArtyGameObjectDef_t, m_flDieTime) == 0x90);
static_assert(offsetof(ArtyGameObjectDef_t, m_vecChildren) == 0x98);
static_assert(sizeof(ArtyGameObjectDef_t) == 0xb0);
};

View File

@ -0,0 +1,34 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x4
// Has Trivial Destructor
//
// static metadata: MIsBoxedIntegerType
#pragma pack(push, 1)
struct ArtyGameObjectID_t
{
public:
uint32_t m_Value; // 0x0
// Static fields:
static bool &Get_IS_TYPESAFE_INTEGER() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("ArtyGameObjectID_t")->GetStaticFields()[0]->m_pInstance);};
};
#pragma pack(pop)
static_assert(offsetof(ArtyGameObjectID_t, m_Value) == 0x0);
static_assert(sizeof(ArtyGameObjectID_t) == 0x4);
};

View File

@ -0,0 +1,48 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x38
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyGameObjectInstance_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x8]; // 0x0
CUtlString m_szName; // 0x8
CUtlString m_szGameObject; // 0x10
[[maybe_unused]] std::uint8_t pad_0x18[0x4]; // 0x18
Vector2D m_vPosition; // 0x1c
float m_flRotation; // 0x24
Vector2D m_vScale; // 0x28
bool m_bFacingLeft; // 0x30
[[maybe_unused]] std::uint8_t pad_0x31[0x3]; // 0x31
float m_flYawOffset; // 0x34
};
#pragma pack(pop)
static_assert(offsetof(ArtyGameObjectInstance_t, m_szName) == 0x8);
static_assert(offsetof(ArtyGameObjectInstance_t, m_szGameObject) == 0x10);
static_assert(offsetof(ArtyGameObjectInstance_t, m_vPosition) == 0x1c);
static_assert(offsetof(ArtyGameObjectInstance_t, m_flRotation) == 0x24);
static_assert(offsetof(ArtyGameObjectInstance_t, m_vScale) == 0x28);
static_assert(offsetof(ArtyGameObjectInstance_t, m_bFacingLeft) == 0x30);
static_assert(offsetof(ArtyGameObjectInstance_t, m_flYawOffset) == 0x34);
static_assert(sizeof(ArtyGameObjectInstance_t) == 0x38);
};

View File

@ -0,0 +1,34 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x4
// Has Trivial Destructor
//
// static metadata: MIsBoxedIntegerType
#pragma pack(push, 1)
struct ArtyGraphicID_t
{
public:
uint32_t m_Value; // 0x0
// Static fields:
static bool &Get_IS_TYPESAFE_INTEGER() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("ArtyGraphicID_t")->GetStaticFields()[0]->m_pInstance);};
};
#pragma pack(pop)
static_assert(offsetof(ArtyGraphicID_t, m_Value) == 0x0);
static_assert(sizeof(ArtyGraphicID_t) == 0x4);
};

View File

@ -0,0 +1,68 @@
#pragma once
#include "source2sdk/client/ArtyGraphicID_t.hpp"
#include "source2sdk/client/EArtyGraphicsType.hpp"
#include "source2sdk/resourcesystem/InfoForResourceTypeCModel.hpp"
#include "source2sdk/resourcesystem/InfoForResourceTypeIParticleSystemDefinition.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x218
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyGraphicInfo_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x8]; // 0x0
client::ArtyGraphicID_t m_unID; // 0x8
[[maybe_unused]] std::uint8_t pad_0x0c[0x4]; // 0xc
CUtlString m_szSnippet; // 0x10
CUtlString m_szUnit; // 0x18
// m_szModel has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeCModel>> m_szModel;
char m_szModel[0xe0]; // 0x20
// m_szParticle has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_szParticle;
char m_szParticle[0xe0]; // 0x100
client::EArtyGraphicsType m_eType; // 0x1e0
[[maybe_unused]] std::uint8_t pad_0x1e1[0x3]; // 0x1e1
QAngle m_vAngles; // 0x1e4
Vector m_vPosition; // 0x1f0
Vector m_vCameraOffset; // 0x1fc
int32_t m_nWidth; // 0x208
int32_t m_nHeight; // 0x20c
bool m_bPlayEndcap; // 0x210
[[maybe_unused]] std::uint8_t pad_0x211[0x3]; // 0x211
float m_flDefaultScale; // 0x214
};
#pragma pack(pop)
static_assert(offsetof(ArtyGraphicInfo_t, m_unID) == 0x8);
static_assert(offsetof(ArtyGraphicInfo_t, m_szSnippet) == 0x10);
static_assert(offsetof(ArtyGraphicInfo_t, m_szUnit) == 0x18);
static_assert(offsetof(ArtyGraphicInfo_t, m_szModel) == 0x20);
static_assert(offsetof(ArtyGraphicInfo_t, m_szParticle) == 0x100);
static_assert(offsetof(ArtyGraphicInfo_t, m_eType) == 0x1e0);
static_assert(offsetof(ArtyGraphicInfo_t, m_vAngles) == 0x1e4);
static_assert(offsetof(ArtyGraphicInfo_t, m_vPosition) == 0x1f0);
static_assert(offsetof(ArtyGraphicInfo_t, m_vCameraOffset) == 0x1fc);
static_assert(offsetof(ArtyGraphicInfo_t, m_nWidth) == 0x208);
static_assert(offsetof(ArtyGraphicInfo_t, m_nHeight) == 0x20c);
static_assert(offsetof(ArtyGraphicInfo_t, m_bPlayEndcap) == 0x210);
static_assert(offsetof(ArtyGraphicInfo_t, m_flDefaultScale) == 0x214);
static_assert(sizeof(ArtyGraphicInfo_t) == 0x218);
};

View File

@ -0,0 +1,34 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x4
// Has Trivial Destructor
//
// static metadata: MIsBoxedIntegerType
#pragma pack(push, 1)
struct ArtyLevelID_t
{
public:
uint32_t m_Value; // 0x0
// Static fields:
static bool &Get_IS_TYPESAFE_INTEGER() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("ArtyLevelID_t")->GetStaticFields()[0]->m_pInstance);};
};
#pragma pack(pop)
static_assert(offsetof(ArtyLevelID_t, m_Value) == 0x0);
static_assert(sizeof(ArtyLevelID_t) == 0x4);
};

View File

@ -0,0 +1,56 @@
#pragma once
#include "source2sdk/client/ArtyLevelID_t.hpp"
#include "source2sdk/client/ArtyLevelObjectInstance_t.hpp"
#include "source2sdk/client/ArtyLevelWeaponInstance_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x138
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyLevelInfo_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x8]; // 0x0
client::ArtyLevelID_t m_unID; // 0x8
[[maybe_unused]] std::uint8_t pad_0x0c[0x4]; // 0xc
CUtlString m_sLocLevelName; // 0x10
client::ArtyLevelObjectInstance_t m_playerInfo; // 0x18
// m_vecGameObjects has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ArtyLevelObjectInstance_t> m_vecGameObjects;
char m_vecGameObjects[0x18]; // 0xa0
// m_vecWeapons has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ArtyLevelWeaponInstance_t> m_vecWeapons;
char m_vecWeapons[0x18]; // 0xb8
int32_t m_nLevelCompletePoints; // 0xd0
int32_t m_nTimeBonusBasePoints; // 0xd4
int32_t m_nTimeBonusMaxPoints; // 0xd8
int32_t m_nTimeBonusFastTime; // 0xdc
int32_t m_nTimeBonusMaxTime; // 0xe0
float m_flBackgroundOffsetX; // 0xe4
int32_t m_aryStarPointThresholds[3]; // 0xe8
[[maybe_unused]] std::uint8_t pad_0xf4[0x4]; // 0xf4
CPanoramaImageName m_sBackgroundImage; // 0xf8
CPanoramaImageName m_sTerrainBackgroundImage; // 0x108
CPanoramaImageName m_sTerrainImage; // 0x118
CPanoramaImageName m_sTerrainForegroundImage; // 0x128
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtyLevelInfo_t because it is not a standard-layout class
static_assert(sizeof(ArtyLevelInfo_t) == 0x138);
};

View File

@ -0,0 +1,51 @@
#pragma once
#include "source2sdk/client/ArtyEnemyOrder_t.hpp"
#include "source2sdk/client/ArtyGameObjectInstance_t.hpp"
#include "source2sdk/client/EArtyTeam.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x88
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyLevelObjectInstance_t : public client::ArtyGameObjectInstance_t
{
public:
CUtlString m_szLeftBorderObject; // 0x38
float m_flLeftObjectOffset; // 0x40
[[maybe_unused]] std::uint8_t pad_0x44[0x4]; // 0x44
CUtlString m_szRightBorderObject; // 0x48
float m_flRightObjectOffset; // 0x50
bool m_bRandomPosition; // 0x54
bool m_bRepositionToTerrain; // 0x55
[[maybe_unused]] std::uint8_t pad_0x56[0x2]; // 0x56
float m_flLeftBorderWidthMult; // 0x58
float m_flRightBorderWidthMult; // 0x5c
float m_flAppearanceChance; // 0x60
client::EArtyTeam m_eTeam; // 0x64
[[maybe_unused]] std::uint8_t pad_0x65[0x3]; // 0x65
float m_flTimeOffset; // 0x68
[[maybe_unused]] std::uint8_t pad_0x6c[0x4]; // 0x6c
// m_vecCustomOrders has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ArtyEnemyOrder_t> m_vecCustomOrders;
char m_vecCustomOrders[0x18]; // 0x70
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtyLevelObjectInstance_t because it is not a standard-layout class
static_assert(sizeof(ArtyLevelObjectInstance_t) == 0x88);
};

View File

@ -0,0 +1,39 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x18
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyLevelWeaponInstance_t
{
public:
// metadata: MPropertyCustomFGDType "vdata_choice:scripts/events/crownfall/artillery_weapons.vdata"
CUtlString m_szName; // 0x0
[[maybe_unused]] std::uint8_t pad_0x08[0x4]; // 0x8
int32_t m_nReloads; // 0xc
int32_t m_nPointsPerShot; // 0x10
[[maybe_unused]] std::uint8_t pad_0x14[0x4];
};
#pragma pack(pop)
static_assert(offsetof(ArtyLevelWeaponInstance_t, m_szName) == 0x0);
static_assert(offsetof(ArtyLevelWeaponInstance_t, m_nReloads) == 0xc);
static_assert(offsetof(ArtyLevelWeaponInstance_t, m_nPointsPerShot) == 0x10);
static_assert(sizeof(ArtyLevelWeaponInstance_t) == 0x18);
};

View File

@ -0,0 +1,30 @@
#pragma once
#include "source2sdk/client/ArtyUnitDef_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xc0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyPlayerDef_t : public client::ArtyUnitDef_t
{
public:
};
#pragma pack(pop)
static_assert(sizeof(ArtyPlayerDef_t) == 0xc0);
};

View File

@ -0,0 +1,33 @@
#pragma once
#include "source2sdk/client/ArtyGameObjectDef_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xb8
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyProgressBarDef_t : public client::ArtyGameObjectDef_t
{
public:
float m_flNotchSize; // 0xb0
[[maybe_unused]] std::uint8_t pad_0xb4[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtyProgressBarDef_t because it is not a standard-layout class
static_assert(sizeof(ArtyProgressBarDef_t) == 0xb8);
};

View File

@ -0,0 +1,39 @@
#pragma once
#include "source2sdk/client/ArtyGameObjectDef_t.hpp"
#include "source2sdk/client/EArtyTeam.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xd0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtySpawnerDef_t : public client::ArtyGameObjectDef_t
{
public:
float m_flInitialDelay; // 0xb0
float m_flDelayBetween; // 0xb4
int32_t m_nNumToSpawn; // 0xb8
client::EArtyTeam m_eSpawnedUnitTeam; // 0xbc
[[maybe_unused]] std::uint8_t pad_0xbd[0x3]; // 0xbd
CUtlString m_szGameObject; // 0xc0
[[maybe_unused]] std::uint8_t pad_0xc8[0x8];
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtySpawnerDef_t because it is not a standard-layout class
static_assert(sizeof(ArtySpawnerDef_t) == 0xd0);
};

View File

@ -0,0 +1,36 @@
#pragma once
#include "source2sdk/client/ArtyGameObjectDef_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xc0
// Has VTable
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
#pragma pack(push, 1)
struct ArtyUnitDef_t : public client::ArtyGameObjectDef_t
{
public:
bool m_bRotateReloadBar; // 0xb0
[[maybe_unused]] std::uint8_t pad_0xb1[0x3]; // 0xb1
float m_flMaxMana; // 0xb4
float m_flMovementSpeed; // 0xb8
[[maybe_unused]] std::uint8_t pad_0xbc[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in ArtyUnitDef_t because it is not a standard-layout class
static_assert(sizeof(ArtyUnitDef_t) == 0xc0);
};

View File

@ -0,0 +1,34 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x4
// Has Trivial Destructor
//
// static metadata: MIsBoxedIntegerType
#pragma pack(push, 1)
struct ArtyWeaponID_t
{
public:
uint32_t m_Value; // 0x0
// Static fields:
static bool &Get_IS_TYPESAFE_INTEGER() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("ArtyWeaponID_t")->GetStaticFields()[0]->m_pInstance);};
};
#pragma pack(pop)
static_assert(offsetof(ArtyWeaponID_t, m_Value) == 0x0);
static_assert(sizeof(ArtyWeaponID_t) == 0x4);
};

View File

@ -0,0 +1,154 @@
#pragma once
#include "source2sdk/client/ArtyWeaponID_t.hpp"
#include "source2sdk/client/GameActivity_t.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x110
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
struct ArtyWeaponInfo_t
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x8]; // 0x0
client::ArtyWeaponID_t m_unID; // 0x8
[[maybe_unused]] std::uint8_t pad_0x0c[0x4]; // 0xc
CUtlString m_sWeaponLocName; // 0x10
CUtlString m_sWeaponLocDesc; // 0x18
CUtlString m_sWeaponSwapSound; // 0x20
CUtlString m_sWeaponFireSound; // 0x28
CPanoramaImageName m_sWeaponImage; // 0x30
bool m_bIsPlayerWeapon; // 0x40
[[maybe_unused]] std::uint8_t pad_0x41[0x7]; // 0x41
// metadata: MPropertyCustomFGDType "vdata_choice:scripts/events/crownfall/artillery_graphics.vdata"
CUtlString m_strGraphicInfoName; // 0x48
[[maybe_unused]] std::uint8_t pad_0x50[0x4]; // 0x50
client::GameActivity_t m_weaponAttackActivity; // 0x54
float m_flShotCreationTime; // 0x58
float m_flDamage; // 0x5c
float m_flHitRadius; // 0x60
float m_flTerrainCarveRadius; // 0x64
float m_flDamageRadius; // 0x68
float m_flLockedAngle; // 0x6c
float m_flLockedPower; // 0x70
float m_flReloadTime; // 0x74
int32_t m_nSplitCount; // 0x78
float m_flSplitTime; // 0x7c
float m_flSplitRepeatTime; // 0x80
float m_flSplitDispersion; // 0x84
bool m_bSplitAtTop; // 0x88
bool m_bZeroXOnSplit; // 0x89
bool m_bSplitRepeats; // 0x8a
[[maybe_unused]] std::uint8_t pad_0x8b[0x5]; // 0x8b
CUtlString m_szSplitWeapon; // 0x90
[[maybe_unused]] std::uint8_t pad_0x98[0x4]; // 0x98
float m_flMaxSpeed; // 0x9c
float m_flDragMult; // 0xa0
float m_flWindMult; // 0xa4
bool m_bIsRay; // 0xa8
[[maybe_unused]] std::uint8_t pad_0xa9[0x3]; // 0xa9
float m_flRangeMult; // 0xac
int32_t m_nInitialShotCount; // 0xb0
float m_nInitialShotAngleDispersionPer; // 0xb4
float m_flManaCost; // 0xb8
bool m_bDisabled; // 0xbc
bool m_bBounces; // 0xbd
bool m_bBounceOffTarget; // 0xbe
[[maybe_unused]] std::uint8_t pad_0xbf[0x1]; // 0xbf
float m_flFuseTime; // 0xc0
float m_flBounceDrag; // 0xc4
int32_t m_nMaxReloads; // 0xc8
float m_flGravityMult; // 0xcc
bool m_bProximityFuse; // 0xd0
bool m_bUseHighArc; // 0xd1
bool m_bCollides; // 0xd2
bool m_bDirectAimAtTarget; // 0xd3
int32_t m_nWeaponPoints; // 0xd4
int32_t m_nRayDigTimes; // 0xd8
bool m_bNoShootingWhileInAir; // 0xdc
bool m_bListenForKeypress; // 0xdd
[[maybe_unused]] std::uint8_t pad_0xde[0x2]; // 0xde
Vector2D m_vVelocityMultOnKeypress; // 0xe0
Vector2D m_vVelocityOffsetOnKeypress; // 0xe8
bool m_bShowTrajectory; // 0xf0
[[maybe_unused]] std::uint8_t pad_0xf1[0x3]; // 0xf1
Vector2D m_vVelocityMultOnExplode; // 0xf4
Vector2D m_vVelocityOffsetOnExplode; // 0xfc
int32_t m_nExplodeTimes; // 0x104
float m_flRadiusChangePerExplode; // 0x108
[[maybe_unused]] std::uint8_t pad_0x10c[0x4];
};
#pragma pack(pop)
static_assert(offsetof(ArtyWeaponInfo_t, m_unID) == 0x8);
static_assert(offsetof(ArtyWeaponInfo_t, m_sWeaponLocName) == 0x10);
static_assert(offsetof(ArtyWeaponInfo_t, m_sWeaponLocDesc) == 0x18);
static_assert(offsetof(ArtyWeaponInfo_t, m_sWeaponSwapSound) == 0x20);
static_assert(offsetof(ArtyWeaponInfo_t, m_sWeaponFireSound) == 0x28);
static_assert(offsetof(ArtyWeaponInfo_t, m_sWeaponImage) == 0x30);
static_assert(offsetof(ArtyWeaponInfo_t, m_bIsPlayerWeapon) == 0x40);
static_assert(offsetof(ArtyWeaponInfo_t, m_strGraphicInfoName) == 0x48);
static_assert(offsetof(ArtyWeaponInfo_t, m_weaponAttackActivity) == 0x54);
static_assert(offsetof(ArtyWeaponInfo_t, m_flShotCreationTime) == 0x58);
static_assert(offsetof(ArtyWeaponInfo_t, m_flDamage) == 0x5c);
static_assert(offsetof(ArtyWeaponInfo_t, m_flHitRadius) == 0x60);
static_assert(offsetof(ArtyWeaponInfo_t, m_flTerrainCarveRadius) == 0x64);
static_assert(offsetof(ArtyWeaponInfo_t, m_flDamageRadius) == 0x68);
static_assert(offsetof(ArtyWeaponInfo_t, m_flLockedAngle) == 0x6c);
static_assert(offsetof(ArtyWeaponInfo_t, m_flLockedPower) == 0x70);
static_assert(offsetof(ArtyWeaponInfo_t, m_flReloadTime) == 0x74);
static_assert(offsetof(ArtyWeaponInfo_t, m_nSplitCount) == 0x78);
static_assert(offsetof(ArtyWeaponInfo_t, m_flSplitTime) == 0x7c);
static_assert(offsetof(ArtyWeaponInfo_t, m_flSplitRepeatTime) == 0x80);
static_assert(offsetof(ArtyWeaponInfo_t, m_flSplitDispersion) == 0x84);
static_assert(offsetof(ArtyWeaponInfo_t, m_bSplitAtTop) == 0x88);
static_assert(offsetof(ArtyWeaponInfo_t, m_bZeroXOnSplit) == 0x89);
static_assert(offsetof(ArtyWeaponInfo_t, m_bSplitRepeats) == 0x8a);
static_assert(offsetof(ArtyWeaponInfo_t, m_szSplitWeapon) == 0x90);
static_assert(offsetof(ArtyWeaponInfo_t, m_flMaxSpeed) == 0x9c);
static_assert(offsetof(ArtyWeaponInfo_t, m_flDragMult) == 0xa0);
static_assert(offsetof(ArtyWeaponInfo_t, m_flWindMult) == 0xa4);
static_assert(offsetof(ArtyWeaponInfo_t, m_bIsRay) == 0xa8);
static_assert(offsetof(ArtyWeaponInfo_t, m_flRangeMult) == 0xac);
static_assert(offsetof(ArtyWeaponInfo_t, m_nInitialShotCount) == 0xb0);
static_assert(offsetof(ArtyWeaponInfo_t, m_nInitialShotAngleDispersionPer) == 0xb4);
static_assert(offsetof(ArtyWeaponInfo_t, m_flManaCost) == 0xb8);
static_assert(offsetof(ArtyWeaponInfo_t, m_bDisabled) == 0xbc);
static_assert(offsetof(ArtyWeaponInfo_t, m_bBounces) == 0xbd);
static_assert(offsetof(ArtyWeaponInfo_t, m_bBounceOffTarget) == 0xbe);
static_assert(offsetof(ArtyWeaponInfo_t, m_flFuseTime) == 0xc0);
static_assert(offsetof(ArtyWeaponInfo_t, m_flBounceDrag) == 0xc4);
static_assert(offsetof(ArtyWeaponInfo_t, m_nMaxReloads) == 0xc8);
static_assert(offsetof(ArtyWeaponInfo_t, m_flGravityMult) == 0xcc);
static_assert(offsetof(ArtyWeaponInfo_t, m_bProximityFuse) == 0xd0);
static_assert(offsetof(ArtyWeaponInfo_t, m_bUseHighArc) == 0xd1);
static_assert(offsetof(ArtyWeaponInfo_t, m_bCollides) == 0xd2);
static_assert(offsetof(ArtyWeaponInfo_t, m_bDirectAimAtTarget) == 0xd3);
static_assert(offsetof(ArtyWeaponInfo_t, m_nWeaponPoints) == 0xd4);
static_assert(offsetof(ArtyWeaponInfo_t, m_nRayDigTimes) == 0xd8);
static_assert(offsetof(ArtyWeaponInfo_t, m_bNoShootingWhileInAir) == 0xdc);
static_assert(offsetof(ArtyWeaponInfo_t, m_bListenForKeypress) == 0xdd);
static_assert(offsetof(ArtyWeaponInfo_t, m_vVelocityMultOnKeypress) == 0xe0);
static_assert(offsetof(ArtyWeaponInfo_t, m_vVelocityOffsetOnKeypress) == 0xe8);
static_assert(offsetof(ArtyWeaponInfo_t, m_bShowTrajectory) == 0xf0);
static_assert(offsetof(ArtyWeaponInfo_t, m_vVelocityMultOnExplode) == 0xf4);
static_assert(offsetof(ArtyWeaponInfo_t, m_vVelocityOffsetOnExplode) == 0xfc);
static_assert(offsetof(ArtyWeaponInfo_t, m_nExplodeTimes) == 0x104);
static_assert(offsetof(ArtyWeaponInfo_t, m_flRadiusChangePerExplode) == 0x108);
static_assert(sizeof(ArtyWeaponInfo_t) == 0x110);
};

View File

@ -14,10 +14,9 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xab0
// Size: 0xaf8
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CAdditionalWearable : public client::C_DynamicProp
{
@ -26,5 +25,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CAdditionalWearable) == 0xab0);
static_assert(sizeof(CAdditionalWearable) == 0xaf8);
};

View File

@ -14,18 +14,17 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x828
// Size: 0x870
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CAmbientCreatures : public client::C_DOTAWorldParticleSystem
{
public:
CUtlString m_szAnimationName; // 0x820
CUtlString m_szAnimationName; // 0x868
};
#pragma pack(pop)
// Cannot assert offsets of fields in CAmbientCreatures because it is not a standard-layout class
static_assert(sizeof(CAmbientCreatures) == 0x828);
static_assert(sizeof(CAmbientCreatures) == 0x870);
};

View File

@ -11,19 +11,23 @@
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x1
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x18
// Size: 0x78
// Has VTable
// Is Abstract
#pragma pack(push, 1)
class CAnimGraphControllerBase
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x18];
// No schema binary for binding
[[maybe_unused]] std::uint8_t pad_0x00[0x20]; // 0x0
// m_vecParamsToResetInPostGraphUpdate has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVectorFixedGrowable<CGlobalSymbol,8> m_vecParamsToResetInPostGraphUpdate;
char m_vecParamsToResetInPostGraphUpdate[0x58]; // 0x20
};
#pragma pack(pop)
static_assert(sizeof(CAnimGraphControllerBase) == 0x18);
static_assert(offsetof(CAnimGraphControllerBase, m_vecParamsToResetInPostGraphUpdate) == 0x20);
static_assert(sizeof(CAnimGraphControllerBase) == 0x78);
};

View File

@ -47,32 +47,19 @@ namespace source2sdk::client
// metadata: MNetworkPriority "32"
// metadata: MNetworkChangeCallback "animationLayerCycleReset"
int32_t m_nNewSequenceParity; // 0x68
// metadata: MNetworkDisable
entity2::GameTime_t m_flSeqStartTime; // 0x6c
// metadata: MNetworkDisable
float m_flCachedSequenceCycleRate; // 0x70
// metadata: MNetworkDisable
int32_t m_nFlags; // 0x74
// metadata: MNetworkDisable
bool m_bSequenceFinished; // 0x78
[[maybe_unused]] std::uint8_t pad_0x79[0x3]; // 0x79
// metadata: MNetworkDisable
entity2::GameTime_t m_flKillStartTime; // 0x7c
// metadata: MNetworkDisable
float m_flKillRate; // 0x80
// metadata: MNetworkDisable
entity2::GameTime_t m_flLayerSuppressChangeTime; // 0x84
// metadata: MNetworkDisable
int32_t m_nActivity; // 0x88
// metadata: MNetworkDisable
int32_t m_nPriority; // 0x8c
// metadata: MNetworkDisable
float m_flLastEventCycle; // 0x90
// metadata: MNetworkDisable
float m_flFadeInFraction; // 0x94
// metadata: MNetworkDisable
float m_flFadeOutFraction; // 0x98
// metadata: MNetworkDisable
bool m_bHasFadedIn; // 0x9c
[[maybe_unused]] std::uint8_t pad_0x9d[0xb];
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x128
// Size: 0x140
// Has VTable
// MNetworkNoBase
//
@ -34,5 +34,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CAttributeContainer because it is not a standard-layout class
static_assert(sizeof(CAttributeContainer) == 0x128);
static_assert(sizeof(CAttributeContainer) == 0x140);
};

View File

@ -19,9 +19,8 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x60
// Size: 0x78
// Has VTable
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "C_EconItemAttribute m_Attributes"
#pragma pack(push, 1)
@ -33,13 +32,13 @@ namespace source2sdk::client
// metadata: MNetworkTypeAlias "CUtlVector< CEconItemAttribute >"
// m_Attributes has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// C_UtlVectorEmbeddedNetworkVar<client::C_EconItemAttribute> m_Attributes;
char m_Attributes[0x50]; // 0x8
client::CAttributeManager* m_pManager; // 0x58
char m_Attributes[0x68]; // 0x8
client::CAttributeManager* m_pManager; // 0x70
};
#pragma pack(pop)
static_assert(offsetof(CAttributeList, m_Attributes) == 0x8);
static_assert(offsetof(CAttributeList, m_pManager) == 0x58);
static_assert(offsetof(CAttributeList, m_pManager) == 0x70);
static_assert(sizeof(CAttributeList) == 0x60);
static_assert(sizeof(CAttributeList) == 0x78);
};

View File

@ -22,7 +22,6 @@ namespace source2sdk::client
// Standard-layout class: true
// Size: 0x68
// Has VTable
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "int m_iReapplyProvisionParity"
// static metadata: MNetworkVarNames "EHANDLE m_hOuter"

View File

@ -15,10 +15,9 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xa38
// Size: 0xa80
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkIncludeByName "m_bClientSideRagdoll"
// static metadata: MNetworkVarNames "bool m_bInitiallyPopulateInterpHistory"
@ -31,37 +30,37 @@ namespace source2sdk::client
class CBaseAnimGraph : public client::C_BaseModelEntity
{
public:
[[maybe_unused]] std::uint8_t pad_0x7d8[0x78]; // 0x7d8
[[maybe_unused]] std::uint8_t pad_0x820[0x78]; // 0x820
// metadata: MNetworkEnable
bool m_bInitiallyPopulateInterpHistory; // 0x850
[[maybe_unused]] std::uint8_t pad_0x851[0x1]; // 0x851
bool m_bSuppressAnimEventSounds; // 0x852
[[maybe_unused]] std::uint8_t pad_0x853[0xd]; // 0x853
bool m_bInitiallyPopulateInterpHistory; // 0x898
[[maybe_unused]] std::uint8_t pad_0x899[0x1]; // 0x899
bool m_bSuppressAnimEventSounds; // 0x89a
[[maybe_unused]] std::uint8_t pad_0x89b[0xd]; // 0x89b
// metadata: MNetworkEnable
bool m_bAnimGraphUpdateEnabled; // 0x860
[[maybe_unused]] std::uint8_t pad_0x861[0x3]; // 0x861
float m_flMaxSlopeDistance; // 0x864
Vector m_vLastSlopeCheckPos; // 0x868
bool m_bAnimationUpdateScheduled; // 0x874
[[maybe_unused]] std::uint8_t pad_0x875[0x3]; // 0x875
bool m_bAnimGraphUpdateEnabled; // 0x8a8
[[maybe_unused]] std::uint8_t pad_0x8a9[0x3]; // 0x8a9
float m_flMaxSlopeDistance; // 0x8ac
Vector m_vLastSlopeCheckPos; // 0x8b0
bool m_bAnimationUpdateScheduled; // 0x8bc
[[maybe_unused]] std::uint8_t pad_0x8bd[0x3]; // 0x8bd
// metadata: MNetworkEnable
Vector m_vecForce; // 0x878
Vector m_vecForce; // 0x8c0
// metadata: MNetworkEnable
int32_t m_nForceBone; // 0x884
client::CBaseAnimGraph* m_pClientsideRagdoll; // 0x888
bool m_bBuiltRagdoll; // 0x890
[[maybe_unused]] std::uint8_t pad_0x891[0x17]; // 0x891
int32_t m_nForceBone; // 0x8cc
client::CBaseAnimGraph* m_pClientsideRagdoll; // 0x8d0
bool m_bBuiltRagdoll; // 0x8d8
[[maybe_unused]] std::uint8_t pad_0x8d9[0x17]; // 0x8d9
// metadata: MNetworkEnable
client::PhysicsRagdollPose_t m_RagdollPose; // 0x8a8
client::PhysicsRagdollPose_t m_RagdollPose; // 0x8f0
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnClientRagdollChanged"
bool m_bRagdollClientSide; // 0x8f0
[[maybe_unused]] std::uint8_t pad_0x8f1[0xf]; // 0x8f1
bool m_bHasAnimatedMaterialAttributes; // 0x900
[[maybe_unused]] std::uint8_t pad_0x901[0x137];
bool m_bRagdollClientSide; // 0x938
[[maybe_unused]] std::uint8_t pad_0x939[0xf]; // 0x939
bool m_bHasAnimatedMaterialAttributes; // 0x948
[[maybe_unused]] std::uint8_t pad_0x949[0x137];
// Datamap fields:
// void m_pMainGraphController; // 0x848
// void m_pMainGraphController; // 0x890
// float InputSetPlaybackRate; // 0x0
// CUtlSymbolLarge InputSetBodyGroup; // 0x0
// bool InputDisableAnimEventSounds; // 0x0
@ -69,5 +68,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseAnimGraph because it is not a standard-layout class
static_assert(sizeof(CBaseAnimGraph) == 0xa38);
static_assert(sizeof(CBaseAnimGraph) == 0xa80);
};

View File

@ -0,0 +1,38 @@
#pragma once
#include "source2sdk/client/CAnimGraphControllerBase.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xb0
// Has VTable
#pragma pack(push, 1)
class CBaseAnimGraphAnimGraphController : public client::CAnimGraphControllerBase
{
public:
// m_sDestructiblePartDestroyedHitGroup has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CAnimGraph1ParamOptionalRef<char*> m_sDestructiblePartDestroyedHitGroup;
char m_sDestructiblePartDestroyedHitGroup[0x20]; // 0x78
// m_nDestructiblePartDestroyedPartIndex has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CAnimGraph1ParamOptionalRef<int32_t> m_nDestructiblePartDestroyedPartIndex;
char m_nDestructiblePartDestroyedPartIndex[0x18]; // 0x98
// Static fields:
static uint32_t &Get_s_nControllerTypeID() {return *reinterpret_cast<uint32_t*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("CBaseAnimGraphAnimGraphController")->GetStaticFields()[0]->m_pInstance);};
static bool &Get_s_bSchemaTest() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("!GlobalTypes")->FindDeclaredClass("CBaseAnimGraphAnimGraphController")->GetStaticFields()[1]->m_pInstance);};
};
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseAnimGraphAnimGraphController because it is not a standard-layout class
static_assert(sizeof(CBaseAnimGraphAnimGraphController) == 0xb0);
};

View File

@ -18,7 +18,7 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x3c8
// Size: 0x3d0
// Has VTable
//
// static metadata: MNetworkVarNames "HSequence m_hSequence"
@ -30,12 +30,9 @@ namespace source2sdk::client
{
public:
[[maybe_unused]] std::uint8_t pad_0x10[0x8]; // 0x10
// metadata: MNetworkDisable
bool m_bSequenceFinished; // 0x18
[[maybe_unused]] std::uint8_t pad_0x19[0x3]; // 0x19
// metadata: MNetworkDisable
float m_flSoundSyncTime; // 0x1c
// metadata: MNetworkDisable
uint32_t m_nActiveIKChainMask; // 0x20
// metadata: MNetworkEnable
// metadata: MNetworkSerializer "minusone"
@ -63,27 +60,22 @@ namespace source2sdk::client
// metadata: MNetworkChangeCallback "OnNetworkedAnimationChanged"
CNetworkedQuantizedFloat m_flPlaybackRate; // 0x34
[[maybe_unused]] std::uint8_t pad_0x3c[0x4]; // 0x3c
// metadata: MNetworkDisable
client::SequenceFinishNotifyState_t m_nNotifyState; // 0x40
[[maybe_unused]] std::uint8_t pad_0x41[0x1]; // 0x41
// metadata: MNetworkDisable
bool m_bNetworkedAnimationInputsChanged; // 0x42
// metadata: MNetworkDisable
bool m_bNetworkedSequenceChanged; // 0x43
// metadata: MNetworkDisable
bool m_bLastUpdateSkipped; // 0x44
[[maybe_unused]] std::uint8_t pad_0x45[0x3]; // 0x45
// metadata: MNetworkDisable
entity2::GameTime_t m_flPrevAnimUpdateTime; // 0x48
[[maybe_unused]] std::uint8_t pad_0x4c[0x37c];
[[maybe_unused]] std::uint8_t pad_0x4c[0x384];
// Datamap fields:
// void m_pAnimGraphInstance; // 0x2e8
// float m_flCachedSequenceCycleRate; // 0x3c
// void m_iv_AnimOpHistory; // 0x378
// void m_iv_AnimOpHistory; // 0x380
};
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseAnimGraphController because it is not a standard-layout class
static_assert(sizeof(CBaseAnimGraphController) == 0x3c8);
static_assert(sizeof(CBaseAnimGraphController) == 0x3d0);
};

View File

@ -14,10 +14,9 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x800
// Size: 0x848
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "bool m_bShouldAnimateDuringGameplayPause"
// static metadata: MNetworkVarNames "bool m_bInitiallyPopulateInterpHistory"
@ -26,18 +25,18 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
bool m_bShouldAnimateDuringGameplayPause; // 0x7d8
bool m_bShouldAnimateDuringGameplayPause; // 0x820
// metadata: MNetworkEnable
bool m_bInitiallyPopulateInterpHistory; // 0x7d9
bool m_bAnimationUpdateScheduled; // 0x7da
[[maybe_unused]] std::uint8_t pad_0x7db[0x5]; // 0x7db
bool m_bInitiallyPopulateInterpHistory; // 0x821
bool m_bAnimationUpdateScheduled; // 0x822
[[maybe_unused]] std::uint8_t pad_0x823[0x5]; // 0x823
// m_pSuppressedAnimEventTags has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlString>* m_pSuppressedAnimEventTags;
char m_pSuppressedAnimEventTags[0x8]; // 0x7e0
bool m_bHasAnimatedMaterialAttributes; // 0x7e8
[[maybe_unused]] std::uint8_t pad_0x7e9[0xf]; // 0x7e9
bool m_bSuppressAnimEventSounds; // 0x7f8
[[maybe_unused]] std::uint8_t pad_0x7f9[0x7];
char m_pSuppressedAnimEventTags[0x8]; // 0x828
bool m_bHasAnimatedMaterialAttributes; // 0x830
[[maybe_unused]] std::uint8_t pad_0x831[0xf]; // 0x831
bool m_bSuppressAnimEventSounds; // 0x840
[[maybe_unused]] std::uint8_t pad_0x841[0x7];
// Datamap fields:
// float InputSetPlaybackRate; // 0x0
@ -46,5 +45,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseAnimatingActivity because it is not a standard-layout class
static_assert(sizeof(CBaseAnimatingActivity) == 0x800);
static_assert(sizeof(CBaseAnimatingActivity) == 0x848);
};

View File

@ -21,11 +21,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x6d8
// Size: 0x700
// Has VTable
// Construct allowed
// MNetworkNoBase
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkIncludeByName "m_pEntity"
// static metadata: MNetworkIncludeByName "m_flSimulationTime"
@ -48,51 +47,51 @@ namespace source2sdk::client
class CBasePlayerController : public client::C_BaseEntity
{
public:
[[maybe_unused]] std::uint8_t pad_0x538[0x8]; // 0x538
int32_t m_nFinalPredictedTick; // 0x540
[[maybe_unused]] std::uint8_t pad_0x544[0x4]; // 0x544
client::C_CommandContext m_CommandContext; // 0x548
uint64_t m_nInButtonsWhichAreToggles; // 0x5e8
[[maybe_unused]] std::uint8_t pad_0x560[0x8]; // 0x560
int32_t m_nFinalPredictedTick; // 0x568
[[maybe_unused]] std::uint8_t pad_0x56c[0x4]; // 0x56c
client::C_CommandContext m_CommandContext; // 0x570
uint64_t m_nInButtonsWhichAreToggles; // 0x610
// metadata: MNetworkEnable
// metadata: MNetworkPriority "1"
// metadata: MNetworkUserGroup "LocalPlayerExclusive"
uint32_t m_nTickBase; // 0x5f0
uint32_t m_nTickBase; // 0x618
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnPawnChanged"
// m_hPawn has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BasePlayerPawn> m_hPawn;
char m_hPawn[0x4]; // 0x5f4
char m_hPawn[0x4]; // 0x61c
// metadata: MNetworkEnable
bool m_bKnownTeamMismatch; // 0x5f8
[[maybe_unused]] std::uint8_t pad_0x5f9[0x3]; // 0x5f9
bool m_bKnownTeamMismatch; // 0x620
[[maybe_unused]] std::uint8_t pad_0x621[0x3]; // 0x621
// m_hPredictedPawn has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BasePlayerPawn> m_hPredictedPawn;
char m_hPredictedPawn[0x4]; // 0x5fc
CSplitScreenSlot m_nSplitScreenSlot; // 0x600
char m_hPredictedPawn[0x4]; // 0x624
CSplitScreenSlot m_nSplitScreenSlot; // 0x628
// m_hSplitOwner has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::CBasePlayerController> m_hSplitOwner;
char m_hSplitOwner[0x4]; // 0x604
char m_hSplitOwner[0x4]; // 0x62c
// m_hSplitScreenPlayers has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CHandle<client::CBasePlayerController>> m_hSplitScreenPlayers;
char m_hSplitScreenPlayers[0x18]; // 0x608
bool m_bIsHLTV; // 0x620
[[maybe_unused]] std::uint8_t pad_0x621[0x3]; // 0x621
char m_hSplitScreenPlayers[0x18]; // 0x630
bool m_bIsHLTV; // 0x648
[[maybe_unused]] std::uint8_t pad_0x649[0x3]; // 0x649
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnConnectionStateChanged"
client::PlayerConnectedState m_iConnected; // 0x624
client::PlayerConnectedState m_iConnected; // 0x64c
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnPlayerControllerNameChanged"
char m_iszPlayerName[128]; // 0x628
[[maybe_unused]] std::uint8_t pad_0x6a8[0x8]; // 0x6a8
char m_iszPlayerName[128]; // 0x650
[[maybe_unused]] std::uint8_t pad_0x6d0[0x8]; // 0x6d0
// metadata: MNetworkEnable
// metadata: MNetworkEncoder "fixed64"
// metadata: MNetworkChangeCallback "OnSteamIDChanged"
uint64_t m_steamID; // 0x6b0
bool m_bIsLocalPlayerController; // 0x6b8
[[maybe_unused]] std::uint8_t pad_0x6b9[0x3]; // 0x6b9
uint64_t m_steamID; // 0x6d8
bool m_bIsLocalPlayerController; // 0x6e0
[[maybe_unused]] std::uint8_t pad_0x6e1[0x3]; // 0x6e1
// metadata: MNetworkEnable
uint32_t m_iDesiredFOV; // 0x6bc
[[maybe_unused]] std::uint8_t pad_0x6c0[0x18];
uint32_t m_iDesiredFOV; // 0x6e4
[[maybe_unused]] std::uint8_t pad_0x6e8[0x18];
// Static fields:
static bool &Get_sm_bRunningPredictedClientStringCommands() {return *reinterpret_cast<bool*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CBasePlayerController")->GetStaticFields()[0]->m_pInstance);};
@ -102,10 +101,10 @@ namespace source2sdk::client
// bool is_hltv; // 0x7fffffff
// const char * playername; // 0x7fffffff
// bool reserving; // 0x7fffffff
// void m_pCurrentCommand; // 0x6a8
// void m_pCurrentCommand; // 0x6d0
};
#pragma pack(pop)
// Cannot assert offsets of fields in CBasePlayerController because it is not a standard-layout class
static_assert(sizeof(CBasePlayerController) == 0x6d8);
static_assert(sizeof(CBasePlayerController) == 0x700);
};

View File

@ -17,7 +17,7 @@ namespace source2sdk::client
// Has Trivial Constructor
// Has Trivial Destructor
//
// static metadata: MPulseProvideFeatureTag "PulseEntities"
// static metadata: MPulseProvideFeatureTag "1"
// static metadata: MPulseLibraryBindings
#pragma pack(push, 1)
class CBasePlayerControllerAPI

View File

@ -19,7 +19,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x240
// Size: 0x338
// Has VTable
// Construct allowed
//
@ -31,110 +31,102 @@ namespace source2sdk::client
[[maybe_unused]] std::uint8_t pad_0x00[0x10]; // 0x0
// metadata: MPropertyDescription "The name of the weapon entity to spawn for this NPC weapon."
CUtlString m_szClassName; // 0x10
// metadata: MPropertyStartGroup "Visuals"
// metadata: MPropertyDescription "Model used on the ground or held by an entity"
// metadata: MPropertyGroupName "Visuals"
// m_szWorldModel has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeCModel>> m_szWorldModel;
char m_szWorldModel[0xe0]; // 0x18
// metadata: MPropertyDescription "Model used by the tools only to populate comboboxes for things like animgraph parameter pickers"
// m_sToolsOnlyOwnerModelName has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeCModel>> m_sToolsOnlyOwnerModelName;
char m_sToolsOnlyOwnerModelName[0xe0]; // 0xf8
// metadata: MPropertyDescription "Was the weapon was built right-handed?"
// metadata: MPropertyGroupName "Visuals"
bool m_bBuiltRightHanded; // 0xf8
bool m_bBuiltRightHanded; // 0x1d8
// metadata: MPropertyDescription "Allows flipping the model, regardless of whether it is built left or right handed"
// metadata: MPropertyGroupName "Visuals"
bool m_bAllowFlipping; // 0xf9
[[maybe_unused]] std::uint8_t pad_0xfa[0x6]; // 0xfa
// metadata: MPropertyGroupName "Visuals"
bool m_bAllowFlipping; // 0x1d9
[[maybe_unused]] std::uint8_t pad_0x1da[0x6]; // 0x1da
// metadata: MPropertyDescription "Attachment to fire bullets from"
// metadata: MPropertyAttributeEditor "VDataModelAttachment( m_szWorldModel )"
CUtlString m_sMuzzleAttachment; // 0x100
CAttachmentNameSymbolWithStorage m_sMuzzleAttachment; // 0x1e0
// metadata: MPropertyDescription "Effect when firing this weapon"
// metadata: MPropertyGroupName "Visuals"
// m_szMuzzleFlashParticle has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_szMuzzleFlashParticle;
char m_szMuzzleFlashParticle[0xe0]; // 0x108
client::ItemFlagTypes_t m_iFlags; // 0x1e8
char m_szMuzzleFlashParticle[0xe0]; // 0x200
// metadata: MPropertyStartGroup "Behavior"
// metadata: MPropertyDescription "Should both primary and secondary attacks be cooled down together (so cooling down primary attack would cooldown both primary + secondary attacks)?"
bool m_bLinkedCooldowns; // 0x2e0
client::ItemFlagTypes_t m_iFlags; // 0x2e1
// metadata: MPropertyStartGroup "Ammo"
// metadata: MPropertyAttributeEditor "VDataChoice( scripts/ammo.vdata )"
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyCustomFGDType "string"
client::AmmoIndex_t m_nPrimaryAmmoType; // 0x1e9
client::AmmoIndex_t m_nPrimaryAmmoType; // 0x2e2
// metadata: MPropertyAttributeEditor "VDataChoice( scripts/ammo.vdata )"
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyCustomFGDType "string"
client::AmmoIndex_t m_nSecondaryAmmoType; // 0x1ea
[[maybe_unused]] std::uint8_t pad_0x1eb[0x1]; // 0x1eb
client::AmmoIndex_t m_nSecondaryAmmoType; // 0x2e3
// metadata: MPropertyFriendlyName "Primary Clip Size"
// metadata: MPropertyDescription "How many bullets this gun can fire before it reloads (0 if no clip)"
// metadata: MPropertyAttributeRange "0 255"
// metadata: MPropertyGroupName "Ammo"
int32_t m_iMaxClip1; // 0x1ec
int32_t m_iMaxClip1; // 0x2e4
// metadata: MPropertyFriendlyName "Secondary Clip Size"
// metadata: MPropertyDescription "How many secondary bullets this gun can fire before it reloads (0 if no clip)"
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyAttributeRange "0 255"
int32_t m_iMaxClip2; // 0x1f0
int32_t m_iMaxClip2; // 0x2e8
// metadata: MPropertyDescription "Primary Initial Clip (-1 means use clip size)"
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyAttributeRange "-1 255"
int32_t m_iDefaultClip1; // 0x1f4
int32_t m_iDefaultClip1; // 0x2ec
// metadata: MPropertyDescription "Secondary Initial Clip (-1 means use clip size)"
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyAttributeRange "-1 255"
int32_t m_iDefaultClip2; // 0x1f8
int32_t m_iDefaultClip2; // 0x2f0
// metadata: MPropertyDescription "Indicates whether to treat reserve ammo as clips (reloads) instead of raw bullets"
bool m_bReserveAmmoAsClips; // 0x2f4
[[maybe_unused]] std::uint8_t pad_0x2f5[0x3]; // 0x2f5
// metadata: MPropertyStartGroup "UI"
// metadata: MPropertyDescription "This value used to determine this weapon's importance in autoselection"
// metadata: MPropertyGroupName "UI"
int32_t m_iWeight; // 0x1fc
int32_t m_iWeight; // 0x2f8
// metadata: MPropertyFriendlyName "Safe To Auto-Switch To"
// metadata: MPropertyDescription "Whether this weapon is safe to automatically switch to (should be false for eg. explosives that can the player may accidentally hurt themselves with)"
// metadata: MPropertyGroupName "UI"
bool m_bAutoSwitchTo; // 0x200
bool m_bAutoSwitchTo; // 0x2fc
// metadata: MPropertyFriendlyName "Safe To Auto-Switch Away From"
// metadata: MPropertyGroupName "UI"
bool m_bAutoSwitchFrom; // 0x201
[[maybe_unused]] std::uint8_t pad_0x202[0x2]; // 0x202
// metadata: MPropertyGroupName "UI"
client::RumbleEffect_t m_iRumbleEffect; // 0x204
// metadata: MPropertyDescription "Should both primary and secondary attacks be cooled down together (so cooling down primary attack would cooldown both primary + secondary attacks)?"
bool m_bLinkedCooldowns; // 0x208
// metadata: MPropertyGroupName "Ammo"
// metadata: MPropertyDescription "Indicates whether to treat reserve ammo as clips (reloads) instead of raw bullets"
bool m_bReserveAmmoAsClips; // 0x209
[[maybe_unused]] std::uint8_t pad_0x20a[0x6]; // 0x20a
// m_aShootSounds has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlOrderedMap<client::WeaponSound_t,CSoundEventName> m_aShootSounds;
char m_aShootSounds[0x28]; // 0x210
bool m_bAutoSwitchFrom; // 0x2fd
[[maybe_unused]] std::uint8_t pad_0x2fe[0x2]; // 0x2fe
client::RumbleEffect_t m_iRumbleEffect; // 0x300
// metadata: MPropertyFriendlyName "HUD Bucket"
// metadata: MPropertyDescription "Which 'column' to display this weapon in the HUD"
// metadata: MPropertyGroupName "UI"
int32_t m_iSlot; // 0x238
int32_t m_iSlot; // 0x304
// metadata: MPropertyFriendlyName "HUD Bucket Position"
// metadata: MPropertyDescription "Which 'row' to display this weapon in the HUD"
// metadata: MPropertyGroupName "UI"
int32_t m_iPosition; // 0x23c
int32_t m_iPosition; // 0x308
[[maybe_unused]] std::uint8_t pad_0x30c[0x4]; // 0x30c
// metadata: MPropertyStartGroup "Sounds"
// m_aShootSounds has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlOrderedMap<client::WeaponSound_t,CSoundEventName> m_aShootSounds;
char m_aShootSounds[0x28]; // 0x310
};
#pragma pack(pop)
static_assert(offsetof(CBasePlayerWeaponVData, m_szClassName) == 0x10);
static_assert(offsetof(CBasePlayerWeaponVData, m_szWorldModel) == 0x18);
static_assert(offsetof(CBasePlayerWeaponVData, m_bBuiltRightHanded) == 0xf8);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAllowFlipping) == 0xf9);
static_assert(offsetof(CBasePlayerWeaponVData, m_sMuzzleAttachment) == 0x100);
static_assert(offsetof(CBasePlayerWeaponVData, m_szMuzzleFlashParticle) == 0x108);
static_assert(offsetof(CBasePlayerWeaponVData, m_iFlags) == 0x1e8);
static_assert(offsetof(CBasePlayerWeaponVData, m_nPrimaryAmmoType) == 0x1e9);
static_assert(offsetof(CBasePlayerWeaponVData, m_nSecondaryAmmoType) == 0x1ea);
static_assert(offsetof(CBasePlayerWeaponVData, m_iMaxClip1) == 0x1ec);
static_assert(offsetof(CBasePlayerWeaponVData, m_iMaxClip2) == 0x1f0);
static_assert(offsetof(CBasePlayerWeaponVData, m_iDefaultClip1) == 0x1f4);
static_assert(offsetof(CBasePlayerWeaponVData, m_iDefaultClip2) == 0x1f8);
static_assert(offsetof(CBasePlayerWeaponVData, m_iWeight) == 0x1fc);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAutoSwitchTo) == 0x200);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAutoSwitchFrom) == 0x201);
static_assert(offsetof(CBasePlayerWeaponVData, m_iRumbleEffect) == 0x204);
static_assert(offsetof(CBasePlayerWeaponVData, m_bLinkedCooldowns) == 0x208);
static_assert(offsetof(CBasePlayerWeaponVData, m_bReserveAmmoAsClips) == 0x209);
static_assert(offsetof(CBasePlayerWeaponVData, m_aShootSounds) == 0x210);
static_assert(offsetof(CBasePlayerWeaponVData, m_iSlot) == 0x238);
static_assert(offsetof(CBasePlayerWeaponVData, m_iPosition) == 0x23c);
static_assert(offsetof(CBasePlayerWeaponVData, m_sToolsOnlyOwnerModelName) == 0xf8);
static_assert(offsetof(CBasePlayerWeaponVData, m_bBuiltRightHanded) == 0x1d8);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAllowFlipping) == 0x1d9);
static_assert(offsetof(CBasePlayerWeaponVData, m_sMuzzleAttachment) == 0x1e0);
static_assert(offsetof(CBasePlayerWeaponVData, m_szMuzzleFlashParticle) == 0x200);
static_assert(offsetof(CBasePlayerWeaponVData, m_bLinkedCooldowns) == 0x2e0);
static_assert(offsetof(CBasePlayerWeaponVData, m_iFlags) == 0x2e1);
static_assert(offsetof(CBasePlayerWeaponVData, m_nPrimaryAmmoType) == 0x2e2);
static_assert(offsetof(CBasePlayerWeaponVData, m_nSecondaryAmmoType) == 0x2e3);
static_assert(offsetof(CBasePlayerWeaponVData, m_iMaxClip1) == 0x2e4);
static_assert(offsetof(CBasePlayerWeaponVData, m_iMaxClip2) == 0x2e8);
static_assert(offsetof(CBasePlayerWeaponVData, m_iDefaultClip1) == 0x2ec);
static_assert(offsetof(CBasePlayerWeaponVData, m_iDefaultClip2) == 0x2f0);
static_assert(offsetof(CBasePlayerWeaponVData, m_bReserveAmmoAsClips) == 0x2f4);
static_assert(offsetof(CBasePlayerWeaponVData, m_iWeight) == 0x2f8);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAutoSwitchTo) == 0x2fc);
static_assert(offsetof(CBasePlayerWeaponVData, m_bAutoSwitchFrom) == 0x2fd);
static_assert(offsetof(CBasePlayerWeaponVData, m_iRumbleEffect) == 0x300);
static_assert(offsetof(CBasePlayerWeaponVData, m_iSlot) == 0x304);
static_assert(offsetof(CBasePlayerWeaponVData, m_iPosition) == 0x308);
static_assert(offsetof(CBasePlayerWeaponVData, m_aShootSounds) == 0x310);
static_assert(sizeof(CBasePlayerWeaponVData) == 0x240);
static_assert(sizeof(CBasePlayerWeaponVData) == 0x338);
};

View File

@ -14,21 +14,20 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x840
// Size: 0x888
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CBaseProp : public client::CBaseAnimatingActivity
{
public:
bool m_bModelOverrodeBlockLOS; // 0x800
[[maybe_unused]] std::uint8_t pad_0x801[0x3]; // 0x801
int32_t m_iShapeType; // 0x804
bool m_bConformToCollisionBounds; // 0x808
[[maybe_unused]] std::uint8_t pad_0x809[0x3]; // 0x809
matrix3x4_t m_mPreferredCatchTransform; // 0x80c
[[maybe_unused]] std::uint8_t pad_0x83c[0x4];
bool m_bModelOverrodeBlockLOS; // 0x848
[[maybe_unused]] std::uint8_t pad_0x849[0x3]; // 0x849
int32_t m_iShapeType; // 0x84c
bool m_bConformToCollisionBounds; // 0x850
[[maybe_unused]] std::uint8_t pad_0x851[0x3]; // 0x851
matrix3x4_t m_mPreferredCatchTransform; // 0x854
[[maybe_unused]] std::uint8_t pad_0x884[0x4];
// Datamap fields:
// void health; // 0x7fffffff
@ -37,5 +36,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseProp because it is not a standard-layout class
static_assert(sizeof(CBaseProp) == 0x840);
static_assert(sizeof(CBaseProp) == 0x888);
};

View File

@ -15,11 +15,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x590
// Size: 0x5d0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "TrackedStatNetworkData_t m_vecTrackedStats"
#pragma pack(push, 1)
@ -30,11 +29,11 @@ namespace source2sdk::client
// metadata: MNetworkChangeCallback "OnTrackedStatsChanged"
// m_vecTrackedStats has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// C_UtlVectorEmbeddedNetworkVar<client::TrackedStatNetworkData_t> m_vecTrackedStats;
char m_vecTrackedStats[0x50]; // 0x538
[[maybe_unused]] std::uint8_t pad_0x588[0x8];
char m_vecTrackedStats[0x68]; // 0x560
[[maybe_unused]] std::uint8_t pad_0x5c8[0x8];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CBaseTrackedStatsEntity because it is not a standard-layout class
static_assert(sizeof(CBaseTrackedStatsEntity) == 0x590);
static_assert(sizeof(CBaseTrackedStatsEntity) == 0x5d0);
};

View File

@ -21,21 +21,18 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x50
// Size: 0x78
// Has VTable
// Construct disallowed
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CBodyComponent : public entity2::CEntityComponent
{
public:
// metadata: MNetworkDisable
client::CGameSceneNode* m_pSceneNode; // 0x8
[[maybe_unused]] std::uint8_t pad_0x10[0x10]; // 0x10
// metadata: MNetworkDisable
[[maybe_unused]] std::uint8_t pad_0x10[0x38]; // 0x10
// metadata: MNetworkChangeAccessorFieldPathIndex
entity2::CNetworkVarChainer __m_pChainEntity; // 0x20
[[maybe_unused]] std::uint8_t pad_0x48[0x8];
entity2::CNetworkVarChainer __m_pChainEntity; // 0x48
[[maybe_unused]] std::uint8_t pad_0x70[0x8];
// Static fields:
static entity2::EntComponentInfo_t &Get_s_EntComponentInfo() {return *reinterpret_cast<entity2::EntComponentInfo_t*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CBodyComponent")->GetStaticFields()[0]->m_pInstance);};
@ -44,5 +41,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBodyComponent because it is not a standard-layout class
static_assert(sizeof(CBodyComponent) == 0x50);
static_assert(sizeof(CBodyComponent) == 0x78);
};

View File

@ -16,10 +16,9 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x840
// Size: 0x8a0
// Has VTable
// Construct disallowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "CBaseAnimGraphController m_animationController"
#pragma pack(push, 1)
@ -27,8 +26,7 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
client::CBaseAnimGraphController m_animationController; // 0x470
[[maybe_unused]] std::uint8_t pad_0x838[0x8];
client::CBaseAnimGraphController m_animationController; // 0x4d0
// Static fields:
static entity2::EntComponentInfo_t &Get_s_EntComponentInfo() {return *reinterpret_cast<entity2::EntComponentInfo_t*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CBodyComponentBaseAnimGraph")->GetStaticFields()[0]->m_pInstance);};
@ -37,5 +35,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBodyComponentBaseAnimGraph because it is not a standard-layout class
static_assert(sizeof(CBodyComponentBaseAnimGraph) == 0x840);
static_assert(sizeof(CBodyComponentBaseAnimGraph) == 0x8a0);
};

View File

@ -15,10 +15,9 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x470
// Size: 0x4d0
// Has VTable
// Construct disallowed
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CBodyComponentBaseModelEntity : public client::CBodyComponentSkeletonInstance
{
@ -30,5 +29,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CBodyComponentBaseModelEntity) == 0x470);
static_assert(sizeof(CBodyComponentBaseModelEntity) == 0x4d0);
};

View File

@ -16,18 +16,18 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x1b0
// Size: 0x1e0
// Has VTable
// Construct disallowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "CGameSceneNode m_sceneNode"
#pragma pack(push, 1)
class CBodyComponentPoint : public client::CBodyComponent
{
public:
[[maybe_unused]] std::uint8_t pad_0x78[0x8]; // 0x78
// metadata: MNetworkEnable
client::CGameSceneNode m_sceneNode; // 0x50
client::CGameSceneNode m_sceneNode; // 0x80
// Static fields:
static entity2::EntComponentInfo_t &Get_s_EntComponentInfo() {return *reinterpret_cast<entity2::EntComponentInfo_t*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CBodyComponentPoint")->GetStaticFields()[0]->m_pInstance);};
@ -36,5 +36,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBodyComponentPoint because it is not a standard-layout class
static_assert(sizeof(CBodyComponentPoint) == 0x1b0);
static_assert(sizeof(CBodyComponentPoint) == 0x1e0);
};

View File

@ -16,18 +16,18 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x470
// Size: 0x4d0
// Has VTable
// Construct disallowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "CSkeletonInstance m_skeletonInstance"
#pragma pack(push, 1)
class CBodyComponentSkeletonInstance : public client::CBodyComponent
{
public:
[[maybe_unused]] std::uint8_t pad_0x78[0x8]; // 0x78
// metadata: MNetworkEnable
client::CSkeletonInstance m_skeletonInstance; // 0x50
client::CSkeletonInstance m_skeletonInstance; // 0x80
// Static fields:
static entity2::EntComponentInfo_t &Get_s_EntComponentInfo() {return *reinterpret_cast<entity2::EntComponentInfo_t*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CBodyComponentSkeletonInstance")->GetStaticFields()[0]->m_pInstance);};
@ -36,5 +36,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CBodyComponentSkeletonInstance because it is not a standard-layout class
static_assert(sizeof(CBodyComponentSkeletonInstance) == 0x470);
static_assert(sizeof(CBodyComponentSkeletonInstance) == 0x4d0);
};

View File

@ -11,25 +11,42 @@
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: 0x4
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x20
// Size: 0x100
// Has VTable
// Has Trivial Destructor
#pragma pack(push, 1)
class CBuoyancyHelper
{
public:
[[maybe_unused]] std::uint8_t pad_0x00[0x18]; // 0x0
float m_flFluidDensity; // 0x18
[[maybe_unused]] std::uint8_t pad_0x1c[0x4];
CUtlStringToken m_nFluidType; // 0x18
float m_flFluidDensity; // 0x1c
// m_vecFractionOfWheelSubmergedForWheelFriction has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<float> m_vecFractionOfWheelSubmergedForWheelFriction;
char m_vecFractionOfWheelSubmergedForWheelFriction[0x18]; // 0x20
// m_vecWheelFrictionScales has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<float> m_vecWheelFrictionScales;
char m_vecWheelFrictionScales[0x18]; // 0x38
// m_vecFractionOfWheelSubmergedForWheelDrag has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<float> m_vecFractionOfWheelSubmergedForWheelDrag;
char m_vecFractionOfWheelSubmergedForWheelDrag[0x18]; // 0x50
// m_vecWheelDrag has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<float> m_vecWheelDrag;
char m_vecWheelDrag[0x18]; // 0x68
[[maybe_unused]] std::uint8_t pad_0x80[0x80];
// Datamap fields:
// void m_pController; // 0x8
};
#pragma pack(pop)
static_assert(offsetof(CBuoyancyHelper, m_flFluidDensity) == 0x18);
static_assert(offsetof(CBuoyancyHelper, m_nFluidType) == 0x18);
static_assert(offsetof(CBuoyancyHelper, m_flFluidDensity) == 0x1c);
static_assert(offsetof(CBuoyancyHelper, m_vecFractionOfWheelSubmergedForWheelFriction) == 0x20);
static_assert(offsetof(CBuoyancyHelper, m_vecWheelFrictionScales) == 0x38);
static_assert(offsetof(CBuoyancyHelper, m_vecFractionOfWheelSubmergedForWheelDrag) == 0x50);
static_assert(offsetof(CBuoyancyHelper, m_vecWheelDrag) == 0x68);
static_assert(sizeof(CBuoyancyHelper) == 0x20);
static_assert(sizeof(CBuoyancyHelper) == 0x100);
};

View File

@ -14,10 +14,9 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5a0
// Size: 0x5c8
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "string_t m_iszStackName"
// static metadata: MNetworkVarNames "string_t m_iszOperatorName"
@ -31,27 +30,27 @@ namespace source2sdk::client
class CCitadelSoundOpvarSetOBB : public client::C_BaseEntity
{
public:
[[maybe_unused]] std::uint8_t pad_0x538[0x18]; // 0x538
[[maybe_unused]] std::uint8_t pad_0x560[0x18]; // 0x560
// metadata: MNetworkEnable
CUtlSymbolLarge m_iszStackName; // 0x550
CUtlSymbolLarge m_iszStackName; // 0x578
// metadata: MNetworkEnable
CUtlSymbolLarge m_iszOperatorName; // 0x558
CUtlSymbolLarge m_iszOperatorName; // 0x580
// metadata: MNetworkEnable
CUtlSymbolLarge m_iszOpvarName; // 0x560
CUtlSymbolLarge m_iszOpvarName; // 0x588
// metadata: MNetworkEnable
Vector m_vDistanceInnerMins; // 0x568
Vector m_vDistanceInnerMins; // 0x590
// metadata: MNetworkEnable
Vector m_vDistanceInnerMaxs; // 0x574
Vector m_vDistanceInnerMaxs; // 0x59c
// metadata: MNetworkEnable
Vector m_vDistanceOuterMins; // 0x580
Vector m_vDistanceOuterMins; // 0x5a8
// metadata: MNetworkEnable
Vector m_vDistanceOuterMaxs; // 0x58c
Vector m_vDistanceOuterMaxs; // 0x5b4
// metadata: MNetworkEnable
int32_t m_nAABBDirection; // 0x598
[[maybe_unused]] std::uint8_t pad_0x59c[0x4];
int32_t m_nAABBDirection; // 0x5c0
[[maybe_unused]] std::uint8_t pad_0x5c4[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CCitadelSoundOpvarSetOBB because it is not a standard-layout class
static_assert(sizeof(CCitadelSoundOpvarSetOBB) == 0x5a0);
static_assert(sizeof(CCitadelSoundOpvarSetOBB) == 0x5c8);
};

View File

@ -18,7 +18,6 @@ namespace source2sdk::client
// Standard-layout class: true
// Size: 0xb0
// Has VTable
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "VPhysicsCollisionAttribute_t m_collisionAttribute"
// static metadata: MNetworkVarNames "Vector m_vecMins"

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x180
// Size: 0x198
// Has VTable
// MNetworkNoBase
//
@ -30,12 +30,12 @@ namespace source2sdk::client
// metadata: MNetworkEnable
// m_CustomShopItems has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// C_UtlVectorEmbeddedNetworkVar<client::CDOTACustomShopItemInfo> m_CustomShopItems;
char m_CustomShopItems[0x50]; // 0x130
char m_CustomShopItems[0x68]; // 0x130
};
#pragma pack(pop)
static_assert(offsetof(CDOTACustomShopInfo, m_CustomShopName) == 0x30);
static_assert(offsetof(CDOTACustomShopInfo, m_CustomShopItems) == 0x130);
static_assert(sizeof(CDOTACustomShopInfo) == 0x180);
static_assert(sizeof(CDOTACustomShopInfo) == 0x198);
};

View File

@ -14,11 +14,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5d8
// Size: 0x600
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTAEmptyAbility : public client::C_DOTABaseAbility
{
@ -27,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTAEmptyAbility) == 0x5d8);
static_assert(sizeof(CDOTAEmptyAbility) == 0x600);
};

View File

@ -16,11 +16,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5b0
// Size: 0x5f0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "bool m_bVotingClosed"
// static metadata: MNetworkVarNames "bool m_bAllPredictionsFinished"
@ -31,24 +30,24 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
bool m_bVotingClosed; // 0x538
bool m_bVotingClosed; // 0x560
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnAllPredictionsFinished"
bool m_bAllPredictionsFinished; // 0x539
[[maybe_unused]] std::uint8_t pad_0x53a[0x6]; // 0x53a
bool m_bAllPredictionsFinished; // 0x561
[[maybe_unused]] std::uint8_t pad_0x562[0x6]; // 0x562
// metadata: MNetworkEnable
// m_vecPredictions has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// C_UtlVectorEmbeddedNetworkVar<client::InGamePredictionData_t> m_vecPredictions;
char m_vecPredictions[0x50]; // 0x540
char m_vecPredictions[0x68]; // 0x568
// metadata: MNetworkEnable
client::LeagueID_t m_nLeagueID; // 0x590
[[maybe_unused]] std::uint8_t pad_0x594[0x4]; // 0x594
client::LeagueID_t m_nLeagueID; // 0x5d0
[[maybe_unused]] std::uint8_t pad_0x5d4[0x4]; // 0x5d4
// m_vecPrevPredictions has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::InGamePredictionData_t> m_vecPrevPredictions;
char m_vecPrevPredictions[0x18]; // 0x598
char m_vecPrevPredictions[0x18]; // 0x5d8
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTAInGamePredictionState because it is not a standard-layout class
static_assert(sizeof(CDOTAInGamePredictionState) == 0x5b0);
static_assert(sizeof(CDOTAInGamePredictionState) == 0x5f0);
};

View File

@ -0,0 +1,105 @@
#pragma once
#include "source2sdk/client/CDOTAMinesweeperPlayerDefinition.hpp"
#include "source2sdk/client/CDOTAMinesweeperStageDefinition.hpp"
#include "source2sdk/resourcesystem/InfoForResourceTypeIParticleSystemDefinition.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x768
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
class CDOTAMinesweeperGameDefinition
{
public:
client::CDOTAMinesweeperPlayerDefinition m_player; // 0x0
// m_vecStages has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAMinesweeperStageDefinition> m_vecStages;
char m_vecStages[0x18]; // 0x8
float m_flTimeLimit; // 0x20
int32_t m_nIllusionManaCost; // 0x24
int32_t m_nStageProgressionTimerIncrease; // 0x28
[[maybe_unused]] std::uint8_t pad_0x2c[0x4]; // 0x2c
// m_dustEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_dustEffect;
char m_dustEffect[0xe0]; // 0x30
// m_grassEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_grassEffect;
char m_grassEffect[0xe0]; // 0x110
// m_explosionEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_explosionEffect;
char m_explosionEffect[0xe0]; // 0x1f0
// m_manaPotEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_manaPotEffect;
char m_manaPotEffect[0xe0]; // 0x2d0
// m_timerIncreaseEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_timerIncreaseEffect;
char m_timerIncreaseEffect[0xe0]; // 0x3b0
// m_illusionEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_illusionEffect;
char m_illusionEffect[0xe0]; // 0x490
// m_lostManaPotEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_lostManaPotEffect;
char m_lostManaPotEffect[0xe0]; // 0x570
// m_lostTimerIncreaseEffect has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CResourceNameTyped<CWeakHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition>> m_lostTimerIncreaseEffect;
char m_lostTimerIncreaseEffect[0xe0]; // 0x650
int32_t m_nManaPotRestoration; // 0x730
int32_t m_nMaxConcurrentManaPots; // 0x734
int32_t m_nManaPotExpireClicks; // 0x738
int32_t m_nManaPotChance; // 0x73c
float m_flTimeExtension; // 0x740
int32_t m_nMaxConcurrentTimerIncreases; // 0x744
int32_t m_nTimerIncreaseExpireClicks; // 0x748
int32_t m_nTimerIncreaseChance; // 0x74c
int32_t m_nScorePerCellRevealed; // 0x750
int32_t m_nScorePerStageCleared; // 0x754
int32_t m_nScorePerSecondsRemaining; // 0x758
int32_t m_nFailedChordClickTimes; // 0x75c
int32_t m_flFailedChordClickCooldown; // 0x760
[[maybe_unused]] std::uint8_t pad_0x764[0x4];
};
#pragma pack(pop)
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_player) == 0x0);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_vecStages) == 0x8);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_flTimeLimit) == 0x20);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nIllusionManaCost) == 0x24);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nStageProgressionTimerIncrease) == 0x28);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_dustEffect) == 0x30);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_grassEffect) == 0x110);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_explosionEffect) == 0x1f0);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_manaPotEffect) == 0x2d0);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_timerIncreaseEffect) == 0x3b0);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_illusionEffect) == 0x490);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_lostManaPotEffect) == 0x570);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_lostTimerIncreaseEffect) == 0x650);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nManaPotRestoration) == 0x730);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nMaxConcurrentManaPots) == 0x734);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nManaPotExpireClicks) == 0x738);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nManaPotChance) == 0x73c);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_flTimeExtension) == 0x740);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nMaxConcurrentTimerIncreases) == 0x744);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nTimerIncreaseExpireClicks) == 0x748);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nTimerIncreaseChance) == 0x74c);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nScorePerCellRevealed) == 0x750);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nScorePerStageCleared) == 0x754);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nScorePerSecondsRemaining) == 0x758);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_nFailedChordClickTimes) == 0x75c);
static_assert(offsetof(CDOTAMinesweeperGameDefinition, m_flFailedChordClickCooldown) == 0x760);
static_assert(sizeof(CDOTAMinesweeperGameDefinition) == 0x768);
};

View File

@ -0,0 +1,35 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x4
// Alignment: 0x4
// Standard-layout class: true
// Size: 0x8
// Has Trivial Destructor
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
class CDOTAMinesweeperPlayerDefinition
{
public:
int32_t m_nInitialHealth; // 0x0
int32_t m_nInitialMana; // 0x4
};
#pragma pack(pop)
static_assert(offsetof(CDOTAMinesweeperPlayerDefinition, m_nInitialHealth) == 0x0);
static_assert(offsetof(CDOTAMinesweeperPlayerDefinition, m_nInitialMana) == 0x4);
static_assert(sizeof(CDOTAMinesweeperPlayerDefinition) == 0x8);
};

View File

@ -0,0 +1,38 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x4
// Alignment: 0x4
// Standard-layout class: true
// Size: 0xc
// Has Trivial Constructor
// Has Trivial Destructor
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
class CDOTAMinesweeperStageDefinition
{
public:
int32_t m_nBoardRows; // 0x0
int32_t m_nBoardCols; // 0x4
int32_t m_nMines; // 0x8
};
#pragma pack(pop)
static_assert(offsetof(CDOTAMinesweeperStageDefinition, m_nBoardRows) == 0x0);
static_assert(offsetof(CDOTAMinesweeperStageDefinition, m_nBoardCols) == 0x4);
static_assert(offsetof(CDOTAMinesweeperStageDefinition, m_nMines) == 0x8);
static_assert(sizeof(CDOTAMinesweeperStageDefinition) == 0xc);
};

View File

@ -0,0 +1,32 @@
#pragma once
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x8
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
// static metadata: MVDataRoot
#pragma pack(push, 1)
class CDOTAMinesweeperStageProgressionChoice
{
public:
CUtlString m_strLocText; // 0x0
};
#pragma pack(pop)
static_assert(offsetof(CDOTAMinesweeperStageProgressionChoice, m_strLocText) == 0x0);
static_assert(sizeof(CDOTAMinesweeperStageProgressionChoice) == 0x8);
};

View File

@ -61,7 +61,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x358
// Size: 0x370
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -89,61 +89,63 @@ namespace source2sdk::client
[[maybe_unused]] std::uint8_t pad_0x3c[0x4]; // 0x3c
CUtlString m_sMapVisualsXmlPath; // 0x40
// metadata: MPropertyDescription
client::OverworldNodeID_t m_unStartNodeID; // 0x48
// m_vecStartNodeIds has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::OverworldNodeID_t> m_vecStartNodeIds;
char m_vecStartNodeIds[0x18]; // 0x48
// metadata: MPropertyDescription
client::OverworldNodeID_t m_unEndNodeID; // 0x4a
[[maybe_unused]] std::uint8_t pad_0x4c[0x4]; // 0x4c
client::OverworldNodeID_t m_unEndNodeID; // 0x60
[[maybe_unused]] std::uint8_t pad_0x62[0x6]; // 0x62
// metadata: MPropertyDescription "Name/key of the Visual Novel associated with this map."
CUtlString m_sVisualNovelName; // 0x50
CUtlString m_sVisualNovelName; // 0x68
// metadata: MPropertyDescription "Prefix to combine with tokent names to give their loc strings."
CUtlString m_sTokenLocStringPrefix; // 0x58
CUtlString m_sTokenLocStringPrefix; // 0x70
// metadata: MPropertyDescription "Act number loc string, e.g. Act I."
CUtlString m_sActNumberLocString; // 0x60
CUtlString m_sActNumberLocString; // 0x78
// metadata: MPropertyDescription "Act title loc string, e.g. The Eyrie."
CUtlString m_sActTitleLocString; // 0x68
CUtlString m_sActTitleLocString; // 0x80
// metadata: MPropertyDescription
client::item_definition_index_t m_unPremiumItemDef; // 0x70
client::item_definition_index_t m_unPremiumItemDef; // 0x88
// metadata: MPropertyDescription
client::item_definition_index_t m_unFullCompletionItemDef; // 0x74
client::item_definition_index_t m_unFullCompletionItemDef; // 0x8c
// metadata: MPropertyDescription "ID of the scrap token rewarded for playing matches."
client::OverworldTokenID_t m_unScrapTokenID; // 0x78
[[maybe_unused]] std::uint8_t pad_0x79[0x7]; // 0x79
client::OverworldTokenID_t m_unScrapTokenID; // 0x90
[[maybe_unused]] std::uint8_t pad_0x91[0x7]; // 0x91
// m_vecEventActionTriggers has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAEventActionTrigger> m_vecEventActionTriggers;
char m_vecEventActionTriggers[0x18]; // 0x80
char m_vecEventActionTriggers[0x18]; // 0x98
// m_vecEventActionGrantAndClaimPairTriggers has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAEventActionGrantAndClaimPairTrigger> m_vecEventActionGrantAndClaimPairTriggers;
char m_vecEventActionGrantAndClaimPairTriggers[0x18]; // 0x98
char m_vecEventActionGrantAndClaimPairTriggers[0x18]; // 0xb0
// m_vecPathColorRules has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldPathColorRule> m_vecPathColorRules;
char m_vecPathColorRules[0x18]; // 0xb0
[[maybe_unused]] std::uint8_t pad_0xc8[0x140]; // 0xc8
char m_vecPathColorRules[0x18]; // 0xc8
[[maybe_unused]] std::uint8_t pad_0xe0[0x140]; // 0xe0
// m_vecTokenTypes has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldToken*> m_vecTokenTypes;
char m_vecTokenTypes[0x18]; // 0x208
[[maybe_unused]] std::uint8_t pad_0x220[0x18]; // 0x220
char m_vecTokenTypes[0x18]; // 0x220
[[maybe_unused]] std::uint8_t pad_0x238[0x18]; // 0x238
// m_vecHeroRewards has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldHeroReward*> m_vecHeroRewards;
char m_vecHeroRewards[0x18]; // 0x238
char m_vecHeroRewards[0x18]; // 0x250
// m_vecNodes has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldNode*> m_vecNodes;
char m_vecNodes[0x18]; // 0x250
char m_vecNodes[0x18]; // 0x268
// m_vecPaths has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldPath*> m_vecPaths;
char m_vecPaths[0x18]; // 0x268
char m_vecPaths[0x18]; // 0x280
// m_vecEncounters has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldEncounter*> m_vecEncounters;
char m_vecEncounters[0x18]; // 0x280
char m_vecEncounters[0x18]; // 0x298
// m_vecHeroes has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldHero*> m_vecHeroes;
char m_vecHeroes[0x18]; // 0x298
char m_vecHeroes[0x18]; // 0x2b0
// m_vecCharacters has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldCharacter*> m_vecCharacters;
char m_vecCharacters[0x18]; // 0x2b0
char m_vecCharacters[0x18]; // 0x2c8
// m_vecClickables has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::CDOTAOverworldClickable*> m_vecClickables;
char m_vecClickables[0x18]; // 0x2c8
[[maybe_unused]] std::uint8_t pad_0x2e0[0x78];
char m_vecClickables[0x18]; // 0x2e0
[[maybe_unused]] std::uint8_t pad_0x2f8[0x78];
};
#pragma pack(pop)
@ -157,26 +159,26 @@ namespace source2sdk::client
static_assert(offsetof(CDOTAOverworldDefinition, m_unMapWidth) == 0x34);
static_assert(offsetof(CDOTAOverworldDefinition, m_unMapHeight) == 0x38);
static_assert(offsetof(CDOTAOverworldDefinition, m_sMapVisualsXmlPath) == 0x40);
static_assert(offsetof(CDOTAOverworldDefinition, m_unStartNodeID) == 0x48);
static_assert(offsetof(CDOTAOverworldDefinition, m_unEndNodeID) == 0x4a);
static_assert(offsetof(CDOTAOverworldDefinition, m_sVisualNovelName) == 0x50);
static_assert(offsetof(CDOTAOverworldDefinition, m_sTokenLocStringPrefix) == 0x58);
static_assert(offsetof(CDOTAOverworldDefinition, m_sActNumberLocString) == 0x60);
static_assert(offsetof(CDOTAOverworldDefinition, m_sActTitleLocString) == 0x68);
static_assert(offsetof(CDOTAOverworldDefinition, m_unPremiumItemDef) == 0x70);
static_assert(offsetof(CDOTAOverworldDefinition, m_unFullCompletionItemDef) == 0x74);
static_assert(offsetof(CDOTAOverworldDefinition, m_unScrapTokenID) == 0x78);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEventActionTriggers) == 0x80);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEventActionGrantAndClaimPairTriggers) == 0x98);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecPathColorRules) == 0xb0);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecTokenTypes) == 0x208);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecHeroRewards) == 0x238);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecNodes) == 0x250);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecPaths) == 0x268);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEncounters) == 0x280);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecHeroes) == 0x298);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecCharacters) == 0x2b0);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecClickables) == 0x2c8);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecStartNodeIds) == 0x48);
static_assert(offsetof(CDOTAOverworldDefinition, m_unEndNodeID) == 0x60);
static_assert(offsetof(CDOTAOverworldDefinition, m_sVisualNovelName) == 0x68);
static_assert(offsetof(CDOTAOverworldDefinition, m_sTokenLocStringPrefix) == 0x70);
static_assert(offsetof(CDOTAOverworldDefinition, m_sActNumberLocString) == 0x78);
static_assert(offsetof(CDOTAOverworldDefinition, m_sActTitleLocString) == 0x80);
static_assert(offsetof(CDOTAOverworldDefinition, m_unPremiumItemDef) == 0x88);
static_assert(offsetof(CDOTAOverworldDefinition, m_unFullCompletionItemDef) == 0x8c);
static_assert(offsetof(CDOTAOverworldDefinition, m_unScrapTokenID) == 0x90);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEventActionTriggers) == 0x98);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEventActionGrantAndClaimPairTriggers) == 0xb0);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecPathColorRules) == 0xc8);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecTokenTypes) == 0x220);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecHeroRewards) == 0x250);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecNodes) == 0x268);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecPaths) == 0x280);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecEncounters) == 0x298);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecHeroes) == 0x2b0);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecCharacters) == 0x2c8);
static_assert(offsetof(CDOTAOverworldDefinition, m_vecClickables) == 0x2e0);
static_assert(sizeof(CDOTAOverworldDefinition) == 0x358);
static_assert(sizeof(CDOTAOverworldDefinition) == 0x370);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: true
// Size: 0x40
// Size: 0x50
// Construct allowed
//
// static metadata: MGetKV3ClassDefaults
@ -31,26 +31,30 @@ namespace source2sdk::client
client::OverworldNodeID_t m_unNodeStart; // 0x2
// metadata: MPropertyDescription
client::OverworldNodeID_t m_unNodeEnd; // 0x4
[[maybe_unused]] std::uint8_t pad_0x06[0x2]; // 0x6
// metadata: MPropertyDescription "An event action used to determine."
CUtlString m_strPathHiddenUntilEventAction; // 0x8
// metadata: MPropertyDescription
uint8_t m_unCost; // 0x6
[[maybe_unused]] std::uint8_t pad_0x07[0x19]; // 0x7
uint8_t m_unCost; // 0x10
[[maybe_unused]] std::uint8_t pad_0x11[0x1f]; // 0x11
// metadata: MPropertyAttributeRange "-1 1"
// metadata: MPropertyDescription "0: line, +: curve to the 'right' from node 1 to node 2, -: curve left"
float m_flCircleInvRadius; // 0x20
[[maybe_unused]] std::uint8_t pad_0x24[0x4]; // 0x24
float m_flCircleInvRadius; // 0x30
[[maybe_unused]] std::uint8_t pad_0x34[0x4]; // 0x34
// metadata: MPropertyDescription
// m_vecRequiredTokenNames has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlString> m_vecRequiredTokenNames;
char m_vecRequiredTokenNames[0x18]; // 0x28
char m_vecRequiredTokenNames[0x18]; // 0x38
};
#pragma pack(pop)
static_assert(offsetof(CDOTAOverworldPath, m_unID) == 0x0);
static_assert(offsetof(CDOTAOverworldPath, m_unNodeStart) == 0x2);
static_assert(offsetof(CDOTAOverworldPath, m_unNodeEnd) == 0x4);
static_assert(offsetof(CDOTAOverworldPath, m_unCost) == 0x6);
static_assert(offsetof(CDOTAOverworldPath, m_flCircleInvRadius) == 0x20);
static_assert(offsetof(CDOTAOverworldPath, m_vecRequiredTokenNames) == 0x28);
static_assert(offsetof(CDOTAOverworldPath, m_strPathHiddenUntilEventAction) == 0x8);
static_assert(offsetof(CDOTAOverworldPath, m_unCost) == 0x10);
static_assert(offsetof(CDOTAOverworldPath, m_flCircleInvRadius) == 0x30);
static_assert(offsetof(CDOTAOverworldPath, m_vecRequiredTokenNames) == 0x38);
static_assert(sizeof(CDOTAOverworldPath) == 0x40);
static_assert(sizeof(CDOTAOverworldPath) == 0x50);
};

View File

@ -14,11 +14,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xb60
// Size: 0xba8
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkUserGroupProxy "CDOTAPlayerPawn"
// static metadata: MNetworkExcludeByName "m_angRotation"
@ -41,10 +40,10 @@ namespace source2sdk::client
{
public:
// Datamap fields:
// CDOTAPlayer_CameraServices m_pCameraServices; // 0xa48
// CDOTAPlayer_MovementServices m_pMovementServices; // 0xa50
// CDOTAPlayer_CameraServices m_pCameraServices; // 0xa90
// CDOTAPlayer_MovementServices m_pMovementServices; // 0xa98
};
#pragma pack(pop)
static_assert(sizeof(CDOTAPlayerPawn) == 0xb60);
static_assert(sizeof(CDOTAPlayerPawn) == 0xba8);
};

View File

@ -16,7 +16,6 @@ namespace source2sdk::client
// Standard-layout class: false
// Size: 0x1f8
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTAPlayer_CameraServices : public client::CPlayer_CameraServices
{

View File

@ -16,7 +16,6 @@ namespace source2sdk::client
// Standard-layout class: false
// Size: 0x1d8
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTAPlayer_MovementServices : public client::CPlayer_MovementServices
{

View File

@ -14,20 +14,19 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xab8
// Size: 0xb00
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTAPropArenaOfBloodWarrior : public client::C_DynamicProp
{
public:
bool m_bDying; // 0xab0
[[maybe_unused]] std::uint8_t pad_0xab1[0x7];
bool m_bDying; // 0xaf8
[[maybe_unused]] std::uint8_t pad_0xaf9[0x7];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTAPropArenaOfBloodWarrior because it is not a standard-layout class
static_assert(sizeof(CDOTAPropArenaOfBloodWarrior) == 0xab8);
static_assert(sizeof(CDOTAPropArenaOfBloodWarrior) == 0xb00);
};

View File

@ -16,29 +16,28 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xb10
// Size: 0xb58
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "bool m_bUseAvatar"
#pragma pack(push, 1)
class CDOTAPropConsumableBanner : public client::C_DynamicProp
{
public:
[[maybe_unused]] std::uint8_t pad_0xab0[0x48]; // 0xab0
client::PlayerID_t m_nPlayerID; // 0xaf8
[[maybe_unused]] std::uint8_t pad_0xafc[0x4]; // 0xafc
[[maybe_unused]] std::uint8_t pad_0xaf8[0x48]; // 0xaf8
client::PlayerID_t m_nPlayerID; // 0xb40
[[maybe_unused]] std::uint8_t pad_0xb44[0x4]; // 0xb44
// m_hAvatarTexture has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCTextureBase> m_hAvatarTexture;
char m_hAvatarTexture[0x8]; // 0xb00
char m_hAvatarTexture[0x8]; // 0xb48
// metadata: MNetworkEnable
bool m_bUseAvatar; // 0xb08
[[maybe_unused]] std::uint8_t pad_0xb09[0x7];
bool m_bUseAvatar; // 0xb50
[[maybe_unused]] std::uint8_t pad_0xb51[0x7];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTAPropConsumableBanner because it is not a standard-layout class
static_assert(sizeof(CDOTAPropConsumableBanner) == 0xb10);
static_assert(sizeof(CDOTAPropConsumableBanner) == 0xb58);
};

View File

@ -14,11 +14,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0xb10
// Size: 0xb58
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "int m_nPlayerID"
#pragma pack(push, 1)
@ -26,11 +25,11 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
int32_t m_nPlayerID; // 0xb08
[[maybe_unused]] std::uint8_t pad_0xb0c[0x4];
int32_t m_nPlayerID; // 0xb50
[[maybe_unused]] std::uint8_t pad_0xb54[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTAPropPlusPlayerGuildBanner because it is not a standard-layout class
static_assert(sizeof(CDOTAPropPlusPlayerGuildBanner) == 0xb10);
static_assert(sizeof(CDOTAPropPlusPlayerGuildBanner) == 0xb58);
};

View File

@ -14,11 +14,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5d8
// Size: 0x600
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTA_Ability_Abaddon_AphoticShield : public client::C_DOTABaseAbility
{
@ -27,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Ability_Abaddon_AphoticShield) == 0x5d8);
static_assert(sizeof(CDOTA_Ability_Abaddon_AphoticShield) == 0x600);
};

View File

@ -14,11 +14,10 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5d8
// Size: 0x600
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTA_Ability_Abaddon_BorrowedTime : public client::C_DOTABaseAbility
{
@ -27,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Ability_Abaddon_BorrowedTime) == 0x5d8);
static_assert(sizeof(CDOTA_Ability_Abaddon_BorrowedTime) == 0x600);
};

Some files were not shown because too many files have changed in this diff Show More