gizmo_scripting/
api_vehicle.rs1use crate::commands::{CommandQueue, ScriptCommand};
6use mlua::prelude::*;
7use std::sync::Arc;
8
9pub fn register_vehicle_api(lua: &Lua, command_queue: Arc<CommandQueue>) -> Result<(), LuaError> {
11 let vehicle_table = lua.create_table()?;
12
13 {
15 let cq = command_queue.clone();
16 vehicle_table.set(
17 "set_engine_force",
18 lua.create_function(move |_, (id, force): (u32, f32)| {
19 cq.push(ScriptCommand::SetVehicleEngineForce(id, force));
20 Ok(())
21 })?,
22 )?;
23 }
24
25 {
27 let cq = command_queue.clone();
28 vehicle_table.set(
29 "set_steering",
30 lua.create_function(move |_, (id, angle): (u32, f32)| {
31 cq.push(ScriptCommand::SetVehicleSteering(id, angle));
32 Ok(())
33 })?,
34 )?;
35 }
36
37 {
39 let cq = command_queue.clone();
40 vehicle_table.set(
41 "set_brake",
42 lua.create_function(move |_, (id, force): (u32, f32)| {
43 cq.push(ScriptCommand::SetVehicleBrake(id, force));
44 Ok(())
45 })?,
46 )?;
47 }
48
49 lua.globals().set("vehicle", vehicle_table)?;
50
51 Ok(())
52}