From 3999d67174383c2f7141dd91630aae7c71eb8c05 Mon Sep 17 00:00:00 2001 From: Nicolas Predella Date: Sun, 17 May 2026 12:23:10 +0300 Subject: [PATCH] reg --- registry.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/registry.py b/registry.py index 70734cc..b0db828 100644 --- a/registry.py +++ b/registry.py @@ -7,7 +7,8 @@ _timer_registry: list[Callable[..., int | None]] = [] # BPY CLASSES def register_class(cls: type) -> type: - _bpy_class_registry.append(cls) + if cls not in _bpy_class_registry: + _bpy_class_registry.append(cls) return cls def get() -> list[type]: @@ -26,12 +27,22 @@ def get_class_by_name(name: str) -> type | None: return None def blender_register_classes(): - for module in get(): - bpy.utils.register_class(module) + for cls in _bpy_class_registry: + try: + bpy.utils.register_class(cls) + except Exception as e: + print(f"Nodeslicer: Failed to register {cls}: {e}") def blender_unregister_classes(): - for module in get(): - bpy.utils.unregister_class(module) + for cls in reversed(_bpy_class_registry): + try: + if hasattr(cls, "is_registered") and cls.is_registered: # type: ignore + bpy.utils.unregister_class(cls) + elif hasattr(cls, "bl_rna"): + # Fallback for classes that don't have is_registered (older Blender or certain types) + bpy.utils.unregister_class(cls) + except Exception as e: + print(f"Nodeslicer: Failed to unregister {cls}: {e}") # TIMERS def register_timer(clb: Callable[..., Any]):