public bool CreateNewCharacterSetupFile() { bool success = false; //GET FILE PATH FROM USER string filePath = EditorUtility.SaveFilePanelInProject("Where do you want to create your new character setup file?", "New Live Character Setup", "asset", ""); if (filePath != "") { LiveCharacterSetupFile newCharSetupFile = ScriptableObject.CreateInstance <LiveCharacterSetupFile>(); currentCharSetupFile = newCharSetupFile; currentCharSetupFile.Expressions = new List <Expression>(); //Deep copy base expressions into new file expressions to prevent base file from being modified foreach (Expression exp in baseLiveExpressions.BaseExpressions) { currentCharSetupFile.Expressions.Add(new Expression(exp.Name, exp.Desc, exp.Attr, false)); } AssetDatabase.CreateAsset(newCharSetupFile, filePath); AssetDatabase.SaveAssets(); Selection.activeObject = newCharSetupFile; success = true; } return(success); }
private void OnEnable() { setupFile = (LiveCharacterSetupFile)target; warningStyle = new GUIStyle(); warningStyle.fontStyle = FontStyle.Bold; warningStyle.normal.textColor = Color.red; warningStyle.wordWrap = true; warningStyle.alignment = TextAnchor.MiddleCenter; //string baseFacewareExpressionsPath = Utility.CombinePath("Assets", "Faceware", "Scripts", "Editor", "BaseFacewareExpressions.asset"); //baseExpressions = (BaseFacewareExpressions)AssetDatabase.LoadAssetAtPath(baseFacewareExpressionsPath, typeof(BaseFacewareExpressions)); }
/****************************************************************************************************/ void Awake() { string iconPath = Utility.CombinePath("Assets", "Faceware", "Scripts", "Editor", "Icons"); titleIcon = ( Texture )AssetDatabase.LoadAssetAtPath(Path.Combine(iconPath, "LiveClient_DeviceHeader.png"), typeof(Texture)); yesIcon = ( Texture )AssetDatabase.LoadAssetAtPath(Path.Combine(iconPath, "Ok_16.png"), typeof(Texture)); noIcon = ( Texture )AssetDatabase.LoadAssetAtPath(Path.Combine(iconPath, "No_16.png"), typeof(Texture)); string baseFacewareExpressionsPath = Utility.CombinePath("Assets", "Faceware", "Scripts", "Editor", "BaseFacewareExpressions.asset"); baseLiveExpressions = (BaseFacewareExpressions)AssetDatabase.LoadAssetAtPath(baseFacewareExpressionsPath, typeof(BaseFacewareExpressions)); charSetupData.Init(new List <Expression>(), new List <string>()); currentCharSetupFile = null; }
/****************************************************************************************************/ private void CreateFileGUI() { EditorGUILayout.BeginVertical("Box"); //Root layout group { EditorGUILayout.LabelField("Faceware Live Client for Unity - Character Setup", titleStyle); EditorGUI.BeginChangeCheck(); currentCharSetupFile = (LiveCharacterSetupFile)EditorGUILayout.ObjectField("Character Setup File: ", currentCharSetupFile, typeof(LiveCharacterSetupFile), false); if (EditorGUI.EndChangeCheck()) { if (currentCharSetupFile == null) { charSetupData.Init(new List <Expression>(), new List <string>()); } else { charSetupData.Init(currentCharSetupFile.Expressions, currentCharSetupFile.Controls); //Check for root object if (currentCharSetupFile.rootObjectName != null) { GameObject rootObject = GameObject.Find(currentCharSetupFile.rootObjectName); if (rootObject != null) { //We have it currentCharSetupFile.rootObject = rootObject; ValidateControls(); } else { //Don't have it in scene, prompt user EditorUtility.DisplayDialog("Unable to find character!", "The character " + currentCharSetupFile.rootObjectName + " could not be found in the scene!", "Ok"); } } } controlSelection.Clear(); addedControls.Clear(); sceneControlObjectList.Clear(); InitAddedControls(); } EditorGUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); //Buttons' control group { GUILayoutOption buttonWidth = GUILayout.Width(162); GUILayout.FlexibleSpace(); if (GUILayout.Button("New", buttonWidth)) { bool success = CreateNewCharacterSetupFile(); if (success) { charSetupData.Init(currentCharSetupFile.Expressions, currentCharSetupFile.Controls); controlSelection.Clear(); addedControls.Clear(); sceneControlObjectList.Clear(); } } GUILayout.FlexibleSpace(); if (GUILayout.Button("Save", buttonWidth)) { EditorUtility.SetDirty(currentCharSetupFile); AssetDatabase.SaveAssets(); } GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); //End buttons' control group CreateSpace(1); } EditorGUILayout.EndVertical(); CreateSpace(1); }