private void AddVariantMenuSelected(object userData, string[] options, int selected) { AddVariantMenuData data = (AddVariantMenuData)userData; char[] separator = new char[] { ' ' }; string[] keywords = data.keywords[selected].Split(separator); ShaderVariantCollection.ShaderVariant variant = new ShaderVariantCollection.ShaderVariant(data.shader, (PassType)data.types[selected], keywords); Undo.RecordObject(data.collection, "Add variant"); data.collection.Add(variant); }
private void DisplayAddVariantsMenu(Rect rect, Shader shader, ShaderVariantCollection collection) { AddVariantMenuData userData = new AddVariantMenuData { shader = shader, collection = collection }; ShaderUtil.GetShaderVariantEntries(shader, collection, out userData.types, out userData.keywords); if (userData.keywords.Length == 0) { EditorApplication.Beep(); } else { string[] options = new string[userData.keywords.Length]; for (int i = 0; i < userData.keywords.Length; i++) { options[i] = ((PassType) userData.types[i]) + "/" + (!string.IsNullOrEmpty(userData.keywords[i]) ? userData.keywords[i] : "<no keywords>"); } EditorUtility.DisplayCustomMenu(rect, options, null, new EditorUtility.SelectMenuItemFunction(this.AddVariantMenuSelected), userData); } }
private void DisplayAddVariantsMenu(Rect rect, Shader shader, ShaderVariantCollection collection) { AddVariantMenuData userData = new AddVariantMenuData { shader = shader, collection = collection }; ShaderUtil.GetShaderVariantEntries(shader, collection, out userData.types, out userData.keywords); if (userData.keywords.Length == 0) { EditorApplication.Beep(); } else { string[] options = new string[userData.keywords.Length]; for (int i = 0; i < userData.keywords.Length; i++) { options[i] = ((PassType)userData.types[i]) + "/" + (!string.IsNullOrEmpty(userData.keywords[i]) ? userData.keywords[i] : "<no keywords>"); } EditorUtility.DisplayCustomMenu(rect, options, null, new EditorUtility.SelectMenuItemFunction(this.AddVariantMenuSelected), userData); } }