L L4D2node

DebugDrawContactPoints

0x0077d9a0 · 662 bytes · __cdecl

_Z22DebugDrawContactPointsP14IPhysicsObject

Decompiled

undefined (1 param)

/* DebugDrawContactPoints(IPhysicsObject*) */

void DebugDrawContactPoints(IPhysicsObject *param_1)

{
  undefined1 *puVar1;
  int iVar2;
  code *pcVar3;
  char cVar4;
  int *piVar5;
  int *piVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  IPhysicsObject **ppIVar9;
  int in_GS_OFFSET;
  longdouble lVar10;
  int aiStack_1a4 [2];
  IPhysicsObject *local_19c;
  int local_198;
  float local_194;
  int local_190 [2];
  int iStack_188;
  float local_184 [5];
  IPhysicsObject *local_170;
  double local_16c;
  float local_164;
  undefined1 *local_160;
  float local_15c;
  float local_158;
  float local_154;
  float local_150;
  float local_14c;
  float local_148;
  undefined4 local_144;
  undefined4 local_140;
  undefined4 local_13c;
  float local_138;
  float local_134;
  float local_130;
  undefined1 local_12c [5];
  undefined1 local_127 [263];
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_170 = param_1;
  local_19c = param_1;
  piVar5 = (int *)(**(code **)(*(int *)param_1 + 0x144))();
  ppIVar9 = &local_19c;
  while( true ) {
    iVar2 = *piVar5;
    *ppIVar9 = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 8);
    ppIVar9[-1] = (IPhysicsObject *)0x77dbf5;
    cVar4 = (*pcVar3)();
    iVar2 = *piVar5;
    if (cVar4 == '\0') break;
    ppIVar9[1] = (IPhysicsObject *)&local_15c;
    *ppIVar9 = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 0x14);
    ppIVar9[-1] = (IPhysicsObject *)0x77d9f0;
    (*pcVar3)();
    iVar2 = *piVar5;
    ppIVar9[1] = (IPhysicsObject *)&local_150;
    *ppIVar9 = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 0x18);
    ppIVar9[-1] = (IPhysicsObject *)0x77da02;
    (*pcVar3)();
    ppIVar9[2] = (IPhysicsObject *)&local_138;
    ppIVar9[1] = (IPhysicsObject *)&local_144;
    ppIVar9[7] = (IPhysicsObject *)0x0;
    ppIVar9[6] = (IPhysicsObject *)0x20;
    ppIVar9[5] = (IPhysicsObject *)0x0;
    ppIVar9[4] = (IPhysicsObject *)0xff;
    ppIVar9[3] = (IPhysicsObject *)0x0;
    *ppIVar9 = (IPhysicsObject *)&local_15c;
    local_138 = 1.0;
    local_134 = 1.0;
    local_130 = 1.0;
    local_144 = 0xbf800000;
    local_140 = 0xbf800000;
    local_13c = 0xbf800000;
    ppIVar9[-1] = (IPhysicsObject *)0x77da7c;
    NDebugOverlay::Box((Vector *)*ppIVar9,(Vector *)ppIVar9[1],(Vector *)ppIVar9[2],(int)ppIVar9[3],
                       (int)ppIVar9[4],(int)ppIVar9[5],(int)ppIVar9[6],(float)ppIVar9[7]);
    *ppIVar9 = (IPhysicsObject *)&local_15c;
    ppIVar9[1] = (IPhysicsObject *)&local_138;
    ppIVar9[6] = (IPhysicsObject *)0x0;
    ppIVar9[5] = (IPhysicsObject *)0x0;
    ppIVar9[4] = (IPhysicsObject *)0x0;
    ppIVar9[3] = (IPhysicsObject *)0xff;
    ppIVar9[2] = (IPhysicsObject *)0x0;
    local_138 = local_15c - local_150 * 20.0;
    local_134 = local_158 - local_14c * 20.0;
    local_130 = local_154 - local_148 * 20.0;
    ppIVar9[-1] = (IPhysicsObject *)0x77db14;
    NDebugOverlay::Line((Vector *)*ppIVar9,(Vector *)ppIVar9[1],(int)ppIVar9[2],(int)ppIVar9[3],
                        (int)ppIVar9[4],SUB41(ppIVar9[5],0),(float)ppIVar9[6]);
    iVar2 = *piVar5;
    ppIVar9[1] = (IPhysicsObject *)0x1;
    *ppIVar9 = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 0xc);
    ppIVar9[-1] = (IPhysicsObject *)0x77db24;
    piVar6 = (int *)(*pcVar3)();
    iVar2 = *piVar6;
    *ppIVar9 = (IPhysicsObject *)piVar6;
    pcVar3 = *(code **)(iVar2 + 0x48);
    ppIVar9[-1] = (IPhysicsObject *)0x77db2c;
    piVar6 = (int *)(*pcVar3)();
    iVar2 = *piVar5;
    *ppIVar9 = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 0x38);
    ppIVar9[-1] = (IPhysicsObject *)0x77db36;
    lVar10 = (longdouble)(*pcVar3)();
    *ppIVar9 = (IPhysicsObject *)piVar6;
    local_164 = (float)lVar10;
    local_16c = (double)local_164;
    ppIVar9[-1] = (IPhysicsObject *)0x77db5a;
    local_164 = (float)CBaseEntity::GetDebugName((CBaseEntity *)*ppIVar9);
    iVar2 = *piVar6;
    ppIVar9[1] = (IPhysicsObject *)piVar6;
    *ppIVar9 = (IPhysicsObject *)&local_160;
    pcVar3 = *(code **)(iVar2 + 0x20);
    ppIVar9[-1] = (IPhysicsObject *)0x77db72;
    (*pcVar3)();
    puVar1 = (undefined1 *)piVar6[0x1f];
    *ppIVar9 = (IPhysicsObject *)"%s (%s): %s [%0.2f]";
    puVar7 = local_160;
    if (local_160 == (undefined1 *)0x0) {
      puVar7 = &DAT_00d539c2;
    }
    *(double *)(ppIVar9 + 4) = local_16c;
    puVar8 = &DAT_00d539c2;
    if (puVar1 != (undefined1 *)0x0) {
      puVar8 = puVar1;
    }
    ppIVar9[3] = (IPhysicsObject *)local_164;
    ppIVar9[2] = (IPhysicsObject *)puVar7;
    ppIVar9[1] = (IPhysicsObject *)puVar8;
    ppIVar9[-1] = (IPhysicsObject *)local_12c;
    ppIVar9[-2] = (IPhysicsObject *)0x77dbc3;
    CFmtStrN<256>::CFmtStrN((CFmtStrN<256> *)ppIVar9[-1],(char *)*ppIVar9);
    ppIVar9[-1] = (IPhysicsObject *)&local_15c;
    *ppIVar9 = (IPhysicsObject *)local_127;
    ppIVar9[2] = (IPhysicsObject *)0x0;
    ppIVar9[1] = (IPhysicsObject *)0x0;
    ppIVar9[-2] = (IPhysicsObject *)0x77dbe5;
    NDebugOverlay::Text((Vector *)ppIVar9[-1],(char *)*ppIVar9,SUB41(ppIVar9[1],0),(float)ppIVar9[2]
                       );
    iVar2 = *piVar5;
    ppIVar9[-1] = (IPhysicsObject *)piVar5;
    pcVar3 = *(code **)(iVar2 + 0x34);
    ppIVar9[-2] = (IPhysicsObject *)0x77dbed;
    (*pcVar3)();
    ppIVar9 = ppIVar9 + -1;
  }
  ppIVar9[1] = (IPhysicsObject *)0x1;
  *ppIVar9 = (IPhysicsObject *)piVar5;
  pcVar3 = *(code **)(iVar2 + 0x30);
  ppIVar9[-1] = (IPhysicsObject *)0x77dc0d;
  (*pcVar3)();
  iVar2 = *(int *)local_170;
  ppIVar9[1] = (IPhysicsObject *)piVar5;
  *ppIVar9 = local_170;
  pcVar3 = *(code **)(iVar2 + 0x148);
  ppIVar9[-1] = (IPhysicsObject *)0x77dc22;
  (*pcVar3)();
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  ppIVar9[-1] = (IPhysicsObject *)&UNK_0077dc3b;
  __stack_chk_fail();
}

SourceMod gamedata

paste into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)