Hi moe,
From what I understand "Actor" is a kind of threading model where basically they all talk to each other during an update loop. In the exe they're called RActors (based on log messages and debug strings) but there are also Actors which are the SNO (serialized objects? haven't found what it stands for) objects from MPQs. Maybe the extra R stands for Realized, Real or Realm? Anyways, I'm not sure if that is at all related to the threading system, but that is what I suspect
If this made you more confused than not then just ignore, I'm being geeky
- Actor = "Entity" that exists in the world, it has a physical body.
- ActorCommonData (ACD) = Data potentially "attached" to an Actor (linked with IDs). Inventory items for instance has no Actor.
For chests specifically I would be satisfied with ACDs, and that could be done with:
ActorCommonDataHelper.Enumerate(a => a.x180_GizmoType == GizmoType.Chest)
If that would be good enough for you I don't know, you'll just have to test
Saw there are 2 other chest gizmo types that you might want to include depending on what you want exactly.
If you're instead interested in the information contained in Actor struct and want to enumerate those then it's the same as enumerating ACDs. They're both contained in an ExpandableContainer, the one for Actors are at
ObjectManager.x910_RActors
You can also use the ActorID in an ACD to get the specific Actor that is related to it (ID -1 = none). Just remember to cast the ID to a short in order to get the index out of it.
I'm currently working on re-implementing my super old Map"Hack" (Radar) based on Enigma.D3, so I'll (hopefully) be adding some high performance enumeration/dump methods later
I'm expecting to include that project on the svn repo.
Best regards,
Enigma