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
|
0x24 |
char[63] |
TCdouble |
door class name (reference to 00957-TCdouble.DOOR of level 0)
|
Object-specific data
|
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 (executed when the door is locked/unlocked)
|
0xE9 |
uint32 |
00 00 00 FC |
(garbage) |
no events are attached to this sample DOOR; see CONS or TRIG for examples and documentation of the event feature
|