L L4D2node

BoxOnPlaneSide

0x00bbc830 · 580 bytes · __cdecl

_Z14BoxOnPlaneSidePKfS0_PK8cplane_t

Decompiled

undefined (3 params)

/* BoxOnPlaneSide(float const*, float const*, cplane_t const*) */

uint BoxOnPlaneSide(float *param_1,float *param_2,cplane_t *param_3)

{
  float fVar1;
  float fVar2;
  cplane_t cVar3;
  uint uVar4;
  float fVar5;
  float fVar6;
  
  cVar3 = param_3[0x10];
  if ((byte)cVar3 < 3) {
    fVar6 = *(float *)(param_3 + 0xc);
    uVar4 = 1;
    if (param_1[(byte)cVar3] <= fVar6 && fVar6 != param_1[(byte)cVar3]) {
      uVar4 = ~-(uint)(fVar6 < param_2[(byte)cVar3]) + 3;
    }
    return uVar4;
  }
  if ((byte)param_3[0x11] < 8) {
    fVar5 = *(float *)(param_3 + 4);
    fVar1 = *(float *)param_3;
    fVar2 = *(float *)(param_3 + 8);
    switch(param_3[0x11]) {
    case (cplane_t)0x0:
      fVar6 = fVar5 * param_2[1] + *param_2 * fVar1 + param_2[2] * fVar2;
      fVar5 = fVar5 * param_1[1] + fVar1 * *param_1 + fVar2 * param_1[2];
      break;
    case (cplane_t)0x1:
      fVar6 = fVar5 * param_2[1] + *param_1 * fVar1 + param_2[2] * fVar2;
      fVar5 = fVar5 * param_1[1] + fVar1 * *param_2 + fVar2 * param_1[2];
      break;
    case (cplane_t)0x2:
      fVar6 = fVar5 * param_1[1] + *param_2 * fVar1 + param_2[2] * fVar2;
      fVar5 = fVar5 * param_2[1] + fVar1 * *param_1 + fVar2 * param_1[2];
      break;
    case (cplane_t)0x3:
      fVar6 = fVar5 * param_1[1] + *param_1 * fVar1 + param_2[2] * fVar2;
      fVar5 = fVar5 * param_2[1] + fVar1 * *param_2 + fVar2 * param_1[2];
      break;
    case (cplane_t)0x4:
      fVar6 = fVar5 * param_2[1] + *param_2 * fVar1 + param_1[2] * fVar2;
      fVar5 = fVar5 * param_1[1] + fVar1 * *param_1 + fVar2 * param_2[2];
      break;
    case (cplane_t)0x5:
      fVar6 = fVar5 * param_2[1] + *param_1 * fVar1 + param_1[2] * fVar2;
      fVar5 = fVar5 * param_1[1] + fVar1 * *param_2 + fVar2 * param_2[2];
      break;
    case (cplane_t)0x6:
      fVar6 = fVar5 * param_1[1] + *param_2 * fVar1 + param_1[2] * fVar2;
      fVar5 = fVar5 * param_2[1] + fVar1 * *param_1 + fVar2 * param_2[2];
      break;
    case (cplane_t)0x7:
      fVar6 = fVar5 * param_1[1] + *param_1 * fVar1 + param_1[2] * fVar2;
      fVar5 = fVar5 * param_2[1] + fVar1 * *param_2 + fVar2 * param_2[2];
    }
  }
  else {
    fVar5 = 0.0;
    fVar6 = fVar5;
  }
  uVar4 = (uint)(*(float *)(param_3 + 0xc) <= fVar6);
  if (fVar5 < *(float *)(param_3 + 0xc)) {
    uVar4 = uVar4 | 2;
  }
  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)