[Bf-blender-cvs] [334114d287a] xr-actions-D9124: XR: Cleanup after actionmap refactoring

Peter Kim noreply at git.blender.org
Sun Mar 14 11:16:24 CET 2021


Commit: 334114d287abd3a22277bbc45328da7e5788524c
Author: Peter Kim
Date:   Sun Mar 14 19:02:34 2021 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rB334114d287abd3a22277bbc45328da7e5788524c

XR: Cleanup after actionmap refactoring

Aside from general cleanup, changed that only user actionconfigs and
the builtin user config can be saved to blend files (the builtin
default and addon configs are excluded).

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

M	source/blender/editors/interface/interface_templates.c
M	source/blender/makesdna/DNA_windowmanager_types.h
M	source/blender/makesdna/DNA_xr_types.h
M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/makesrna/intern/rna_xr.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/WM_types.h
M	source/blender/windowmanager/intern/wm.c
M	source/blender/windowmanager/intern/wm_event_query.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/xr/intern/wm_xr_actionmap.c
M	source/blender/windowmanager/xr/intern/wm_xr_actions.c
M	source/blender/windowmanager/xr/intern/wm_xr_session.c

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

diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index d37b4605981..60d5e1d4ea6 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -7020,11 +7020,13 @@ void uiTemplateKeymapItemProperties(uiLayout *layout, PointerRNA *ptr)
 /** \name XR Actionmap Template
  * \{ */
 
+#ifdef WITH_XR_OPENXR
 static void xr_actionmap_item_modified(bContext *UNUSED(C), void *ami_p, void *UNUSED(unused))
 {
   XrActionMapItem *ami = (XrActionMapItem *)ami_p;
   WM_xr_actionconfig_update_tag(NULL, ami);
 }
