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.