OBD:BINA/OBJC/DOOR: Difference between revisions

From OniGalore
< OBD:BINA‎ | OBJC
mNo edit summary
m (corrected link due to section being moved to another page)
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{OBD OBJC Header | align=center | type=DOOR | prev=CONS | next=FLAG | name=Door}}
:''This is about door instances. For the door class resource, see [[OBD:DOOR]]
{{OBD OBJC Header | align=center | type=DOOR | prev=CONS | next=FLAG | name=Door|onistuff=b_do}}




[[image:bin_r_do.gif]]
[[Image:bin_r_do.gif]]




{{Table}}
{{Table}}
{{OBDth}}
{{OBDth}}
{{OBDtr| 0x00 | char[4]  |FF0000| 43 4A 42 4F | OBJC      | object collection }}
{{OBDtr| 0x00 | char[4]  |FF0000| 43 4A 42 4F | OBJC      | objects }}
{{OBDtr| 0x04 | int32    |FFFF00| 15 19 00 00 | 14344    | size of the complete door part from this postion in bytes }}
{{OBDtr| 0x04 | int32    |FFFF00| 08 38 00 00 | 14344    | size of the complete door part from this position in bytes }}
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | object collection version }}
{{OBDtr| 0x08 | int32    |00FF00| 27 00 00 00 | 39        | object list version }}
{{OBDtr| 0x0C | int32    |00FFFF| FC 00 00 00 | 252      | size of the following element in bytes }}
{{OBDtr| 0x0C | int32    |00FFFF| FC 00 00 00 | 252      | size of the following element in bytes }}
{{OBDtrBK}}
{{OBDtrgroup}}
{{OBDtrsubgroup}}
{{OBDtr| 0x00 | char[4]  |FFC8C8| 52 4F 4F 44 | DOOR      | door }}
{{OBDtr| 0x00 | char[4]  |FFC8C8| 52 4F 4F 44 | DOOR      | door }}
{{OBDtr| 0x04 | int32    |FFFFC8| 57 12 00 00 | 6421      | object ID }}
{{OBDtr| 0x04 | int32    |FFFFC8| 15 19 00 00 | 6421      | object ID }}
{{OBDtr| 0x08 | int32    |C8FFC8| 08 00 00 00 | 8        | object flags }}
{{OBDtr| 0x08 | int32    |C8FFC8| 08 00 00 00 | 8        | object flags; only used at runtime in Tool mode }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 4F 43 | 207.000000| x-position of the bottom of the door }}
{{OBDtr| 0x0C | float    |C8FFFF| 00 00 4F 43 | 207.000000| x position of the bottom of the door }}
{{OBDtr| 0x10 | float    |C8FFFF| 00 00 D8 42 | 108.000000| y-position (height) of the bottom of the door }}
{{OBDtr| 0x10 | float    |C8FFFF| 00 00 D8 42 | 108.000000| y position (height) of the bottom of the door }}
{{OBDtr| 0x14 | float    |C8FFFF| 98 7F CC C3 |-408.996826| z-position of the bottom of the door }}
{{OBDtr| 0x14 | float    |C8FFFF| 98 7F CC C3 |-408.996826| z position of the bottom of the door }}
{{OBDtr| 0x18 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the x-axis in degrees }}
{{OBDtr| 0x18 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the x axis in degrees }}
{{OBDtr| 0x1C | float    |FFC8FF| 67 85 25 3D | 0.040410  | rotation on the y-axis in degrees }}
{{OBDtr| 0x1C | float    |FFC8FF| 67 85 25 3D | 0.040410  | rotation on the y axis in degrees }}
{{OBDtr| 0x20 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the z-axis in degrees }}
{{OBDtr| 0x20 | float    |FFC8FF| 00 00 00 00 | 0.000000  | rotation on the z axis in degrees }}
{{OBDtr2|0x24 | char[63] |FFC800| TCdouble                | door type name (reference to 00957-TCdouble.[[OBD:DOOR|DOOR]] of level 0) }}
{{OBDtrsubgroup|end}}
{{OBDtr2|0x24 | char[63] |FFC800| TCdouble                | door class name (reference to 00957-TCdouble.[[OBD:DOOR|DOOR]] of level 0) }}
{{OBDtr| 0x63 | int16    |C800C8| 01 00      | 1        | door ID }}
{{OBDtr| 0x63 | int16    |C800C8| 01 00      | 1        | door ID }}
{{OBDtr| 0x65 | int16    |C87C64| 00 00      | 0        | key ID }}
{{OBDtr| 0x65 | int16    |C87C64| 00 00      | 0        | key ID }}
{{OBDtr| 0x67 | bitset16 |B0C3D4| 15 00      | 21, 0    | door options; the following bits are possible:
{{OBDtr| 0x67 | bitset16 |B0C3D4| 15 00      | 21, 0    | door options; the following bits are possible, but note that the "runtime" flags are not stored in data but only used by the engine at runtime to track door states:<br>
 
:0x'''01''' 00 - initially locked (at level load or after calling [[reset_mechanics]])
:0x'''01''' 00 - door locked
:0x'''02''' 00 - runtime: currently locked
:0x'''02''' 00 - unknown
:0x'''04''' 00 - "in door frame"; door has a frame attachment (this is the norm, see below for exceptions; the frame geometry is defined in [[AKDA]] and will be looked up from DOOR's position above, which is identical to the related AKDA quads)
:0x'''04''' 00 - unknown
:0x'''10''' 00 - "manual"; require player to press action key to open door
:0x'''08''' 00 - unknown
:0x'''20''' 00 - runtime: door is in process of opening/closing
:0x'''10''' 00 - require player to press '''action''' to open door
:0x'''40''' 00 - runtime: "test mode" (apparently was a test of new door code, but is now always on)
:0x'''20''' 00 - unknown
:0x'''40''' 00 - unknown
:0x'''80''' 00 - double door
:0x'''80''' 00 - double door
:0x00 '''01''' - unknown
:0x00 '''01''' - mirrored door (one of the double doors is flipped along Y axis relative to the other)
:0x00 '''02''' - one way door (one side locked, other side unlocked)
:0x00 '''02''' - one way door (one side is locked, other side unlocked)
:0x00 '''04''' - reverse of the one way door (now the other side is locked)
:0x00 '''04''' - one way door, reverse (now the other side is locked)
:0x00 '''08''' - unknown
:0x00 '''08''' - runtime: jammed (controlled by script via [[door_jam]] and [[door_unjam]])
:0x00 '''10''' - unknown
:0x00 '''10''' - "initially open" (unimplemented feature)
:0x00 '''20''' - unknown
:0x00 '''20''' - runtime: "give up on collision" (unimplemented)
:0x00 '''40''' - unknown
:0x00 '''80''' - unknown
 
}}
}}
{{OBDtr |0x69 | float    |FFDDDD| 00 00 4F 43 | 207.000000 | x-position of the center of the door }}
{{OBDtr |0x69 | float    |FFDDDD| 00 00 4F 43 | 207.000000 | x-position of the center of the door }}
Line 50: Line 48:
{{OBDtr2|0x79 | char[63] |EBEBEB| _DOOR_RL_FLOOR3          | first door texture (reference to 00216-_DOOR_RL_FLOOR3.[[OBD:TXMP|TXMP]]) }}
{{OBDtr2|0x79 | char[63] |EBEBEB| _DOOR_RL_FLOOR3          | first door texture (reference to 00216-_DOOR_RL_FLOOR3.[[OBD:TXMP|TXMP]]) }}
{{OBDtr2|0xA8 | char[63] |8C8CCC| unused                  | second door texture (reference to a [[OBD:TXMP|TXMP]] file) }}
{{OBDtr2|0xA8 | char[63] |8C8CCC| unused                  | second door texture (reference to a [[OBD:TXMP|TXMP]] file) }}
{{OBDtr |0xE7 | int16    |8C8CCC| 00 00      | 0          | number of events (executed when the door is opened) }}
{{OBDtr |0xE7 | int16    |8C8CCC| 00 00      | 0          | number of event blocks following; see below }}
{{OBDtr |0xE9 |         |8C8CCC|             |            | padding }}
{{OBDtr |0xE9 | uint32  |8C8CCC| 00 00 00    |            | alignment padding }}
|}
|}


