L L4D2node

CModelRender::TimeAverageAmbientLight

0x00186f90 · 179 bytes · __cdecl

_ZN12CModelRender23TimeAverageAmbientLightER15LightingState_tRNS_15ModelInstance_tEfPS0_PK6Vector

Decompiled

undefined (5 params)

/* CModelRender::TimeAverageAmbientLight(LightingState_t&, CModelRender::ModelInstance_t&, float,
   LightingState_t*, Vector const*) */

void CModelRender::TimeAverageAmbientLight
               (LightingState_t *param_1,ModelInstance_t *param_2,float param_3,
               LightingState_t *param_4,Vector *param_5)

{
  float *pfVar1;
  float *pfVar2;
  int iVar3;
  undefined4 *puVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  
  iVar3 = 0;
  if ((float)param_4 <= 0.0) {
    param_4 = (LightingState_t *)0x0;
  }
  pfVar1 = (float *)param_3;
  if (1.0 <= (float)param_4) {
    param_4 = (LightingState_t *)0x3f800000;
  }
  do {
    iVar3 = iVar3 + 1;
    pfVar2 = pfVar1 + 3;
    fVar7 = *(float *)param_5 - (*(float *)param_5 - *pfVar2) * (float)param_4;
    fVar6 = *(float *)(param_5 + 4) - (*(float *)(param_5 + 4) - pfVar1[4]) * (float)param_4;
    fVar5 = *(float *)(param_5 + 8) - (*(float *)(param_5 + 8) - pfVar1[5]) * (float)param_4;
    if (fVar7 <= 0.0) {
      fVar7 = 0.0;
    }
    if (fVar6 <= 0.0) {
      fVar6 = 0.0;
    }
    if (fVar5 <= 0.0) {
      fVar5 = 0.0;
    }
    if (8.0 <= fVar7) {
      fVar7 = 8.0;
    }
    if (8.0 <= fVar6) {
      fVar6 = 8.0;
    }
    if (8.0 <= fVar5) {
      fVar5 = 8.0;
    }
    *pfVar2 = fVar7;
    pfVar1[4] = fVar6;
    pfVar1[5] = fVar5;
    pfVar1 = pfVar2;
    param_5 = param_5 + 0xc;
  } while (iVar3 != 6);
  puVar4 = (undefined4 *)((int)param_3 + 0xc);
  for (iVar3 = 0x12; iVar3 != 0; iVar3 = iVar3 + -1) {
    *(undefined4 *)param_2 = *puVar4;
    puVar4 = puVar4 + 1;
    param_2 = param_2 + 4;
  }
  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)