XML:ONLV: Difference between revisions

5,708 bytes removed ,  29 April 2013
no edit summary
m (so boring, why i'm doing this again?)
No edit summary
Line 1,131: Line 1,131:
: None
: None
: Static
: Static
: Linear
: Linear (?)
: Animated
: Animated (animated via OBAN)
: Newton
: Newton (pushable object)
|-
|-
| <ScriptId>
| <ScriptId>
Line 1,225: Line 1,225:
| <Transform>
| <Transform>
|
|
|
| the last 3 values are the position (x, y, z)
|-
|-
| <DecalScale>
| <DecalScale>
Line 1,234: Line 1,234:
|
|
|
|
: None
: NotInitiallyCreated
|}
|}


Line 1,306: Line 1,308:
|-
|-
| <Geometries>
| <Geometries>
|
| -
|
| This is an int32 array for the <Link> tags.
|-
|-
| <Link>
| <Link>
Line 1,322: Line 1,324:
Note that M3GMs have their own instances: PNTA, VCRA (x2), VCRA (x2), TXCA, IDXA (x2), IDXA.
Note that M3GMs have their own instances: PNTA, VCRA (x2), VCRA (x2), TXCA, IDXA (x2), IDXA.


Animated doors have one part of their geometry embedded in ONLV including M3GM's own instances.
Doors store their animated geometry in ONLV while the static part comes from BINACJBODOOR.oni.




