|
@@ -1,11 +1,47 @@
|
|
|
-use binrw::{BinRead, BinWrite};
|
|
|
-
|
|
|
-#[derive(BinRead, BinWrite, Debug)]
|
|
|
-pub struct LayerHeader {
|
|
|
- pub layer_count: u32,
|
|
|
- #[br(count = layer_count)]
|
|
|
- pub layers: Vec<Layer>,
|
|
|
-}
|
|
|
-
|
|
|
-#[derive(BinRead, BinWrite, Debug)]
|
|
|
-pub struct Layer {}
|
|
|
+use binrw::{BinRead, BinWrite};
|
|
|
+
|
|
|
+use crate::{
|
|
|
+ object::Object,
|
|
|
+ types::{Field, WString, U32},
|
|
|
+};
|
|
|
+
|
|
|
+#[derive(BinRead, BinWrite, Debug)]
|
|
|
+pub struct LayerHeader {
|
|
|
+ pub layer_count: u32,
|
|
|
+ #[br(count = layer_count)]
|
|
|
+ pub layers: Vec<Layer>,
|
|
|
+}
|
|
|
+
|
|
|
+#[derive(BinRead, BinWrite, Debug)]
|
|
|
+pub struct Layer {
|
|
|
+ #[br(assert(field_count_1 == 17))]
|
|
|
+ field_count_1: u32, // Number of fields until objects
|
|
|
+ _unknown_1: [Field; 3],
|
|
|
+ pub name: WString,
|
|
|
+ pub count: U32,
|
|
|
+ _unknown_2: Field,
|
|
|
+ pub input_signal_wait_enable_mask: U32,
|
|
|
+ pub input_signal_wait_disable_mask: U32,
|
|
|
+ _unknown_3: [Field; 9],
|
|
|
+ pub object_count: u32,
|
|
|
+ #[br(count = object_count)]
|
|
|
+ pub objects: Vec<Object>,
|
|
|
+ #[br(assert(field_count_1 == 151))]
|
|
|
+ field_count_2: u32, // Number of remaining fields
|
|
|
+ _unknown_4: [Field; 54],
|
|
|
+ pub output_signal_start_enable_mask: U32,
|
|
|
+ pub output_signal_start_disable_mask: U32,
|
|
|
+ pub output_signal_end_enable_mask: U32,
|
|
|
+ pub output_signal_end_disable_mask: U32,
|
|
|
+ _unknown_5: [Field; 9],
|
|
|
+ pub fixture_offset: U32,
|
|
|
+ _unknown_6: [Field; 64],
|
|
|
+ pub output_signal_start_delay: U32,
|
|
|
+ pub output_signal_end_delay: U32,
|
|
|
+ pub input_signal_wait_enable: U32,
|
|
|
+ _unknown_7: [Field; 2],
|
|
|
+ pub output_signal_start_pulse: U32,
|
|
|
+ pub output_signal_end_pulse: U32,
|
|
|
+ _unknown_8: [Field; 12],
|
|
|
+ footer: u32,
|
|
|
+}
|