Update leenkx/blender/lnx/props_traits_props.py

This commit is contained in:
2025-09-29 05:27:43 +00:00
parent 4517c4863f
commit c24baa3364

View File

@ -3,13 +3,6 @@ from bpy.props import *
__all__ = ['LnxTraitPropWarning', 'LnxTraitPropListItem', 'LNX_UL_PropList'] __all__ = ['LnxTraitPropWarning', 'LnxTraitPropListItem', 'LNX_UL_PropList']
# Helper function to handle version compatibility
def compatible_prop(prop_func, **kwargs):
"""Create properties compatible with both Blender 2.83 and newer versions."""
if bpy.app.version < (2, 90, 0):
# Remove override parameter for Blender 2.83
kwargs.pop('override', None)
return prop_func(**kwargs)
PROP_TYPE_ICONS = { PROP_TYPE_ICONS = {
"String": "SORTALPHA", "String": "SORTALPHA",
@ -43,53 +36,75 @@ def filter_objects(item, b_object):
class LnxTraitPropWarning(bpy.types.PropertyGroup): class LnxTraitPropWarning(bpy.types.PropertyGroup):
propName = compatible_prop(StringProperty, name="Property Name", override={"LIBRARY_OVERRIDABLE"}) propName: StringProperty(name="Property Name")
warning = compatible_prop(StringProperty, name="Warning", override={"LIBRARY_OVERRIDABLE"}) warning: StringProperty(name="Warning")
class LnxTraitPropListItem(bpy.types.PropertyGroup): class LnxTraitPropListItem(bpy.types.PropertyGroup):
"""Group of properties representing an item in the list.""" """Group of properties representing an item in the list."""
name = compatible_prop(StringProperty, name: StringProperty(
name="Name", name="Name",
description="The name of this property", description="The name of this property",
default="Untitled", default="Untitled")
override={"LIBRARY_OVERRIDABLE"}) if bpy.app.version < (2, 90, 0):
type: EnumProperty(
type = compatible_prop(EnumProperty, items=(
items=( # (Haxe Type, Display Name, Description)
# (Haxe Type, Display Name, Description) ("String", "String", "String Type"),
("String", "String", "String Type"), ("Int", "Integer", "Integer Type"),
("Int", "Integer", "Integer Type"), ("Float", "Float", "Float Type"),
("Float", "Float", "Float Type"), ("Bool", "Boolean", "Boolean Type"),
("Bool", "Boolean", "Boolean Type"), ("Vec2", "Vec2", "2D Vector Type"),
("Vec2", "Vec2", "2D Vector Type"), ("Vec3", "Vec3", "3D Vector Type"),
("Vec3", "Vec3", "3D Vector Type"), ("Vec4", "Vec4", "4D Vector Type"),
("Vec4", "Vec4", "4D Vector Type"), ("Object", "Object", "Object Type"),
("Object", "Object", "Object Type"), ("CameraObject", "Camera Object", "Camera Object Type"),
("CameraObject", "Camera Object", "Camera Object Type"), ("LightObject", "Light Object", "Light Object Type"),
("LightObject", "Light Object", "Light Object Type"), ("MeshObject", "Mesh Object", "Mesh Object Type"),
("MeshObject", "Mesh Object", "Mesh Object Type"), ("SpeakerObject", "Speaker Object", "Speaker Object Type"),
("SpeakerObject", "Speaker Object", "Speaker Object Type"), ("TSceneFormat", "Scene", "Scene Type")),
("TSceneFormat", "Scene", "Scene Type")), name="Type",
name="Type", description="The type of this property",
description="The type of this property", default="String")
default="String", value_string: StringProperty(name="Value", default="")
override={"LIBRARY_OVERRIDABLE"} value_int: IntProperty(name="Value", default=0)
) value_float: FloatProperty(name="Value", default=0.0)
value_bool: BoolProperty(name="Value", default=False)
# === VALUES === value_vec2: FloatVectorProperty(name="Value", size=2)
value_string = compatible_prop(StringProperty, name="Value", default="", override={"LIBRARY_OVERRIDABLE"}) value_vec3: FloatVectorProperty(name="Value", size=3)
value_int = compatible_prop(IntProperty, name="Value", default=0, override={"LIBRARY_OVERRIDABLE"}) value_vec4: FloatVectorProperty(name="Value", size=4)
value_float = compatible_prop(FloatProperty, name="Value", default=0.0, override={"LIBRARY_OVERRIDABLE"}) value_object: PointerProperty(name="Value", type=bpy.types.Object, poll=filter_objects)
value_bool = compatible_prop(BoolProperty, name="Value", default=False, override={"LIBRARY_OVERRIDABLE"}) value_scene: PointerProperty(name="Value", type=bpy.types.Scene)
value_vec2 = compatible_prop(FloatVectorProperty, name="Value", size=2, override={"LIBRARY_OVERRIDABLE"}) else:
value_vec3 = compatible_prop(FloatVectorProperty, name="Value", size=3, override={"LIBRARY_OVERRIDABLE"}) type: EnumProperty(
value_vec4 = compatible_prop(FloatVectorProperty, name="Value", size=4, override={"LIBRARY_OVERRIDABLE"}) items=(
value_object = compatible_prop(PointerProperty, # (Haxe Type, Display Name, Description)
name="Value", type=bpy.types.Object, poll=filter_objects, ("String", "String", "String Type"),
override={"LIBRARY_OVERRIDABLE"} ("Int", "Integer", "Integer Type"),
) ("Float", "Float", "Float Type"),
value_scene = compatible_prop(PointerProperty, name="Value", type=bpy.types.Scene, override={"LIBRARY_OVERRIDABLE"}) ("Bool", "Boolean", "Boolean Type"),
("Vec2", "Vec2", "2D Vector Type"),
("Vec3", "Vec3", "3D Vector Type"),
("Vec4", "Vec4", "4D Vector Type"),
("Object", "Object", "Object Type"),
("CameraObject", "Camera Object", "Camera Object Type"),
("LightObject", "Light Object", "Light Object Type"),
("MeshObject", "Mesh Object", "Mesh Object Type"),
("SpeakerObject", "Speaker Object", "Speaker Object Type"),
("TSceneFormat", "Scene", "Scene Type")),
name="Type",
description="The type of this property",
default="String",
override={"LIBRARY_OVERRIDABLE"})
value_string: StringProperty(name="Value", default="", override={"LIBRARY_OVERRIDABLE"})
value_int: IntProperty(name="Value", default=0, override={"LIBRARY_OVERRIDABLE"})
value_float: FloatProperty(name="Value", default=0.0, override={"LIBRARY_OVERRIDABLE"})
value_bool: BoolProperty(name="Value", default=False, override={"LIBRARY_OVERRIDABLE"})
value_vec2: FloatVectorProperty(name="Value", size=2, override={"LIBRARY_OVERRIDABLE"})
value_vec3: FloatVectorProperty(name="Value", size=3, override={"LIBRARY_OVERRIDABLE"})
value_vec4: FloatVectorProperty(name="Value", size=4, override={"LIBRARY_OVERRIDABLE"})
value_object: PointerProperty(name="Value", type=bpy.types.Object, poll=filter_objects, override={"LIBRARY_OVERRIDABLE"})
value_scene: PointerProperty(name="Value", type=bpy.types.Scene, override={"LIBRARY_OVERRIDABLE"})
def set_value(self, val): def set_value(self, val):
# Would require way too much effort, so it's out of scope here. # Would require way too much effort, so it's out of scope here.