private static void GetProperties(ref List <TextureProp> m_Properties, ShaderImporter importer) { var shader = importer.GetShader(); var propertyCount = ShaderUtil.GetPropertyCount(shader); for (var i = 0; i < propertyCount; i++) { if (ShaderUtil.GetPropertyType(shader, i) != ShaderUtil.ShaderPropertyType.TexEnv) { continue; } var propertyName = ShaderUtil.GetPropertyName(shader, i); var displayName = ShaderUtil.GetPropertyDescription(shader, i); // might be empty var texture = importer.GetDefaultTexture(propertyName); var assetBundleName = ""; if (texture != null) { var textureAssetPath = AssetDatabase.GetAssetPath(texture); assetBundleName = AssetDatabase.GetImplicitAssetBundleName(textureAssetPath); } var temp = new TextureProp { propertyName = propertyName, displayName = displayName, texture = texture, assetBundleName = assetBundleName, //dimension = ShaderUtil.GetTexDim(shader, i) }; m_Properties.Add(temp); } }
protected override void InitializeExtraDataInstance(Object extraTarget, int targetIndex) { var data = (ShaderProperties)extraTarget; data.CleanUp(); var importer = targets[targetIndex] as ShaderImporter; if (importer == null) { return; } var shader = importer.GetShader(); if (shader == null) { return; } var propertyCount = ShaderUtil.GetPropertyCount(shader); for (var i = 0; i < propertyCount; i++) { if (ShaderUtil.GetPropertyType(shader, i) != ShaderUtil.ShaderPropertyType.TexEnv) { continue; } var propertyName = ShaderUtil.GetPropertyName(shader, i); var displayName = ShaderUtil.GetPropertyDescription(shader, i); // might be empty var modifiable = !ShaderUtil.IsShaderPropertyNonModifiableTexureProperty(shader, i); Texture tex; if (!modifiable) { tex = importer.GetNonModifiableTexture(propertyName); } else { tex = importer.GetDefaultTexture(propertyName); } var temp = new TextureProp { propertyName = propertyName, texture = tex, dimension = ShaderUtil.GetTexDim(shader, i), displayName = displayName, modifiable = modifiable }; data.m_Properties.Add(temp); } }
protected override void ResetValues() { base.ResetValues(); m_Properties.Clear(); var importer = target as ShaderImporter; if (importer == null) { return; } var shader = importer.GetShader(); if (shader == null) { return; } var propertyCount = ShaderUtil.GetPropertyCount(shader); for (var i = 0; i < propertyCount; i++) { if (ShaderUtil.GetPropertyType(shader, i) != ShaderUtil.ShaderPropertyType.TexEnv) { continue; } var propertyName = ShaderUtil.GetPropertyName(shader, i); var displayName = ShaderUtil.GetPropertyDescription(shader, i); // might be empty var modifiable = !ShaderUtil.IsShaderPropertyNonModifiableTexureProperty(shader, i); Texture tex; if (!modifiable) { tex = importer.GetNonModifiableTexture(propertyName); } else { tex = importer.GetDefaultTexture(propertyName); } var temp = new TextureProp { propertyName = propertyName, texture = tex, dimension = ShaderUtil.GetTexDim(shader, i), displayName = displayName, modifiable = modifiable }; m_Properties.Add(temp); } }
private void DrawTextureField(TextureProp prop) { var oldTexture = prop.texture; Texture newTexture = null; EditorGUI.BeginChangeCheck(); System.Type textureType = MaterialEditor.GetTextureTypeFromDimension(prop.dimension); if (textureType != null) { // Require at least two character in display name to prevent names like "-" var text = string.IsNullOrEmpty(prop.displayName) ? ObjectNames.NicifyVariableName(prop.propertyName) : prop.displayName; newTexture = EditorGUILayout.MiniThumbnailObjectField(GUIContent.Temp(text), oldTexture, textureType) as Texture; } if (EditorGUI.EndChangeCheck()) { prop.texture = newTexture; } }