Skip to content

Commit

Permalink
Lua: Expose MotionControllerState functions
Browse files Browse the repository at this point in the history
  • Loading branch information
praydog committed Aug 14, 2024
1 parent b6b905f commit 0ae3d3a
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions lua-api/lib/src/ScriptContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,45 @@ int ScriptContext::setup_bindings() {
"get_item", &uevr::API::FUObjectArray::get_item
);

m_lua.new_usertype<uevr::API::UObjectHook::MotionControllerState>("UEVR_MotionControllerState",
"set_rotation_offset", [](sol::this_state s, uevr::API::UObjectHook::MotionControllerState* state, sol::object obj) {
if (obj.is<UEVR_Quaternionf>()) {
const auto q = obj.as<UEVR_Quaternionf>();
state->set_rotation_offset(&q);
} else if (obj.is<lua::datatypes::Vector4f>()) {
const auto v = obj.as<lua::datatypes::Vector4f>();
const auto vq = (UEVR_Quaternionf*)&v;
state->set_rotation_offset(vq);
} else if (obj.is<lua::datatypes::Vector4d>()) {
const auto v = obj.as<lua::datatypes::Vector4d>();
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<UEVR_Vector3f>()) {
const auto v = obj.as<UEVR_Vector3f>();
state->set_location_offset(&v);
} else if (obj.is<lua::datatypes::Vector3f>()) {
const auto v = obj.as<lua::datatypes::Vector3f>();
const auto vv = (UEVR_Vector3f*)&v;
state->set_location_offset(vv);
} else if (obj.is<lua::datatypes::Vector3d>()) {
const auto v = obj.as<lua::datatypes::Vector3d>();
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::API::UObjectHook>("UEVR_UObjectHook",
"activate", &uevr::API::UObjectHook::activate,
"exists", &uevr::API::UObjectHook::exists,
Expand Down

0 comments on commit 0ae3d3a

Please sign in to comment.