[Bf-blender-cvs] [86e367028b6] xr-dev: Merge branch 'master' into xr-dev
Peter Kim
noreply at git.blender.org
Sat May 28 10:31:01 CEST 2022
Commit: 86e367028b60da812df849e1ee83966040a92577
Author: Peter Kim
Date: Sat May 28 17:29:12 2022 +0900
Branches: xr-dev
https://developer.blender.org/rB86e367028b60da812df849e1ee83966040a92577
Merge branch 'master' into xr-dev
===================================================================
===================================================================
diff --cc source/blender/windowmanager/xr/intern/wm_xr_intern.h
index 4de28f43213,bb24514457d..f450fc91e89
--- a/source/blender/windowmanager/xr/intern/wm_xr_intern.h
+++ b/source/blender/windowmanager/xr/intern/wm_xr_intern.h
@@@ -52,17 -52,13 +52,19 @@@ typedef struct wmXrSessionState
/** Last known controller data. */
ListBase controllers; /* #wmXrController */
+ /** Last known tracker data. */
+ ListBase trackers; /* #wmXrController */
/** The currently active action set that will be updated on calls to
- * wm_xr_session_actions_update(). If NULL, all action sets will be treated as active and
+ * #wm_xr_session_actions_update(). If NULL, all action sets will be treated as active and
* updated. */
struct wmXrActionSet *active_action_set;
+ /* Name of the action set (if any) to activate before the next actions sync. */
+ char active_action_set_next[64]; /* MAX_NAME */
+
+ /* Original poses for motion capture objects. Used to restore object transforms on session end.
+ */
+ ListBase mocap_orig_poses; /* #wmXrMotionCapturePose */
} wmXrSessionState;
typedef struct wmXrRuntimeData {
diff --cc source/blender/windowmanager/xr/intern/wm_xr_session.c
index 6e5dc18a18a,a4d2a65830f..9f511bc2fda
--- a/source/blender/windowmanager/xr/intern/wm_xr_session.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_session.c
@@@ -1308,8 -1175,6 +1308,7 @@@ void wm_xr_session_actions_update(cons
XrSessionSettings *settings = &xr->session_settings;
GHOST_XrContextHandle xr_context = xr->runtime->context;
wmXrSessionState *state = &xr->runtime->session_state;
- wmXrActionSet *active_action_set = state->active_action_set;
+ wmWindow *win = wm_xr_session_root_window_or_fallback_get(wm, xr->runtime);
if (state->is_navigation_dirty) {
memcpy(&state->nav_pose_prev, &state->nav_pose, sizeof(state->nav_pose_prev));
@@@ -1326,23 -1191,13 +1325,30 @@@
&state->viewer_pose, settings->base_scale * state->nav_scale, state->viewer_viewmat);
}
+ /* Set active action set if requested previously. */
+ if (state->active_action_set_next[0]) {
+ WM_xr_active_action_set_set(xr, state->active_action_set_next, false);
+ state->active_action_set_next[0] = '\0';
+ }
+ wmXrActionSet *active_action_set = state->active_action_set;
+
+ /* Update headset motion capture objects. */
+ {
+ Scene *scene = CTX_data_scene(C);
+ ViewLayer *view_layer = CTX_data_view_layer(C);
+ bScreen *screen_anim = ED_screen_animation_playing(wm);
+ bool notify = true;
+ wm_xr_mocap_objects_update(XR_HEADSET_PATH,
+ &state->viewer_pose,
+ (bContext *)C,
+ settings,
+ scene,
+ view_layer,
+ win,
+ screen_anim,
+ ¬ify);
+ }
+
const bool synced = GHOST_XrSyncActions(xr_context,
active_action_set ? active_action_set->name : NULL);
if (!synced) {
More information about the Bf-blender-cvs
mailing list