merge upstream

This commit is contained in:
2025-07-22 23:06:30 +00:00
5 changed files with 21 additions and 5 deletions

View File

@ -889,6 +889,10 @@ class Scene {
if (StringTools.endsWith(ptype, "Object") && pval != "") { if (StringTools.endsWith(ptype, "Object") && pval != "") {
Reflect.setProperty(traitInst, pname, Scene.active.getChild(pval)); Reflect.setProperty(traitInst, pname, Scene.active.getChild(pval));
} else if (ptype == "TSceneFormat" && pval != "") {
Data.getSceneRaw(pval, function (r: TSceneFormat) {
Reflect.setProperty(traitInst, pname, r);
});
} }
else { else {
switch (ptype) { switch (ptype) {

View File

@ -14,7 +14,7 @@ class Time {
return 1 / frequency; return 1 / frequency;
} }
static var _fixedStep: Null<Float>; static var _fixedStep: Null<Float> = 1/60;
public static var fixedStep(get, never): Float; public static var fixedStep(get, never): Float;
static function get_fixedStep(): Float { static function get_fixedStep(): Float {
return _fixedStep; return _fixedStep;

View File

@ -3057,6 +3057,8 @@ class LeenkxExporter:
if trait_prop.type.endswith("Object"): if trait_prop.type.endswith("Object"):
value = lnx.utils.asset_name(trait_prop.value_object) value = lnx.utils.asset_name(trait_prop.value_object)
elif trait_prop.type == "TSceneFormat":
value = lnx.utils.asset_name(trait_prop.value_scene)
else: else:
value = trait_prop.get_value() value = trait_prop.get_value()

View File

@ -15,7 +15,8 @@ PROP_TYPE_ICONS = {
"CameraObject": "CAMERA_DATA", "CameraObject": "CAMERA_DATA",
"LightObject": "LIGHT_DATA", "LightObject": "LIGHT_DATA",
"MeshObject": "MESH_DATA", "MeshObject": "MESH_DATA",
"SpeakerObject": "OUTLINER_DATA_SPEAKER" "SpeakerObject": "OUTLINER_DATA_SPEAKER",
"TSceneFormat": "SCENE_DATA"
} }
@ -59,7 +60,8 @@ class LnxTraitPropListItem(bpy.types.PropertyGroup):
("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")),
name="Type", name="Type",
description="The type of this property", description="The type of this property",
default="String", default="String",
@ -78,6 +80,7 @@ class LnxTraitPropListItem(bpy.types.PropertyGroup):
name="Value", type=bpy.types.Object, poll=filter_objects, name="Value", type=bpy.types.Object, poll=filter_objects,
override={"LIBRARY_OVERRIDABLE"} 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.
@ -126,6 +129,11 @@ class LnxTraitPropListItem(bpy.types.PropertyGroup):
if self.value_object is not None: if self.value_object is not None:
return self.value_object.name return self.value_object.name
return "" return ""
if self.type == "TSceneFormat":
if self.value_scene is not None:
return self.value_scene.name
return ""
return self.value_string return self.value_string
@ -144,6 +152,8 @@ class LNX_UL_PropList(bpy.types.UIList):
if self.layout_type in {'DEFAULT', 'COMPACT'}: if self.layout_type in {'DEFAULT', 'COMPACT'}:
if item.type.endswith("Object"): if item.type.endswith("Object"):
sp.prop_search(item, "value_object", context.scene, "objects", text="", icon=custom_icon) sp.prop_search(item, "value_object", context.scene, "objects", text="", icon=custom_icon)
elif item.type.endswith("TSceneFormat"):
sp.prop_search(item, "value_scene", bpy.data, "scenes", text="", icon=custom_icon)
else: else:
use_emboss = item.type in ("Bool", "String") use_emboss = item.type in ("Bool", "String")
sp.prop(item, item_value_ref, text="", emboss=use_emboss) sp.prop(item, item_value_ref, text="", emboss=use_emboss)

View File

@ -444,7 +444,7 @@ def fetch_script_props(filename: str):
# Property type is annotated # Property type is annotated
if p_type is not None: if p_type is not None:
if p_type.startswith("iron.object."): if p_type.startswith("iron.object.") or p_type == "iron.data.SceneFormat.TSceneFormat":
p_type = p_type[12:] p_type = p_type[12:]
elif p_type.startswith("iron.math."): elif p_type.startswith("iron.math."):
p_type = p_type[10:] p_type = p_type[10:]
@ -522,7 +522,7 @@ def get_type_default_value(prop_type: str):
if prop_type == "Float": if prop_type == "Float":
return 0.0 return 0.0
if prop_type == "String" or prop_type in ( if prop_type == "String" or prop_type in (
"Object", "CameraObject", "LightObject", "MeshObject", "SpeakerObject"): "Object", "CameraObject", "LightObject", "MeshObject", "SpeakerObject", "TSceneFormat"):
return "" return ""
if prop_type == "Bool": if prop_type == "Bool":
return False return False