DB/ItemDisplayInfo: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 46: | Line 46: | ||
As an example (to explain my notation above), if you had Gloves, a Shirt, and a Chestpiece, the game would first look at the gloves and check if your geosetGroup[0] was 0. If it was 0, then you would have normal, fitting gloves, and there would be no conflict with the 801 series geosets that the Chestpiece or Shirt might want to set, and then it would look at the Chestpiece for the same thing (and lastly the Shirt). If it wasn't 0, it would set your appropriate geoset (401 + geosetGroup[0]) and never even look at the geosetGroup[0] entry for your Shirt or Chestpiece (i.e. they would be totally irrelevant, the gloves would be dominant). | As an example (to explain my notation above), if you had Gloves, a Shirt, and a Chestpiece, the game would first look at the gloves and check if your geosetGroup[0] was 0. If it was 0, then you would have normal, fitting gloves, and there would be no conflict with the 801 series geosets that the Chestpiece or Shirt might want to set, and then it would look at the Chestpiece for the same thing (and lastly the Shirt). If it wasn't 0, it would set your appropriate geoset (401 + geosetGroup[0]) and never even look at the geosetGroup[0] entry for your Shirt or Chestpiece (i.e. they would be totally irrelevant, the gloves would be dominant). | ||
As of last edit, this list is nowhere near comprehensive (unlike the Fields Meaning list), so here is the full geoset enable/disable code that was decompiled from the WoD internal build (and subsequently prettified to make it almost readable): | As of last edit, this list is nowhere near comprehensive (unlike the Fields Meaning list), so here is the full geoset enable/disable code that was decompiled from the WoD internal build (and subsequently prettified to make it almost readable): [[DB/ItemDisplayInfo/GeosRenderPrep]] | ||
==m_texture indices== | ==m_texture indices== |
Revision as of 00:50, 22 February 2016
Contains information about how items display.
If somebody wants to break the following two sections out into a real 'Geoset' article, go ahead. Just make sure to link M2, SKIN, ItemDisplayInfo, and CreatureDisplayInfoExtra pages to it.
Geoset Group Field Meaning
Each geosetGroup field is a modifier for a specific 'group' of geosets. For example, on a pair of gloves, geosetGroup[0] refers to the '401' set of geosets. If geosetGroup[0] was '2' on a pair of gloves, it means that you should enable mesh part ID '403' in the M2.
These vary based on the slot of the item.
Head: {} Shoulder: {} Cloak: {geosetGroup[0] = 1501} Chest: {geosetGroup[0] = 801, geosetGroup[1] = 1001, geosetGroup[2] = 1301} Shirt: {geosetGroup[0] = 801, geosetGroup[1] = 1001} Tabard: {geosetGroup[0] = 1201} Gloves: {geosetGroup[0] = 401} Belt: {geosetGroup[0] = 1801} Pants: {geosetGroup[0] = 1101, geosetGroup[1] = 901, geosetGroup[2] = 1301} Boots: {geosetGroup[0] = 501, geosetGroup[1] = 2000*} Weapon: {} Shield: {} Ammo: {}
group values:
4: {0: No Geoset; 1: Default; 2: Thin; 3: Folded; 4: Thick} 5: {0: No Geoset; 1: Default; 2: High Boot; 3: Folded Boot; 4: Puffed; 5: Boot 4} 8: {1: Default (No Geoset); 2: Flared Sleeve; 3: Puffy Sleeve; 4: Panda Collar Shirt} 9: {1: Default (No Geoset); 2: Flared Pant Cuff; 3: Knickers; 4: Panda Pants} 10: {1: Default (No Geoset); 2: Doublet; 3: Body 2; 4: Body 3} 11: {1: Default (No Geoset); 2: Mini Skirt; 4: Heavy} 12: {1: Default (No Geoset); 2: Tabard} 13: {0: No Geoset; 1: Default; 2: Long Skirt} 15: {1: Default (No Geoset); 2: Ankle Length; 3: Knee Length; 4: Split Banner; 5: Tapered Waist; 6: Notched Back; 7: Guild Cloak; 8: Split (Long); 9: Tapered (Long); 10: Notched (Long)} 18: {0: No Geoset; 1: Default; 2: Heavy Belt; 3: Panda Cord Belt} 20: {0: No Geoset; 1: Default (Basic Shoes); 2: Toes}
* This is not a typo. If you are not wearing boots, you get geoset 2001. If you are wearing boots and geosetGroup[1] for your boots is 0, you get 2002. If you are wearing boots and your geosetGroup[1] is non-zero, you get 2000 + geosetGroup[1].
Geoset Priorities
Unfortunately, since many of these are the same across items, you can have items (say, a Shirt and a Chestpiece) with different geosets. The game resolves this using a hardcoded priority that is confusing as hell to follow. I will attempt to simplify it here.
Gloves geosetGroup[0] (401 set) > Chest geosetGroup[0] (801 set) > Shirt geosetGroup[0] (801 set) Belt geosetGroup[0] (1801 set) > Tabard geosetGroup[0] (1201 set) Chest geosetGroup[2] (1301 set) > Pants geosetGroup[2] (1301 set) > Boots geosetGroup[0] (501 set) > Pants geosetGroup[1] (901 set)
As an example (to explain my notation above), if you had Gloves, a Shirt, and a Chestpiece, the game would first look at the gloves and check if your geosetGroup[0] was 0. If it was 0, then you would have normal, fitting gloves, and there would be no conflict with the 801 series geosets that the Chestpiece or Shirt might want to set, and then it would look at the Chestpiece for the same thing (and lastly the Shirt). If it wasn't 0, it would set your appropriate geoset (401 + geosetGroup[0]) and never even look at the geosetGroup[0] entry for your Shirt or Chestpiece (i.e. they would be totally irrelevant, the gloves would be dominant).
As of last edit, this list is nowhere near comprehensive (unlike the Fields Meaning list), so here is the full geoset enable/disable code that was decompiled from the WoD internal build (and subsequently prettified to make it almost readable): DB/ItemDisplayInfo/GeosRenderPrep
m_texture indices
enum { ArmUpperTexture, ArmLowerTexture, HandTexture, TorsoUpperTexture, TorsoLowerTexture, LegUpperTexture, LegLowerTexture, FootTexture, #if version > ???? // at least in 6.0.1, probably cata AccessoryTexture, #endif };
6.0.1.18179
struct ItemDisplayInfoRec { uint32_t m_ID; stringref m_modelName[2]; stringref m_modelTexture[2]; uint32_t m_geosetGroup[3]; uint32_t m_flags; foreign_keyⁱ<uint32_t, &SpellVisualRec::m_ID> m_spellVisualID; foreign_keyⁱ<uint32_t, &HelmetGeosetVisDataRec::m_ID> m_helmetGeosetVis[2]; stringref m_texture[9]; foreign_keyⁱ<uint32_t, &ItemVisualsRec::m_ID> m_itemVisual; foreign_keyⁱ<uint32_t, &ParticleColorRec::m_ID> m_particleColorID; };
6.0.3.19243
struct ItemDisplayInfoRec { uint32_t m_ID; stringref m_modelName[2]; foreign_keyⁱ<uint32_t, &TextureFileDataRec::TextureItemID> m_modelTexture[2]; uint32_t m_geosetGroup[3]; uint32_t m_flags; foreign_keyⁱ<uint32_t, &SpellVisualRec::m_ID> m_spellVisualID; foreign_keyⁱ<uint32_t, &HelmetGeosetVisDataRec::m_ID> m_helmetGeosetVis[2]; foreign_keyⁱ<uint32_t, &TextureFileDataRec::m_TextureItemID> m_texture[9]; foreign_keyⁱ<uint32_t, &ItemVisualsRec::m_ID> m_itemVisual; foreign_keyⁱ<uint32_t, &ParticleColorRec::m_ID> m_particleColorID; };
3.0.2.8905
Column | Field | Type | Notes |
---|---|---|---|
1 | ID | Integer | |
2 | LeftModel | String | For example at shoulders. Defineing the pairs. |
3 | RightModel | String | |
4 | LeftModelTexture | String | And of course the textures, if not hardcoded. Replaces texture type 2. |
5 | RightModelTexture | String | |
6 | Icon1 | String | The icon displayed in the bags etc. |
7 | Icon2 | String | This is only used on Cro's apples which can be crushed. Sadly the icon then is a green instead of red apple. |
8 | geosetGroup | Integer | explanation, if non-0, add 1, add group. [item-slot=chest/shirt: wristbands (8)]; [item-slot=glove: glove (4)]; [item-slot=boots: boots (5)]; [item-slot=cape: cape (15)] |
9 | geosetGroup | Integer | [item-slot=pants: kneepads (9)] |
10 | geosetGroup | Integer | [item-type=chest.robe: 1 = has_robe]; [geoset trousers == 1: trousers (12)] |
11 | flags | Integer | |
12 | spellVisualID | Integer | |
13 | groupSoundIndex | iRefID | |
14 | helmetGeosetVis | iRefID | For Male |
15 | helmetGeosetVis | iRefID | For Female |
16 | UpperArmTexture | String | |
17 | LowerArmTexture | String | |
18 | HandsTexture | String | |
19 | UpperTorsoTexture | String | |
20 | LowerTorsoTexture | String | |
21 | UpperLegTexture | String | |
22 | LowerLegTexture | String | |
23 | FootTexture | String | |
24 | itemVisual | iRefID | Static enchants. A few values have -1. Probably does not allow additional effects ? |
25 | particleColorID | Integer |