kaosat-dev / Blenvy

Bevy Code & Blender addon for a simple workflow to add & edit Bevy components in Blender

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Class id too long to register

iNeXcf opened this issue · comments

Hi,
fantastic work.
Sadly, loading the registry into Blender leads to an error for me. It seems like the class name can "easily" (here with the ExtendedMaterial from the examples) end up with >64 characters and bpy.utils.register_class(cls) does not support this.

Python: Traceback (most recent call last):
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\registry\operators.py", line 26, in execute
    generate_propertyGroups_for_components()
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\prop_groups.py", line 35, in generate_propertyGroups_for_components
    process_component(registry, definition, update_calback_helper(definition, update_component, root_property_name), None, [])
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_component.py", line 44, in process_component
    __annotations__ = __annotations__ | process_enum.process_enum(registry, definition, update, nesting)
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_enum.py", line 28, in process_enum
    (sub_component_group, _) = process_component.process_component(registry, item, update, {"nested": True}, nesting) 
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_component.py", line 39, in process_component
    __annotations__ = __annotations__ | process_tupples.process_tupples(registry, definition, prefixItems, update, nesting)
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_tupples.py", line 42, in process_tupples
    (sub_component_group, _) = process_component.process_component(registry, original, update, {"nested": True, "type_name": original_long_name}, nesting)
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_component.py", line 80, in process_component
    (property_group_pointer, property_group_class) = property_group_from_infos(property_group_name, property_group_params)
  File "C:\Users\Chris\AppData\Roaming\Blender Foundation\Blender\3.2\scripts\addons\bevy_components\propGroups\process_component.py", line 92, in property_group_from_infos
    bpy.utils.register_class(property_group_class)
RuntimeError: Error: Registering id property class: '-869062716016833946AssetId<ExtendedMaterial<StandardMaterial, MyExtension>>_ui' is too long, maximum length is 64

Thanks for the bug report @iNeXcf !
Dang, I hoped I had caught all such cases :D
I'll try more aggressive hashing for the names, I'll let you know once I have a fix.