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