// ---------------------------------------------------------------------- public void GenerateEditorData() { // Duplicate engine storage if (Storage == null) { Storage = new iCS_VisualScriptData(iCSMonoBehaviour); } try { iCS_VisualScriptData.CopyFromTo(EngineStorage, Storage); } catch (Exception e) { Debug.LogWarning("iCanScript: Unable to copy engine storage: " + e.Message); } // Rebuild Editor Objects from the Engine Objects. if (myEditorObjects == null) { myEditorObjects = new List <iCS_EditorObject>(); } iCS_EditorObject.RebuildFromEngineObjects(this); // Re-initialize multi-selection list. var selectedObject = SelectedObject; SelectedObject = selectedObject; myLastTransactionType = TransactionType.None; SystemEvents.AnnouceVisualScriptReloaded(this); }
public static void ExportStorage() { var transform = Selection.activeTransform; if (transform == null) { return; } var go = transform.gameObject; if (go == null) { return; } var monoBehaviour = go.GetComponent <iCS_MonoBehaviourImp>() as iCS_MonoBehaviourImp; if (monoBehaviour == null) { return; } var storage = new iCS_VisualScriptData(monoBehaviour); var initialPath = Application.dataPath; var path = EditorUtility.SaveFilePanel("Export Visual Script", initialPath, monoBehaviour.name + ".ics2", "ics2"); if (string.IsNullOrEmpty(path)) { return; } iCS_VisualScriptImportExport.Export(storage, path); Debug.Log("iCanScript: Export completed => " + path); }
// ================================================================================= // Import // --------------------------------------------------------------------------------- public static bool Import(iCS_VisualScriptData storage, string path) { // -- Decode JSON string. -- JObject root = JSONFile.Read(path); if (root == null || root.isNull) { Debug.LogWarning("iCanScript: Import failure: JSON file corrupted."); return(false); } // -- Extract version information. -- var cache = new iCS_VisualScriptData(); JNumber majorVersion = root.GetValueFor("Storage.MajorVersion") as JNumber; JNumber minorVersion = root.GetValueFor("Storage.MinorVersion") as JNumber; JNumber bugFixVersion = root.GetValueFor("Storage.BugFixVersion") as JNumber; cache.MajorVersion = (int)majorVersion.value; cache.MinorVersion = (int)minorVersion.value; cache.BugFixVersion = (int)bugFixVersion.value; // -- Extract visual script attributes. -- JBool isEditorScript = root.GetValueFor("Storage.IsEditorScript") as JBool; JString csharpFileName = root.GetValueFor("Storage.CSharpFileName") as JString; JBool baseTypeOverride = root.GetValueFor("Storage.BaseTypeOverride") as JBool; JString baseType = root.GetValueFor("Storage.BaseType") as JString; JString sourceFileGUID = root.GetValueFor("Storage.SourceFileGUID") as JString; cache.IsEditorScript = isEditorScript.value; cache.CSharpFileName = csharpFileName.value; cache.BaseTypeOverride = baseTypeOverride.value; cache.BaseType = baseType.value; cache.SourceFileGUID = sourceFileGUID.value; // -- Extract engine objects. -- JArray engineObjects = root.GetValueFor("Storage.EngineObjects") as JArray; if (engineObjects == null) { Debug.LogWarning("iCanScript: Import failure: Unable to locate engine array."); return(false); } cache.EngineObjects.Capacity = engineObjects.value.Length; foreach (var eobj in engineObjects.value) { var newObj = ReadEngineObject(eobj as JObject); if (newObj != null) { cache.EngineObjects.Add(newObj); } else { Debug.LogWarning("iCanScript: Unable to create instance of iCS_EngineObject"); } } cache.CopyTo(storage); return(true); }
// --------------------------------------------------------------------------------- public static bool IsSameVisualScript(iCS_IStorage iStorage, iCS_VisualScriptData storage) { if (iStorage == null || storage == null) { return(false); } if (iStorage.Storage == storage) { return(true); } return(false); }
public static void ImportStorage() { var transform = Selection.activeTransform; if (transform == null) { return; } var go = transform.gameObject; if (go == null) { return; } var monoBehaviour = go.GetComponent <iCS_MonoBehaviourImp>() as iCS_MonoBehaviourImp; if (monoBehaviour == null) { return; } var initialPath = Application.dataPath; var path = EditorUtility.OpenFilePanel("Import Visual Script", initialPath, "ics2"); if (string.IsNullOrEmpty(path)) { return; } var tmpVsd = new iCS_VisualScriptData(); if (!iCS_VisualScriptImportExport.Import(tmpVsd, path)) { Debug.LogError("iCanScript: Import failure. The selected visual script was not modified."); } tmpVsd.CopyTo(monoBehaviour); Debug.Log("iCanScript: Import completed => " + path); // Attempt to reload and relayout if the selection is visible in the visual editor. var visualEditor = iCS_EditorController.FindVisualEditor(); if (visualEditor == null) { return; } var iStorage = visualEditor.IStorage; if (iStorage.iCSMonoBehaviour != monoBehaviour) { return; } iCS_UserCommands.InitEditorData(iStorage); }
// ================================================================================= // Export // --------------------------------------------------------------------------------- public static void Export(iCS_VisualScriptData storage, string path) { var root = new JObject(new JNameValuePair("Storage", JValue.Build(storage))); File.WriteAllText(path, JSONPrettyPrint.Print(root.Encode())); }