CBaseEntity::DrawVPhysicsObjectCenterAndContactPoints
0x00609ea0 · 649 bytes · __thiscall
_ZN11CBaseEntity40DrawVPhysicsObjectCenterAndContactPointsEP14IPhysicsObject.part.157
Decompiled
undefined (2 params)
/* CBaseEntity::DrawVPhysicsObjectCenterAndContactPoints(IPhysicsObject*) [clone .part.157] */
void __thiscall
CBaseEntity::DrawVPhysicsObjectCenterAndContactPoints(CBaseEntity *this,IPhysicsObject *param_1)
{
float fVar1;
float fVar2;
float fVar3;
code *pcVar4;
CBaseEntity *in_EAX;
int iVar5;
undefined4 uVar6;
uint uVar7;
undefined4 *puVar8;
IPhysicsObject *in_EDX;
float local_74;
undefined1 local_70 [12];
Vector local_64 [12];
float local_58;
float local_54;
float local_50;
QAngle local_4c [12];
Vector local_40 [12];
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
(**(code **)(*(int *)in_EDX + 0xb8))(local_70);
(**(code **)(*(int *)in_EDX + 0xe4))();
NDebugOverlay::Cross3D(local_64,12.0,0xff,0,0,false,0.0);
DebugDrawContactPoints(in_EDX);
if (in_EAX[0x186] != (CBaseEntity)0x6) {
(**(code **)(*(int *)in_EDX + 0xc4))();
uVar7 = 0;
if ((*(uint *)(in_EAX + 0x14c) & 0x800) != 0) {
CalcAbsolutePosition(in_EAX);
uVar7 = *(uint *)(in_EAX + 0x14c) & 0x800;
}
fVar1 = *(float *)(in_EAX + 0x2e0);
fVar2 = *(float *)(in_EAX + 0x2e4);
fVar3 = *(float *)(in_EAX + 0x2e8);
if (uVar7 != 0) {
CalcAbsolutePosition(in_EAX);
}
RotationDeltaAxisAngle(local_4c,(QAngle *)(in_EAX + 0x37c),local_40,&local_74);
if ((2.0 < SQRT((local_54 - fVar2) * (local_54 - fVar2) +
(local_58 - fVar1) * (local_58 - fVar1) +
(local_50 - fVar3) * (local_50 - fVar3))) || (2.0 < ABS(local_74))) {
iVar5 = (**(code **)(*(int *)in_EDX + 300))();
if (iVar5 == 0) {
puVar8 = (undefined4 *)(**(code **)(*(int *)(in_EAX + 0x194) + 4))(in_EAX + 0x194);
local_34 = *puVar8;
local_30 = puVar8[1];
local_2c = puVar8[2];
puVar8 = (undefined4 *)(**(code **)(*(int *)(in_EAX + 0x194) + 4))(in_EAX + 0x194);
local_28 = *puVar8;
local_24 = puVar8[1];
local_20 = puVar8[2];
}
else {
pcVar4 = *(code **)(*physcollision + 0x60);
uVar6 = (**(code **)(*(int *)in_EDX + 300))();
(*pcVar4)(physcollision,&local_34,&local_28,uVar6,&vec3_origin,&vec3_angle);
}
NDebugOverlay::BoxAngles
((Vector *)&local_58,(Vector *)&local_34,(Vector *)&local_28,local_4c,0xff,0xff,0,
0x10,0.0);
}
}
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
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.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.