[Bf-blender-cvs] [d7083de46d8] xr-actions-D9124: Update controller data when setting controller pose action.
Peter Kim
noreply at git.blender.org
Tue Oct 13 14:45:00 CEST 2020
Commit: d7083de46d8b3bf64bf11eb3cf86fe296ec46b67
Author: Peter Kim
Date: Thu Oct 8 23:49:29 2020 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rBd7083de46d8b3bf64bf11eb3cf86fe296ec46b67
Update controller data when setting controller pose action.
===================================================================
M source/blender/windowmanager/xr/intern/wm_xr_actions.c
M source/blender/windowmanager/xr/intern/wm_xr_session.c
===================================================================
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_actions.c b/source/blender/windowmanager/xr/intern/wm_xr_actions.c
index d6c440f73bf..ecb3e61efb3 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_actions.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_actions.c
@@ -263,6 +263,10 @@ void WM_xr_actions_destroy(wmXrData *xr,
if (!action_find(action_set, controller_pose_name)) {
action_set->controller_pose_action = NULL;
+
+ /* Update controller data. */
+ wmXrSessionState *session_state = &xr->runtime->session_state;
+ memset(session_state->controllers, 0, sizeof(session_state->controllers));
}
}
@@ -329,6 +333,15 @@ bool WM_xr_controller_pose_action_set(wmXrData *xr,
}
action_set->controller_pose_action = action;
+
+ /* Update controller data. */
+ wmXrSessionState *session_state = &xr->runtime->session_state;
+ memset(session_state->controllers, 0, sizeof(session_state->controllers));
+ const unsigned int count = min((unsigned int)ARRAY_SIZE(session_state->controllers), action->count_subaction_paths);
+ for (unsigned int i = 0; i < count; ++i) {
+ strcpy(session_state->controllers[i].subaction_path, action->subaction_paths[i]);
+ }
+
return true;
}
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_session.c b/source/blender/windowmanager/xr/intern/wm_xr_session.c
index 22c49089d6f..bbef1e47790 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_session.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_session.c
@@ -487,7 +487,7 @@ static void wm_xr_session_controller_mats_update(const XrSessionSettings *settin
static const GHOST_XrPose *wm_xr_session_controller_pose_find(const wmXrSessionState *state,
const char *subaction_path)
{
- for (unsigned int i = 0; i < 2; ++i) {
+ for (unsigned int i = 0; i < (unsigned int)ARRAY_SIZE(state->controllers); ++i) {
if (STREQ(state->controllers[i].subaction_path, subaction_path)) {
return &state->controllers[i].pose;
}
More information about the Bf-blender-cvs
mailing list