CChoreoEvent::~CChoreoEvent
0x00bade30 · 483 bytes · __thiscall
_ZN12CChoreoEventD1Ev
Decompiled
undefined (1 param)
/* CChoreoEvent::~CChoreoEvent() */
void __thiscall CChoreoEvent::~CChoreoEvent(CChoreoEvent *this)
{
CUtlVector<CFlexTimingTag,CUtlMemory<CFlexTimingTag,int>> *this_00;
CUtlVector<CEventRelativeTag,CUtlMemory<CEventRelativeTag,int>> *this_01;
int iVar1;
CChoreoScene *this_02;
CUtlVector<CEventAbsoluteTag,CUtlMemory<CEventAbsoluteTag,int>> *this_03;
CUtlMemory<CFlexAnimationTrack*,int> *this_04;
iVar1 = *(int *)(this + 0x118);
*(undefined ***)this = &PTR_GetDuration_00d54990;
while (0 < iVar1) {
RemoveTrack(this,0);
iVar1 = *(int *)(this + 0x118);
}
*(undefined4 *)(this + 0x164) = 0;
this_02 = *(CChoreoScene **)(this + 0x120);
if (this_02 != (CChoreoScene *)0x0) {
CChoreoScene::~CChoreoScene(this_02);
operator_delete(this_02);
}
*(undefined4 *)(this + 0x164) = 0;
CUtlMemory<CChoreoEvent*,int>::Purge((CUtlMemory<CChoreoEvent*,int> *)(this + 0x158));
*(undefined4 *)(this + 0x168) = *(undefined4 *)(this + 0x158);
this_04 = (CUtlMemory<CFlexAnimationTrack*,int> *)(this + 0x10c);
CUtlMemory<CChoreoEvent*,int>::Purge((CUtlMemory<CChoreoEvent*,int> *)(this + 0x158));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0x13c));
*(undefined4 *)(this + 0x118) = 0;
CUtlMemory<CFlexAnimationTrack*,int>::Purge(this_04);
*(undefined4 *)(this + 0x11c) = *(undefined4 *)(this + 0x10c);
CUtlMemory<CFlexAnimationTrack*,int>::Purge(this_04);
do {
this_03 = (CUtlVector<CEventAbsoluteTag,CUtlMemory<CEventAbsoluteTag,int>> *)(this_04 + -0x14);
CUtlVector<CEventAbsoluteTag,CUtlMemory<CEventAbsoluteTag,int>>::RemoveAll(this_03);
CUtlMemory<CEventAbsoluteTag,int>::Purge((CUtlMemory<CEventAbsoluteTag,int> *)this_03);
*(undefined4 *)(this_04 + -4) = *(undefined4 *)this_03;
CUtlMemory<CEventAbsoluteTag,int>::Purge((CUtlMemory<CEventAbsoluteTag,int> *)this_03);
this_04 = (CUtlMemory<CFlexAnimationTrack*,int> *)this_03;
} while ((CUtlVector<CEventAbsoluteTag,CUtlMemory<CEventAbsoluteTag,int>> *)(this + 0xe4) !=
this_03);
this_00 = (CUtlVector<CFlexTimingTag,CUtlMemory<CFlexTimingTag,int>> *)(this + 0xd0);
CUtlVector<CFlexTimingTag,CUtlMemory<CFlexTimingTag,int>>::RemoveAll(this_00);
CUtlMemory<CFlexTimingTag,int>::Purge((CUtlMemory<CFlexTimingTag,int> *)this_00);
*(undefined4 *)(this + 0xe0) = *(undefined4 *)(this + 0xd0);
this_01 = (CUtlVector<CEventRelativeTag,CUtlMemory<CEventRelativeTag,int>> *)(this + 0xbc);
CUtlMemory<CFlexTimingTag,int>::Purge((CUtlMemory<CFlexTimingTag,int> *)this_00);
CUtlVector<CEventRelativeTag,CUtlMemory<CEventRelativeTag,int>>::RemoveAll(this_01);
CUtlMemory<CEventRelativeTag,int>::Purge((CUtlMemory<CEventRelativeTag,int> *)this_01);
*(undefined4 *)(this + 0xcc) = *(undefined4 *)(this + 0xbc);
CUtlMemory<CEventRelativeTag,int>::Purge((CUtlMemory<CEventRelativeTag,int> *)this_01);
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0xa4));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0x94));
*(undefined4 *)(this + 0x8c) = 0;
CUtlMemory<float,int>::Purge((CUtlMemory<float,int> *)(this + 0x80));
*(undefined4 *)(this + 0x90) = *(undefined4 *)(this + 0x80);
CUtlMemory<float,int>::Purge((CUtlMemory<float,int> *)(this + 0x80));
*(undefined4 *)(this + 0x68) = 0;
CUtlMemory<CExpressionSample,int>::Purge((CUtlMemory<CExpressionSample,int> *)(this + 0x5c));
*(undefined4 *)(this + 0x6c) = *(undefined4 *)(this + 0x5c);
CUtlMemory<CExpressionSample,int>::Purge((CUtlMemory<CExpressionSample,int> *)(this + 0x5c));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0x38));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0x28));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 0x18));
CUtlMemory<unsigned_char,int>::Purge((CUtlMemory<unsigned_char,int> *)(this + 8));
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.