From 6b39b5f2b163069fa3fdce76a671bc2450ddd4be Mon Sep 17 00:00:00 2001 From: DasLixou Date: Mon, 12 Aug 2024 16:12:09 +0200 Subject: [PATCH] Replace number with selector field --- .../propGroups/conversions_to_prop_group.py | 2 +- .../propGroups/process_tupples.py | 17 ++++++++++++++--- .../bevy_components/registry/registry.py | 15 ++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/tools/blenvy/add_ons/bevy_components/propGroups/conversions_to_prop_group.py b/tools/blenvy/add_ons/bevy_components/propGroups/conversions_to_prop_group.py index 862f633..c70d7d7 100644 --- a/tools/blenvy/add_ons/bevy_components/propGroups/conversions_to_prop_group.py +++ b/tools/blenvy/add_ons/bevy_components/propGroups/conversions_to_prop_group.py @@ -171,7 +171,7 @@ type_mappings = { "bevy_color::linear_rgba::LinearRgba": lambda value: parse_color_rgba(value, float, "LinearRgba"), "bevy_color::hsva::Hsva": lambda value: parse_color_hsva(value, float, "Hsva"), - 'bevy_ecs::entity::Entity': lambda value: int(value), + 'bevy_ecs::entity::Entity': lambda value: int(value), # TODO: whatdafuq do we do here? } def is_def_value_type(definition, registry): diff --git a/tools/blenvy/add_ons/bevy_components/propGroups/process_tupples.py b/tools/blenvy/add_ons/bevy_components/propGroups/process_tupples.py index acd6a00..d8d269c 100644 --- a/tools/blenvy/add_ons/bevy_components/propGroups/process_tupples.py +++ b/tools/blenvy/add_ons/bevy_components/propGroups/process_tupples.py @@ -20,14 +20,16 @@ def process_tupples(registry, definition, prefixItems, update, nesting_long_name if ref_name in type_infos: original = type_infos[ref_name] original_long_name = original["long_name"] - is_value_type = original_long_name in value_types_defaults - value = value_types_defaults[original_long_name] if is_value_type else None + is_value_type = original_long_name in blender_property_mapping + has_default_value = original_long_name in value_types_defaults + + value = value_types_defaults[original_long_name] if has_default_value else None default_values.append(value) prefix_infos.append(original) if is_value_type: - if original_long_name in blender_property_mapping: + if has_default_value: blender_property_def = blender_property_mapping[original_long_name] blender_property = blender_property_def["type"]( **blender_property_def["presets"],# we inject presets first @@ -36,6 +38,15 @@ def process_tupples(registry, definition, prefixItems, update, nesting_long_name update= update ) + __annotations__[property_name] = blender_property + else: + blender_property_def = blender_property_mapping[original_long_name] + blender_property = blender_property_def["type"]( + **blender_property_def["presets"],# we inject presets first + name = property_name, + update= update + ) + __annotations__[property_name] = blender_property else: original_long_name = original["long_name"] diff --git a/tools/blenvy/add_ons/bevy_components/registry/registry.py b/tools/blenvy/add_ons/bevy_components/registry/registry.py index ed236ec..0780e0d 100644 --- a/tools/blenvy/add_ons/bevy_components/registry/registry.py +++ b/tools/blenvy/add_ons/bevy_components/registry/registry.py @@ -25,6 +25,9 @@ def property_group_from_infos(property_group_name, property_group_parameters): return (property_group_pointer, property_group_class) +def is_entity_poll(self, object): + return True # TODO: only select `object.type`s that get converted to entities + # this is where we store the information for all available components class ComponentsRegistry(PropertyGroup): registry: bpy.props. StringProperty( @@ -50,7 +53,6 @@ class ComponentsRegistry(PropertyGroup): "u32": dict(type=IntProperty, presets=dict(min=0)), "u64": dict(type=IntProperty, presets=dict(min=0)), "u128": dict(type=IntProperty, presets=dict(min=0)), - "u64": dict(type=IntProperty, presets=dict(min=0)), "usize": dict(type=IntProperty, presets=dict(min=0)), "i8": dict(type=IntProperty, presets=dict()), @@ -90,19 +92,19 @@ class ComponentsRegistry(PropertyGroup): "enum": dict(type=EnumProperty, presets=dict()), - 'bevy_ecs::entity::Entity': {"type": IntProperty, "presets": {"min":0} }, - 'bevy_utils::Uuid': dict(type=StringProperty, presets=dict()), + "bevy_ecs::entity::Entity": dict(type = PointerProperty, presets=dict(type = bpy.types.Object, poll = is_entity_poll)), + "bevy_utils::Uuid": dict(type = StringProperty, presets=dict()), } value_types_defaults = { "string":" ", - "boolean": True, + "boolean": False, "float": 0.0, "uint": 0, "int":0, # todo : we are re-doing the work of the bevy /rust side here, but it seems more pratical to alway look for the same field name on the blender side for matches - "bool": True, + "bool": False, "u8": 0, "u16":0, @@ -144,8 +146,7 @@ class ComponentsRegistry(PropertyGroup): "bevy_color::linear_rgba::LinearRgba": [1.0, 1.0, 0.0, 1.0], "bevy_color::hsva::Hsva": [1.0, 1.0, 0.0, 1.0], - 'bevy_ecs::entity::Entity': 0,#4294967295, # this is the same as Bevy's Entity::Placeholder, too big for Blender..sigh - 'bevy_utils::Uuid': '"'+str(uuid.uuid4())+'"' + "bevy_utils::Uuid": '"'+str(uuid.uuid4())+'"' }