From 93ef2a7808b66ba1e67df1cb7b99888676fdc51c Mon Sep 17 00:00:00 2001 From: "kaosat.dev" Date: Fri, 19 Jul 2024 00:31:08 +0200 Subject: [PATCH] feat(Blender tools): some minor fixed for Bevy 0.14 & version bump --- tools/bevy_components/__init__.py | 2 +- .../propGroups/conversions_from_prop_group.py | 4 +++- .../propGroups/conversions_to_prop_group.py | 11 +++++++++-- tools/bevy_components/registry/registry.py | 10 +++++++--- .../tests/component_values_shuffler.py | 5 ++++- tools/gltf_auto_export/__init__.py | 2 +- .../gltf_auto_export/modules/bevy_scene_components.py | 2 +- 7 files changed, 26 insertions(+), 10 deletions(-) diff --git a/tools/bevy_components/__init__.py b/tools/bevy_components/__init__.py index 48effb9..1683a96 100644 --- a/tools/bevy_components/__init__.py +++ b/tools/bevy_components/__init__.py @@ -1,7 +1,7 @@ bl_info = { "name": "bevy_components", "author": "kaosigh", - "version": (0, 4, 1), + "version": (0, 4, 2), "blender": (3, 4, 0), "location": "VIEW_3D", "description": "UI to help create Bevy blueprints and components", diff --git a/tools/bevy_components/propGroups/conversions_from_prop_group.py b/tools/bevy_components/propGroups/conversions_from_prop_group.py index 6fadb30..b7a6bf4 100644 --- a/tools/bevy_components/propGroups/conversions_from_prop_group.py +++ b/tools/bevy_components/propGroups/conversions_from_prop_group.py @@ -22,7 +22,9 @@ conversion_tables = { "glam::Quat": lambda value: "Quat(x:"+str(value[0])+ ", y:"+str(value[1])+ ", z:"+str(value[2])+ ", w:"+str(value[3])+")", - "bevy_render::color::Color": lambda value: "Rgba(red:"+str(value[0])+ ", green:"+str(value[1])+ ", blue:"+str(value[2])+ ", alpha:"+str(value[3])+ ")", + "bevy_color::srgba::Srgba": lambda value: "Srgba(red:"+str(value[0])+ ", green:"+str(value[1])+ ", blue:"+str(value[2])+ ", alpha:"+str(value[3])+ ")", + "bevy_color::linear_rgba::LinearRgba": lambda value: "LinearRgba(red:"+str(value[0])+ ", green:"+str(value[1])+ ", blue:"+str(value[2])+ ", alpha:"+str(value[3])+ ")", + "bevy_color::hsva::Hsva": lambda value: "Hsva(hue:"+str(value[0])+ ", saturation:"+str(value[1])+ ", value:"+str(value[2])+ ", alpha:"+str(value[3])+ ")", } #converts the value of a property group(no matter its complexity) into a single custom property value diff --git a/tools/bevy_components/propGroups/conversions_to_prop_group.py b/tools/bevy_components/propGroups/conversions_to_prop_group.py index 84d10e2..90db393 100644 --- a/tools/bevy_components/propGroups/conversions_to_prop_group.py +++ b/tools/bevy_components/propGroups/conversions_to_prop_group.py @@ -118,10 +118,14 @@ def parse_vec4(value, caster, typeName): parsed = parse_struct_string(value.replace(typeName,"").replace("(", "").replace(")","") ) return [caster(parsed['x']), caster(parsed['y']), caster(parsed['z']), caster(parsed['w'])] -def parse_color(value, caster, typeName): +def parse_color_rgba(value, caster, typeName): parsed = parse_struct_string(value.replace(typeName,"").replace("(", "").replace(")","") ) return [caster(parsed['red']), caster(parsed['green']), caster(parsed['blue']), caster(parsed['alpha'])] +def parse_color_hsva(value, caster, typeName): + parsed = parse_struct_string(value.replace(typeName,"").replace("(", "").replace(")","") ) + return [caster(parsed['hue']), caster(parsed['saturation']), caster(parsed['value']), caster(parsed['alpha'])] + def to_int(input): return int(float(input)) @@ -163,7 +167,10 @@ type_mappings = { 'alloc::string::String': lambda value: str(value.replace('"', "")), 'alloc::borrow::Cow': lambda value: str(value.replace('"', "")), - 'bevy_render::color::Color': lambda value: parse_color(value, float, "Rgba"), + "bevy_color::srgba::Srgba": lambda value: parse_color_rgba(value, float, "Srgba"), + "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), } diff --git a/tools/bevy_components/registry/registry.py b/tools/bevy_components/registry/registry.py index 20eb14a..f48b0c9 100644 --- a/tools/bevy_components/registry/registry.py +++ b/tools/bevy_components/registry/registry.py @@ -140,7 +140,9 @@ class ComponentsRegistry(PropertyGroup): "glam::Quat": {"type": FloatVectorProperty, "presets": {"size":4} }, - "bevy_render::color::Color": dict(type = FloatVectorProperty, presets=dict(subtype='COLOR', size=4)), + "bevy_color::srgba::Srgba": dict(type = FloatVectorProperty, presets=dict(subtype='COLOR', size=4)), + "bevy_color::linear_rgba::LinearRgba": dict(type = FloatVectorProperty, presets=dict(subtype='COLOR', size=4)), + "bevy_color::hsva::Hsva": dict(type = FloatVectorProperty, presets=dict(subtype='COLOR', size=4)), "char": dict(type=StringProperty, presets=dict()), "str": dict(type=StringProperty, presets=dict()), @@ -202,8 +204,10 @@ class ComponentsRegistry(PropertyGroup): "glam::Quat": [0.0, 0.0, 0.0, 0.0], - "bevy_render::color::Color": [1.0, 1.0, 0.0, 1.0], - + "bevy_color::srgba::Srgba": [1.0, 1.0, 0.0, 1.0], + "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())+'"' diff --git a/tools/bevy_components/tests/component_values_shuffler.py b/tools/bevy_components/tests/component_values_shuffler.py index 567e1c3..bd71dc4 100644 --- a/tools/bevy_components/tests/component_values_shuffler.py +++ b/tools/bevy_components/tests/component_values_shuffler.py @@ -61,7 +61,10 @@ type_mappings = { "glam::Quat": lambda : random_vec(4, 'float'), - 'bevy_render::color::Color': lambda : random_vec(4, 'float'), + 'bevy_color::srgba::Srgba': lambda : random_vec(4, 'float'), + 'bevy_color::linear_rgba::LinearRgba': lambda : random_vec(4, 'float'), + 'bevy_color::hsva::Hsva': lambda : random_vec(4, 'float'), + 'alloc::string::String': lambda : random_word(8), 'alloc::borrow::Cow': lambda : random_word(8), diff --git a/tools/gltf_auto_export/__init__.py b/tools/gltf_auto_export/__init__.py index aa8f9ea..3f06c12 100644 --- a/tools/gltf_auto_export/__init__.py +++ b/tools/gltf_auto_export/__init__.py @@ -1,7 +1,7 @@ bl_info = { "name": "gltf_auto_export", "author": "kaosigh", - "version": (0, 16, 0), + "version": (0, 16, 1), "blender": (3, 4, 0), "location": "File > Import-Export", "description": "glTF/glb auto-export", diff --git a/tools/gltf_auto_export/modules/bevy_scene_components.py b/tools/gltf_auto_export/modules/bevy_scene_components.py index 382fc7c..ce2d29b 100644 --- a/tools/gltf_auto_export/modules/bevy_scene_components.py +++ b/tools/gltf_auto_export/modules/bevy_scene_components.py @@ -44,7 +44,7 @@ def ambient_color_to_component(world): if color is not None and strength is not None: - colorRgba = f"Rgba(red: {color[0]}, green: {color[1]}, blue: {color[2]}, alpha: {color[3]})" + colorRgba = f"LinearRgba((red: {color[0]}, green: {color[1]}, blue: {color[2]}, alpha: {color[3]}))" component = f"( color: {colorRgba}, strength: {strength})" return component return None