static public void LoadOrCreateCompositionProfileAsset(CompositionManager compositor) { var shader = compositor.shader; var fullpath = AssetDatabase.GetAssetPath(shader); var path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(fullpath), System.IO.Path.GetFileNameWithoutExtension(shader.name)) + ".asset"; CompositionProfile newProfile = AssetDatabase.LoadAssetAtPath <CompositionProfile>(path); if (newProfile == null) { Debug.Log($"Creating new composition profile asset at path: {path}"); newProfile = ScriptableObject.CreateInstance <CompositionProfile>(); //Note: no need to GenerateUniqueAssetPath(path), since we know that LoadAssetAtPath failed at this path AssetDatabase.CreateAsset(newProfile, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log($"Loading composition profile from {path}"); } compositor.profile = newProfile; // [case 1265631] The profile asset is auto-generated by the compositor, so do not allow the users to manually edit/reset the values in the asset because it might break things. compositor.profile.hideFlags = HideFlags.NotEditable; }
static public void LoadOrCreateCompositionProfileAsset(CompositionManager compositor) { var shader = compositor.shader; var fullpath = AssetDatabase.GetAssetPath(shader); var path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(fullpath), System.IO.Path.GetFileNameWithoutExtension(shader.name)) + ".asset"; CompositionProfile newProfile = AssetDatabase.LoadAssetAtPath <CompositionProfile>(path); if (newProfile == null) { Debug.Log($"Creating new composition profile asset at path: {path}"); newProfile = ScriptableObject.CreateInstance <CompositionProfile>(); //Note: no need to GenerateUniqueAssetPath(path), since we know that LoadAssetAtPath failed at this path AssetDatabase.CreateAsset(newProfile, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { Debug.Log($"Loading composition profile from {path}"); } compositor.profile = newProfile; }