maint: update deps
This commit is contained in:
13
deps/sol2/examples/customization/source/lua_interop.cpp
vendored
Normal file
13
deps/sol2/examples/customization/source/lua_interop.cpp
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
#include <lua_interop.hpp>
|
||||
|
||||
#include <entity.hpp>
|
||||
|
||||
#define SOL_ALL_SAFETIES_ON 1
|
||||
#include <sol/sol.hpp>
|
||||
|
||||
void register_lua(sol::state& lua) {
|
||||
lua.new_usertype<entity>("entity",
|
||||
"position",
|
||||
sol::property(
|
||||
&entity::get_position, &entity::set_position));
|
||||
}
|
38
deps/sol2/examples/customization/source/lua_zm_interop.cpp
vendored
Normal file
38
deps/sol2/examples/customization/source/lua_zm_interop.cpp
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
#include <lua_zm_interop.hpp>
|
||||
|
||||
#include <zm/vec3.hpp>
|
||||
|
||||
#define SOL_ALL_SAFETIES_ON 1
|
||||
#include <sol/sol.hpp>
|
||||
|
||||
bool sol_lua_check(sol::types<zm::vec3>, lua_State* L, int index,
|
||||
std::function<sol::check_handler_type> handler,
|
||||
sol::stack::record& tracking) {
|
||||
// use sol's method for checking
|
||||
// specifically for a table
|
||||
return sol::stack::check<sol::lua_table>(
|
||||
L, index, handler, tracking);
|
||||
}
|
||||
|
||||
zm::vec3 sol_lua_get(sol::types<zm::vec3>, lua_State* L,
|
||||
int index, sol::stack::record& tracking) {
|
||||
sol::lua_table vec3table
|
||||
= sol::stack::get<sol::lua_table>(L, index, tracking);
|
||||
float x = vec3table["x"];
|
||||
float y = vec3table["y"];
|
||||
float z = vec3table["z"];
|
||||
return zm::vec3 { x, y, z };
|
||||
}
|
||||
|
||||
int sol_lua_push(
|
||||
sol::types<zm::vec3>, lua_State* L, const zm::vec3& v) {
|
||||
// create table
|
||||
sol::state_view lua(L);
|
||||
sol::table vec3table = sol::table::create_with(
|
||||
L, "x", v.x, "y", v.y, "z", v.z);
|
||||
// use base sol method to
|
||||
// push the table
|
||||
int amount = sol::stack::push(L, vec3table);
|
||||
// return # of things pushed onto stack
|
||||
return amount;
|
||||
}
|
42
deps/sol2/examples/customization/source/main.cpp
vendored
Normal file
42
deps/sol2/examples/customization/source/main.cpp
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
#include <lua_interop.hpp>
|
||||
#include <entity.hpp>
|
||||
|
||||
#define SOL_ALL_SAFETIES_ON 1
|
||||
#include <sol/sol.hpp>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main(int, char*[]) {
|
||||
std::cout << "=== customization: vec3 as table ==="
|
||||
<< std::endl;
|
||||
|
||||
sol::state lua;
|
||||
lua.open_libraries(sol::lib::base);
|
||||
|
||||
std::cout << "registering entities into Lua ..."
|
||||
<< std::endl;
|
||||
register_lua(lua);
|
||||
std::cout << "running script ..." << std::endl;
|
||||
|
||||
const auto& script = R"lua(
|
||||
local e = entity.new()
|
||||
local pos = e.position
|
||||
print("pos type", type(pos))
|
||||
print("pos", pos.x, pos.y, pos.z)
|
||||
e.position = { x = 52, y = 5.5, z = 47.5 }
|
||||
local new_pos = e.position
|
||||
print("pos", pos.x, pos.y, pos.z)
|
||||
print("new_pos", new_pos.x, new_pos.y, new_pos.z)
|
||||
)lua";
|
||||
|
||||
sol::optional<sol::error> result = lua.safe_script(script);
|
||||
if (result.has_value()) {
|
||||
std::cerr << "Something went horribly wrong: "
|
||||
<< result.value().what() << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "finishing ..." << std::endl;
|
||||
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user