[Bf-blender-cvs] [f6e71179fe3] xr-actions-D9124: XR: Draw controller overlays in mirror view

Peter Kim noreply at git.blender.org
Sun Nov 8 14:56:03 CET 2020


Commit: f6e71179fe30661fee9759016aa7a7b17478578d
Author: Peter Kim
Date:   Sat Nov 7 17:44:56 2020 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rBf6e71179fe30661fee9759016aa7a7b17478578d

XR: Draw controller overlays in mirror view

===================================================================

M	source/blender/draw/intern/draw_manager.c
M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 0754c1c10c8..c9f31ba8eff 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1413,6 +1413,14 @@ void DRW_draw_callbacks_post_scene(void)
 
     ED_region_draw_cb_draw(DST.draw_ctx.evil_C, DST.draw_ctx.region, REGION_DRAW_POST_VIEW);
 
+    if (((v3d->flag & V3D_XR_SESSION_MIRROR) != 0) &&
+        ((v3d->flag2 & V3D_XR_SHOW_CONTROLLERS) != 0)) {
+      ARegionType *art = WM_xr_surface_region_type_get();
+      if (art) {
+        ED_region_surface_draw_cb_draw(art, REGION_DRAW_POST_VIEW);
+      }
+    }
+
     /* Callback can be nasty and do whatever they want with the state.
      * Don't trust them! */
     DRW_state_reset();
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index b5fa2d048c1..00f6d3f4478 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -328,7 +328,6 @@ static void view3d_xr_mirror_setup(const wmWindowManager *wm,
                                    ARegion *region,
                                    const rcti *rect)
 {
-  RegionView3D *rv3d = region->regiondata;
   float viewmat[4][4];
   const float lens_old = v3d->lens;
   const float clip_start_old = v3d->clip_start;
@@ -341,13 +340,17 @@ static void view3d_xr_mirror_setup(const wmWindowManager *wm,
   if (!WM_xr_session_state_viewer_pose_matrix_info_get(
           &wm->xr, from_selection_eye, viewmat, &v3d->lens, &v3d->clip_start, &v3d->clip_end)) {
     /* Can't get info from XR session, use fallback values. */
-    copy_m4_m4(viewmat, rv3d->viewmat);
+    copy_m4_m4(viewmat, ((RegionView3D *)region->regiondata)->viewmat);
     v3d->lens = lens_old;
     v3d->clip_start = clip_start_old;
     v3d->clip_end = clip_end_old;
   }
   view3d_main_region_setup_view(depsgraph, scene, v3d, region, viewmat, NULL, rect);
 
+  if ((wm->xr.session_settings.draw_flags & V3D_OFSDRAW_XR_SHOW_CONTROLLERS) != 0) {
+    v3d->flag2 |= V3D_XR_SHOW_CONTROLLERS;
+  }
+
   /* Reset overridden View3D data */
   v3d->lens = lens_old;
   v3d->clip_start = clip_start_old;



More information about the Bf-blender-cvs mailing list