// ----------------------------------------------------------------------
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        // =================================================================================
        // 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);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        // =================================================================================
        // 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()));
        }