CVoxelHash::EnumerateElementsAlongRay_ExtrudedRaySlice
0x001dd0e0 · 401 bytes · __thiscall
_ZN10CVoxelHash42EnumerateElementsAlongRay_ExtrudedRaySliceEiP20IPartitionEnumeratorRK18CIntersectSweptBoxPiS5_iS5_
Decompiled
undefined (8 params)
/* CVoxelHash::EnumerateElementsAlongRay_ExtrudedRaySlice(int, IPartitionEnumerator*,
CIntersectSweptBox const&, int*, int*, int, int*) */
bool __thiscall
CVoxelHash::EnumerateElementsAlongRay_ExtrudedRaySlice
(CVoxelHash *this,int param_1,IPartitionEnumerator *param_2,CIntersectSweptBox *param_3,
int *param_4,int *param_5,int param_6,int *param_7)
{
uint uVar1;
uint uVar2;
int iVar3;
int iVar4;
bool bVar5;
ushort uVar6;
uint uVar7;
uint uVar8;
uint uVar9;
ushort local_7c;
int local_6c;
uint local_5c;
uint local_48;
uint local_44;
uint local_34 [4];
int local_24;
int local_20;
local_34[0] = *param_4;
local_34[1] = param_4[1];
local_34[2] = param_4[2];
local_6c = *param_5;
local_34[3] = local_6c;
local_24 = param_5[1];
local_20 = param_5[2];
if ((float)param_7[param_6] < 0.0) {
local_34[param_6 + 3] = local_34[param_6];
local_6c = local_34[3];
}
else {
local_34[param_6] = local_34[param_6 + 3];
}
iVar3 = local_24;
uVar1 = local_34[1];
if ((int)local_34[0] <= local_6c) {
uVar7 = local_34[0] & 0xffff;
local_44 = local_34[0];
do {
iVar4 = local_20;
uVar2 = local_34[2];
local_7c = (ushort)uVar7 & 0x7ff;
uVar7 = uVar7 & 0x7ff;
if ((int)uVar1 <= iVar3) {
uVar6 = (ushort)local_34[2];
local_5c = uVar1 & 0xffff;
local_48 = uVar1;
do {
local_5c = local_5c & 0xffff07ff;
uVar8 = (uint)(uVar6 & 0x3ff);
uVar7 = uVar7 & 0xffc007ff | local_5c << 0xb;
for (uVar9 = uVar2; (int)uVar9 <= iVar4; uVar9 = uVar9 + 1) {
uVar7 = uVar7 & 0x3fffff | uVar8 << 0x16;
bVar5 = EnumerateElementsInVoxel<CIntersectSweptBox>(this,uVar7,param_3,param_1,param_2)
;
if (!bVar5) {
return bVar5;
}
uVar8 = uVar8 + 1 & 0xffff03ff;
}
local_48 = local_48 + 1;
local_5c = (uint)(ushort)((short)local_5c + 1);
} while ((int)local_48 <= iVar3);
}
local_44 = local_44 + 1;
uVar7 = (uint)(ushort)(local_7c + 1);
} while ((int)local_44 <= local_6c);
}
return true;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
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.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.