From 54e5e6895df80a44aeee9b281dabd1ac7faab042 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 19 Apr 2026 10:22:35 +0200 Subject: [PATCH] Fix material instance parameters order in editor to match from base material --- Source/Editor/Surface/SurfaceParameter.cs | 6 +++++ Source/Editor/Surface/SurfaceUtils.cs | 25 +++++++++++++------ .../Engine/Graphics/Materials/MaterialInfo.cs | 9 +++++++ 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Source/Editor/Surface/SurfaceParameter.cs b/Source/Editor/Surface/SurfaceParameter.cs index c76cb058e..be69f69b2 100644 --- a/Source/Editor/Surface/SurfaceParameter.cs +++ b/Source/Editor/Surface/SurfaceParameter.cs @@ -48,5 +48,11 @@ namespace FlaxEditor.Surface /// [NoSerialize, HideInEditor] public readonly SurfaceMeta Meta = new SurfaceMeta(); + + /// + public override string ToString() + { + return $"{Type} {Name} = {Value?.ToString() ?? "null"}"; + } } } diff --git a/Source/Editor/Surface/SurfaceUtils.cs b/Source/Editor/Surface/SurfaceUtils.cs index 60cd714c4..638d8338c 100644 --- a/Source/Editor/Surface/SurfaceUtils.cs +++ b/Source/Editor/Surface/SurfaceUtils.cs @@ -21,6 +21,7 @@ namespace FlaxEditor.Surface { public GraphParameter Parameter; public bool IsPublic; + public int Index; public Type Type; public object Tag; public Attribute[] Attributes; @@ -31,15 +32,16 @@ namespace FlaxEditor.Surface public HeaderAttribute Header; public string DisplayName; - public GraphParameterData(GraphParameter parameter, object tag = null) - : this(parameter, null, parameter.IsPublic, parameter.Type, SurfaceMeta.GetAttributes(parameter), tag) + public GraphParameterData(GraphParameter parameter, int index, object tag = null) + : this(parameter, index, null, parameter.IsPublic, parameter.Type, SurfaceMeta.GetAttributes(parameter), tag) { } - public GraphParameterData(GraphParameter parameter, string name, bool isPublic, Type type, Attribute[] attributes, object tag) + public GraphParameterData(GraphParameter parameter, int index, string name, bool isPublic, Type type, Attribute[] attributes, object tag) { Parameter = parameter; IsPublic = isPublic; + Index = index; Type = type; Tag = tag; Attributes = attributes; @@ -74,8 +76,14 @@ namespace FlaxEditor.Surface if (Editor.Instance.Options.Options.General.ScriptMembersOrder == GeneralOptions.MembersOrder.Alphabetical) return string.Compare(x.DisplayName, y.DisplayName, StringComparison.InvariantCulture); - // Keep same order - return 0; + // Keep same order (from input indices) + return x.Index - y.Index; + } + + /// + public override string ToString() + { + return $"{Type} {DisplayName}"; } } @@ -206,6 +214,7 @@ namespace FlaxEditor.Surface Profiler.EndEvent(); } + int index = 0; foreach (var parameter in parameters) { var parameterId = parameter.ParameterID; @@ -229,7 +238,7 @@ namespace FlaxEditor.Surface surfaceParameters.Add(surfaceParameter); } var attributes = surfaceParameter?.Meta.GetAttributes() ?? FlaxEngine.Utils.GetEmptyArray(); - data[i] = new GraphParameterData(null, parameter.Name, parameter.IsPublic, ToType(parameter.ParameterType), attributes, parameter); + data[i] = new GraphParameterData(null, index++, parameter.Name, parameter.IsPublic, ToType(parameter.ParameterType), attributes, parameter); i++; } Array.Sort(data, GraphParameterData.Compare); @@ -243,7 +252,7 @@ namespace FlaxEditor.Surface int i = 0; foreach (var parameter in parameters) { - data[i] = new GraphParameterData(parameter.EmitterParameter, parameter); + data[i] = new GraphParameterData(parameter.EmitterParameter, i, parameter); i++; } Array.Sort(data, GraphParameterData.Compare); @@ -257,7 +266,7 @@ namespace FlaxEditor.Surface int i = 0; foreach (var parameter in parameters) { - data[i] = new GraphParameterData(parameter); + data[i] = new GraphParameterData(parameter, i); i++; } Array.Sort(data, GraphParameterData.Compare); diff --git a/Source/Engine/Graphics/Materials/MaterialInfo.cs b/Source/Engine/Graphics/Materials/MaterialInfo.cs index a8ff82665..4ff56ea63 100644 --- a/Source/Engine/Graphics/Materials/MaterialInfo.cs +++ b/Source/Engine/Graphics/Materials/MaterialInfo.cs @@ -97,4 +97,13 @@ namespace FlaxEngine } } } + + partial class MaterialParameter + { + /// + public override string ToString() + { + return $"{ParameterType} {Name} = {Value?.ToString() ?? "null"}"; + } + } }