import bpy ## Intent # Operator is not allowed to register Pointer Properties. # The solution is register pointer properties in Scene and reference it when drawing operator window. # This module contains all pointer properties used by other operators. class BBP_PG_ptrprop_resolver(bpy.types.PropertyGroup): rail_uv_material: bpy.props.PointerProperty( name = "Material", description = "The material used for rail", type = bpy.types.Material, ) # type: ignore export_collection: bpy.props.PointerProperty( type = bpy.types.Collection, name = "Collection", description = "The collection exported. Nested collections allowed." ) # type: ignore export_object: bpy.props.PointerProperty( type = bpy.types.Object, name = "Object", description = "The object exported" ) # type: ignore def get_ptrprop_resolver() -> BBP_PG_ptrprop_resolver: return bpy.context.scene.bbp_ptrprop_resolver def get_rail_uv_material() -> bpy.types.Material: return get_ptrprop_resolver().rail_uv_material def draw_rail_uv_material(layout: bpy.types.UILayout) -> None: layout.prop(get_ptrprop_resolver(), 'rail_uv_material') def get_export_collection() -> bpy.types.Collection: return get_ptrprop_resolver().export_collection def draw_export_collection(layout: bpy.types.UILayout) -> None: layout.prop(get_ptrprop_resolver(), 'export_collection') def get_export_object() -> bpy.types.Object: return get_ptrprop_resolver().export_object def draw_export_object(layout: bpy.types.UILayout) -> None: layout.prop(get_ptrprop_resolver(), 'export_object') def register() -> None: bpy.utils.register_class(BBP_PG_ptrprop_resolver) bpy.types.Scene.bbp_ptrprop_resolver = bpy.props.PointerProperty(type = BBP_PG_ptrprop_resolver) def unregister() -> None: del bpy.types.Scene.bbp_ptrprop_resolver bpy.utils.unregister_class(BBP_PG_ptrprop_resolver)