Exemple #1
0
    static void AnalyseReplayFolder()
    {
        string            path  = LoadGenomeManagerEditor.AssetsRelativePath(EditorUtility.OpenFolderPanel("Select Replay Folder", "", ""));
        List <ReplayStat> stats = new List <ReplayStat>();

        if (path.Length != 0)
        {
            List <TextAsset> xmlFiles = new List <TextAsset>();
            var assets = AssetDatabase.FindAssets("t:TextAsset", new[] { path });
            foreach (var asset in assets)
            {
                if (!AssetDatabase.GUIDToAssetPath(asset).EndsWith("bytes"))
                {
                    continue;
                }
                var textAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(AssetDatabase.GUIDToAssetPath(asset));
                var replay    = Replay.ImportFromTextAsset(textAsset, Replay.SerializationStyle.ProtoBufNet);
                var result    = AnalyseReplay(replay, false);
                result.fileName = AssetDatabase.GUIDToAssetPath(asset);
                stats.Add(result);
            }
        }
        StringBuilder builder = new StringBuilder();

        builder.AppendLine("File Path, length, jumps, hops, dives, movetoward, moveaway, moveup, leftscore, right score");

        foreach (var replayStat in stats)
        {
            builder.AppendFormat("{0},{1},{2},{3},{4},{5},{6},{7},{8}, {9}\n", replayStat.fileName,
                                 replayStat.length,
                                 replayStat.jumpCount,
                                 replayStat.hopCount,
                                 replayStat.diveCount,
                                 replayStat.distanceMovedTowardsOpponent,
                                 replayStat.distanceMovedAwayOpponent,
                                 replayStat.distanceMovedUp,
                                 replayStat.leftScore,
                                 replayStat.rightScore);
        }

        path = EditorUtility.SaveFilePanel("Save stats File", "", "", "csv");

        if (path.Length != 0)
        {
            using (StreamWriter s = new StreamWriter(path, false))
                s.Write(builder.ToString());
        }
    }
Exemple #2
0
    // Start is called before the first frame update
    public override void OnInspectorGUI()
    {
        var manager = ((LoadReplayManager)serializedObject.targetObject);

        if (manager.replaysToLoad != null && manager.replaysToLoad.Length != 0)
        {
            GUILayout.TextArea("CurrentReplay: " + manager.replayNames[manager.focusIndex]);
        }
        base.OnInspectorGUI();
        if (GUILayout.Button("Select Folder"))
        {
            string path = LoadGenomeManagerEditor.AssetsRelativePath(EditorUtility.OpenFolderPanel("Select Replay Folder", "", ""));

            if (path.Length != 0)
            {
                string[]         files       = Directory.GetFiles(path);
                List <TextAsset> replayFiles = new List <TextAsset>();
                var           assets         = AssetDatabase.FindAssets("t:TextAsset", new[] { path });
                List <string> fileNemse      = new List <string>();
                foreach (var asset in assets)
                {
                    if (!AssetDatabase.GUIDToAssetPath(asset).EndsWith("bytes"))
                    {
                        continue;
                    }
                    replayFiles.Add(AssetDatabase.LoadAssetAtPath <TextAsset>(AssetDatabase.GUIDToAssetPath(asset)));
                    fileNemse.Add(AssetDatabase.GUIDToAssetPath(asset));
                }
                ((LoadReplayManager)serializedObject.targetObject).replaysToLoad = replayFiles.ToArray();
                ((LoadReplayManager)serializedObject.targetObject).replayNames   = fileNemse.ToArray();
                GameCreator creator = FindObjectOfType <GameCreator>();
                creator.gamesToShow    = 4;
                creator.gamesToCreate  = replayFiles.Count;
                creator.inspectionMode = true;
                serializedObject.Update();
                EditorUtility.SetDirty(creator);
            }
        }
    }