L L4D2node

IsBoxIntersectingRay

0x0058a290 · 197 bytes · __regparm2

_Z20IsBoxIntersectingRayRKU8__vectorfS1_S1_S1_S1_S1_

Decompiled

undefined (6 params)

/* IsBoxIntersectingRay(float __vector(4) const&, float __vector(4) const&, float __vector(4)
   const&, float __vector(4) const&, float __vector(4) const&, float __vector(4) const&) */

undefined4 __regparm2
IsBoxIntersectingRay
          (_func_float_int **param_1,_func_float_int **param_2,_func_float_int **param_3,
          _func_float_int **param_4,_func_float_int **param_5,_func_float_int **param_6)

{
  float fVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  int iVar5;
  undefined1 auVar6 [16];
  undefined1 auVar7 [16];
  undefined1 auVar8 [16];
  float fVar9;
  float fVar15;
  float fVar16;
  undefined1 auVar10 [16];
  undefined1 auVar11 [16];
  undefined1 auVar12 [16];
  undefined1 auVar13 [16];
  undefined1 auVar14 [16];
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  undefined1 auVar21 [16];
  undefined1 auVar22 [16];
  undefined1 auVar23 [16];
  float *in_stack_00000014;
  float *in_stack_00000018;
  
  fVar1 = Four_Zeros._0_4_;
  fVar2 = Four_Zeros._4_4_;
  fVar3 = Four_Zeros._8_4_;
  fVar17 = (float)*param_3 - (float)*param_5;
  fVar18 = (float)param_3[1] - (float)param_5[1];
  fVar19 = (float)param_3[2] - (float)param_5[2];
  fVar9 = (float)*param_4 - (float)*param_5;
  fVar15 = (float)param_4[1] - (float)param_5[1];
  fVar16 = (float)param_4[2] - (float)param_5[2];
  uVar4 = 0;
  auVar7._0_4_ = -(uint)(fVar9 < (float)*param_6 && fVar9 < fVar1 ||
                        (float)*param_6 < fVar17 && fVar1 < fVar17);
  auVar7._4_4_ = -(uint)(fVar15 < (float)param_6[1] && fVar15 < fVar2 ||
                        (float)param_6[1] < fVar18 && fVar2 < fVar18);
  auVar7._8_4_ = -(uint)(fVar16 < (float)param_6[2] && fVar16 < fVar3 ||
                        fVar3 < fVar19 && (float)param_6[2] < fVar19);
  auVar7._12_4_ = 0;
  iVar5 = movmskps(param_2,auVar7);
  if (iVar5 == 0) {
    fVar17 = (fVar17 - *in_stack_00000018) * *in_stack_00000014;
    fVar18 = (fVar18 - in_stack_00000018[1]) * in_stack_00000014[1];
    fVar19 = (fVar19 - in_stack_00000018[2]) * in_stack_00000014[2];
    fVar20 = (((float)param_3[3] - (float)param_5[3]) - in_stack_00000018[3]) * in_stack_00000014[3]
    ;
    auVar10._0_4_ = (fVar9 + *in_stack_00000018) * *in_stack_00000014;
    auVar10._4_4_ = (fVar15 + in_stack_00000018[1]) * in_stack_00000014[1];
    auVar10._8_4_ = (fVar16 + in_stack_00000018[2]) * in_stack_00000014[2];
    auVar10._12_4_ =
         (((float)param_4[3] - (float)param_5[3]) + in_stack_00000018[3]) * in_stack_00000014[3];
    auVar21._4_4_ = fVar18;
    auVar21._0_4_ = fVar17;
    auVar21._8_4_ = fVar19;
    auVar21._12_4_ = fVar20;
    auVar22 = minps(auVar21,auVar10);
    auVar11._4_4_ = fVar18;
    auVar11._0_4_ = fVar17;
    auVar11._8_4_ = fVar19;
    auVar11._12_4_ = fVar20;
    auVar11 = maxps(auVar10,auVar11);
    auVar6._0_12_ = auVar11._4_12_;
    auVar6._12_4_ = auVar11._0_4_;
    auVar7 = minps(auVar6,auVar11);
    auVar12._0_8_ = auVar11._8_8_;
    auVar12._8_4_ = auVar11._0_4_;
    auVar12._12_4_ = auVar11._4_4_;
    auVar7 = minps(auVar7,auVar12);
    auVar13._0_12_ = auVar22._4_12_;
    auVar13._12_4_ = auVar22._0_4_;
    auVar11 = maxps(auVar13,auVar22);
    auVar23._0_8_ = auVar22._8_8_;
    auVar23._8_4_ = auVar22._0_4_;
    auVar23._12_4_ = auVar22._4_4_;
    auVar22._0_4_ = auVar7._0_4_;
    auVar22._4_4_ = auVar22._0_4_;
    auVar22._8_4_ = auVar22._0_4_;
    auVar22._12_4_ = auVar22._0_4_;
    auVar7 = minps(auVar22,Four_Ones);
    auVar11 = maxps(auVar11,auVar23);
    auVar14._0_4_ = auVar11._0_4_;
    auVar14._4_4_ = auVar14._0_4_;
    auVar14._8_4_ = auVar14._0_4_;
    auVar14._12_4_ = auVar14._0_4_;
    auVar11 = maxps(auVar14,Four_Zeros);
    auVar8._4_4_ = -(uint)((float)-(uint)(auVar7._4_4_ < auVar11._4_4_) == fVar2);
    auVar8._0_4_ = -(uint)((float)-(uint)(auVar7._0_4_ < auVar11._0_4_) == fVar1);
    auVar8._8_4_ = -(uint)((float)-(uint)(auVar7._8_4_ < auVar11._8_4_) == fVar3);
    auVar8._12_4_ = -(uint)((float)-(uint)(auVar7._12_4_ < auVar11._12_4_) == Four_Zeros._12_4_);
    iVar5 = movmskps(in_stack_00000014,auVar8);
    uVar4 = CONCAT31((int3)((uint)iVar5 >> 8),iVar5 == 0xf);
  }
  return uVar4;
}

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)