+#endif
 
 void uiTemplateXrActionmapItemProperties(uiLayout *layout, PointerRNA *ptr)
 {
diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h
index 4631562f2e2..68d69a671ba 100644
--- a/source/blender/makesdna/DNA_windowmanager_types.h
+++ b/source/blender/makesdna/DNA_windowmanager_types.h
@@ -364,10 +364,6 @@ typedef struct wmKeyMapItem {
   short shift, ctrl, alt, oskey;
   /** Raw-key modifier. */
   short keymodifier;
-  /** XR action set name. */
-  char xr_action_set[64];
-  /** XR action name. */
-  char xr_action[64];
 
   /* flag: inactive, expanded */
   short flag;
diff --git a/source/blender/makesdna/DNA_xr_types.h b/source/blender/makesdna/DNA_xr_types.h
index 19bd4848230..149e15f891d 100644
--- a/source/blender/makesdna/DNA_xr_types.h
+++ b/source/blender/makesdna/DNA_xr_types.h
@@ -117,9 +117,7 @@ typedef struct XrActionMapItem {
 
 /** #XrActionMapItem.flag */
 enum {
-  XR_AMI_INACTIVE = (1 << 0),
-  XR_AMI_USER_MODIFIED = (1 << 1), /* Actionmap item has user modifications. */
-  XR_AMI_UPDATE = (1 << 2),
+  XR_AMI_UPDATE = (1 << 0),
 };
 
 typedef struct XrActionMap {
@@ -138,9 +136,7 @@ typedef struct XrActionMap {
 
 /** #XrActionMap.flag */
 enum {
-  XR_ACTIONMAP_USER = (1 << 0),          /* User actionmap. */
-  XR_ACTIONMAP_USER_MODIFIED = (1 << 1), /* Actionmap has user modifications. */
-  XR_ACTIONMAP_UPDATE = (1 << 2),
+  XR_ACTIONMAP_UPDATE = (1 << 0),
 };
 
 typedef struct XrActionConfig {
@@ -165,8 +161,6 @@ enum {
 #define XR_ACTIONMAP_MAX_NAME 64
 #define XR_AMI_MAX_NAME 64
 
-#define XR_ACTIONCONF_STR_DEFAULT "Blender"
-
 /** XR action type. Enum values match those in GHOST_XrActionType enum for consistency. */
 typedef enum eXrActionType {
   XR_BOOLEAN_INPUT = 1,
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 6b9c2f576a5..9fb60dd8295 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -700,7 +700,7 @@ static bool rna_Event_is_xr_get(PointerRNA *ptr)
   return WM_event_is_xr(event);
 }
 
-static void rna_Event_xr_action_set_get(PointerRNA *ptr, char *value)
+static void rna_Event_xr_actionmap_get(PointerRNA *ptr, char *value)
 {
   const wmEvent *event = ptr->data;
   if (WM_event_is_xr(event)) {
@@ -711,12 +711,12 @@ static void rna_Event_xr_action_set_get(PointerRNA *ptr, char *value)
   }
 }
 
-static int rna_Event_xr_action_set_length(PointerRNA *ptr)
+static int rna_Event_xr_actionmap_length(PointerRNA *ptr)
 {
   const wmEvent *event = ptr->data;
   if (WM_event_is_xr(event)) {
     wmXrActionData *data = event->customdata;
-    return strlen(data->action_set) + 1;
+    return strlen(data->actionmap) + 1;
   }
   else {
     return 0;
@@ -2370,11 +2370,11 @@ static void rna_def_event(BlenderRNA *brna)
   RNA_def_property_boolean_funcs(prop, "rna_Event_is_xr_get", NULL);
   RNA_def_property_ui_text(prop, "Is XR", "The event has XR data");
 
-  prop = RNA_def_property(srna, "xr_action_set", PROP_STRING, PROP_NONE);
+  prop = RNA_def_property(srna, "xr_actionmap", PROP_STRING, PROP_NONE);
   RNA_def_property_clear_flag(prop, PROP_EDITABLE);
   RNA_def_property_string_funcs(
-      prop, "rna_Event_xr_action_set_get", "rna_Event_xr_action_set_length", NULL);
-  RNA_def_property_ui_text(prop, "XR Action Set", "XR action set name");
+      prop, "rna_Event_xr_actionmap_get", "rna_Event_xr_actionmap_length", NULL);
+  RNA_def_property_ui_text(prop, "XR Action Map", "XR action map name");
 
   prop = RNA_def_property(srna, "xr_action", PROP_STRING, PROP_NONE);
   RNA_def_property_clear_flag(prop, PROP_EDITABLE);
diff --git a/source/blender/makesrna/intern/rna_xr.c b/source/blender/makesrna/intern/rna_xr.c
index bd75cd2f434..4bd1937abd6 100644
--- a/source/blender/makesrna/intern/rna_xr.c
+++ b/source/blender/makesrna/intern/rna_xr.c
@@ -732,24 +732,25 @@ static void rna_XrSessionState_controller_pose1_rotation_get(PointerRNA *ptr, fl
 #  endif
 }
 
-static XrActionMapItem *rna_XrActionMapItem_new(XrActionMap *am, const char *idname)
+static XrActionMapItem *rna_XrActionMapItem_new(XrActionMap *am,
+                                                const char *idname,
+                                                bool replace_existing)
 {
 #  ifdef WITH_XR_OPENXR
-  return WM_xr_actionmap_item_ensure(am, idname);
+  return WM_xr_actionmap_item_new(am, idname, replace_existing);
 #  else
-  UNUSED_VARS(am, idname);
+  UNUSED_VARS(am, idname, replace_existing);
   return NULL;
 #  endif
 }
 
 static XrActionMapItem *rna_XrActionMapItem_new_from_item(XrActionMap *am,
-                                                          const char *idname,
                                                           XrActionMapItem *ami_src)
 {
 #  ifdef WITH_XR_OPENXR
-  return WM_xr_actionmap_item_add_copy(am, idname, ami_src);
+  return WM_xr_actionmap_item_add_copy(am, ami_src);
 #  else
-  UNUSED_VARS(am, idname, ami_src);
+  UNUSED_VARS(am, ami_src);
   return NULL;
 #  endif
 }
@@ -795,6 +796,26 @@ static PointerRNA rna_XrActionMapItem_op_properties_get(PointerRNA *ptr)
   return PointerRNA_NULL;
 }
 
+static void rna_XrActionMapItem_name_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
+{
+#  ifdef WITH_XR_OPENXR
+  wmWindowManager *wm = bmain->wm.first;
+  if (wm) {
+    XrSessionSettings *settings = &wm->xr.session_settings;
+    XrActionConfig *actionconf = WM_xr_actionconfig_active_get(settings);
+    if (actionconf) {
+      XrActionMap *actionmap = BLI_findlink(&actionconf->actionmaps, actionconf->selactionmap);
+      if (actionmap) {
+        XrActionMapItem *ami = ptr->data;
+        WM_xr_actionmap_item_ensure_unique(actionmap, ami);
+      }
+    }
+  }
+#  else
+  UNUSED_VARS(bmain, ptr);
+#  endif
+}
+
 static void rna_XrActionMapItem_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
 {
 #  ifdef WITH_XR_OPENXR
@@ -805,24 +826,25 @@ static void rna_XrActionMapItem_update(Main *UNUSED(bmain), Scene *UNUSED(scene)
 #  endif
 }
 
-static XrActionMap *rna_XrActionMap_new(XrActionConfig *actionconf, const char *idname)
+static XrActionMap *rna_XrActionMap_new(XrActionConfig *actionconf,
+                                        const char *idname,
+                                        bool replace_existing)
 {
 #  ifdef WITH_XR_OPENXR
-  return WM_xr_actionmap_ensure(actionconf, idname);
+  return WM_xr_actionmap_new(actionconf, idname, replace_existing);
 #  else
-  UNUSED_VARS(actionconf, idname);
+  UNUSED_VARS(actionconf, idname, replace_existing);
   return NULL;
 #  endif
 }
 
 static XrActionMap *rna_XrActionMap_new_from_actionmap(XrActionConfig *actionconf,
-                                                       const char *idname,
                                                        XrActionMap *am_src)
 {
 #  ifdef WITH_XR_OPENXR
-  return WM_xr_actionmap_add_copy(actionconf, idname, am_src);
+  return WM_xr_actionmap_add_copy(actionconf, am_src);
 #  else
-  UNUSED_VARS(actionconf, idname, am_src);
+  UNUSED_VARS(actionconf, am_src);
   return NULL;
 #  endif
 }
@@ -853,10 +875,27 @@ static XrActionMap *rna_XrActionMap_find(XrActionConfig *actionconf, const char
 #  endif
 }
 
+static void rna_XrActionMap_name_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
+{
+#  ifdef WITH_XR_OPENXR
+  wmWindowManager *wm = bmain->wm.first;
+  if (wm) {
+    XrSessionSettings *settings = &wm->xr.session_settings;
+    XrActionConfig *actionconf = WM_xr_actionconfig_active_get(settings);
+    if (actionconf) {
+      XrActionMap *actionmap = ptr->data;
+      WM_xr_actionmap_ensure_unique(actionconf, actionmap);
+    }
+  }
+#  else
+  UNUSED_VARS(bmain, ptr);
+#  endif
+}
+
 static XrActionConfig *rna_XrActionConfig_new(XrSessionSettings *settings, const char *name)
 {
 #  ifdef WITH_XR_OPENXR
-  return WM_xr_actionconfig_new_user(settings, name);
+  return WM_xr_actionconfig_new(settings, name, true);
 #  else
   UNUSED_VARS(settings, name);
   return NULL;
@@ -963,12 +1002,16 @@ void RNA_api_xr_actionmapitems(StructRNA *srna)
   func = RNA_def_function(srna, "new", "rna_XrActionMapItem_new");
   parm = RNA_def_string(func, "idname", NULL, 0, "Name of the action map item", "");
   RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+  parm = RNA_def_boolean(func,
+                         "replace_existing",
+                         true,
+                         "Replace Existing",
+                         "Replace any existing item with same name");
+  RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
   parm = RNA_def_pointer(func, "item", "XrActionMapItem", "Item", "Added action map item");
   RNA_def_function_return(func, parm);
 
   func = RNA_def_function(srna, "new_from_item", "rna_XrActionMapItem_new_from_item");
-  parm = RNA_def_string(func, "idname", NULL, 0, "Name of the action map item", "");
-  RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
   parm = RNA_def_pointer(func, "item", "XrActionMapItem", "Item", "Item to use as a reference");
   RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
   parm = RNA_def_pointer(func, "result", "XrActionMapItem", "Item", "Added action map item");
@@ -1007,12 +1050,16 @@ void RNA_api_xr_actionmaps(StructRNA *srna)
   func = RNA_def_function(srna, "new", "rna_XrActionMap_new");
   parm = RNA_def_string(func, "name", NULL, XR_ACTIONMAP_MAX_NAME, "Name", "");
   RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+  parm = RNA_def_boolean(func,
+                         "replace_existing",
+                         tr

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list