internal static void ShaderIndexing(CustomObjectIndexerTarget context, ObjectIndexer indexer) { if (!(context.target is Shader shader) || !indexer.settings.options.properties) { return; } for (int i = 0, end = shader.GetPropertyCount(); i != end; ++i) { var name = shader.GetPropertyName(i).ToLowerInvariant(); if (name.Length > 0 && name[0] == '_') { name = name.Substring(1); } switch (shader.GetPropertyType(i)) { case UnityEngine.Rendering.ShaderPropertyType.Color: var v = shader.GetPropertyDefaultVectorValue(i); IndexColor(name, new Color(v.x, v.y, v.z, v.w), indexer, context.documentIndex); break; case UnityEngine.Rendering.ShaderPropertyType.Vector: v = shader.GetPropertyDefaultVectorValue(i); IndexVector(name, v, indexer, context.documentIndex); break; case UnityEngine.Rendering.ShaderPropertyType.Float: indexer.IndexNumber(context.documentIndex, name, shader.GetPropertyDefaultFloatValue(i)); break; } } }
internal static void ShaderIndexing(CustomObjectIndexerTarget context, ObjectIndexer indexer) { if (!(context.target is Shader shader) || !indexer.settings.options.properties) { return; } var ownerPropertyType = typeof(Shader); for (int i = 0, end = shader.GetPropertyCount(); i != end; ++i) { var label = shader.GetPropertyName(i); // Keep some property name patterns if (s_IgnorePropertyNameRx.IsMatch(label)) { continue; } var name = label.ToLowerInvariant(); if (name.Length > 0 && name[0] == '_') { name = name.Substring(1); } switch (shader.GetPropertyType(i)) { case ShaderPropertyType.Color: var v = shader.GetPropertyDefaultVectorValue(i); IndexColor(name, new Color(v.x, v.y, v.z, v.w), indexer, context.documentIndex, label, ownerPropertyType); break; case ShaderPropertyType.Vector: v = shader.GetPropertyDefaultVectorValue(i); IndexVector(name, v, indexer, context.documentIndex, label, ownerPropertyType); break; case ShaderPropertyType.Float: indexer.IndexNumber(context.documentIndex, name, shader.GetPropertyDefaultFloatValue(i)); break; } } }