From 0ae3d3a72f595361370a41d2cc68be186f71e5e0 Mon Sep 17 00:00:00 2001 From: praydog Date: Tue, 13 Aug 2024 20:25:22 -0700 Subject: [PATCH] Lua: Expose MotionControllerState functions --- lua-api/lib/src/ScriptContext.cpp | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lua-api/lib/src/ScriptContext.cpp b/lua-api/lib/src/ScriptContext.cpp index fc7a7cb7..1c21b299 100644 --- a/lua-api/lib/src/ScriptContext.cpp +++ b/lua-api/lib/src/ScriptContext.cpp @@ -598,6 +598,45 @@ int ScriptContext::setup_bindings() { "get_item", &uevr::API::FUObjectArray::get_item ); + m_lua.new_usertype("UEVR_MotionControllerState", + "set_rotation_offset", [](sol::this_state s, uevr::API::UObjectHook::MotionControllerState* state, sol::object obj) { + if (obj.is()) { + const auto q = obj.as(); + state->set_rotation_offset(&q); + } else if (obj.is()) { + const auto v = obj.as(); + const auto vq = (UEVR_Quaternionf*)&v; + state->set_rotation_offset(vq); + } else if (obj.is()) { + const auto v = obj.as(); + const auto v_as_f = lua::datatypes::Vector3f{ (float)v.x, (float)v.y, (float)v.z }; + const auto vq = (UEVR_Quaternionf*)&v_as_f; + state->set_rotation_offset(vq); + } else { + throw sol::error("Invalid type for set_rotation_offset"); + } + }, + "set_location_offset", [](sol::this_state s, uevr::API::UObjectHook::MotionControllerState* state, sol::object obj) { + if (obj.is()) { + const auto v = obj.as(); + state->set_location_offset(&v); + } else if (obj.is()) { + const auto v = obj.as(); + const auto vv = (UEVR_Vector3f*)&v; + state->set_location_offset(vv); + } else if (obj.is()) { + const auto v = obj.as(); + const auto v_as_f = lua::datatypes::Vector3f{ (float)v.x, (float)v.y, (float)v.z }; + const auto vv = (UEVR_Vector3f*)&v_as_f; + state->set_location_offset(vv); + } else { + throw sol::error("Invalid type for set_location_offset"); + } + }, + "set_hand", &uevr::API::UObjectHook::MotionControllerState::set_hand, + "set_permanent", &uevr::API::UObjectHook::MotionControllerState::set_permanent + ); + m_lua.new_usertype("UEVR_UObjectHook", "activate", &uevr::API::UObjectHook::activate, "exists", &uevr::API::UObjectHook::exists,