12,236
edits
m (Spaceeinstein moved page IDE to Item Definition over redirect) |
(contributions from myself, Aschratt, DK22Pac, MarioSonic2987, Solom, and The Hero) |
||
Line 1: | Line 1: | ||
{{IdeSection | {{IdeSection | ||
| noheader = 1 | |noheader = 1 | ||
}} | }} | ||
Line 24: | Line 24: | ||
== Format == | == Format == | ||
The following table contains | The following table contains all known sections in the item definition. The supported games column lists games that support the sections but it doesn't necessarily means they're functional in the games. | ||
{| class="wikitable" | {|class="mw-collapsible wikitable center-col-1 center-col-2" style="width: 100%;" | ||
! | !style="width: 7em;"|Section | ||
! | !style="width: 8em;"|Supported games | ||
! Description | !Description | ||
|- | |||
|<code>[[OBJS|objs]]</code>||{{Icon|t}} {{Icon|4}}||Defines simple objects. They can be placed into the world through the <code>[[INST|inst]]</code> section of the [[Item Placement|item placement]] files. | |||
|- | |||
|<code>[[TOBJ|tobj]]</code>||{{Icon|t}} {{Icon|4}}||Defines time objects. The section functions similarly to <code>objs</code> but has two additional parameters defining the in-game time range the object can get rendered. These objects can be placed into the world through the <code>inst</code> section of the item placement files. | |||
|- | |||
|<code>[[HIER|hier]]</code>||{{Icon|t}} {{Icon|4}}||Defines clump objects for use in cutscenes. | |||
|- | |||
|<code>[[CARS (IDE Section)|cars]]</code>||{{Icon|t}} {{Icon|4}}||Defines vehicle objects. | |||
|- | |||
|<code>[[PEDS|peds]]</code>||{{Icon|t}} {{Icon|4}}||Defines pedestrian objects (random NPC's). | |||
|- | |- | ||
| < | |<code>[[PATH (IDE Section)|path]]</code>||{{Icon|3}} {{Icon|SA}}||Adds path nodes to defined objects. This section is unstable in Vice City. | ||
|- | |- | ||
| < | |<code>[[2DFX|2dfx]]</code>||{{Icon|3}} {{Icon|VC}} {{Icon|SA}} {{Icon|4}}||Adds particle effects and simple ped behaviors to defined objects. | ||
|- | |- | ||
| < | |<code>[[WEAP|weap]]</code>||{{Icon|VC}} {{Icon|SA}} {{Icon|4}}||Defines weapon objects. | ||
|- | |- | ||
| < | |<code>[[ANIM|anim]]</code>||{{Icon|SA}} {{Icon|4}}||Defines animated objects. The section functions similarly to <code>objs</code> but has one additional parameter indicating an IFP or WAD animation file to assign an animation to the object. These objects can be placed into the world through the <code>inst</code> section of the item placement files. | ||
|- | |- | ||
| < | |<code>[[TXDP|txdp]]</code>||{{Icon|SA}} {{Icon|4}}||Used to virtually extend [[Texture Archive|texture dictionaries]]. | ||
|- | |- | ||
| < | |<code>[[TANM|tanm]]</code>||{{Icon|4}}||Used to combine <code>tobj</code> and <code>anim</code> sections.<br>Those objects get placed inside the <code>inst</code> section of the WPL. | ||
|- | |- | ||
| < | |<code>[[TREE|tree]]</code>||||This section is read in GTA IV but is not functional. | ||
|- | |- | ||
| < | |<code>[[VNOD|vnod]]</code>||{{Icon|4}}||– | ||
|- | |- | ||
| < | |<code>[[LINK|link]]</code>||{{Icon|4}}||– | ||
|- | |- | ||
| < | |<code>[[MLO|mlo]]</code>||{{Icon|4}}||Used to create [[interior]]s. This section does also contain information about portals (previous <code>[[ENEX|enex]]</code> connections) and dimensions of the interior which influences certain aspects, like the weather, for example. All objects are placed relative to an offset placed using <code>mlo+</code> inside the IPL or WPL file. | ||
|- | |- | ||
| < | |<code>[[AMAT|amat]]</code>||{{Icon|4}}||This is Audio Materials. Possible Used to make a sound effect at the model. Usually used for dynamic objects. | ||
|- | |- | ||
| < | |<code>[[LODM|lodm]]</code>||||This is read in GTA IV but section is not functional. | ||
|- | |- | ||
| < | |<code>[[AGRPS|agrps]]</code>||{{Icon|4}}||– | ||
|- | |- | ||
| < | |<code>[[HAND|hand]]</code>||VC Xbox/Mobile||– | ||
|} | |} | ||
== IDE Flags == | == IDE Flags == | ||
Flags are used in order to specify the behaviour of objects. They are interpreted as signed 32-bit integer values where each bit describes a [[wp:Boolean_algebra_(logic)|boolean]] value of a different aspect. | Flags are used in order to specify the behaviour of objects. They are interpreted as signed 32-bit integer values where each bit describes a [[wp:Boolean_algebra_(logic)|boolean]] value of a different aspect. | ||
=== GTA III === | |||
{| class="wikitable" | |||
! Bits !! Dec !! Hex !! Name !! Description !! Examples | |||
|- | |||
| 0 || 1 || 0x1 || - || Cull model if player doesn't look at it? Read, but ignored. || Fences | |||
|- | |||
| 1 || 2<ref name="III">[http://www.gtaforums.com/index.php?showtopic=102833&view=findpost&p=1067607073 Screenshots of flags in GTA III], by {{U|spaceeinstein}}</ref> || 0x2 || DO_NOT_FADE || Do not fade the object when it is being loaded into or out of view. || Some lampposts | |||
|- | |||
| 2 || 4<ref name="III" /> || 0x4 || DRAW_LAST || Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. || Trees | |||
|- | |||
| 3 || 8 || 0x8 || ADDITIVE || Render with additive blending. Previous flag must be enabled too. || | |||
|- | |||
| 4 || 16<ref name="III" /> || 0x10 || IS_SUBWAY || Model is a tunnel, i.e. set the object as invisible unless the player enters [[Cullzone.dat|cull zone flag 128]]. This flag works only with static models. || Tunnels, some dynamic objects | |||
|- | |||
| 5 || 32 || 0x20 || IGNORE_LIGHTING || Don't use static lighting, we want dynamic if it's possible. || Some lampposts and trafficlights | |||
|- | |||
| 6 || 64<ref name="III" /> || 0x40 || NO_ZBUFFER_WRITE || Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. Not implemented in the PS2 version. || Shadow | |||
|} | |||
=== GTA Vice City === | |||
{| | {| class="wikitable" | ||
! | ! Bits !! Dec !! Hex !! Name !! Description !! Examples | ||
! | |||
! | |||
! Description | |||
|- | |- | ||
| | | 0 || 1 || 0x1 || IS_ROAD || Identifies objects to draw "wet reflections" on them. || Roads | ||
|- | |- | ||
| | | 1 || 2 || 0x2 || DO_NOT_FADE || Do not fade the object when it is being loaded into or out of view. || Some night objects, North Point Mall | ||
|- | |- | ||
| | | 2 || 4 || 0x4 || DRAW_LAST || Model is transparent. Render this object after all opaque objects, allowing transparencies of other objects to be visible through this object. || Fencse, trees | ||
|- | |- | ||
| | | 3 || 8 || 0x8 || ADDITIVE || Render with additive blending. Previous flag will be enabled automatically. || Night windows | ||
|- | |- | ||
| | | 4 || 16 || 0x10 || - || Read, but not used. || _dy, _dt objects | ||
|- | |- | ||
| | | 5 || 32 || 0x20 || IGNORE_LIGHTING || Don't use static lighting, we want dynamic if it's possible. || Interior objects | ||
|- | |- | ||
| | | 6 || 64 || 0x40 || NO_ZBUFFER_WRITE || Model is a shadow. Disable writing to z-buffer when rendering it, allowing transparencies of other objects, shadows, and lights to be visible through this object. || Tree shadows | ||
|- | |- | ||
| | | 7 || 128 || 0x80 || DONT_RECEIVE_SHADOWS || Do not draw dynamic shadows on this object. || Small objects, pickups, lamps, trees | ||
|- | |- | ||
| | | 8 || 256 || 0x100 || IGNORE_DRAW_DISTANCE || Ignore draw distance for this object (sets its "level" (island id) to 0). || LOD models, North Bridge | ||
|- | |- | ||
| | | 9 || 512 || 0x200 || IS_GLASS_TYPE_1 || Breakable glass type 1: glass object changes its textures when breaking. || Small windows | ||
|- | |- | ||
| | | 10 || 1024 || 0x400 || IS_GLASS_TYPE_2 || Breakable glass type 2: glass object doesn't change its textures when breaking. || Large windows | ||
|} | |||
==== Reference table ==== | |||
{| class="wikitable" | |||
! Bits !! Dec !! Hex !! Name !! Model info flag !! Ref address !! Ref description | |||
|- | |- | ||
| | | 0 || 1 || 0x01 || IS_ROAD || 0x04 || 0x4CA1D7 || '''<code>CRenderer::RenderRoads()</code>''' | ||
{{Pre|1= | |||
if (CModelInfo::GetModelInfo(entity->m_nModelIndex)->m_nFlags & IS_ROAD) | |||
entity->Render(); | |||
}} | |||
|- | |- | ||
| | | 1 || 2 || 0x02 || DO_NOT_FADE || 0x20 || 0x4C7E03 || '''<code>CRenderer::ShouldModelBeStreamed(CEntity *,CVector const&)</code>''' | ||
{{Pre|1= | |||
if (model->m_nFlags & DO_NOT_FADE) { | |||
if (distance >= model->GetLargestLodDistance() + 30.0f) | |||
return true; | |||
} | |||
else if ( distance >= model->GetLargestLodDistance() + 50.0f) | |||
return true; | |||
}} | |||
|- | |- | ||
| | | 2 || 4 || 0x04 || DRAW_LAST || 0x40 || 0x56F4F3 || '''<code>CSimpleModelInfo::SetupBigBuilding(int,int)</code>''' | ||
{{Pre|1= | |||
if (model->m_nFlags & DRAW_LAST) { | |||
model->m_nFlags &= ~DRAW_LAST; | |||
dbgprint("%s was draw last\n", model->m_szName); | |||
} | |||
}} | |||
|- | |- | ||
| | | 3 || 8 || 0x08 || ADDITIVE || 0x80 || 0x582590 || '''<code>CVisibilityPlugins::RenderFadingAtomic(RpAtomic *,float)</code>''' | ||
{{Pre|1= | |||
if (model->m_nFlags & ADDITIVE) | |||
RwRenderStateSet(rwRENDERSTATEDESTBLEND, rwBLENDONE); | |||
}} | |||
|- | |- | ||
| | | 4 || 16 || 0x10 || - || 0x100 || - || - | ||
|- | |- | ||
| | | 5 || 32 || 0x20 || IGNORE_LIGHTING || 0x200 || 0x56F7C4 || '''<code>CSimpleModelInfo::SetAtomic(int,RpAtomic *)</code>''' | ||
{{Pre|1= | |||
if (model->m_nFlags & IGNORE_LIGHTING) | |||
atomic->geometry->flags &= ~rpGEOMETRYLIGHT; | |||
}} | |||
|- | |- | ||
| | | 6 || 64 || 0x40 || NO_ZBUFFER_WRITE || 0x400 || 0x581390 || '''<code>CVisibilityPlugins::RenderFadingEntities(CLinkList<CVisibilityPlugins::AlphaObjectInfo> &)</code>''' | ||
{{Pre|1= | |||
if (model->m_nType == MODEL_INFO_SIMPLE && model->m_nFlags & NO_ZBUFFER_WRITE) | |||
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE); | |||
}} | |||
|- | |- | ||
| | | 7 || 128 || 0x80 || DONT_RECEIVE_SHADOWS || 0x800 || 0x48AF21 || '''<code>CFileLoader::LoadObjectInstance(char const*)</code>''' | ||
{{Pre|1= | |||
if (model->m_nFlags & DONT_RECEIVE_SHADOWS) | |||
entity->m_nFlags.bDontCastShadowsOn = true; | |||
}} | |||
|- | |- | ||
| < | | 8 || 256 || 0x100 || IGNORE_DRAW_DISTANCE || 0x1000 || 0x487CDE || '''<code>CEntity::SetupBigBuilding()</code>''' | ||
{{Pre|1= | |||
if (model->m_afLodDistances[0] > 2500.0f <nowiki>||</nowiki> model->m_nFlags & IGNORE_DRAW_DISTANCE) | |||
entity->m_nLevel = 0; | |||
}} | |||
|- | |- | ||
| < | | 9 || 512 || 0x200 || IS_GLASS_TYPE_1 || 0x2000 || 0x488CCD || '''<code>CEntity::PreRender()</code>''', probably in-lined '''<code>CModelInfo::IsGlassModel(int)</code>''' @0x488CAA | ||
{{Pre|1= | |||
bool CModelInfo::IsGlassModel(int modelId) { | |||
CBaseModelInfo *model = CModelInfo::GetModelInfo(modelId); | |||
if (model->m_nType == MODEL_INFO_SIMPLE <nowiki>||</nowiki> model->m_nType == MODEL_INFO_TIME) { | |||
CSimpleModelInfo *simpleModel = reinterpret_cast<CSimpleModelInfo *>(model); | |||
return simpleModel->m_nFlags & IS_GLASS_TYPE_1 <nowiki>||</nowiki> simpleModel->m_nFlags & IS_GLASS_TYPE_2; | |||
} | |||
return false; | |||
} | |||
}} | |||
|- | |- | ||
| | | 10 || 1024 || 0x400 || IS_GLASS_TYPE_2 || 0x4000 || 0x488CE7 || '''<code>CEntity::PreRender()</code>''' | ||
{{Pre|1= | |||
if (CModelInfo::IsGlassModel(modelId)) { | |||
if (!(CModelInfo::GetModelInfo(modelId)->m_nFlags & IS_GLASS_TYPE_2) ) { | |||
CGlass::AskForObjectToBeRenderedInGlass(entity); | |||
entity->m_nFlags.bIsVisible = false; | |||
} | |||
} | |||
}} | |||
|} | |} | ||
== Difference between GTA III and GTA IV engines == | == Difference between GTA III and GTA IV engines == | ||
Line 127: | Line 215: | ||
== See also == | == See also == | ||
* [[Item | * [[Item Placement]] | ||
* [[Map System]] | * [[Map System]] | ||
* [[Dynamic Object]] | * [[Dynamic Object]] | ||
Line 140: | Line 228: | ||
{{fdl}} | {{fdl}} | ||
{{ | {{3-navi}} | ||
{{VC-navi}} | |||
[[Category:Map Formats]] | [[Category:Map Formats]] | ||