[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