[Bf-blender-cvs] [86faaaa934f] xr-actions-D9124: XR: Improve raycast select in edit mode

Peter Kim noreply at git.blender.org
Sun Nov 15 15:53:16 CET 2020


Commit: 86faaaa934f9872ca790f6527bd7b5ff4e6f39bf
Author: Peter Kim
Date:   Sat Nov 14 15:50:56 2020 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rB86faaaa934f9872ca790f6527bd7b5ff4e6f39bf

XR: Improve raycast select in edit mode

Limit raycast test to selected objects.

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

M	source/blender/editors/include/ED_transform_snap_object_context.h
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/windowmanager/xr/intern/wm_xr_operators.c

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

diff --git a/source/blender/editors/include/ED_transform_snap_object_context.h b/source/blender/editors/include/ED_transform_snap_object_context.h
index ebaa32941f2..63cc07f42c5 100644
--- a/source/blender/editors/include/ED_transform_snap_object_context.h
+++ b/source/blender/editors/include/ED_transform_snap_object_context.h
@@ -44,6 +44,7 @@ typedef enum eSnapSelect {
   SNAP_ALL = 0,
   SNAP_NOT_SELECTED = 1,
   SNAP_NOT_ACTIVE = 2,
+  SNAP_SELECTED = 3,
 } eSnapSelect;
 
 /** used for storing multiple hits */
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index 50b7c6d147b..91ad615d60f 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -413,6 +413,11 @@ static void iter_snap_objects(SnapObjectContext *sctx,
         continue;
       }
     }
+    else if (snap_select == SNAP_SELECTED) {
+      if (!(base->flag & BASE_SELECTED) && !(base->flag_legacy & BA_WAS_SEL)) {
+        continue;
+      }
+    }
 
     Object *obj_eval = DEG_get_evaluated_object(depsgraph, base->object);
     if (obj_eval->transflag & OB_DUPLI) {
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_operators.c b/source/blender/windowmanager/xr/intern/wm_xr_operators.c
index dd9f63f3506..594d6ef8795 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_operators.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_operators.c
@@ -349,7 +349,7 @@ static bool wm_xr_select_raycast(bContext *C,
   ED_transform_snap_object_project_ray_ex(sctx,
                                           depsgraph,
                                           &(const struct SnapObjectParams){
-                                              .snap_select = SNAP_ALL,
+                                              .snap_select = vc.em ? SNAP_SELECTED : SNAP_ALL,
                                           },
                                           origin,
                                           direction,
@@ -366,7 +366,8 @@ static bool wm_xr_select_raycast(bContext *C,
   bool hit = false;
   bool changed = false;
 
-  if (ob && vc.em && (ob->id.orig_id == &vc.obedit->id)) { /* TODO_XR: Non-mesh objects. */
+  if (ob && vc.em &&
+      ((ob == vc.obedit) || (ob->id.orig_id == &vc.obedit->id))) { /* TODO_XR: Non-mesh objects. */
     BMesh *bm = vc.em->bm;
     BMFace *f = NULL;
     BMEdge *e = NULL;



More information about the Bf-blender-cvs mailing list