L L4D2node

RenderWireframeSweptBox

0x002898f0 · 1883 bytes · __cdecl

_Z23RenderWireframeSweptBoxRK6VectorS1_RK6QAngleS1_S1_5Colorb

Decompiled

undefined (7 params)

/* RenderWireframeSweptBox(Vector const&, Vector const&, QAngle const&, Vector const&, Vector
   const&, Color, bool) */

void RenderWireframeSweptBox
               (float *param_1,float *param_2,QAngle *param_3,float *param_4,float *param_5,
               undefined4 param_6,char param_7)

{
  ushort *puVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  uint uVar8;
  char cVar9;
  int *piVar10;
  int *piVar11;
  undefined4 *puVar12;
  undefined4 uVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  float *pfVar17;
  int iVar18;
  undefined4 *puVar19;
  uint uVar20;
  uint uVar21;
  bool bVar22;
  byte bVar23;
  float fVar24;
  float local_2c0;
  float local_2bc;
  float local_2b8;
  float afStack_2b4 [8];
  matrix3x4_t local_294 [48];
  float local_264 [24];
  undefined4 local_204 [39];
  int local_168;
  int local_164;
  int local_160;
  int local_154;
  int *local_150;
  undefined4 local_14c;
  char local_148;
  int local_144;
  int local_138;
  int *local_134;
  int local_130;
  int local_12c;
  int local_128;
  int local_124;
  undefined4 local_120;
  undefined4 local_11c;
  undefined4 local_118;
  undefined1 local_114;
  undefined4 local_110 [19];
  undefined4 local_c4;
  uint local_c0;
  undefined4 local_bc;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a4 [8];
  undefined4 local_84 [6];
  int *local_6c;
  undefined1 local_68;
  undefined4 local_64;
  int local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c [8];
  undefined4 local_2c;
  int local_28;
  int local_24;
  
  bVar23 = 0;
  InitializeStandardMaterials();
  piVar10 = (int *)(**(code **)(*g_pMaterialSystem + 0x180))(g_pMaterialSystem);
  if (piVar10 != (int *)0x0) {
                    /* try { // try from 00289926 to 00289928 has its CatchHandler @ 0028a06b */
    (**(code **)(*piVar10 + 8))(piVar10);
  }
  uVar13 = s_pWireframe;
  if (param_7 == '\0') {
    uVar13 = s_pWireframeIgnoreZ;
  }
                    /* try { // try from 00289954 to 002899c7 has its CatchHandler @ 0028a0b5 */
  (**(code **)(*piVar10 + 0x24))(piVar10,uVar13,0);
  AngleMatrix(param_3,local_294);
  piVar11 = (int *)(**(code **)(*piVar10 + 0xe8))(piVar10,1,0,0,0);
  local_134 = (int *)0x0;
  local_130 = 0;
  local_12c = 0;
  local_124 = 0;
  local_120 = 0;
  local_11c = 0xffffffff;
  local_118 = 0;
  local_6c = (int *)0x0;
  local_28 = -1;
  local_24 = 0;
  local_60 = 0;
  local_5c = 0;
  local_64 = 0;
  local_2c = 0;
  local_c4 = 0xffffffff;
  local_148 = '\x01';
  local_14c = 1;
                    /* try { // try from 00289a81 to 00289e91 has its CatchHandler @ 0028a087 */
  local_150 = piVar11;
  (**(code **)(*piVar11 + 0x30))(piVar11,1);
  (**(code **)(*local_150 + 0x4c))(local_150,0x3c,0x3c,local_204);
  local_6c = piVar11;
  local_68 = 0;
  puVar12 = local_204;
  puVar19 = local_110;
  for (iVar14 = 0x29; iVar14 != 0; iVar14 = iVar14 + -1) {
    *puVar19 = *puVar12;
    puVar12 = puVar12 + (uint)bVar23 * -2 + 1;
    puVar19 = puVar19 + (uint)bVar23 * -2 + 1;
  }
  local_134 = piVar11 + 1;
  local_12c = 0;
  local_144 = local_160;
  local_130 = 0x3c;
  local_114 = 0;
  local_128 = local_168;
  local_138 = local_154;
  local_124 = 0;
  local_64 = 0x3c;
  local_60 = 0;
  local_c0 = ~-(uint)(local_c0 == 0) & 2;
  if (local_28 == -1) {
    local_2c = 0;
    local_24 = local_168;
    local_28 = local_164;
  }
  local_5c = 0;
  local_58 = local_bc;
  local_54 = local_b0;
  puVar12 = local_a4;
  do {
    puVar19 = puVar12 + 1;
    puVar12[0x16] = *puVar12;
    puVar12 = puVar19;
  } while (puVar19 != local_84);
  pfVar17 = local_264;
  uVar15 = 0;
  uVar20 = 0;
  local_50 = local_ac;
  fVar2 = *param_2;
  fVar3 = *param_1;
  fVar4 = param_2[1];
  fVar5 = param_1[1];
  fVar6 = param_2[2];
  fVar7 = param_1[2];
  do {
    if ((uVar15 & 1) == 0) {
      local_2c0 = *param_4;
      if ((uVar15 & 2) == 0) goto LAB_00289cc3;
LAB_00289c10:
      local_2bc = param_5[1];
      if ((uVar15 & 4) != 0) goto LAB_00289c29;
LAB_00289cdc:
      local_2b8 = param_4[2];
    }
    else {
      local_2c0 = *param_5;
      if ((uVar15 & 2) != 0) goto LAB_00289c10;
LAB_00289cc3:
      local_2bc = param_4[1];
      if ((uVar15 & 4) == 0) goto LAB_00289cdc;
LAB_00289c29:
      local_2b8 = param_5[2];
    }
    VectorRotate(&local_2c0,local_294,pfVar17);
    fVar24 = (fVar4 - fVar5) * pfVar17[1] + (fVar2 - fVar3) * *pfVar17 +
             (fVar6 - fVar7) * pfVar17[2];
    afStack_2b4[uVar15] = fVar24;
    if (fVar24 < afStack_2b4[uVar20]) {
      uVar20 = uVar15;
    }
    uVar15 = uVar15 + 1;
    pfVar17 = pfVar17 + 3;
    if (uVar15 == 8) {
      DrawAxes(param_1,local_264,uVar20,param_6,local_204);
      DrawAxes(param_2,local_264,uVar20 ^ 7,param_6,local_204);
      iVar14 = 1;
      do {
        iVar18 = iVar14 + 1;
        uVar21 = 1 << ((char)iVar14 + (char)(iVar14 / 3) * -3 & 0x1fU);
        uVar15 = 1 << ((char)iVar18 + (char)(iVar18 / 3) * -3 & 0x1fU);
        uVar8 = -uVar21;
        if ((uVar20 & uVar21) == 0) {
          uVar8 = uVar21;
        }
        if ((uVar20 & uVar15) != 0) {
          uVar15 = -uVar15;
        }
        iVar16 = uVar20 + uVar8 + uVar15;
        DrawExtrusionFace(param_1,param_2,local_264,uVar20 + uVar8,iVar16,param_6,local_204);
        DrawExtrusionFace(param_1,param_2,local_264,uVar20 + uVar15,iVar16,param_6,local_204);
        bVar22 = iVar14 != 3;
        iVar14 = iVar18;
      } while (bVar22);
      if (local_148 != '\0') {
        switch(local_14c) {
        case 4:
          iVar14 = local_60 * 2 + -2;
          break;
        case 5:
          iVar14 = local_60 * 2;
          break;
        case 6:
          iVar14 = local_60 * 3 + -6;
          break;
        case 7:
          iVar18 = local_60 * 6;
          iVar14 = iVar18 + 3;
          if (-1 < iVar18) {
            iVar14 = iVar18;
          }
          iVar14 = iVar14 >> 2;
          break;
        default:
          iVar14 = local_60;
          break;
        case 9:
          iVar14 = 0;
        }
        if (local_138 != 0) {
          if (local_130 - local_124 < iVar14) {
            iVar14 = local_130 - local_124;
          }
          if (iVar14 != 0) {
            puVar1 = (ushort *)(local_144 + local_124 * 2);
            switch(local_14c) {
            case 0:
            case 9:
              break;
            default:
              GenerateSequentialIndexBuffer(puVar1,iVar14,local_128);
              break;
            case 4:
                    /* try { // try from 00289fba to 0028a051 has its CatchHandler @ 0028a087 */
              GenerateLineStripIndexBuffer(puVar1,iVar14,local_128);
              break;
            case 5:
              GenerateLineLoopIndexBuffer(puVar1,iVar14,local_128);
              break;
            case 6:
              GeneratePolygonIndexBuffer(puVar1,(int)puVar1,iVar14);
              break;
            case 7:
              GenerateQuadIndexBuffer(puVar1,iVar14,local_128);
            }
            local_124 = local_124 + iVar14 * local_138;
            if (local_12c < local_124) {
              local_12c = local_124;
            }
          }
        }
      }
      (**(code **)(*local_150 + 0x58))(local_150,local_60,local_12c,local_204);
      local_134 = (int *)0x0;
      local_130 = 0;
      local_64 = 0;
      local_6c = (int *)0x0;
      local_c4 = 0xffffffff;
      local_150 = (int *)0x0;
      (**(code **)(*piVar11 + 0x34))(piVar11,0xffffffff,0);
      if ((local_6c != (int *)0x0) &&
         (cVar9 = (**(code **)(*local_6c + 0x10))(local_6c), cVar9 != '\0')) {
        (**(code **)(*local_6c + 0x18))(local_6c);
      }
      if ((local_134 != (int *)0x0) &&
         (cVar9 = (**(code **)(*local_134 + 0x10))(local_134), cVar9 != '\0')) {
        (**(code **)(*local_134 + 0x18))(local_134);
      }
      if ((piVar10 != (int *)0x0) && ((**(code **)(*piVar10 + 0xc))(piVar10), piVar10 != (int *)0x0)
         ) {
        (**(code **)(*piVar10 + 4))(piVar10);
      }
      return;
    }
  } while( true );
}

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)