From 02c5574cd24c6cc46217663fe95cf683fb086e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thea=20Sch=C3=B6bl?= Date: Tue, 9 May 2023 23:18:44 +0200 Subject: [PATCH] Cleanup --- .../src/lwo2/sub_tags/surface_blocks.rs | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/rust/lightwave/src/lwo2/sub_tags/surface_blocks.rs b/rust/lightwave/src/lwo2/sub_tags/surface_blocks.rs index 046b3b2..bae8323 100644 --- a/rust/lightwave/src/lwo2/sub_tags/surface_blocks.rs +++ b/rust/lightwave/src/lwo2/sub_tags/surface_blocks.rs @@ -3,21 +3,24 @@ use crate::iff::SubChunk; use crate::lwo2::sub_tags::surface_block_image_texture::SurfaceBlockImageTextureSubChunk; use crate::lwo2::sub_tags::EnableState; use crate::lwo2::vx; -use binrw::{binread, PosValue}; +use binrw::binread; #[binread] #[br(import(length: u32))] #[derive(Debug)] -pub struct SurfaceBlocks { - #[br(temp)] - start_pos: PosValue<()>, - pub ordinal: OrdinalString, - pub header: SubChunk, - #[br(temp)] - end_pos: PosValue<()>, - #[br(if(matches!(ordinal, OrdinalString::ImageMapTexture)))] - #[br(parse_with = until_size_limit(length as u64 - (end_pos.pos - start_pos.pos)))] - pub attributes: Vec, +pub enum SurfaceBlocks { + #[br(magic(b"IMAP"))] + ImageMapTexture { + header: SubChunk, + #[br(parse_with = until_size_limit(length as u64 - (header.length as u64 + 2 + 4)))] + attributes: Vec, + }, + #[br(magic(b"PROC"))] + ProceduralTexture, + #[br(magic(b"GRAD"))] + GradientTexture, + #[br(magic(b"SHDR"))] + ShaderPlugin, } #[binread] @@ -44,20 +47,6 @@ pub enum SurfaceBlockHeaderSubChunk { Negative(SubChunk), } -#[binread] -#[br(import(_length: u32))] -#[derive(Debug)] -pub enum OrdinalString { - #[br(magic(b"IMAP"))] - ImageMapTexture, - #[br(magic(b"PROC"))] - ProceduralTexture, - #[br(magic(b"GRAD"))] - GradientTexture, - #[br(magic(b"SHDR"))] - ShaderPlugin, -} - #[binread] #[br(import(_length: u32))] #[derive(Debug)]