コード例 #1
0
 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();
 }
コード例 #2
0
ファイル: ActionMenue.cs プロジェクト: zh880517/UnityLib
        public override void Action(int instanceId, string pathName, string resourceFile)
        {
            ActionAsset asset = CreateInstance <ActionAsset>();

            asset.FrameCount = 100;
            AssetDatabase.CreateAsset(asset, pathName);
            ProjectWindowUtil.ShowCreatedAsset(asset);
        }
コード例 #3
0
    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();
    }
コード例 #4
0
        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();
        }
コード例 #5
0
    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;
        }
    }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
ファイル: ActionCompiler.cs プロジェクト: calumroy/lumpskit
    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();
        }
    }
コード例 #9
0
 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));
 }
コード例 #10
0
 protected ActionInstance(ActionAsset asset)
 {
     m_asset = asset;
 }
コード例 #11
0
 public HitActionInstance(ActionAsset asset) : base(asset)
 {
 }
コード例 #12
0
 public BasicMoveActionInstance(ActionAsset asset) : base(asset)
 {
 }
コード例 #13
0
 public void SetAction(ActionAsset actionAsset)
 {
     m_actionAsset  = actionAsset;
     m_image.sprite = actionAsset != null ? actionAsset.Sprite : m_defaultSprite;
 }
コード例 #14
0
 public ShieldSpawnActionInstance(ActionAsset asset) : base(asset)
 {
 }
コード例 #15
0
 public SwapActionInstance(ActionAsset asset) : base(asset)
 {
 }
コード例 #16
0
 public static string GetArtifactPath(this ActionAsset actionAsset) => GetArtifactFile(actionAsset, ProjectUtility.GetOrCreateProjectSettings <ActionGraphGlobalSettings>());