Mercurial > touhou
comparison examples/anmrenderer.rs @ 646:7d92730bf543
Add a PRNG and use it for anm0 instruction 16.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Sat, 03 Aug 2019 23:30:15 +0200 |
| parents | f983a4c98410 |
| children | 967627181a76 |
comparison
equal
deleted
inserted
replaced
| 645:7bde50132735 | 646:7d92730bf543 |
|---|---|
| 11 use luminance_glfw::event::{Action, Key, WindowEvent}; | 11 use luminance_glfw::event::{Action, Key, WindowEvent}; |
| 12 use luminance_glfw::surface::{GlfwSurface, Surface, WindowDim, WindowOpt}; | 12 use luminance_glfw::surface::{GlfwSurface, Surface, WindowDim, WindowOpt}; |
| 13 use touhou::th06::anm0::Anm0; | 13 use touhou::th06::anm0::Anm0; |
| 14 use touhou::th06::anm0_vm::{AnmRunner, Sprite, Vertex as FakeVertex}; | 14 use touhou::th06::anm0_vm::{AnmRunner, Sprite, Vertex as FakeVertex}; |
| 15 use touhou::util::math::{perspective, setup_camera}; | 15 use touhou::util::math::{perspective, setup_camera}; |
| 16 use touhou::util::prng::Prng; | |
| 16 use std::cell::RefCell; | 17 use std::cell::RefCell; |
| 17 use std::fs::File; | 18 use std::fs::File; |
| 18 use std::io::{BufReader, Read}; | 19 use std::io::{BufReader, Read}; |
| 19 use std::rc::Rc; | 20 use std::rc::Rc; |
| 20 use std::env; | 21 use std::env; |
| 108 } | 109 } |
| 109 | 110 |
| 110 // Create the sprite. | 111 // Create the sprite. |
| 111 let sprite = Rc::new(RefCell::new(Sprite::new(0., 0.))); | 112 let sprite = Rc::new(RefCell::new(Sprite::new(0., 0.))); |
| 112 | 113 |
| 114 // TODO: seed this PRNG with a valid seed. | |
| 115 let prng = Rc::new(RefCell::new(Prng::new(0))); | |
| 116 | |
| 113 // Create the AnmRunner from the ANM and the sprite. | 117 // Create the AnmRunner from the ANM and the sprite. |
| 114 let mut anm_runner = AnmRunner::new(&anm0, script, sprite.clone(), 0); | 118 let mut anm_runner = AnmRunner::new(&anm0, script, sprite.clone(), Rc::downgrade(&prng), 0); |
| 115 | 119 |
| 116 assert_eq!(std::mem::size_of::<Vertex>(), std::mem::size_of::<FakeVertex>()); | 120 assert_eq!(std::mem::size_of::<Vertex>(), std::mem::size_of::<FakeVertex>()); |
| 117 let mut vertices: [Vertex; 4] = unsafe { std::mem::uninitialized() }; | 121 let mut vertices: [Vertex; 4] = unsafe { std::mem::uninitialized() }; |
| 118 fill_vertices(sprite.clone(), &mut vertices); | 122 fill_vertices(sprite.clone(), &mut vertices); |
| 119 | 123 |
