L L4D2node

IsBoxIntersectingTriangle

0x000c9820 · 2125 bytes · __cdecl

_Z25IsBoxIntersectingTriangleRK6VectorS1_S1_S1_S1_RK8cplane_tf

Decompiled

undefined (7 params)

/* IsBoxIntersectingTriangle(Vector const&, Vector const&, Vector const&, Vector const&, Vector
   const&, cplane_t const&, float) */

bool IsBoxIntersectingTriangle
               (Vector *param_1,Vector *param_2,Vector *param_3,Vector *param_4,Vector *param_5,
               cplane_t *param_6,float param_7)

{
  float fVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  bool bVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float local_34;
  float local_30;
  float local_2c;
  float local_28;
  float local_24;
  float local_20;
  
  bVar5 = false;
  local_28 = *(float *)param_1;
  fVar7 = *(float *)param_4 - local_28;
  fVar6 = *(float *)param_3 - local_28;
  fVar8 = *(float *)param_5 - local_28;
  fVar2 = fVar7;
  if (fVar6 <= fVar7) {
    fVar2 = fVar6;
  }
  fVar1 = *(float *)param_2;
  if (fVar8 <= fVar2) {
    fVar2 = fVar8;
  }
  if (fVar2 <= param_7 + fVar1) {
    fVar2 = fVar7;
    if (fVar7 <= fVar6) {
      fVar2 = fVar6;
    }
    if (fVar2 <= fVar8) {
      fVar2 = fVar8;
    }
    if (-(param_7 + fVar1) <= fVar2) {
      fVar2 = *(float *)(param_1 + 4);
      fVar16 = *(float *)(param_3 + 4) - fVar2;
      fVar9 = *(float *)(param_4 + 4) - fVar2;
      fVar3 = fVar9;
      if (fVar16 <= fVar9) {
        fVar3 = fVar16;
      }
      fVar17 = *(float *)(param_5 + 4) - fVar2;
      local_24 = *(float *)(param_2 + 4);
      if (fVar17 <= fVar3) {
        fVar3 = fVar17;
      }
      if (fVar3 <= local_24 + param_7) {
        fVar3 = fVar16;
        if (fVar16 <= fVar9) {
          fVar3 = fVar9;
        }
        if (fVar3 <= fVar17) {
          fVar3 = fVar17;
        }
        if (-(local_24 + param_7) <= fVar3) {
          fVar3 = *(float *)(param_1 + 8);
          fVar18 = *(float *)(param_5 + 8) - fVar3;
          fVar10 = *(float *)(param_3 + 8) - fVar3;
          fVar11 = *(float *)(param_4 + 8) - fVar3;
          fVar12 = fVar11;
          if (fVar10 <= fVar11) {
            fVar12 = fVar10;
          }
          local_20 = *(float *)(param_2 + 8);
          if (fVar18 <= fVar12) {
            fVar12 = fVar18;
          }
          if (fVar12 <= local_20 + param_7) {
            fVar12 = fVar11;
            if (fVar11 <= fVar10) {
              fVar12 = fVar10;
            }
            if (fVar12 <= fVar18) {
              fVar12 = fVar18;
            }
            if (-(local_20 + param_7) <= fVar12) {
              fVar12 = fVar9 - fVar16;
              fVar13 = fVar11 - fVar10;
              fVar14 = fVar13 * fVar16 - fVar12 * fVar10;
              fVar15 = fVar13 * fVar17 - fVar12 * fVar18;
              fVar19 = param_7 + ABS(fVar12) * local_20 + ABS(fVar13) * local_24;
              if (fVar14 < fVar15) {
                if (fVar19 < fVar14) {
                  return false;
                }
                if (fVar15 < -fVar19) {
                  return false;
                }
              }
              else {
                if (fVar19 < fVar15) {
                  return false;
                }
                if (fVar14 < -fVar19) {
                  return false;
                }
              }
              fVar14 = fVar7 - fVar6;
              fVar15 = fVar14 * fVar10 + -fVar13 * fVar6;
              fVar19 = -fVar13 * fVar8 + fVar14 * fVar18;
              fVar13 = local_20 * ABS(fVar14) + ABS(fVar13) * fVar1;
              if (fVar19 <= fVar15) {
                fVar13 = fVar13 + param_7;
                if (fVar13 < fVar19) {
                  return false;
                }
                if (fVar15 < -fVar13) {
                  return false;
                }
              }
              else {
                fVar13 = fVar13 + param_7;
                if (fVar13 < fVar15) {
                  return false;
                }
                if (fVar19 < -fVar13) {
                  return false;
                }
              }
              fVar13 = fVar12 * fVar7 - fVar14 * fVar9;
              fVar15 = fVar12 * fVar8 - fVar14 * fVar17;
              fVar12 = ABS(fVar14) * local_24 + ABS(fVar12) * fVar1;
              if (fVar13 <= fVar15) {
                fVar12 = fVar12 + param_7;
                if (fVar12 < fVar13) {
                  return false;
                }
                if (fVar15 < -fVar12) {
                  return false;
                }
              }
              else {
                fVar12 = fVar12 + param_7;
                if (fVar12 < fVar15) {
                  return false;
                }
                if (fVar13 < -fVar12) {
                  return false;
                }
              }
              fVar15 = fVar17 - fVar9;
              fVar19 = fVar18 - fVar11;
              fVar12 = fVar19 * fVar16 - fVar15 * fVar10;
              fVar13 = fVar19 * fVar9 - fVar15 * fVar11;
              fVar14 = local_20 * ABS(fVar15) + ABS(fVar19) * local_24;
              if (fVar13 <= fVar12) {
                fVar14 = fVar14 + param_7;
                if (fVar14 < fVar13) {
                  return false;
                }
                if (fVar12 < -fVar14) {
                  return false;
                }
              }
              else {
                fVar14 = fVar14 + param_7;
                if (fVar14 < fVar12) {
                  return false;
                }
                if (fVar13 < -fVar14) {
                  return false;
                }
              }
              fVar20 = fVar8 - fVar7;
              fVar13 = fVar20 * fVar10 + -fVar19 * fVar6;
              fVar12 = fVar20 * fVar11 + -fVar19 * fVar7;
              fVar14 = ABS(fVar20) * local_20 + ABS(fVar19) * fVar1;
              if (fVar12 <= fVar13) {
                fVar14 = fVar14 + param_7;
                if (fVar14 < fVar12) {
                  return false;
                }
                if (fVar13 < -fVar14) {
                  return false;
                }
              }
              else {
                fVar14 = fVar14 + param_7;
                if (fVar14 < fVar13) {
                  return false;
                }
                if (fVar12 < -fVar14) {
                  return false;
                }
              }
              fVar14 = fVar15 * fVar6 - fVar20 * fVar16;
              fVar13 = fVar15 * fVar8 - fVar20 * fVar17;
              fVar12 = ABS(fVar20) * local_24 + ABS(fVar15) * fVar1;
              if (fVar13 <= fVar14) {
                fVar12 = fVar12 + param_7;
                if (fVar12 < fVar13) {
                  return false;
                }
                if (fVar14 < -fVar12) {
                  return false;
                }
              }
              else {
                fVar12 = fVar12 + param_7;
                if (fVar12 < fVar14) {
                  return false;
                }
                if (fVar13 < -fVar12) {
                  return false;
                }
              }
              fVar14 = fVar16 - fVar17;
              fVar18 = fVar10 - fVar18;
              fVar13 = fVar16 * fVar18 - fVar14 * fVar10;
              fVar12 = fVar18 * fVar9 - fVar11 * fVar14;
              fVar16 = ABS(fVar14) * local_20 + ABS(fVar18) * local_24;
              if (fVar12 <= fVar13) {
                fVar16 = fVar16 + param_7;
                if (fVar16 < fVar12) {
                  return false;
                }
                if (fVar13 < -fVar16) {
                  return false;
                }
              }
              else {
                fVar16 = fVar16 + param_7;
                if (fVar16 < fVar13) {
                  return false;
                }
                if (fVar12 < -fVar16) {
                  return false;
                }
              }
              fVar13 = fVar6 - fVar8;
              fVar6 = fVar10 * fVar13 + fVar6 * -fVar18;
              fVar12 = -fVar18 * fVar7 + fVar11 * fVar13;
              fVar16 = ABS(fVar13) * local_20 + ABS(fVar18) * fVar1;
              if (fVar12 <= fVar6) {
                fVar16 = param_7 + fVar16;
                if (fVar16 < fVar12) {
                  return false;
                }
                if (fVar6 < -fVar16) {
                  return false;
                }
              }
              else {
                fVar16 = param_7 + fVar16;
                if (fVar16 < fVar6) {
                  return false;
                }
                if (fVar12 < -fVar16) {
                  return false;
                }
              }
              fVar9 = fVar7 * fVar14 - fVar9 * fVar13;
              fVar7 = fVar8 * fVar14 - fVar17 * fVar13;
              fVar6 = ABS(fVar13) * local_24 + ABS(fVar14) * fVar1;
              if (fVar9 <= fVar7) {
                fVar6 = fVar6 + param_7;
                if (fVar6 < fVar9) {
                  return false;
                }
                if (fVar7 < -fVar6) {
                  return false;
                }
              }
              else {
                fVar6 = fVar6 + param_7;
                if (fVar6 < fVar7) {
                  return false;
                }
                if (fVar9 < -fVar6) {
                  return false;
                }
              }
              local_34 = local_28 - fVar1;
              local_28 = local_28 + fVar1;
              local_30 = fVar2 - local_24;
              local_2c = fVar3 - local_20;
              local_24 = local_24 + fVar2;
              local_20 = local_20 + fVar3;
              iVar4 = BoxOnPlaneSide(&local_34,&local_28,param_6);
              bVar5 = iVar4 == 3;
            }
          }
        }
      }
    }
  }
  return bVar5;
}

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)