EMPulseClass: Difference between revisions
Appearance
en>Pd |
en>Pd m ARGH |
||
| Line 34: | Line 34: | ||
|- | |- | ||
| align="right" | [[EMPulseClass - Member Variables|Go to Member Variables]] | | align="right" | [[EMPulseClass - Member Variables|Go to Member Variables]] | ||
|} | |||
==Virtual Table== | ==Virtual Table== | ||
Revision as of 07:39, 15 June 2007
The EMPulse class controls EMP effects in the game which can be enabled by the EMEffect tag.
Class specifications
| Property | Value |
|---|---|
| General: | |
| Derivation | AbstractClass → EMPulseClass |
| GUID | {B825CB22-11D2-200E-6000-A99F58D49A08} |
| VT address (YR 1.001) | 0x7E87A8 |
| Size of member data (YR 1.001) | 0x34 bytes |
| AbstractClass derivative: | |
| AbstractDerivation ID | 0x37 |
Member variables
| Offset | Type | Name | Description |
|---|---|---|---|
| AbstractClass: | |||
| 0x0 | ptr | VirtualTable | Pointer to the class's Virtual Table |
| 0x4 | ptr | IRTTITypeInfo VTable | Pointer to an extended VTable (not sure what exactly it does) |
| 0x8 | ptr | INoticeSink VTable | Pointer to an extended VTable (not sure what exactly it does) |
| 0xC | ptr | INoticeSource VTable | Pointer to an extended VTable (not sure what exactly it does) |
| 0x10 | DWORD | unknown | |
| 0x14 | DWORD | DerivationFlags | Bit 0: set if the instance is or derives from a TechnoClass Bit 1: set if the instance is or derives from a ObjectClass Bit 2: set if the instance is or derives from a FootClass |
| 0x18 | DWORD | unknown | |
| 0x1C | DWORD | unknown | |
| 0x20 | bool | Dirty | Was the object changed since it was last saved? |
| 0x21 | BYTE | unused | |
| 0x22 | WORD | unused | |
| EMPulseClass: | |||
| 0x24 | short | OriginCell_X | X coordinate of the origin cell of the EMP effect |
| 0x26 | short | OriginCell_Y | Y coordinate of the origin cell of the EMP effect |
| 0x28 | int | Spread | Cell spreading radius of the EMP effect |
| 0x2C | int | CreationTime | Time point at which this EMPulse instance has been created |
| 0x30 | int | Duration | Duration the EMP effect lasts |
| Go to Member Variables |
Virtual Table
| Offset | Return Type | Name | Arguments | Description |
|---|---|---|---|---|
| IUnknown: | ||||
| 0x0 | HRESULT | QueryInterface | REFIID iid void ** ppvObject |
MSDN: "Returns a pointer to a specified interface on an object to which a client currently holds an interface pointer." |
| 0x4 | ULONG | AddRef | none | MSDN: "[...] increments the reference count for an interface on an object. It should be called for every new copy of a pointer to an interface on a given object." |
| 0x8 | ULONG | Release | none | MSDN: "Decrements the reference count for the calling interface on a object. If the reference count on the object falls to 0, the object is freed from memory." |
| IPersist: | ||||
| 0xC | HRESULT | GetClassID | CLSID * pClassID | MSDN: "Retrieves the class identifier (CLSID) of an object. The CLSID is a unique value that identifies the code that can manipulate the persistent data." |
| IPersistStream: | ||||
| 0x10 | HRESULT | IsDirty | none | MSDN: "Checks the object for changes since it was last saved." |
| 0x14 | HRESULT | Load | IStream* stream AbstractClass* dst |
MSDN: "Initializes an object from the stream where it was previously saved." |
| 0x18 | HRESULT | Save | IStream* stream AbstractClass* src (3rd is unknown) |
MSDN: "Saves an object to the specified stream." |
| 0x1C | HRESULT | GetMaxSize | ULARGE_INTEGER * pcbSize | MSDN: "Returns the size in bytes of the stream needed to save the object." |
| AbstractClass: | ||||
| 0x20 | none (DTOR) | Destructor | none | Frees memory and removes this instance from global arrays. |
| 0x24 | unknown | unknown | unknown | |
| 0x28 | unknown | unknown | unknown | |
| 0x2C | int | GetAbstractDerivationID | none | Gets the AbstractDerivationID of this class. Used to find out "what something is". |
| 0x30 | int | GetSize | none | Gets the size of the member data. |
| 0x34 | unsigned long | GetCRC | unknown | Calculates a CRC sum of this instance. |
| 0x38 | int | GetOwningHouseIndex | none | Gets the index of the House (player) who owns this object. |
| 0x3C | HouseClass* | GetOwningHouse | none | Gets a pointer to the House (player) who owns this object. |
| 0x40 | int | GetArrayIndex | none | Gets the index of this class instance in the global array. This will return 0 for abstract classes. |
| 0x44 | bool | IsDead | none | Finds out whether this instance is dead. This is only used for "living" objects with a health. |
| 0x48 | void | Get3DCoords | int* dst_xyz | Loads 3D coordinates into dst_xyz. |
| 0x4C | void | Get3DCoords_var | int* dst_xyz | Loads 3D coordinates into variables, then into dst_xyz. This method is obsolete (use 0x48). |
| 0x50 | unknown | unknown | unknown | |
| 0x54 | unknown | unknown | unknown | |
| 0x58 | unknown | unknown | unknown | |
| 0x5C | void | AdvanceFrame | none | This is an updating routine, called every frame. |
Member functions
| Address (YR 1.001) | Return Type | Name | Arguments | Description |
|---|---|---|---|---|
| 0x4C52B0 | ptr (CTOR) | Constructor | DWORD CellCoords int CellSpread int Duration (4th unknown) |
Creates an instance. |
| 0x4C5370 | ptr (CTOR) | Constructor | none | Creates an instance without any initialization. |
| 0x4C54E0 | void | Init | 1, unknown | Initializes the EMP and freezes nearby units (see EMEffect) |