[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,
 +                               &notify);
 +  }
 +
    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