Mercurial > touhou
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 |