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()); } }
// 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); } } }