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']
# 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 = {
"String": "SORTALPHA",
@ -43,53 +36,75 @@ def filter_objects(item, b_object):
class LnxTraitPropWarning(bpy.types.PropertyGroup):
propName = compatible_prop(StringProperty, name="Property Name", override={"LIBRARY_OVERRIDABLE"})
warning = compatible_prop(StringProperty, name="Warning", override={"LIBRARY_OVERRIDABLE"})
propName: StringProperty(name="Property Name")
warning: StringProperty(name="Warning")
class LnxTraitPropListItem(bpy.types.PropertyGroup):
"""Group of properties representing an item in the list."""
name = compatible_prop(StringProperty,
name: StringProperty(
name="Name",
description="The name of this property",
default="Untitled",
override={"LIBRARY_OVERRIDABLE"})
type = compatible_prop(EnumProperty,
items=(
# (Haxe Type, Display Name, Description)
("String", "String", "String Type"),
("Int", "Integer", "Integer Type"),
("Float", "Float", "Float Type"),
("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"}
)
# === VALUES ===
value_string = compatible_prop(StringProperty, name="Value", default="", override={"LIBRARY_OVERRIDABLE"})
value_int = compatible_prop(IntProperty, name="Value", default=0, override={"LIBRARY_OVERRIDABLE"})
value_float = compatible_prop(FloatProperty, name="Value", default=0.0, override={"LIBRARY_OVERRIDABLE"})
value_bool = compatible_prop(BoolProperty, name="Value", default=False, override={"LIBRARY_OVERRIDABLE"})
value_vec2 = compatible_prop(FloatVectorProperty, name="Value", size=2, override={"LIBRARY_OVERRIDABLE"})
value_vec3 = compatible_prop(FloatVectorProperty, name="Value", size=3, override={"LIBRARY_OVERRIDABLE"})
value_vec4 = compatible_prop(FloatVectorProperty, name="Value", size=4, override={"LIBRARY_OVERRIDABLE"})
value_object = compatible_prop(PointerProperty,
name="Value", type=bpy.types.Object, poll=filter_objects,
override={"LIBRARY_OVERRIDABLE"}
)
value_scene = compatible_prop(PointerProperty, name="Value", type=bpy.types.Scene, override={"LIBRARY_OVERRIDABLE"})
default="Untitled")
if bpy.app.version < (2, 90, 0):
type: EnumProperty(
items=(
# (Haxe Type, Display Name, Description)
("String", "String", "String Type"),
("Int", "Integer", "Integer Type"),
("Float", "Float", "Float Type"),
("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")
value_string: StringProperty(name="Value", default="")
value_int: IntProperty(name="Value", default=0)
value_float: FloatProperty(name="Value", default=0.0)
value_bool: BoolProperty(name="Value", default=False)
value_vec2: FloatVectorProperty(name="Value", size=2)
value_vec3: FloatVectorProperty(name="Value", size=3)
value_vec4: FloatVectorProperty(name="Value", size=4)
value_object: PointerProperty(name="Value", type=bpy.types.Object, poll=filter_objects)
value_scene: PointerProperty(name="Value", type=bpy.types.Scene)
else:
type: EnumProperty(
items=(
# (Haxe Type, Display Name, Description)
("String", "String", "String Type"),
("Int", "Integer", "Integer Type"),
("Float", "Float", "Float Type"),
("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):
# Would require way too much effort, so it's out of scope here.