[Bf-blender-cvs] [0f236af8176] xr-actions-D9124: XR: Remove remaining use of GHOST types in RNA

Peter Kim noreply at git.blender.org
Sun Jan 31 14:32:01 CET 2021


Commit: 0f236af81761bcf2f370544468298c3fc9b5b0c5
Author: Peter Kim
Date:   Sun Jan 31 22:07:13 2021 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rB0f236af81761bcf2f370544468298c3fc9b5b0c5

XR: Remove remaining use of GHOST types in RNA

It might be good to have a WM equivalent for GHOST_XrPose (e.g.
wmXrPose) since converting from location/rotation or float[7] to
GHOST_XrPose can be pretty awkward.

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

M	source/blender/makesrna/intern/rna_xr.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/xr/intern/wm_xr_actions.c
M	source/blender/windowmanager/xr/intern/wm_xr_intern.h
M	source/blender/windowmanager/xr/intern/wm_xr_session.c

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

diff --git a/source/blender/makesrna/intern/rna_xr.c b/source/blender/makesrna/intern/rna_xr.c
index f2dc5603343..ee92c8b43f8 100644
--- a/source/blender/makesrna/intern/rna_xr.c
+++ b/source/blender/makesrna/intern/rna_xr.c
@@ -30,10 +30,6 @@
 
 #include "WM_types.h"
 
-#ifdef WITH_XR_OPENXR
-#  include "../ghost/GHOST_Types.h"
-#endif
-
 #include "rna_internal.h"
 
 #ifdef RNA_RUNTIME
@@ -41,7 +37,6 @@
 #  include "WM_api.h"
 
 #  ifdef WITH_XR_OPENXR