==Events==
An event can be executed when a door is locked or unlocked. No events are attached to this sample DOOR, so see [[OBD:BINA/OBJC/CONS#Events|BINA/OBJC/CONS]] for examples and documentation of the event feature.
==Some interesting doors==
Doors below are given as "level #:door ID".
;Instances NOT using the "frame attachment" flag
:2:26; 3:62; 6:1,41,42,43,45,46,47,48,49; 8:73; 18:97; 19:43,44
;Instances using "mirrored door" flag:
:1:4,6,7,9,15,16,24,25,26,27,32,33,36,37,61,68,79,92,108;
:3:50; 6:29,31,33,46,47; 8:14; 10:11,14,18,20; 18:14,42,70
:The mirroring is complementary to the transformation in the [[ONLV]]'s [[OBOA]].
;Tool Mode dialog


;Bluebox screenshot
[[Image:Tool dialog - Door Properties.png]]


http://ssg.oni2.net/subfold/bluebox/images/221_door_properties.jpg


{{OBD OBJC Footer | type=DOOR | prev=CONS | next=FLAG | name=Door | family=Level}}


{{OBD OBJC Footer | type=DOOR | prev=CONS | next=FLAG | name=Door}}
{{OBD}}

Latest revision as of 02:01, 21 May 2025

This is about door instances. For the door class resource, see OBD:DOOR
ONI BINARY DATA
AKVA << Other file types >> CBPI
BINA : Binary data
TMBD << Other BINA >> ONIE
OBJC : Objects
CONS << Other OBJC >> FLAG
DOOR : Door
XML tutorial
Overview @ Oni Stuff
OBD.png


Bin r do.gif


Offset Type Raw Hex Value Description
0x00 char[4] 43 4A 42 4F OBJC objects
0x04 int32 08 38 00 00 14344 size of the complete door part from this position in bytes
0x08 int32 27 00 00 00 39 object list version
0x0C int32 FC 00 00 00 252 size of the following element in bytes
First element (black outline)
Generic object data
0x00 char[4] 52 4F 4F 44 DOOR door
0x04 int32 15 19 00 00 6421 object ID
0x08 int32 08 00 00 00 8 object flags; only used at runtime in Tool mode
0x0C float 00 00 4F 43 207.000000 x position of the bottom of the door
0x10 float 00 00 D8 42 108.000000 y position (height) of the bottom of the door
0x14 float 98 7F CC C3 -408.996826 z position of the bottom of the door
0x18 float 00 00 00 00 0.000000 rotation on the x axis in degrees
0x1C float 67 85 25 3D 0.040410 rotation on the y axis in degrees
0x20 float 00 00 00 00 0.000000 rotation on the z axis in degrees
Object-specific data
0x24 char[63] TCdouble door class name (reference to 00957-TCdouble.DOOR of level 0)
0x63 int16 01 00 1 door ID
0x65 int16 00 00 0 key ID
0x67 bitset16 15 00 21, 0 door options; the following bits are possible, but note that the "runtime" flags are not stored in data but only used by the engine at runtime to track door states:
0x01 00 - initially locked (at level load or after calling reset_mechanics)
0x02 00 - runtime: currently locked
0x04 00 - "in door frame"; door has a frame attachment (this is the norm, see below for exceptions; the frame geometry is defined in AKDA and will be looked up from DOOR's position above, which is identical to the related AKDA quads)
0x10 00 - "manual"; require player to press action key to open door
0x20 00 - runtime: door is in process of opening/closing
0x40 00 - runtime: "test mode" (apparently was a test of new door code, but is now always on)
0x80 00 - double door
0x00 01 - mirrored door (one of the double doors is flipped along Y axis relative to the other)
0x00 02 - one way door (one side is locked, other side unlocked)
0x00 04 - one way door, reverse (now the other side is locked)
0x00 08 - runtime: jammed (controlled by script via door_jam and door_unjam)
0x00 10 - "initially open" (unimplemented feature)
0x00 20 - runtime: "give up on collision" (unimplemented)
0x69 float 00 00 4F 43 207.000000 x-position of the center of the door
0x6D float 00 00 F6 42 123.000000 y-position (height) of the center of the door
0x71 float 98 7F CC C3 -408.996826 z-position of the center of the door
0x75 float 00 00 61 44 900.000000 activation radius (squared)
0x79 char[63] _DOOR_RL_FLOOR3 first door texture (reference to 00216-_DOOR_RL_FLOOR3.TXMP)
0xA8 char[63] unused second door texture (reference to a TXMP file)
0xE7 int16 00 00 0 number of event blocks following; see below
0xE9 uint32 00 00 00 alignment padding

Events

An event can be executed when a door is locked or unlocked. No events are attached to this sample DOOR, so see BINA/OBJC/CONS for examples and documentation of the event feature.

Some interesting doors

Doors below are given as "level #:door ID".

Instances NOT using the "frame attachment" flag
2:26; 3:62; 6:1,41,42,43,45,46,47,48,49; 8:73; 18:97; 19:43,44
Instances using "mirrored door" flag
1:4,6,7,9,15,16,24,25,26,27,32,33,36,37,61,68,79,92,108;
3:50; 6:29,31,33,46,47; 8:14; 10:11,14,18,20; 18:14,42,70
The mirroring is complementary to the transformation in the ONLV's OBOA.
Tool Mode dialog

Tool dialog - Door Properties.png


ONI BINARY DATA
AKVA << Other file types >> CBPI
BINA : Binary data
TMBD << Other BINA >> ONIE
OBJC : Objects
CONS << Other OBJC >> FLAG
DOOR : Door
Level file