|
@@ -44,6 +44,7 @@ void OpenXRInterface::_bind_methods() {
|
|
// lifecycle signals
|
|
// lifecycle signals
|
|
ADD_SIGNAL(MethodInfo("session_begun"));
|
|
ADD_SIGNAL(MethodInfo("session_begun"));
|
|
ADD_SIGNAL(MethodInfo("session_stopping"));
|
|
ADD_SIGNAL(MethodInfo("session_stopping"));
|
|
|
|
+ ADD_SIGNAL(MethodInfo("session_synchronized"));
|
|
ADD_SIGNAL(MethodInfo("session_focussed"));
|
|
ADD_SIGNAL(MethodInfo("session_focussed"));
|
|
ADD_SIGNAL(MethodInfo("session_visible"));
|
|
ADD_SIGNAL(MethodInfo("session_visible"));
|
|
ADD_SIGNAL(MethodInfo("session_loss_pending"));
|
|
ADD_SIGNAL(MethodInfo("session_loss_pending"));
|
|
@@ -54,6 +55,9 @@ void OpenXRInterface::_bind_methods() {
|
|
ADD_SIGNAL(MethodInfo("cpu_level_changed", PropertyInfo(Variant::INT, "sub_domain"), PropertyInfo(Variant::INT, "from_level"), PropertyInfo(Variant::INT, "to_level")));
|
|
ADD_SIGNAL(MethodInfo("cpu_level_changed", PropertyInfo(Variant::INT, "sub_domain"), PropertyInfo(Variant::INT, "from_level"), PropertyInfo(Variant::INT, "to_level")));
|
|
ADD_SIGNAL(MethodInfo("gpu_level_changed", PropertyInfo(Variant::INT, "sub_domain"), PropertyInfo(Variant::INT, "from_level"), PropertyInfo(Variant::INT, "to_level")));
|
|
ADD_SIGNAL(MethodInfo("gpu_level_changed", PropertyInfo(Variant::INT, "sub_domain"), PropertyInfo(Variant::INT, "from_level"), PropertyInfo(Variant::INT, "to_level")));
|
|
|
|
|
|
|
|
+ // State
|
|
|
|
+ ClassDB::bind_method(D_METHOD("get_session_state"), &OpenXRInterface::get_session_state);
|
|
|
|
+
|
|
// Display refresh rate
|
|
// Display refresh rate
|
|
ClassDB::bind_method(D_METHOD("get_display_refresh_rate"), &OpenXRInterface::get_display_refresh_rate);
|
|
ClassDB::bind_method(D_METHOD("get_display_refresh_rate"), &OpenXRInterface::get_display_refresh_rate);
|
|
ClassDB::bind_method(D_METHOD("set_display_refresh_rate", "refresh_rate"), &OpenXRInterface::set_display_refresh_rate);
|
|
ClassDB::bind_method(D_METHOD("set_display_refresh_rate", "refresh_rate"), &OpenXRInterface::set_display_refresh_rate);
|
|
@@ -116,6 +120,16 @@ void OpenXRInterface::_bind_methods() {
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "vrs_min_radius", PROPERTY_HINT_RANGE, "1.0,100.0,1.0"), "set_vrs_min_radius", "get_vrs_min_radius");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "vrs_min_radius", PROPERTY_HINT_RANGE, "1.0,100.0,1.0"), "set_vrs_min_radius", "get_vrs_min_radius");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "vrs_strength", PROPERTY_HINT_RANGE, "0.1,10.0,0.1"), "set_vrs_strength", "get_vrs_strength");
|
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "vrs_strength", PROPERTY_HINT_RANGE, "0.1,10.0,0.1"), "set_vrs_strength", "get_vrs_strength");
|
|
|
|
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_UNKNOWN);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_IDLE);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_READY);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_SYNCHRONIZED);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_VISIBLE);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_FOCUSED);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_STOPPING);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_LOSS_PENDING);
|
|
|
|
+ BIND_ENUM_CONSTANT(OPENXR_SESSION_STATE_EXITING);
|
|
|
|
+
|
|
BIND_ENUM_CONSTANT(HAND_LEFT);
|
|
BIND_ENUM_CONSTANT(HAND_LEFT);
|
|
BIND_ENUM_CONSTANT(HAND_RIGHT);
|
|
BIND_ENUM_CONSTANT(HAND_RIGHT);
|
|
BIND_ENUM_CONSTANT(HAND_MAX);
|
|
BIND_ENUM_CONSTANT(HAND_MAX);
|
|
@@ -1375,6 +1389,10 @@ void OpenXRInterface::on_state_visible() {
|
|
emit_signal(SNAME("session_visible"));
|
|
emit_signal(SNAME("session_visible"));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void OpenXRInterface::on_state_synchronized() {
|
|
|
|
+ emit_signal(SNAME("session_synchronized"));
|
|
|
|
+}
|
|
|
|
+
|
|
void OpenXRInterface::on_state_focused() {
|
|
void OpenXRInterface::on_state_focused() {
|
|
emit_signal(SNAME("session_focussed"));
|
|
emit_signal(SNAME("session_focussed"));
|
|
}
|
|
}
|
|
@@ -1399,6 +1417,14 @@ void OpenXRInterface::on_refresh_rate_changes(float p_new_rate) {
|
|
emit_signal(SNAME("refresh_rate_changed"), p_new_rate);
|
|
emit_signal(SNAME("refresh_rate_changed"), p_new_rate);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+OpenXRInterface::OpenXrSessionState OpenXRInterface::get_session_state() {
|
|
|
|
+ if (openxr_api) {
|
|
|
|
+ return (OpenXrSessionState)openxr_api->get_session_state();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return OPENXR_SESSION_STATE_UNKNOWN;
|
|
|
|
+}
|
|
|
|
+
|
|
/** Hand tracking. */
|
|
/** Hand tracking. */
|
|
void OpenXRInterface::set_motion_range(const Hand p_hand, const HandMotionRange p_motion_range) {
|
|
void OpenXRInterface::set_motion_range(const Hand p_hand, const HandMotionRange p_motion_range) {
|
|
ERR_FAIL_INDEX(p_hand, HAND_MAX);
|
|
ERR_FAIL_INDEX(p_hand, HAND_MAX);
|