コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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;
                }
            }
        }