L L4D2node

CParticleSystemDefinition::Write

0x00bd2200 · 329 bytes · __thiscall

_ZN25CParticleSystemDefinition5WriteEv

Decompiled

undefined (1 param)

/* CParticleSystemDefinition::Write() */

CDmxElement * __thiscall CParticleSystemDefinition::Write(CParticleSystemDefinition *this)

{
  char *pcVar1;
  CDmxElement *this_00;
  CDmxAttribute *this_01;
  
  pcVar1 = CUtlString::operator_cast_to_char_((CUtlString *)(this + 0x2f8));
  this_00 = (CDmxElement *)CreateDmxElement("DmeParticleSystemDefinition");
  CDmxElement::LockForChanges(this_00,true);
                    /* try { // try from 00bd2245 to 00bd2255 has its CatchHandler @ 00bd2349 */
  this_01 = (CDmxAttribute *)CDmxElement::AddAttribute(this_00,"name");
  CDmxAttribute::SetValue(this_01,pcVar1);
  if (this_00 != (CDmxElement *)0x0) {
    CDmxElement::LockForChanges(this_00,false);
  }
  CDmxElement::AddAttributesFromStructure(this_00,this,s_pParticleSystemDefinitionUnpack);
  WriteOperators(this,this_00,"renderers",(CUtlVector *)(this + 0x31c));
  WriteOperators(this,this_00,"operators",(CUtlVector *)(this + 0x308));
  WriteOperators(this,this_00,"initializers",(CUtlVector *)(this + 0x330));
  WriteOperators(this,this_00,"emitters",(CUtlVector *)(this + 0x344));
  WriteChildren(this,this_00);
  WriteOperators(this,this_00,"forces",(CUtlVector *)(this + 0x358));
  WriteOperators(this,this_00,"constraints",(CUtlVector *)(this + 0x36c));
  return this_00;
}

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)