[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