IsBoxIntersectingRay
0x000c5f60 · 197 bytes · __regparm2
_Z20IsBoxIntersectingRayRKDv4_fS1_S1_S1_S1_S1_
Decompiled
undefined (6 params)
/* IsBoxIntersectingRay(float __vector const&, float __vector const&, float __vector const&, float
__vector const&, float __vector const&, float __vector const&) */
undefined4 __regparm2
IsBoxIntersectingRay
(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5,float *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 = *param_3 - *param_5;
fVar18 = param_3[1] - param_5[1];
fVar19 = param_3[2] - param_5[2];
fVar9 = *param_4 - *param_5;
fVar15 = param_4[1] - param_5[1];
fVar16 = param_4[2] - param_5[2];
uVar4 = 0;
auVar7._0_4_ = -(uint)(fVar9 < *param_6 && fVar9 < fVar1 || *param_6 < fVar17 && fVar1 < fVar17);
auVar7._4_4_ = -(uint)(fVar15 < param_6[1] && fVar15 < fVar2 ||
param_6[1] < fVar18 && fVar2 < fVar18);
auVar7._8_4_ = -(uint)(fVar16 < param_6[2] && fVar16 < fVar3 ||
fVar3 < fVar19 && 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 = ((param_3[3] - 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_ = ((param_4[3] - 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 intoaddons/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.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.