XML:OFGA

From OniGalore
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
OFGA : Object Furniture Geometry Array
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

OBAN << Other file types >> ONCC

switch to OBD page

General information

  • The XML on this page is compatible with OniSplit v0.9.61.0 and v0.9.68.0.
  • OFGA are level-specific (and maybe can be global too? Not tested).
  • OFGA files were rarely used in-game — only to get the bounding box of the geometry.
  • Nowadays they are used to import objects with no function. (Doors and consoles get imported through object collections. See ONLV for more information.)

XML tags

XML tag Content type Description
<OFGA id="..."> integer Marks the beginning of the OFGA content.
<EnvParticle> "#" + integer ENVP instance number (#N)
<Elements> - You can put here practically any number of <OFGAElement> tags. The array is an int32.
<OFGAElement> -
<GunkFlags> flag Here are the common flags. For more theoretically-possible AGQG flags, see onisplit -help enums.
None
NoCharacterCollision
NoObjectCollision
NoCollision
NoOcclusion
Invisible - used for collision boxes
TwoSided
<Geometry> link M3GMfile_name.oni (don't use file suffix)
<ENVP id="..."> integer Instance number. Use the one from <EnvParticle>.
<Particles> - You can put here practically any number of <ENVPParticle> tags. The array is an int16.
<ENVPParticle> - ENVP is used to store particles attached to objects or furniture: locklights, lights, fire, smoke, steam, bolts of electricity, etc. Loose particles are normally added to the level's particle collection.
<Class> char[64] BINA3RAPfile_name.oni (don't use file prefix/suffix)
<Tag> char[48] Particle name for BSL commands. For some reason an underscore "_" will be added to the name. Examples:
FURN <Particle>test</Particle> + OFGA <Tag>streetlight</Tag> = test_streetlight
FURN <Particle></Particle> + OFGA <Tag>streetlight</Tag> = _streetlight
FURN <Particle>test</Particle> + OFGA <Tag></Tag> = test_
<Transform> matrix Float 3*3 + float X Y Z position of the particle. Can be used to orient and stretch the particles (decals, locklights, etc.). (How? Expand on this.)
<DecalScale> integer, integer X Y
<Flags> flag
None
NotInitiallyCreated

Example 1

Extracted "V_tctf_cruiser.oni" (OFGA) from shared folder (furniture), seen in Mod Tool, Wireframe mode.
<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <OFGA id="0">
       <EnvParticle></EnvParticle>
       <Elements>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_0</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_1</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_2</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_3</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_4</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_5</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>NoCharacterCollision NoOcclusion</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_6</Geometry>
           </OFGAElement>
           <OFGAElement>
               <GunkFlags>Invisible NoObjectCollision</GunkFlags>
               <Geometry>M3GMV_tctf_cruiser_7</Geometry>
           </OFGAElement>
       </Elements>
   </OFGA>
</Oni>

Example 2

Streetlights are originally part of the level geometry. For import tests they have been transformed into a M3GM and OFGA file.
<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <OFGA id="0">
       <EnvParticle>#1</EnvParticle>
       <Elements>
           <OFGAElement>
               <GunkFlags>NoOcclusion</GunkFlags>
               <Geometry>M3GMstreetlight_0</Geometry>
           </OFGAElement>
       </Elements>
   </OFGA>
   <ENVP id="1">
       <Particles>
           <ENVPParticle>
               <Class>env_lensflare09</Class>
               <Tag>streetlight</Tag>
               <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 1.3262 63.5907 10.4082</Transform>
               <DecalScale>1 1</DecalScale>
               <Flags></Flags>
           </ENVPParticle>
           <ENVPParticle>
               <Class>env_lensflare09</Class>
               <Tag>streetlight</Tag>
               <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 1.3262 63.5907 -8.877</Transform>
               <DecalScale>1 1</DecalScale>
               <Flags></Flags>
           </ENVPParticle>
       </Particles>
   </ENVP>
</Oni>

Export

To extract the OFGA file:

OniSplit -extract:xml out in/OFGA*.oni

To extract M3GM parts only:

OniSplit -extract:obj out in/OFGA*.oni

Import

Be sure your OBJ file contains triangulated meshes. Quads can give you visual glitches.

OniSplit out_folder -create:m3gm [-tex:texture_name] input_folder/file.obj
The "-tex" argument is optional but you should use it to prevent bugs.

After the creation of the TXMP, M3GM and OFGA, you can go on to the furniture file.