-#    include "xr/intern/wm_xr_intern.h"
 
 static wmXrData *rna_XrSession_wm_xr_data_get(PointerRNA *ptr)
 {
@@ -116,17 +111,16 @@ static void rna_XrSessionSettings_headset_object_set(PointerRNA *ptr,
 #  ifdef WITH_XR_OPENXR
   wmXrData *xr = rna_XrSession_wm_xr_data_get(ptr);
   Object *ob = value.data;
-  if (WM_xr_session_exists(xr)) {
-    if (xr->session_settings.headset_object) {
-      /* Restore previous object's original pose. */
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.headset_object_orig_pose,
-                                    xr->session_settings.headset_object);
-    }
-    if (ob) {
-      /* Store new object's original pose. */
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.headset_object_orig_pose);
-    }
+
+  if (xr->session_settings.headset_object) {
+    /* Restore previous object's original pose. */
+    WM_xr_session_state_viewer_object_get(xr, xr->session_settings.headset_object);
+  }
+  if (ob) {
+    /* Store new object's original pose. */
+    WM_xr_session_state_viewer_object_set(xr, ob);
   }
+
   xr->session_settings.headset_object = ob;
 #  else
   UNUSED_VARS(ptr, value);
@@ -157,12 +151,12 @@ static void rna_XrSessionSettings_headset_object_enable_set(PointerRNA *ptr, boo
 
   /* Store/restore object's original pose. */
   Object *ob = xr->session_settings.headset_object;
-  if (ob && WM_xr_session_exists(xr)) {
+  if (ob) {
     if (value) {
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.headset_object_orig_pose);
+      WM_xr_session_state_viewer_object_set(xr, ob);
     }
     else {
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.headset_object_orig_pose, ob);
+      WM_xr_session_state_viewer_object_get(xr, ob);
     }
   }
 #  else
@@ -203,17 +197,16 @@ static void rna_XrSessionSettings_controller0_object_set(PointerRNA *ptr,
 #  ifdef WITH_XR_OPENXR
   wmXrData *xr = rna_XrSession_wm_xr_data_get(ptr);
   Object *ob = value.data;
-  if (WM_xr_session_exists(xr)) {
-    if (xr->session_settings.controller0_object) {
-      /* Restore previous object's original pose. */
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.controller0_object_orig_pose,
-                                    xr->session_settings.controller0_object);
-    }
-    if (ob) {
-      /* Store new object's original pose. */
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.controller0_object_orig_pose);
-    }
+
+  if (xr->session_settings.controller0_object) {
+    /* Restore previous object's original pose. */
+    WM_xr_session_state_controller_object_get(xr, 0, xr->session_settings.controller0_object);
   }
+  if (ob) {
+    /* Store new object's original pose. */
+    WM_xr_session_state_controller_object_set(xr, 0, ob);
+  }
+
   xr->session_settings.controller0_object = ob;
 #  else
   UNUSED_VARS(ptr, value);
@@ -244,12 +237,12 @@ static void rna_XrSessionSettings_controller0_object_enable_set(PointerRNA *ptr,
 
   /* Store/restore object's original pose. */
   Object *ob = xr->session_settings.controller0_object;
-  if (ob && WM_xr_session_exists(xr)) {
+  if (ob) {
     if (value) {
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.controller0_object_orig_pose);
+      WM_xr_session_state_controller_object_set(xr, 0, ob);
     }
     else {
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.controller0_object_orig_pose, ob);
+      WM_xr_session_state_controller_object_get(xr, 0, ob);
     }
   }
 #  else
@@ -290,17 +283,16 @@ static void rna_XrSessionSettings_controller1_object_set(PointerRNA *ptr,
 #  ifdef WITH_XR_OPENXR
   wmXrData *xr = rna_XrSession_wm_xr_data_get(ptr);
   Object *ob = value.data;
-  if (WM_xr_session_exists(xr)) {
-    if (xr->session_settings.controller1_object) {
-      /* Restore previous object's original pose. */
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.controller1_object_orig_pose,
-                                    xr->session_settings.controller1_object);
-    }
-    if (ob) {
-      /* Store new object's original pose. */
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.controller1_object_orig_pose);
-    }
+
+  if (xr->session_settings.controller1_object) {
+    /* Restore previous object's original pose. */
+    WM_xr_session_state_controller_object_get(xr, 1, xr->session_settings.controller1_object);
+  }
+  if (ob) {
+    /* Store new object's original pose. */
+    WM_xr_session_state_controller_object_set(xr, 1, ob);
   }
+
   xr->session_settings.controller1_object = ob;
 #  else
   UNUSED_VARS(ptr, value);
@@ -331,12 +323,12 @@ static void rna_XrSessionSettings_controller1_object_enable_set(PointerRNA *ptr,
 
   /* Store/restore object's original pose. */
   Object *ob = xr->session_settings.controller1_object;
-  if (ob && WM_xr_session_exists(xr)) {
+  if (ob) {
     if (value) {
-      wm_xr_session_object_pose_get(ob, &xr->runtime->session_state.controller1_object_orig_pose);
+      WM_xr_session_state_controller_object_set(xr, 1, ob);
     }
     else {
-      wm_xr_session_object_pose_set(&xr->runtime->session_state.controller1_object_orig_pose, ob);
+      WM_xr_session_state_controller_object_get(xr, 1, ob);
     }
   }
 #  else
@@ -504,11 +496,11 @@ bool rna_XrSessionState_action_space_create(bContext *C,
     }
   }
 
-  GHOST_XrPose poses[2];
-  eul_to_quat(poses[0].orientation_quat, rotation);
-  normalize_qt(poses[0].orientation_quat);
-  copy_v3_v3(poses[0].position, location);
-  memcpy(&poses[1], &poses[0], sizeof(GHOST_XrPose));
+  float poses[2][7];
+  copy_v3_v3(poses[0], location);
+  eul_to_quat(&poses[0][3], rotation);
+  normalize_qt(&poses[0][3]);
+  memcpy(poses[1], poses[0], sizeof(float[7]));
 
   return WM_xr_action_space_create(
       &wm->xr, action_set_name, action_name, count_subaction_paths, subaction_paths, poses);
@@ -607,12 +599,8 @@ void rna_XrSessionState_pose_action_state_get(bContext *C,
 {
 #  ifdef WITH_XR_OPENXR
   wmWindowManager *wm = CTX_wm_manager(C);
-  if (!WM_xr_action_state_get(&wm->xr,
-                              action_set_name,
-                              action_name,
-                              XR_POSE_INPUT,
-                              user_path,
-                              (GHOST_XrPose *)r_state)) {
+  if (!WM_xr_action_state_get(
+          &wm->xr, action_set_name, action_name, XR_POSE_INPUT, user_path, r_state)) {
     zero_v3(r_state);
     unit_qt(&r_state[3]);
     return;
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index c4a7506ec67..929a886f04d 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -67,14 +67,13 @@ struct wmOperatorType;
 struct wmPaintCursor;
 struct wmTabletData;
 
+#ifdef WITH_INPUT_NDOF
+struct wmNDOFMotionData;
+#endif
+
 #ifdef WITH_XR_OPENXR
 enum wmXrActionType;
 enum wmXrOpFlag;
-struct GHOST_XrPose;
-#endif
-
-#ifdef WITH_INPUT_NDOF
-struct wmNDOFMotionData;
 #endif
 
 typedef struct wmGizmo wmGizmo;
@@ -951,6 +950,14 @@ bool WM_xr_session_state_controller_pose_location_get(const wmXrData *xr,
 bool WM_xr_session_state_controller_pose_rotation_get(const wmXrData *xr,
                                                       unsigned int subaction_idx,
                                                       float r_rotation[4]);
+void WM_xr_session_state_viewer_object_get(const wmXrData *xr, Object *ob);
+void WM_xr_session_state_viewer_object_set(wmXrData *xr, const Object *ob);
+void WM_xr_session_state_controller_object_get(const wmXrData *xr,
+                                               unsigned int subaction_idx,
+                                               Object *ob);
+void WM_xr_session_state_controller_object_set(wmXrData *xr,
+                                               unsigned int subaction_idx,
+                                               const Object *ob);
 
 struct ARegionType *WM_xr_surface_controller_region_type_get(void);
 
@@ -975,7 +982,7 @@ bool WM_xr_action_space_create(wmXrData *xr,
                                const char *action_name,
                                unsigned int count_subaction_paths,
                                const char **subaction_paths,
-                               const struct GHOST_XrPose *poses);
+                               const float (*poses)[7]);
 void WM_xr_action_space_destroy(wmXrData *xr,
                                 const char *action_set_name,
                                 const char *action_name,
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_actions.c b/source/blender/windowmanager/xr/intern/wm_xr_actions.c
index 121b4d93bf0..8e0de4dd5c5 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_actions.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_actions.c
@@ -336,14 +336,15 @@ bool WM_xr_action_space_create(wmXrData *xr,
                                const char *action_name,
                                unsigned int count_subaction_paths,
                                const char **subaction_paths,
-                               const GHOST_XrPose *poses)
+                               const float (*poses)[7])
 {
   GHOST_XrActionSpaceInfo info = {
       .action_name = action_name,
       .count_subaction_paths = count_subaction_paths,
       .subaction_paths = subaction_paths,
-      .poses = poses,
+      .poses = (const GHOST_XrPose *)poses,
   };
+  BLI_STATIC_ASSERT(sizeof(*info.poses) == sizeof(*poses), "GHOST_XrPose size mismatch.");
 
   return GHOST_XrCreateActionSpaces(xr->runtime->context, action_set_name, 1, &info) ? true :
                                                                                        false;
@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list