comparison src/th06/anm0_vm.rs @ 744:3687205fe620

anm0_vm: Use the unused u16 to store the anm layer to use.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sat, 18 Jan 2020 16:25:45 +0100
parents 0a250ddfae79
children
comparison
equal deleted inserted replaced
743:0fed350d1778 744:3687205fe620
17 #[derive(Debug)] 17 #[derive(Debug)]
18 pub struct Vertex { 18 pub struct Vertex {
19 /// XXX 19 /// XXX
20 pub pos: [i16; 3], 20 pub pos: [i16; 3],
21 /// XXX 21 /// XXX
22 pub layer: u16,
23 /// XXX
22 pub uv: [f32; 2], 24 pub uv: [f32; 2],
23 /// XXX 25 /// XXX
24 pub color: [u8; 4], 26 pub color: [u8; 4],
25 } 27 }
26 28
57 rescale: [f32; 2], 59 rescale: [f32; 2],
58 scale_speed: [f32; 2], 60 scale_speed: [f32; 2],
59 rotations_3d: [f32; 3], 61 rotations_3d: [f32; 3],
60 rotations_speed_3d: [f32; 3], 62 rotations_speed_3d: [f32; 3],
61 color: [u8; 4], 63 color: [u8; 4],
64 layer: u16,
62 } 65 }
63 66
64 impl Sprite { 67 impl Sprite {
65 /// Create a new sprite. 68 /// Create a new sprite.
66 pub fn new() -> Sprite { 69 pub fn new() -> Sprite {
162 165
163 vertices[0].color = self.color; 166 vertices[0].color = self.color;
164 vertices[1].color = self.color; 167 vertices[1].color = self.color;
165 vertices[2].color = self.color; 168 vertices[2].color = self.color;
166 vertices[3].color = self.color; 169 vertices[3].color = self.color;
170
171 vertices[0].layer = self.layer;
172 vertices[1].layer = self.layer;
173 vertices[2].layer = self.layer;
174 vertices[3].layer = self.layer;
167 } 175 }
168 176
169 /// Update sprite values from the interpolators. 177 /// Update sprite values from the interpolators.
170 pub fn update(&mut self) { 178 pub fn update(&mut self) {
171 self.frame += 1; 179 self.frame += 1;
227 235
228 fn load_sprite(&self, sprite: &mut Sprite, id: u8) { 236 fn load_sprite(&self, sprite: &mut Sprite, id: u8) {
229 let anms = self.inner.borrow(); 237 let anms = self.inner.borrow();
230 let mut anm = None; 238 let mut anm = None;
231 let mut texcoords = None; 239 let mut texcoords = None;
240 let mut layer = 0;
232 'anm: for anm0 in anms.iter() { 241 'anm: for anm0 in anms.iter() {
233 for sp in anm0.sprites.iter() { 242 for sp in anm0.sprites.iter() {
234 if sp.index == id as u32 { 243 if sp.index == id as u32 {
235 texcoords = Some(sp); 244 texcoords = Some(sp);
236 anm = Some(anm0.clone()); 245 anm = Some(anm0.clone());
237 break 'anm; 246 break 'anm;
238 } 247 }
239 } 248 }
249 layer += 1;
240 } 250 }
241 sprite.anm = anm; 251 sprite.anm = anm;
252 sprite.layer = layer;
242 if let Some(texcoords) = texcoords { 253 if let Some(texcoords) = texcoords {
243 sprite.texcoords = [texcoords.x, texcoords.y, texcoords.width, texcoords.height]; 254 sprite.texcoords = [texcoords.x, texcoords.y, texcoords.width, texcoords.height];
244 } 255 }
245 } 256 }
246 257