L L4D2node

CEdgeList::IntroduceSingleActiveEdge

0x001cc300 · 190 bytes · __thiscall

_ZN9CEdgeList25IntroduceSingleActiveEdgeEPKNS_6Edge_tEf

Decompiled

undefined (3 params)

/* CEdgeList::IntroduceSingleActiveEdge(CEdgeList::Edge_t const*, float) */

void __thiscall CEdgeList::IntroduceSingleActiveEdge(CEdgeList *this,Edge_t *param_1,float param_2)

{
  float *pfVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  
  pfVar1 = (float *)(*(int *)(this + 0xa4) + *(int *)(param_1 + 0x24) * 0x28);
  if (pfVar1[7] != 0.0) {
    *(float *)((int)pfVar1[7] + 0x18) = pfVar1[6];
    *(float *)((int)pfVar1[6] + 0x1c) = pfVar1[7];
    pfVar1[7] = 0.0;
    pfVar1[6] = 0.0;
    return;
  }
  fVar4 = (pfVar1[3] - *pfVar1 * *(float *)(param_1 + 0x20)) - param_2 * pfVar1[1];
  pfVar1[5] = fVar4;
  fVar2 = *(float *)(this + 0xe8);
  while( true ) {
    fVar3 = *(float *)((int)fVar2 + 0x14) - fVar4;
    if ((-1e-06 < fVar3) && ((1e-06 <= fVar3 || (*(float *)((int)fVar2 + 4) < pfVar1[1])))) break;
    fVar2 = *(float *)((int)fVar2 + 0x1c);
  }
  pfVar1[7] = fVar2;
  pfVar1[6] = *(float *)((int)fVar2 + 0x18);
  *(float **)((int)fVar2 + 0x18) = pfVar1;
  *(float **)((int)pfVar1[6] + 0x1c) = pfVar1;
  return;
}

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)