Line 1,339: Line 1,341:
| This is an Int32 array for the <Int32> tags.
| This is an Int32 array for the <Int32> tags.
|-
|-
| <Int32>
|valign="top"| <Int32>
| int32
|valign="top"| int32
|
|
; From ONOA to AGQG elements
; From ONOA to AGQG elements
: Link to <AGQGQuad> in [[XML:AKEV#AGQG|AGQG]] by order. (The array in AGQG starts with 0, so for example <Int32>6</Int32> would link to 7th <AGQGQuad>.)
: Link to <AGQGQuad> in [[XML:AKEV#AGQG|AGQG]] by order. (The array in AGQG starts with 0, so for example <Int32>6</Int32> would link to 7th <AGQGQuad>.)
; From M3GM to PNTA elements ?
; From M3GM to PNTA elements
: [...]
: Read on [[XML:M3GM#PNTA|HERE]].
; From M3GM to VCRA elements ?
; From M3GM to VCRA elements
: [...]
: Read on [[XML:M3GM#PNTA|HERE]].
|}
|}
<!--
===IDXA ===
Only used if OBOA has objects. (Tested with door.)
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=120px| content type
! description
|-
| <IDXA id="...">
| integer
| Instance Id.
|-
| <Indices>
| -
| This is an Int32 array for the <Int32> tags.
|-
| <Int32>
| int32
| Link to
|}
===IDXA ===
Only used if OBOA has objects. (Tested with door.)
{| class="wikitable" width="100%"
!width=150px| XML tag
!width=120px| content type
! description
|-
| <IDXA id="...">
| integer
| Instance Id.
|-
| <Indices>
| -
| This is an Int32 array for the <Int32> tags.
|-
| <Int32>
| int32
| Link to
|}
-->
* ONLV instance
: <Name> - this is your BSL folder (save game slot and level number are defined inside [[OBD_talk:ONLD|ONLD]])
: <Environment> - link to AKEV file (solid level geometry)
: <Objects> - link to OBOA instance (animated level geometry, sometimes particles)
: <SkyBox> - link to ONSK file, originally there are 4 files in level 0: crapsky, night, sunset, afternoon
: <Characters> - link to AISA file (pendant of [[OBD_talk:BINA/OBJC/CHAR#XML|BINACJBOCharacter file]]), holds character spawn collection
: <ObjectQuadMap> - link to ONOA instance (maybe spawnable / function holding objects ?)
: <Particles> - link to ENVP instance (pendant of [[XML:BINA/OBJC/PART|BINACJBOParticle]]), holds particle spawn collection, door lock lights are typically stored inside ENVP
: <Corpses> - link to CRSA instance (corpses consist of 19 body parts)
* OBOA instance
: ...
* ONOA instance
: ...
* ENVP instance
: ...
* CRSA instance
: ...
* M3GA
: ...
* IDXA
: ...
'''Flags in the <OBOAObject> section'''
These are also used for the physics.xml file
: '''<Flags>'''
:: <!-- None -->
:: InUse
:: NoCollision
:: NoGravity
:: FaceCollision
: '''<PhysicsType>'''
:: None
:: Static
:: Linear
:: Animated
:: Newton
Sample code from a trimmed warehouse level.
<font color="#FF0000">'''''[...]'''''</font> mean another Corpse code block. There are usually 20 in total. They are somehow needed to prevent bugs.
<?xml version="1.0" encoding="utf-8"?>
<Oni>
    <ONLV id="0">
        <Name>EnvWarehouse</Name>
        <Environment>AKEVEnvWarehouse</Environment>
        <Objects>#1</Objects>
        <SkyBox>ONSKafternoon</SkyBox>
        <Characters>AISAlevel1_scripts</Characters>
        <ObjectQuadMap>#2</ObjectQuadMap>
        <Particles>#3</Particles>
        <Corpses>#4</Corpses>
    </ONLV>
    <OBOA id="1">
        <Objects />
    </OBOA>
    <ONOA id="2">
        <Elements />
    </ONOA>
    <ENVP id="3">
        <Particles />
    </ENVP>
    <CRSA id="4">
        <FixedCount>0</FixedCount>
        <UsedCount>0</UsedCount>
        <Corpses>
            <CRSACorpse>
                <CharacterClass></CharacterClass>
                <Transforms>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                    <Matrix4x3>0 0 0 0 0 0 0 0 0 0 0 0</Matrix4x3>
                </Transforms>
                <BoundingBox>
                    <Min>0 0 0</Min>
                    <Max>0 0 0</Max>
                </BoundingBox>
            </CRSACorpse>
          <font color="#FF0000">'''''[...]'''''</font>
        </Corpses>
    </CRSA>
</Oni>
'''not empty OBOA - example from level 19'''
(exported ONLV files seem to contain 32 empty <OBOAObject> sections)
If I remember correctly this one is only an object for the cutscene. Maybe the real floor(s) (those with collision) can be tracked down with the id used by bsl.
            <OBOAObject>
                <Geometry>#347</Geometry>
                <Animation>OBANDishFloor01</Animation>
                <Particle></Particle>
                <Flags>InUse</Flags>
                <DoorGunkId>0</DoorGunkId>
                <DoorId>0</DoorId>
                <PhysicsType>Animated</PhysicsType>
                <ScriptId>204</ScriptId>
                <Position>-183 99.59154 -2501.25</Position>
                <Rotation>0.7071067 -1.545431E-08 1.545431E-08 0.7071068</Rotation>
                <Scale>1</Scale>
                <Transform>1 -4.371139E-08 -5.21253064E-16 0 1.19248806E-08 -1 4.371139E-08 1 1.19248806E-08 -183 99.5815353 -2501.25</Transform>
                <Name>object_DishFloor01</Name>
            </OBOAObject>
'''not empty ENVP - example from level 19'''
            <ENVPParticle>
                <Class>locklight</Class>
                <Tag>mainchamber_locklight01</Tag>
                <Transform>1 -4.559326E-08 1.35404189E-05 -1.354042E-05 -2.03512554E-05 1 -4.53176945E-08 -1 -2.03512554E-05 -391.790527 58.0480423 -1364.412</Transform>
                <DecalScale>1 1</DecalScale>
                <Flags></Flags>
            </ENVPParticle>
<Transform> - the last 3 values are the position (x, y, z)
<Flags>
: <!-- None -->
: NotInitiallyCreated




8,452

edits