layer.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. use binrw::{BinRead, BinWrite};
  2. use diff::Diff;
  3. use crate::{
  4. array_of::ArrayOf,
  5. objects::Object,
  6. types::{Field, WString, F64, U16, U32},
  7. };
  8. #[derive(BinRead, BinWrite, Debug, Diff, PartialEq)]
  9. #[diff(attr(
  10. #[derive(Debug, PartialEq)]
  11. ))]
  12. #[brw(magic(17u32))] // Number of fields within this struct
  13. pub struct LayerSettings1 {
  14. _unknown_1: [Field; 3],
  15. pub name: WString,
  16. pub count: U32,
  17. _unknown_2: Field,
  18. pub input_signal_wait_enable_mask: U16,
  19. pub input_signal_wait_disable_mask: U16,
  20. _unknown_3: [Field; 9],
  21. }
  22. #[derive(BinRead, BinWrite, Debug, Diff, PartialEq)]
  23. #[diff(attr(
  24. #[derive(Debug, PartialEq)]
  25. ))]
  26. #[brw(magic(152u32))] // Number of fields within this struct
  27. pub struct LayerSettings2 {
  28. _unknown_4: [Field; 54],
  29. pub output_signal_start_enable_mask: U16,
  30. pub output_signal_start_disable_mask: U16,
  31. pub output_signal_end_enable_mask: U16,
  32. pub output_signal_end_disable_mask: U16,
  33. _unknown_5: [Field; 9],
  34. pub fixture_offset: F64,
  35. _unknown_6: [Field; 64],
  36. pub output_signal_start_delay: U32,
  37. pub output_signal_end_delay: U32,
  38. pub input_signal_wait_enable: U32,
  39. _unknown_7: [Field; 2],
  40. pub output_signal_start_pulse: U32,
  41. pub output_signal_end_pulse: U32,
  42. _unknown_8: [Field; 13],
  43. footer: u32,
  44. }
  45. #[derive(BinRead, BinWrite, Debug, Diff, PartialEq)]
  46. #[diff(attr(
  47. #[derive(Debug, PartialEq)]
  48. ))]
  49. pub struct Layer {
  50. pub pre: LayerSettings1,
  51. pub objects: ArrayOf<Object>,
  52. pub post: LayerSettings2,
  53. }