You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.9 KiB
45 lines
1.9 KiB
using UnityEditor.Search; |
|
using UnityEngine; |
|
using Object = UnityEngine.Object; |
|
|
|
namespace UnityEditor.Rendering.Universal.Converters |
|
{ |
|
static class ConversionIndexers |
|
{ |
|
private const int k_Version = 8; |
|
|
|
[CustomObjectIndexer(typeof(Object), version = k_Version)] |
|
internal static void ConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) |
|
{ |
|
//Custom finding of all default Material properties on every single object type including custom types |
|
if (MaterialReferenceBuilder.MaterialReferenceLookup.TryGetValue(context.targetType, out var methods)) |
|
{ |
|
foreach (var method in methods) |
|
{ |
|
if (method == null) continue; |
|
|
|
var result = method.GetMaterialFromMethod(context.target, (methodName, objectName) => |
|
$"The method {methodName} was not found on {objectName}. This property will not be indexed."); |
|
|
|
if (result is Material materialResult) |
|
{ |
|
if (materialResult != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(materialResult)) |
|
{ |
|
indexer.AddProperty("urp", "convert-readonly", context.documentIndex); |
|
} |
|
} |
|
else if (result is Material[] materialArrayResult) |
|
{ |
|
foreach (var material in materialArrayResult) |
|
{ |
|
if (material != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(material)) |
|
{ |
|
indexer.AddProperty("urp", "convert-readonly", context.documentIndex); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|