[Bf-extensions-cvs] [0eff6ae5] xr-actions-D9124: VR: Fix crash when deleting XR constraint objects

Peter Kim noreply at git.blender.org
Sun Nov 22 11:38:41 CET 2020


Commit: 0eff6ae5193fdbe677e4de0386f08948282812b3
Author: Peter Kim
Date:   Sun Nov 22 19:06:53 2020 +0900
Branches: xr-actions-D9124
https://developer.blender.org/rBA0eff6ae5193fdbe677e4de0386f08948282812b3

VR: Fix crash when deleting XR constraint objects

Using an intermediary pointer property instead of directly
referencing the one from XR session settings appears to solve this
issue.

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

M	viewport_vr_preview.py

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

diff --git a/viewport_vr_preview.py b/viewport_vr_preview.py
index 4381692f..97bd8099 100644
--- a/viewport_vr_preview.py
+++ b/viewport_vr_preview.py
@@ -1676,7 +1676,6 @@ class VIEW3D_PT_vr_motion_capture(Panel):
     def draw(self, context):
         layout = self.layout
         scene = context.scene
-        view3d = context.space_data
         session_settings = context.window_manager.xr_session_settings
 
         col = layout.column(align=True)
@@ -1689,25 +1688,40 @@ class VIEW3D_PT_vr_motion_capture(Panel):
         row = layout.row()
         row.label(text="Headset")
         col = row.column()
-        col.prop(session_settings, "headset_object", text="")
+        col.prop(scene, "vr_headset_object", text="")
         col.prop(session_settings, "headset_object_enable", text="Enable")
         col.prop(session_settings, "headset_object_autokey", text="Auto Key")
             
         row = layout.row()
         row.label(text="Controller 0")
         col = row.column()
-        col.prop(session_settings, "controller0_object", text="")
+        col.prop(scene, "vr_controller0_object", text="")
         col.prop(session_settings, "controller0_object_enable", text="Enable")
         col.prop(session_settings, "controller0_object_autokey", text="Auto Key")
 
         row = layout.row()
         row.label(text="Controller 1")
         col = row.column()
-        col.prop(session_settings, "controller1_object", text="")
+        col.prop(scene, "vr_controller1_object", text="")
         col.prop(session_settings, "controller1_object_enable", text="Enable")
         col.prop(session_settings, "controller1_object_autokey", text="Auto Key")
 
 
+def xr_headset_object_update(self, context):
+    session_settings = context.window_manager.xr_session_settings
+    session_settings.headset_object = context.scene.vr_headset_object
+
+
+def xr_controller0_object_update(self, context):
+    session_settings = context.window_manager.xr_session_settings
+    session_settings.controller0_object = context.scene.vr_controller0_object
+
+
+def xr_controller1_object_update(self, context):
+    session_settings = context.window_manager.xr_session_settings
+    session_settings.controller1_object = context.scene.vr_controller1_object
+
+
 class VIEW3D_PT_vr_viewport_feedback(Panel):
     bl_space_type = 'VIEW_3D'
     bl_region_type = 'UI'
@@ -2395,6 +2409,21 @@ def register():
         default=0,
         update=xr_action_set_active_update,
     )
+    bpy.types.Scene.vr_headset_object = bpy.props.PointerProperty(
+        name="Headset Object",
+        type=bpy.types.Object,
+        update=xr_headset_object_update,
+    )
+    bpy.types.Scene.vr_controller0_object = bpy.props.PointerProperty(
+        name="Controller 0 Object",
+        type=bpy.types.Object,
+        update=xr_controller0_object_update,
+    )
+    bpy.types.Scene.vr_controller1_object = bpy.props.PointerProperty(
+        name="Controller 1 Object",
+        type=bpy.types.Object,
+        update=xr_controller1_object_update,
+    )
     # View3DShading is the only per 3D-View struct with custom property
     # support, so "abusing" that to get a per 3D-View option.
     bpy.types.View3DShading.vr_show_virtual_camera = BoolProperty(
@@ -2439,6 +2468,9 @@ def unregister():
     del bpy.types.Scene.vr_action_sets
     del bpy.types.Scene.vr_action_sets_selected
     del bpy.types.Scene.vr_action_sets_active
+    del bpy.types.Scene.vr_headset_object
+    del bpy.types.Scene.vr_controller0_object
+    del bpy.types.Scene.vr_controller1_object
     del bpy.types.View3DShading.vr_show_virtual_camera
     del bpy.types.View3DShading.vr_show_controllers
     del bpy.types.View3DShading.vr_show_landmarks



More information about the Bf-extensions-cvs mailing list