L L4D2node

CPhysConvert::InputConvertTarget

0x007a00c0 · 1120 bytes · __thiscall

_ZN12CPhysConvert18InputConvertTargetER11inputdata_t

Decompiled

undefined (2 params)

/* WARNING: Type propagation algorithm not settling */
/* CPhysConvert::InputConvertTarget(inputdata_t&) */

void __thiscall CPhysConvert::InputConvertTarget(CPhysConvert *this,inputdata_t *param_1)

{
  uint uVar1;
  int *piVar2;
  code *pcVar3;
  code *pcVar4;
  int *piVar5;
  char cVar6;
  int *piVar7;
  CBaseEntity *pCVar8;
  undefined1 *puVar9;
  float fVar10;
  int iVar11;
  int *piVar12;
  undefined1 *puVar13;
  char *pcVar14;
  float *pfVar15;
  float *pfVar16;
  float fVar17;
  int iVar18;
  int local_828;
  undefined1 *local_820 [516];
  
  pfVar15 = (float *)&stack0xfffff7a4;
  uVar1 = *(uint *)(this + 0x148);
  fVar17 = (float)(uVar1 & 1);
  COutputEvent::FireOutput
            ((COutputEvent *)(this + 0x440),*(CBaseEntity **)param_1,(CBaseEntity *)this,0.0);
  pcVar14 = "";
  if (*(char **)(this + 0x458) != (char *)0x0) {
    pcVar14 = *(char **)(this + 0x458);
  }
  iVar18 = 0;
  piVar7 = (int *)CGlobalEntityList::FindEntityByName
                            ((CGlobalEntityList *)gEntList,(CBaseEntity *)0x0,pcVar14,
                             (CBaseEntity *)0x0,*(CBaseEntity **)param_1,
                             *(CBaseEntity **)(param_1 + 4),(IEntityFindFilter *)0x0);
  pCVar8 = (CBaseEntity *)0x0;
  do {
    pcVar14 = *(char **)(this + 0xf8);
    if (pcVar14 == (char *)0x0) {
      pcVar14 = "";
    }
    pCVar8 = (CBaseEntity *)
             CGlobalEntityList::FindEntityByName
                       ((CGlobalEntityList *)gEntList,pCVar8,pcVar14,(CBaseEntity *)0x0,
                        *(CBaseEntity **)param_1,*(CBaseEntity **)(param_1 + 4),
                        (IEntityFindFilter *)0x0);
    if (pCVar8 == (CBaseEntity *)0x0) {
      if ((piVar7 == (int *)0x0) || (iVar18 < 1)) {
        local_828 = iVar18;
        if (iVar18 == 0) {
          return;
        }
      }
      else {
        local_828 = 1;
      }
      goto LAB_007a0210;
    }
    iVar18 = iVar18 + 1;
    local_820[iVar18] = pCVar8;
  } while (iVar18 != 0x200);
  local_828 = 1;
  if (piVar7 == (int *)0x0) {
    local_828 = iVar18;
  }
LAB_007a0210:
  iVar18 = 0;
  do {
    while (piVar2 = (int *)local_820[iVar18 + 1], *(char *)((int)piVar2 + 0x186) == '\x06') {
      puVar13 = (undefined1 *)piVar2[0x1f];
      *pfVar15 = (float)"ERROR phys_convert %s ! Already MOVETYPE_VPHYSICS\n";
      puVar9 = &DAT_00d539c2;
      if (puVar13 != (undefined1 *)0x0) {
        puVar9 = puVar13;
      }
      iVar18 = iVar18 + 1;
      pfVar15[1] = (float)puVar9;
      pfVar15[-1] = 1.120476e-38;
      Msg();
      if (local_828 <= iVar18) {
        return;
      }
    }
    *pfVar15 = (float)piVar2;
    pfVar15[-1] = 1.1204813e-38;
    UnlinkFromParent((CBaseEntity *)*pfVar15);
    pfVar16 = pfVar15;
    if (piVar7 != (int *)0x0) {
      iVar11 = *piVar2;
      *pfVar15 = (float)piVar2;
      pcVar3 = *(code **)(iVar11 + 0x298);
      pfVar15[-1] = 1.1204841e-38;
      (*pcVar3)();
      pcVar3 = *(code **)(*piVar2 + 0x70);
      iVar11 = *piVar7;
      pfVar15[1] = (float)piVar7;
      *pfVar15 = (float)local_820;
      pcVar4 = *(code **)(iVar11 + 0x20);
      pfVar15[-1] = 1.1204882e-38;
      (*pcVar4)();
      pfVar16 = pfVar15 + -1;
      pfVar15[-1] = (float)piVar2;
      puVar13 = &DAT_00d539c2;
      if (local_820[0] != (undefined1 *)0x0) {
        puVar13 = local_820[0];
      }
      *pfVar15 = (float)puVar13;
      pfVar15[-2] = 1.1204921e-38;
      (*pcVar3)();
    }
    iVar11 = *piVar2;
    *pfVar16 = (float)piVar2;
    pcVar3 = *(code **)(iVar11 + 0x1c);
    pfVar16[-1] = 1.1204932e-38;
    fVar10 = (float)(*pcVar3)();
    iVar11 = *modelinfo;
    pfVar16[1] = fVar10;
    *pfVar16 = (float)modelinfo;
    pcVar3 = *(code **)(iVar11 + 8);
    pfVar16[-1] = 1.1204958e-38;
    fVar10 = (float)(*pcVar3)();
    if (fVar10 == 0.0) {
LAB_007a02fc:
      pfVar16[2] = 1.4013e-45;
      pfVar16[1] = -NAN;
      *pfVar16 = (float)"simple_physics_prop";
      pfVar16[-1] = 1.120504e-38;
      piVar12 = (int *)CreateEntityByName((char *)*pfVar16,(int)pfVar16[1],*(bool *)(pfVar16 + 2));
    }
    else {
      iVar11 = *modelinfo;
      pfVar16[1] = fVar10;
      *pfVar16 = (float)modelinfo;
      pcVar3 = *(code **)(iVar11 + 0x2c);
      pfVar16[-1] = 1.1204989e-38;
      iVar11 = (*pcVar3)();
      if (iVar11 != 1) goto LAB_007a02fc;
      pfVar16[2] = 1.4013e-45;
      pfVar16[1] = -NAN;
      *pfVar16 = (float)"simple_physics_brush";
      pfVar16[-1] = 1.1205741e-38;
      piVar12 = (int *)CreateEntityByName((char *)*pfVar16,(int)pfVar16[1],*(bool *)(pfVar16 + 2));
    }
    pcVar3 = *(code **)(*piVar12 + 0x84);
    iVar11 = *piVar2;
    pfVar16[1] = (float)piVar2;
    *pfVar16 = (float)local_820;
    pcVar4 = *(code **)(iVar11 + 0x20);
    pfVar16[-1] = 1.1205088e-38;
    (*pcVar4)();
    pfVar15 = pfVar16 + -1;
    *pfVar16 = (float)"model";
    pfVar16[-1] = (float)piVar12;
    puVar13 = &DAT_00d539c2;
    if (local_820[0] != (undefined1 *)0x0) {
      puVar13 = local_820[0];
    }
    pfVar16[1] = (float)puVar13;
    pfVar16[-2] = 1.1205147e-38;
    (*pcVar3)();
    if ((*(byte *)((int)piVar2 + 0x14d) & 8) != 0) {
      pfVar16[-1] = (float)piVar2;
      pfVar16[-2] = 1.120569e-38;
      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar16[-1]);
    }
    pfVar16[-1] = (float)piVar12;
    *pfVar16 = (float)(piVar2 + 0xb8);
    pfVar16[-2] = 1.120519e-38;
    CBaseEntity::SetAbsOrigin((CBaseEntity *)pfVar16[-1],(Vector *)*pfVar16);
    if ((*(byte *)((int)piVar2 + 0x14d) & 8) != 0) {
      pfVar16[-1] = (float)piVar2;
      pfVar16[-2] = 1.1205668e-38;
      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar16[-1]);
    }
    pfVar16[-1] = (float)piVar12;
    *pfVar16 = (float)(piVar2 + 0xdf);
    pfVar16[-2] = 1.1205234e-38;
    CBaseEntity::SetAbsAngles((CBaseEntity *)pfVar16[-1],(QAngle *)*pfVar16);
    iVar11 = *piVar12;
    pfVar16[-1] = (float)piVar12;
    pcVar3 = *(code **)(iVar11 + 100);
    pfVar16[-2] = 1.1205245e-38;
    (*pcVar3)();
    *pfVar16 = (float)piVar12;
    pfVar16[-1] = (float)piVar2;
    pfVar16[1] = (float)(uint)(byte)(SUB41(fVar17,0) ^ 1);
    pfVar16[-2] = 1.1205276e-38;
    cVar6 = TransferPhysicsObject
                      ((CBaseEntity *)pfVar16[-1],(CBaseEntity *)*pfVar16,*(bool *)(pfVar16 + 1));
    if (cVar6 == '\0') {
      pfVar16[3] = 0.0;
      pfVar16[1] = 5.73972e-42;
      *pfVar16 = 8.40779e-45;
      pfVar16[-1] = (float)piVar12;
      pfVar16[2] = fVar17;
      pfVar16[-2] = 1.1205604e-38;
      CBaseEntity::VPhysicsInitNormal();
      if ((uVar1 & 2) != 0) {
        *pfVar16 = 1.4013e-45;
        pfVar16[-1] = (float)piVar12;
        pfVar16[-2] = 1.1205646e-38;
        CBaseEntity::SetCollisionGroup((CBaseEntity *)pfVar16[-1],(int)*pfVar16);
      }
    }
    if ((0.0 < *(float *)(this + 0x45c)) && (piVar5 = (int *)piVar12[0x8e], piVar5 != (int *)0x0)) {
      iVar11 = *piVar5;
      *pfVar16 = *(float *)(this + 0x45c);
      pfVar16[-1] = (float)piVar5;
      pcVar3 = *(code **)(iVar11 + 0x74);
      pfVar16[-2] = 1.1205349e-38;
      (*pcVar3)();
    }
    iVar18 = iVar18 + 1;
    piVar12[0x55] = piVar2[0x55];
    *pfVar16 = (float)piVar12;
    pfVar16[-1] = (float)piVar2;
    pfVar16[-2] = 1.1205386e-38;
    UTIL_TransferPoseParameters((CBaseEntity *)pfVar16[-1],(CBaseEntity *)*pfVar16);
    *pfVar16 = (float)piVar12;
    pfVar16[-1] = (float)piVar2;
    pfVar16[-2] = 1.1205403e-38;
    TransferChildren((CBaseEntity *)pfVar16[-1],(CBaseEntity *)*pfVar16);
    *pfVar16 = (float)(uint)(*(ushort *)(piVar2 + 0x6d) | 4);
    pfVar16[-1] = (float)(piVar2 + 0x65);
    pfVar16[-2] = 1.1205447e-38;
    CCollisionProperty::SetSolidFlags((CCollisionProperty *)pfVar16[-1],(int)*pfVar16);
    *pfVar16 = 4.48416e-44;
    pfVar16[-1] = (float)piVar2;
    pfVar16[-2] = 1.1205469e-38;
    CBaseEntity::AddEffects((CBaseEntity *)pfVar16[-1],(int)*pfVar16);
    pfVar16[-1] = (float)piVar2;
    pfVar16[-2] = 1.120548e-38;
    UTIL_Remove((CBaseEntity *)pfVar16[-1]);
    if (local_828 <= iVar18) {
      return;
    }
  } while( 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)