private void GenerateRandomActions() { m_generatedActions.Clear(); foreach (ActionAsset actionAsset in m_mandatoryActions) { m_generatedActions.Add(actionAsset); } while (m_generatedActions.Count < m_generatedSequence.Count) { ActionAsset choosedAction = m_actions[UnityEngine.Random.Range(0, m_actions.Count)]; while (choosedAction.name == "Swap") { int cpt = 0; foreach (ActionAsset asset in m_generatedActions) { if (asset.name == "Swap") { cpt++; } } if (cpt < 2) { break; } else { choosedAction = m_actions[UnityEngine.Random.Range(0, m_actions.Count)]; } } m_generatedActions.Add(choosedAction); } m_generatedActions.Shuffle(); }
public override void Action(int instanceId, string pathName, string resourceFile) { ActionAsset asset = CreateInstance <ActionAsset>(); asset.FrameCount = 100; AssetDatabase.CreateAsset(asset, pathName); ProjectWindowUtil.ShowCreatedAsset(asset); }
public override void OnInspectorGUI() { GUILayout.TextArea("This asset contains your Action Library. The library contains one or more" + " networks for use in your Unity3D project. To edit the library, press the 'Edit Library' button below."); EditorGUILayout.Separator(); ActionAsset highlightedAsset = Selection.activeObject as ActionAsset; try { currentLibrary = ActionLibrary.LoadData(highlightedAsset.libraryData); } catch {} GUILayout.Label("This library contains " + currentLibrary.networks.Length + " networks."); EditorGUILayout.Separator(); GUILayout.BeginHorizontal(); { GUILayout.FlexibleSpace(); if (GUILayout.Button("Edit Library", GUILayout.MaxWidth(100f))) { ActionMenu.EditLibraryAsset(); } GUILayout.FlexibleSpace(); } GUILayout.EndHorizontal(); GUILayout.Space(10f); GUILayout.BeginHorizontal(); { GUILayout.FlexibleSpace(); if (GUILayout.Button("Generate Runtime Library from Asset")) { //ActionClassGenerator.CreateNetworkClass(Selection.activeObject as ActionAsset); ActionCompiler.GenerateRTLibrary(Selection.activeObject as ActionAsset); } GUILayout.FlexibleSpace(); } GUILayout.EndHorizontal(); GUILayout.Space(10f); GUILayout.BeginHorizontal(); { GUILayout.FlexibleSpace(); if (GUILayout.Button("Export Library")) { SerializeToXML(currentLibrary); //SerializeToBin(currentLibrary); } GUILayout.FlexibleSpace(); } GUILayout.EndHorizontal(); }
public static void UpdateAsset(this ActionAsset asset, ActionAssetModel model) { var path = AssetDatabase.GetAssetPath(asset); using (var stream = File.Create(path)) { using (var writer = new StreamWriter(stream)) { var jsonSettings = JsonConvert.DefaultSettings.Invoke(); jsonSettings.TypeNameHandling = TypeNameHandling.All; writer.Write(JsonConvert.SerializeObject(model, jsonSettings)); } } AssetDatabase.Refresh(); }
public static void Open(ActionAsset action) { var window = GetWindow <ActionEditorWinow>(); if (window.asset != action || window.view == null) { action.OnAfterDeserialize(); TrackUtil.UpdateAllTrack(action); window.asset = action; window.view = CreateInstance <FrameLineView>(); window.view.hideFlags = HideFlags.HideAndDontSave;//防止重启虚拟机的时候丢失 window.view.Window = window; window.view.Asset = action; } }
public static ActionAssetModel CreateModel(this ActionAsset asset) { var jsonSettings = JsonConvert.DefaultSettings.Invoke(); jsonSettings.TypeNameHandling = TypeNameHandling.All; var path = AssetDatabase.GetAssetPath(asset); if (string.IsNullOrEmpty(path)) { return(new ActionAssetModel()); } else { var json = File.ReadAllText(path); return(JsonConvert.DeserializeObject <ActionAssetModel>(json, jsonSettings)); } }
public static string GetArtifactFile(this ActionAsset actionAsset, ActionGraphGlobalSettings settings) { var path = AssetDatabase.GetAssetPath(actionAsset); if (string.IsNullOrEmpty(path)) { return(null); } var importer = AssetImporter.GetAtPath(path); var guid = importer.userData; if (string.IsNullOrEmpty(guid)) { return(settings.CreateArtifactPath()); } var artifactPath = AssetDatabase.GUIDToAssetPath(guid); if (string.IsNullOrEmpty(artifactPath)) { return(settings.CreateArtifactPath()); } return(artifactPath); }
public static void GenerateRTLibrary(ActionAsset asset) { ActionLibrary library = ActionLibrary.LoadData(asset.libraryData); ActionNetwork illegalNetwork = AreSkillNamesUnique(library); StringBuilder text = new StringBuilder(); if (illegalNetwork != null) { EditorUtility.DisplayDialog("Error", "At least two skills in the network " + illegalNetwork.name + " contained in the currently " + "selected asset have the same name after special characters have been removed from their names. Please change their names to ensure " + "they will be unique when special characters are removed.", "Ok"); return; } else { for (int i = 0; i < library.networks.Length; ++i) { if (library.networks[i].skills.Count > 0) { text.Append(ActionClassGenerator.ClassString(library.networks[i]) + "\n\n"); } } string TEMPADDRESS = string.Empty; if (Application.platform != RuntimePlatform.WindowsEditor) { TEMPADDRESS = Path.Combine(Path.Combine(Path.Combine(EditorApplication.applicationContentsPath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar), "Frameworks"), "Managed") , "UnityEngine.dll"); } else { TEMPADDRESS = Path.Combine(Path.Combine(EditorApplication.applicationContentsPath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar), "Managed") , "UnityEngine.dll"); } using (StreamWriter writer = new StreamWriter("output.txt", false)) { writer.WriteLine(text); } CompilerParameters compilerParameters = new CompilerParameters(); compilerParameters.ReferencedAssemblies.Add(TEMPADDRESS); compilerParameters.ReferencedAssemblies.Add("system.dll"); compilerParameters.ReferencedAssemblies.Add(Application.dataPath + @"/coAdjoint/Action/ACE.dll"); compilerParameters.OutputAssembly = Application.dataPath + "/coAdjoint/Action/Builds/" + asset.name + "Build.dll"; CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("CSharp"); CompilerResults cr = codeDomProvider.CompileAssemblyFromSource(compilerParameters, new string[] { text.ToString() }); if (cr.Errors.Count > 0) { foreach (CompilerError ce in cr.Errors) { throw new ApplicationException(ce.ToString()); } } AssetDatabase.Refresh(); } }
public static string WriteArtifact <TAction>(string artifactFile, ActionSchema actionSchema, FieldOperationSchema operationSchema, ActionAsset actionAsset, ActionDefinitionAsset actionDefinitionAsset) where TAction : Delegate { using var blob = Create <TAction>(actionAsset.CreateModel(), actionSchema, operationSchema, actionDefinitionAsset, Unity.Collections.Allocator.Temp); return(DoWriteArtifact <TAction>(artifactFile, blob)); }
protected ActionInstance(ActionAsset asset) { m_asset = asset; }
public HitActionInstance(ActionAsset asset) : base(asset) { }
public BasicMoveActionInstance(ActionAsset asset) : base(asset) { }
public void SetAction(ActionAsset actionAsset) { m_actionAsset = actionAsset; m_image.sprite = actionAsset != null ? actionAsset.Sprite : m_defaultSprite; }
public ShieldSpawnActionInstance(ActionAsset asset) : base(asset) { }
public SwapActionInstance(ActionAsset asset) : base(asset) { }
public static string GetArtifactPath(this ActionAsset actionAsset) => GetArtifactFile(actionAsset, ProjectUtility.GetOrCreateProjectSettings <ActionGraphGlobalSettings>());