using UnityEditor; using UnityEngine.Rendering; namespace FlatKit.Editor { internal static class MaterialPropertyExtensions { public static ShaderPropertyType GetShaderPropertyType(this MaterialProperty property) { #if UNITY_6000_2_OR_NEWER return property.propertyType; #else return property.type switch { MaterialProperty.PropType.Color => ShaderPropertyType.Color, MaterialProperty.PropType.Vector => ShaderPropertyType.Vector, MaterialProperty.PropType.Float => ShaderPropertyType.Float, MaterialProperty.PropType.Range => ShaderPropertyType.Range, MaterialProperty.PropType.Texture => ShaderPropertyType.Texture, _ => ShaderPropertyType.Float, }; #endif } public static ShaderPropertyFlags GetShaderPropertyFlags(this MaterialProperty property) { #if UNITY_6000_2_OR_NEWER return property.propertyFlags; #else var flags = ShaderPropertyFlags.None; if ((property.flags & MaterialProperty.PropFlags.HideInInspector) != 0) { flags |= ShaderPropertyFlags.HideInInspector; } if ((property.flags & MaterialProperty.PropFlags.NoScaleOffset) != 0) { flags |= ShaderPropertyFlags.NoScaleOffset; } if ((property.flags & MaterialProperty.PropFlags.PerRendererData) != 0) { flags |= ShaderPropertyFlags.PerRendererData; } if ((property.flags & MaterialProperty.PropFlags.Normal) != 0) { flags |= ShaderPropertyFlags.Normal; } if ((property.flags & MaterialProperty.PropFlags.HDR) != 0) { flags |= ShaderPropertyFlags.HDR; } if ((property.flags & MaterialProperty.PropFlags.Gamma) != 0) { flags |= ShaderPropertyFlags.Gamma; } if ((property.flags & MaterialProperty.PropFlags.NonModifiableTextureData) != 0) { flags |= ShaderPropertyFlags.NonModifiableTextureData; } return flags; #endif } } }