Commit: 6920906f75b44fb9371077bd154477aa176d191c Author: Peter Kim Date: Thu Oct 15 00:23:48 2020 +0900 Branches: xr-actions-D9124 https://developer.blender.org/rB6920906f75b44fb9371077bd154477aa176d191c
XR: Remove "replace existing" param from action bindings creation Since action bindings are only created once at the beginning of an XR session, overwriting all existing bindings will not be needed. =================================================================== M intern/ghost/GHOST_C-api.h M intern/ghost/intern/GHOST_C-api.cpp M intern/ghost/intern/GHOST_XrSession.cpp M intern/ghost/intern/GHOST_XrSession.h M source/blender/makesrna/intern/rna_xr.c M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/xr/intern/wm_xr_actions.c =================================================================== diff --git a/intern/ghost/GHOST_C-api.h b/intern/ghost/GHOST_C-api.h index 09734506020..77c76d6c5fa 100644 --- a/intern/ghost/GHOST_C-api.h +++ b/intern/ghost/GHOST_C-api.h @@ -1120,8 +1120,7 @@ void GHOST_XrDestroyActionSpaces(GHOST_XrContextHandle xr_context, int GHOST_XrCreateActionBindings(GHOST_XrContextHandle xr_context, const char *action_set_name, GHOST_TUns32 count, - const GHOST_XrActionBindingsInfo *infos, - int replace_existing); + const GHOST_XrActionBindingsInfo *infos); /** * Destroy previously created bindings for OpenXR actions. diff --git a/intern/ghost/intern/GHOST_C-api.cpp b/intern/ghost/intern/GHOST_C-api.cpp index f124d5a92ce..c383505a148 100644 --- a/intern/ghost/intern/GHOST_C-api.cpp +++ b/intern/ghost/intern/GHOST_C-api.cpp @@ -1031,13 +1031,11 @@ void GHOST_XrDestroyActionSpaces(GHOST_XrContextHandle xr_contexthandle, int GHOST_XrCreateActionBindings(GHOST_XrContextHandle xr_contexthandle, const char *action_set_name, GHOST_TUns32 count, - const GHOST_XrActionBindingsInfo *infos, - int replace_existing) + const GHOST_XrActionBindingsInfo *infos) { GHOST_IXrContext *xr_context = (GHOST_IXrContext *)xr_contexthandle; GHOST_XrSession *xr_session = xr_context->getSession(); - GHOST_XR_CAPI_CALL_RET(xr_session->createActionBindings( - action_set_name, count, infos, replace_existing ? true : false), + GHOST_XR_CAPI_CALL_RET(xr_session->createActionBindings(action_set_name, count, infos), xr_context); return 0; } diff --git a/intern/ghost/intern/GHOST_XrSession.cpp b/intern/ghost/intern/GHOST_XrSession.cpp index 22b20d4cd23..371726bbcbd 100644 --- a/intern/ghost/intern/GHOST_XrSession.cpp +++ b/intern/ghost/intern/GHOST_XrSession.cpp @@ -855,8 +855,7 @@ void GHOST_XrSession::destroyActionSpaces(const char *action_set_name, bool GHOST_XrSession::createActionBindings(const char *action_set_name, uint32_t count, - const GHOST_XrActionBindingsInfo *infos, - bool replace_existing) + const GHOST_XrActionBindingsInfo *infos) { OpenXRActionSet *action_set = find_action_set(m_oxr.get(), action_set_name); if (action_set == nullptr) { @@ -897,25 +896,23 @@ bool GHOST_XrSession::createActionBindings(const char *action_set_name, nbindings.insert({binding.interaction_path, sbinding.binding}); } - if (!replace_existing) { - /* Since xrSuggestInteractionProfileBindings() overwrites all bindings, we - * need to re-add any existing bindings for the interaction profile. */ - for (auto &action : action_set->actions) { - OpenXRActionProfile *profile = find_action_profile(&action.second, - interaction_profile_path); - if (profile == nullptr) { + + /* Since xrSuggestInteractionProfileBindings() overwrites all bindings, we + * need to re-add any existing bindings for the interaction profile. */ + for (auto &action : action_set->actions) { + OpenXRActionProfile *profile = find_action_profile(&action.second, interaction_profile_path); + if (profile == nullptr) { + continue; + } + for (auto &binding : profile->bindings) { + if (nbindings.find(binding.first) != nbindings.end()) { continue; } - for (auto &binding : profile->bindings) { - if (nbindings.find(binding.first) != nbindings.end()) { - continue; - } - XrActionSuggestedBinding sbinding; - sbinding.action = action.second.action; - sbinding.binding = binding.second; + XrActionSuggestedBinding sbinding; + sbinding.action = action.second.action; + sbinding.binding = binding.second; - sbindings.push_back(std::move(sbinding)); - } + sbindings.push_back(std::move(sbinding)); } } diff --git a/intern/ghost/intern/GHOST_XrSession.h b/intern/ghost/intern/GHOST_XrSession.h index 9777ed18aa6..9412aaaca87 100644 --- a/intern/ghost/intern/GHOST_XrSession.h +++ b/intern/ghost/intern/GHOST_XrSession.h @@ -68,8 +68,7 @@ class GHOST_XrSession { const GHOST_XrActionSpaceInfo *infos); bool createActionBindings(const char *action_set_name, uint32_t count, - const GHOST_XrActionBindingsInfo *infos, - bool replace_existing); + const GHOST_XrActionBindingsInfo *infos); void destroyActionBindings(const char *action_set_name, uint32_t count, const GHOST_XrActionBindingsInfo *infos); diff --git a/source/blender/makesrna/intern/rna_xr.c b/source/blender/makesrna/intern/rna_xr.c index 6bff5104e7a..e994b764a5e 100644 --- a/source/blender/makesrna/intern/rna_xr.c +++ b/source/blender/makesrna/intern/rna_xr.c @@ -183,8 +183,7 @@ bool rna_XrSessionState_action_binding_create(bContext *C, const char *profile, const char *action_name, const char *interaction_path0, - const char *interaction_path1, - bool replace_existing) + const char *interaction_path1) { # ifdef WITH_XR_OPENXR wmWindowManager *wm = CTX_wm_manager(C); @@ -216,7 +215,7 @@ bool rna_XrSessionState_action_binding_create(bContext *C, } info.bindings = bindings; - return WM_xr_action_bindings_create(&wm->xr, action_set_name, 1, &info, replace_existing); + return WM_xr_action_bindings_create(&wm->xr, action_set_name, 1, &info); # else UNUSED_VARS(C, action_set_name, profile, action_name, interaction_path0, interaction_path1); return false; @@ -701,13 +700,6 @@ static void rna_def_xr_session_state(BlenderRNA *brna) "Interaction Path 1", "OpenXR interaction (user + component) path 1"); RNA_def_parameter_flags(parm, PROP_STRING, PARM_REQUIRED); - parm = RNA_def_boolean( - func, - "replace_existing", - false, - "Replace Existing", - "Replace all existing bindings for the action that belong to the specified profile"); - RNA_def_parameter_flags(parm, PROP_BOOLEAN, PARM_REQUIRED); parm = RNA_def_boolean(func, "result", 0, "Result", ""); RNA_def_function_return(func, parm); diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 273e91571b2..754ad209c14 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -912,7 +912,7 @@ void WM_generic_user_data_free(struct wmGenericUserData *wm_userdata); bool WM_region_use_viewport(struct ScrArea *area, struct ARegion *region); #ifdef WITH_XR_OPENXR -/* wm_xr.c */ +/* wm_xr_session.c */ bool WM_xr_session_exists(const wmXrData *xr); bool WM_xr_session_is_ready(const wmXrData *xr); struct wmXrSessionState *WM_xr_session_state_handle_get(const wmXrData *xr); @@ -953,8 +953,7 @@ void WM_xr_action_spaces_destroy(wmXrData *xr, bool WM_xr_action_bindings_create(wmXrData *xr, const char *action_set_name, unsigned int count, - const struct GHOST_XrActionBindingsInfo *infos, - bool replace_existing); + const struct GHOST_XrActionBindingsInfo *infos); void WM_xr_action_bindings_destroy(wmXrData *xr, const char *action_set_name, unsigned int count, diff --git a/source/blender/windowmanager/xr/intern/wm_xr_actions.c b/source/blender/windowmanager/xr/intern/wm_xr_actions.c index 93ddea9b28f..b1a2bd80211 100644 --- a/source/blender/windowmanager/xr/intern/wm_xr_actions.c +++ b/source/blender/windowmanager/xr/intern/wm_xr_actions.c @@ -300,13 +300,9 @@ void WM_xr_action_spaces_destroy(wmXrData *xr, bool WM_xr_action_bindings_create(wmXrData *xr, const char *action_set_name, unsigned int count, - const GHOST_XrActionBindingsInfo *infos, - bool replace_existing) + const GHOST_XrActionBindingsInfo *infos) { - return GHOST_XrCreateActionBindings( - xr->runtime->context, action_set_name, count, infos, replace_existing ? 1 : 0) ? - true : - false; + return GHOST_XrCreateActionBindings(xr->runtime->context, action_set_name, count, infos); } void WM_xr_action_bindings_destroy(wmXrData *xr, _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs