L L4D2node

CCoreDispInfo::GenerateDispSurf

0x000c0850 · 1021 bytes · __thiscall

_ZN13CCoreDispInfo16GenerateDispSurfEv

Decompiled

undefined (1 param)

/* CCoreDispInfo::GenerateDispSurf() */

void __thiscall CCoreDispInfo::GenerateDispSurf(CCoreDispInfo *this)

{
  int iVar1;
  float fVar2;
  float *pfVar3;
  int iVar4;
  float *pfVar5;
  int iVar6;
  CCoreDispInfo *pCVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  int local_7c;
  float local_58;
  float local_54;
  float local_50;
  float local_4c;
  float local_48;
  float local_44;
  float local_40;
  float local_3c;
  float local_38;
  float local_34;
  float local_30;
  float local_2c;
  float local_28;
  float local_24;
  float local_20;
  float local_1c [3];
  
  pfVar5 = &local_4c;
  pCVar7 = this;
  do {
    pfVar3 = pfVar5 + 3;
    *pfVar5 = *(float *)(pCVar7 + 0x18);
    pfVar5[1] = *(float *)(pCVar7 + 0x1c);
    pfVar5[2] = *(float *)(pCVar7 + 0x20);
    pfVar5 = pfVar3;
    pCVar7 = pCVar7 + 0xc;
  } while (pfVar3 != local_1c);
  local_58 = 0.0;
  local_54 = 0.0;
  local_50 = 0.0;
  iVar4 = 1 << ((byte)*(undefined4 *)(this + 0xc) & 0x1f);
  iVar1 = iVar4 + 1;
  fVar14 = 1.0 / (float)iVar4;
  if (*(float *)(this + 8) != 0.0) {
    fVar13 = *(float *)(this + 0x24) - *(float *)(this + 0x18);
    fVar12 = *(float *)(this + 0x3c) - *(float *)(this + 0x18);
    fVar15 = *(float *)(this + 0x28) - *(float *)(this + 0x1c);
    fVar10 = *(float *)(this + 0x40) - *(float *)(this + 0x1c);
    fVar11 = *(float *)(this + 0x2c) - *(float *)(this + 0x20);
    fVar9 = *(float *)(this + 0x44) - *(float *)(this + 0x20);
    local_54 = fVar9 * fVar13 - fVar11 * fVar12;
    local_58 = fVar10 * fVar11 - fVar9 * fVar15;
    local_50 = fVar12 * fVar15 - fVar10 * fVar13;
    VectorNormalize((Vector *)&local_58);
    fVar9 = *(float *)(this + 8);
    local_58 = local_58 * fVar9;
    local_54 = local_54 * fVar9;
    local_50 = fVar9 * local_50;
  }
  if (0 < iVar1) {
    local_7c = 0;
    iVar4 = 0;
    do {
      fVar9 = (float)iVar4;
      iVar8 = 0;
      fVar11 = (local_3c - local_48) * fVar14 * fVar9 + local_48;
      fVar15 = (local_40 - local_4c) * fVar14 * fVar9 + local_4c;
      fVar12 = (local_38 - local_44) * fVar14 * fVar9 + local_44;
      iVar6 = local_7c;
      do {
        fVar10 = (float)iVar8;
        pfVar5 = (float *)(*(int *)(this + 0x1b8) + iVar6);
        fVar16 = (((local_34 - local_28) * fVar14 * fVar9 + local_28) - fVar15) * fVar14 * fVar10 +
                 fVar15;
        fVar13 = fVar10 * (((local_30 - local_24) * fVar14 * fVar9 + local_24) - fVar11) * fVar14 +
                 fVar11;
        fVar10 = fVar10 * (((local_2c - local_20) * fVar14 * fVar9 + local_20) - fVar12) * fVar14 +
                 fVar12;
        pfVar5[0xd] = fVar16;
        pfVar5[0xe] = fVar13;
        pfVar5[0xf] = fVar10;
        pfVar5[10] = fVar16;
        pfVar5[0xb] = fVar13;
        pfVar5[0xc] = fVar10;
        if (*(float *)(this + 8) != 0.0) {
          fVar10 = fVar10 + local_50;
          fVar13 = fVar13 + local_54;
          fVar16 = fVar16 + local_58;
        }
        fVar2 = pfVar5[3];
        iVar8 = iVar8 + 1;
        iVar6 = iVar6 + 0x90;
        pfVar5[0xb] = pfVar5[1] * fVar2 + pfVar5[8] + fVar13;
        pfVar5[0xc] = pfVar5[2] * fVar2 + pfVar5[9] + fVar10;
        pfVar5[10] = fVar2 * *pfVar5 + pfVar5[7] + fVar16;
      } while (iVar8 != iVar1);
      iVar4 = iVar4 + 1;
      local_7c = local_7c + iVar1 * 0x90;
    } while (iVar4 != iVar1);
  }
  return;
}

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)