rpfm_lib/files/rigidmodel/materials/
projected_decal.rs1use super::*;
12
13impl Material {
20 pub fn read_projected_decal<R: ReadBytes>(data: &mut R, version: u32, mtype: MaterialType) -> Result<Self> {
21 let mut material = Self {
22 name: read_padded_string(data, version, PADDED_SIZE_256)?,
23 ..Default::default()
24 };
25
26 if mtype != MaterialType::ProjectedDecal {
27 material.decal_center = Vector3::new(data.read_f32()?, data.read_f32()?, data.read_f32()?);
28 material.decal_size = Vector3::new(data.read_f32()?, data.read_f32()?, data.read_f32()?);
29 }
30
31 material.uk_1 = data.read_u32()?;
32
33 if mtype != MaterialType::ProjectedDecal {
34 material.uk_2 = data.read_u32()?;
35 material.uk_3 = data.read_u32()?;
36 }
37
38 if mtype == MaterialType::ProjectedDecalV3 {
39 material.uk_4 = data.read_u32()?;
40 }
41
42 Ok(material)
43 }
44
45 pub fn write_projected_decal<W: WriteBytes>(&self, data: &mut W, version: u32, mtype: MaterialType) -> Result<()> {
46 write_padded_string(data, version, self.name(), PADDED_SIZE_256)?;
47
48 if mtype != MaterialType::ProjectedDecal {
49 data.write_f32(self.decal_center.x)?;
50 data.write_f32(self.decal_center.y)?;
51 data.write_f32(self.decal_center.z)?;
52 data.write_f32(self.decal_size.x)?;
53 data.write_f32(self.decal_size.y)?;
54 data.write_f32(self.decal_size.z)?;
55 }
56
57 data.write_u32(self.uk_1)?;
58
59 if mtype != MaterialType::ProjectedDecal {
60 data.write_u32(self.uk_2)?;
61 data.write_u32(self.uk_3)?;
62 }
63
64 if mtype == MaterialType::ProjectedDecalV3 {
65 data.write_u32(self.uk_4)?;
66 }
67
68 Ok(())
69 }
70}