♻️ Extract file.rs
parent
94f963bca6
commit
ad7b52c0bf
|
@ -0,0 +1,21 @@
|
||||||
|
use std::convert::TryInto;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::Read;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
pub fn load_small_file <P> (name: P, max_size: u64) -> Vec <u8>
|
||||||
|
where P: AsRef <Path>
|
||||||
|
{
|
||||||
|
let mut f = File::open (name).unwrap ();
|
||||||
|
let len = f.metadata ().unwrap ().len ();
|
||||||
|
|
||||||
|
if len > max_size {
|
||||||
|
panic! ("File is too big");
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut data = vec! [0u8; len.try_into ().unwrap ()];
|
||||||
|
|
||||||
|
f.read_exact (&mut data [..]).unwrap ();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
29
src/main.rs
29
src/main.rs
|
@ -3,40 +3,21 @@ use glam::{Mat4, Vec3, Vec4};
|
||||||
use sdl2::event::Event;
|
use sdl2::event::Event;
|
||||||
use sdl2::keyboard::{Keycode, Scancode};
|
use sdl2::keyboard::{Keycode, Scancode};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::convert::TryInto;
|
use std::ffi::{c_void};
|
||||||
use std::ffi::{c_void, CString};
|
|
||||||
use std::fs::File;
|
|
||||||
use std::io::Read;
|
|
||||||
use std::path::Path;
|
|
||||||
use std::time::{Duration};
|
use std::time::{Duration};
|
||||||
|
|
||||||
|
mod file;
|
||||||
mod iqm;
|
mod iqm;
|
||||||
mod shader;
|
mod shader;
|
||||||
mod texture;
|
mod texture;
|
||||||
mod timestep;
|
mod timestep;
|
||||||
|
|
||||||
|
use file::load_small_file;
|
||||||
use iqm::Model;
|
use iqm::Model;
|
||||||
use shader::{ShaderProgram, ShaderObject};
|
use shader::{ShaderProgram, ShaderObject};
|
||||||
use texture::Texture;
|
use texture::Texture;
|
||||||
use timestep::TimeStep;
|
use timestep::TimeStep;
|
||||||
|
|
||||||
pub fn load_small_file <P> (name: P) -> Vec <u8>
|
|
||||||
where P: AsRef <Path>
|
|
||||||
{
|
|
||||||
let mut f = File::open (name).unwrap ();
|
|
||||||
let len = f.metadata ().unwrap ().len ();
|
|
||||||
|
|
||||||
if len > 1024 * 1024 {
|
|
||||||
panic! ("File is too big");
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut data = vec! [0u8; len.try_into ().unwrap ()];
|
|
||||||
|
|
||||||
f.read_exact (&mut data [..]).unwrap ();
|
|
||||||
|
|
||||||
data
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn color_from_255 <V> (rgb: V) -> Vec3
|
pub fn color_from_255 <V> (rgb: V) -> Vec3
|
||||||
where V: Into <Vec3>
|
where V: Into <Vec3>
|
||||||
{
|
{
|
||||||
|
@ -256,10 +237,10 @@ fn main () {
|
||||||
let texture = Texture::from_file ("sky.png");
|
let texture = Texture::from_file ("sky.png");
|
||||||
texture.bind ();
|
texture.bind ();
|
||||||
|
|
||||||
let model_data = load_small_file ("pumpking.iqm");
|
let model_data = load_small_file ("pumpking.iqm", 1024 * 1024);
|
||||||
let model = Model::from_slice (&model_data [..]);
|
let model = Model::from_slice (&model_data [..]);
|
||||||
|
|
||||||
let sky_data = load_small_file ("sky-sphere.iqm");
|
let sky_data = load_small_file ("sky-sphere.iqm", 1024 * 1024);
|
||||||
let sky_model = Model::from_slice (&sky_data [..]);
|
let sky_model = Model::from_slice (&sky_data [..]);
|
||||||
|
|
||||||
const FALSE_U8: u8 = 0;
|
const FALSE_U8: u8 = 0;
|
||||||
|
|
Loading…
Reference in New Issue