L L4D2node

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 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)