Lua scripting
This commit is contained in:
		
							
								
								
									
										22
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -257,6 +257,7 @@ version = "0.1.0"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "glium",
 | 
					 "glium",
 | 
				
			||||||
 "gltf",
 | 
					 "gltf",
 | 
				
			||||||
 | 
					 "hlua",
 | 
				
			||||||
 "nalgebra-glm",
 | 
					 "nalgebra-glm",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -504,6 +505,16 @@ dependencies = [
 | 
				
			|||||||
 "gl_generator",
 | 
					 "gl_generator",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "hlua"
 | 
				
			||||||
 | 
					version = "0.4.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "ed9db71fff2e55b83d24bbbdd9ad13f0d1ff79bc265f544370f39ee0825d54e4"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "libc",
 | 
				
			||||||
 | 
					 "lua52-sys",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "ident_case"
 | 
					name = "ident_case"
 | 
				
			||||||
version = "1.0.1"
 | 
					version = "1.0.1"
 | 
				
			||||||
@@ -618,6 +629,17 @@ dependencies = [
 | 
				
			|||||||
 "cfg-if 1.0.0",
 | 
					 "cfg-if 1.0.0",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "lua52-sys"
 | 
				
			||||||
 | 
					version = "0.1.2"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "d451db153c94e455dc817d388f9674f6232425c28db3509e90251c55b8df2f94"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "cc",
 | 
				
			||||||
 | 
					 "libc",
 | 
				
			||||||
 | 
					 "pkg-config",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "malloc_buf"
 | 
					name = "malloc_buf"
 | 
				
			||||||
version = "0.0.6"
 | 
					version = "0.0.6"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,4 +8,5 @@ edition = "2021"
 | 
				
			|||||||
glium = "0.31.0"
 | 
					glium = "0.31.0"
 | 
				
			||||||
nalgebra-glm = "0.16.0"
 | 
					nalgebra-glm = "0.16.0"
 | 
				
			||||||
gltf = { version = "1.0.0", features = ["utils"] }
 | 
					gltf = { version = "1.0.0", features = ["utils"] }
 | 
				
			||||||
 | 
					hlua = "0.4.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
mod device;
 | 
					mod device;
 | 
				
			||||||
mod model;
 | 
					mod model;
 | 
				
			||||||
 | 
					mod scripting;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[macro_use]
 | 
					#[macro_use]
 | 
				
			||||||
extern crate glium;
 | 
					extern crate glium;
 | 
				
			||||||
@@ -7,6 +8,8 @@ extern crate nalgebra_glm as glm;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use model::Model;
 | 
					use model::Model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use scripting::{ ScriptLang, Lua };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
    use glium::{glutin, Surface};
 | 
					    use glium::{glutin, Surface};
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -29,6 +32,9 @@ fn main() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    let model = Model::new(&display, "Box.glb");
 | 
					    let model = Model::new(&display, "Box.glb");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let mut script_lang = Lua::new();
 | 
				
			||||||
 | 
					    script_lang.init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    events_loop.run(move |ev, _, control_flow| {
 | 
					    events_loop.run(move |ev, _, control_flow| {
 | 
				
			||||||
	if device_manager.is_pressed(&device::Key::W) {
 | 
						if device_manager.is_pressed(&device::Key::W) {
 | 
				
			||||||
	    offset += 0.001;
 | 
						    offset += 0.001;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								src/scripting.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/scripting.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					extern crate hlua;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use hlua::Lua as LuaContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub trait ScriptLang {
 | 
				
			||||||
 | 
					    fn init(&mut self);
 | 
				
			||||||
 | 
					    fn update(&mut self, delta: f32);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub struct Lua {
 | 
				
			||||||
 | 
					    ctx: LuaContext<'static>,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl Lua {
 | 
				
			||||||
 | 
					    pub fn new() -> Self {
 | 
				
			||||||
 | 
						Lua {
 | 
				
			||||||
 | 
						    ctx: LuaContext::new(),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					impl ScriptLang for Lua {
 | 
				
			||||||
 | 
					    fn init(&mut self) {
 | 
				
			||||||
 | 
						self.ctx.openlibs();
 | 
				
			||||||
 | 
						//self.ctx.execute::<()>("print(\"Hello!\")").unwrap();
 | 
				
			||||||
 | 
						self.ctx.execute_from_reader::<(), std::fs::File>(std::fs::File::open(&std::path::Path::new("main.lua")).unwrap()).unwrap();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fn update(&mut self, delta: f32) {
 | 
				
			||||||
 | 
						todo!();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user