parse asmdef

This commit is contained in:
nakano yosuke 2019-12-09 02:13:50 +09:00
parent 5d1e920f84
commit 61df3a4bb2
11 changed files with 114 additions and 33 deletions

View File

@ -1,3 +0,0 @@
{
"name": "AsmdefGraph"
}

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 6f2ba0cedcb8c3b47a21d0d0a4e78efe
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,6 +1,10 @@
namespace AsmdefGraph.Editor {
public class Asmdef {
public string Name;
public string[] Asmdefs;
public string name;
public string[] references;
public Asmdef() {
name = "";
references = new string[0];
}
}
}

View File

@ -0,0 +1,30 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace AsmdefGraph.Editor {
public class AsmdefFile {
public string FilePath { set; get; }
public string Guid { set; get; }
public Asmdef Content { set; get; }
public AsmdefFile() {
FilePath = "";
Guid = "";
Content = new Asmdef();
}
public bool LoadFromPath(string fullPath, string assetPath) {
FilePath = fullPath;
Guid = AssetDatabase.AssetPathToGUID(assetPath);
var json = File.ReadAllText(fullPath);
if (string.IsNullOrEmpty(json)) {
return false;
}
Content = JsonUtility.FromJson<Asmdef>(json);
return true;
}
public IEnumerable<string> Guids =>
Content.references.Where(x => !string.IsNullOrEmpty(x)).Select(x => x.Replace("GUID:", ""));
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ad4bbaa3b7aa9cd439fe68c352f6868c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
using System.IO;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
namespace AsmdefGraph.Editor {
@ -10,14 +10,19 @@ namespace AsmdefGraph.Editor {
}
void OnEnable() {
var asmdefs = new List<AsmdefFile>();
var projectPath = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar;
// プロジェクトのasmdefを全検索
var asmdefs = Directory.EnumerateFiles(
Directory.GetCurrentDirectory(), "*.asmdef", SearchOption.AllDirectories);
var asmdefNames = asmdefs
.Select(x => x.Split('\\').LastOrDefault())
.Select(x => x.Replace(".asmdef", ""))
.Where(x => !string.IsNullOrEmpty(x));
var graphView = new AsmdefGraphView(asmdefNames) {
var fullPathes = Directory.EnumerateFiles(projectPath, "*.asmdef", SearchOption.AllDirectories);
// asmdefの内容取得
foreach (var fullPath in fullPathes) {
var assetPath = fullPath.Replace(projectPath, "");
var asmdef = new AsmdefFile();
asmdef.LoadFromPath(fullPath, assetPath);
asmdefs.Add(asmdef);
}
// viewの作成
var graphView = new AsmdefGraphView(asmdefs) {
style = { flexGrow = 1 }
};
rootVisualElement.Add(graphView);

View File

@ -4,7 +4,7 @@ using UnityEngine.UIElements;
namespace AsmdefGraph.Editor {
public class AsmdefGraphView : GraphView {
public AsmdefGraphView(IEnumerable<string> asmdefs) : base() {
public AsmdefGraphView(IEnumerable<AsmdefFile> asmdefs) : base() {
// zoom可能に
SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale);
// 背景を黒に
@ -12,7 +12,7 @@ namespace AsmdefGraph.Editor {
// ドラッグによる移動可能に
this.AddManipulator(new SelectionDragger());
foreach (var asmdef in asmdefs) {
AddElement(new AsmdefNode(asmdef));
AddElement(new AsmdefNode(asmdef.Content.name));
}
}

View File

@ -1,3 +1,15 @@
{
"name": "AsmdefGraph.Example"
}
{
"name": "AsmdefGraph.Example",
"references": [
"GUID:2bafac87e7f4b9b418d9448d219b01ab"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,3 +1,16 @@
{
"name": "AsmdefGraph.Example.Fuga"
}
{
"name": "AsmdefGraph.Example.Fuga",
"references": [
"GUID:4326ab8b7972b7c4abe4e28df1a1c005",
"GUID:119b4cf3f63d4c84d920ceae3917f02c"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,3 +1,15 @@
{
"name": "AsmdefGraph.Example.Hoge"
}
{
"name": "AsmdefGraph.Example.Hoge",
"references": [
"GUID:4326ab8b7972b7c4abe4e28df1a1c005"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -1,6 +1,10 @@
{
"name": "AsmdefGraph.Example.Piyo",
"references": [],
"references": [
"GUID:4326ab8b7972b7c4abe4e28df1a1c005",
"GUID:119b4cf3f63d4c84d920ceae3917f02c",
"GUID:56e14997241bc0d4796fc4e693fcc806"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,