del AssetDependencyGraph
This commit is contained in:
parent
066ffea0a9
commit
1535347d45
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a359b65f33dc9df43950bf68bd99b6ee
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AssetDependencyGraph-Editor",
|
|
||||||
"references": [],
|
|
||||||
"optionalUnityReferences": [],
|
|
||||||
"includePlatforms": [
|
|
||||||
"Editor"
|
|
||||||
],
|
|
||||||
"excludePlatforms": [],
|
|
||||||
"allowUnsafeCode": false,
|
|
||||||
"overrideReferences": false,
|
|
||||||
"precompiledReferences": [],
|
|
||||||
"autoReferenced": true,
|
|
||||||
"defineConstraints": []
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0f6edbbfd6f04b1479b191b629a0421f
|
|
||||||
AssemblyDefinitionImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9303f9c952516f34cbc668b8d9217ee7
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,242 +0,0 @@
|
|||||||
using MongoDB.Bson.Serialization.Attributes;
|
|
||||||
using MongoDB.Driver;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
|
|
||||||
namespace AssetDependencyGraph
|
|
||||||
{
|
|
||||||
[BsonIgnoreExtraElements]
|
|
||||||
public class AssetIdentify
|
|
||||||
{
|
|
||||||
public string Path;
|
|
||||||
public string AssetType;
|
|
||||||
[AllowNull]
|
|
||||||
public string Guid;
|
|
||||||
[AllowNull]
|
|
||||||
public string Md5;
|
|
||||||
}
|
|
||||||
|
|
||||||
[BsonIgnoreExtraElements]
|
|
||||||
public class AssetNode
|
|
||||||
{
|
|
||||||
public AssetIdentify Self;
|
|
||||||
public string AssetType;
|
|
||||||
public HashSet<AssetIdentify> Dependencies = new();
|
|
||||||
public HashSet<AssetIdentify> Dependent = new();
|
|
||||||
}
|
|
||||||
|
|
||||||
[BsonIgnoreExtraElements]
|
|
||||||
public sealed class FolderNode : AssetNode
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
[BsonIgnoreExtraElements]
|
|
||||||
public sealed class PackageNode : AssetNode
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AssetDependencyGraphDB
|
|
||||||
{
|
|
||||||
MongoClient client;
|
|
||||||
IMongoCollection<FolderNode> FolderNodes;
|
|
||||||
IMongoCollection<PackageNode> PackageNodes;
|
|
||||||
IMongoCollection<AssetNode> AssetNodes;
|
|
||||||
Dictionary<string, AssetNode> findCacheDic = new();
|
|
||||||
|
|
||||||
public AssetDependencyGraphDB(string user, string passwd, string ip)
|
|
||||||
{
|
|
||||||
MongoClientSettings settings;
|
|
||||||
if(string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(ip))
|
|
||||||
{
|
|
||||||
settings = MongoClientSettings.FromUrl(new MongoUrl($"mongodb://{ip}:27017/"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
settings = MongoClientSettings.FromUrl(new MongoUrl($"mongodb://{user}:{passwd}@{ip}:27017/"));
|
|
||||||
}
|
|
||||||
|
|
||||||
settings.ConnectTimeout = TimeSpan.FromSeconds(5);
|
|
||||||
settings.MinConnectionPoolSize = 1;
|
|
||||||
settings.MaxConnectionPoolSize = 25;
|
|
||||||
client = new MongoClient(settings);
|
|
||||||
var db = client.GetDatabase("assetgraph");
|
|
||||||
FolderNodes = db.GetCollection<FolderNode>("folder_nodes");
|
|
||||||
PackageNodes = db.GetCollection<PackageNode>("package_nodes");
|
|
||||||
AssetNodes = db.GetCollection<AssetNode>("asset_nodes");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Clean()
|
|
||||||
{
|
|
||||||
client.DropDatabase("assetgraph");
|
|
||||||
var db = client.GetDatabase("assetgraph");
|
|
||||||
FolderNodes = db.GetCollection<FolderNode>("folder_nodes");
|
|
||||||
PackageNodes = db.GetCollection<PackageNode>("package_nodes");
|
|
||||||
AssetNodes = db.GetCollection<AssetNode>("asset_nodes");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateOrInsert<T>(T node) where T : AssetNode
|
|
||||||
{
|
|
||||||
switch (node)
|
|
||||||
{
|
|
||||||
case FolderNode folderNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<FolderNode>.Filter.And(
|
|
||||||
Builders<FolderNode>.Filter.Eq(fn=>fn.Self.Path,node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = FolderNodes.Find(filter);
|
|
||||||
if (found == null || found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
FolderNodes.InsertOne(folderNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var result = FolderNodes.UpdateOne(filter, Builders<FolderNode>.Update.Combine(
|
|
||||||
Builders<FolderNode>.Update.Set(fn => fn.Self, folderNode.Self),
|
|
||||||
Builders<FolderNode>.Update.Set(fn => fn.AssetType, folderNode.AssetType),
|
|
||||||
Builders<FolderNode>.Update.Set(fn => fn.Dependencies, folderNode.Dependencies),
|
|
||||||
Builders<FolderNode>.Update.Set(fn => fn.Dependent, folderNode.Dependent)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PackageNode packageNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<PackageNode>.Filter.And(
|
|
||||||
Builders<PackageNode>.Filter.Eq(fn => fn.Self.Path, node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = PackageNodes.Find(filter);
|
|
||||||
if (found == null || found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
PackageNodes.InsertOne(packageNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var result = PackageNodes.UpdateOne(filter, Builders<PackageNode>.Update.Combine(
|
|
||||||
Builders<PackageNode>.Update.Set(fn => fn.Self, packageNode.Self),
|
|
||||||
Builders<PackageNode>.Update.Set(fn => fn.AssetType, packageNode.AssetType),
|
|
||||||
Builders<PackageNode>.Update.Set(fn => fn.Dependencies, packageNode.Dependencies),
|
|
||||||
Builders<PackageNode>.Update.Set(fn => fn.Dependent, packageNode.Dependent)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AssetNode assetNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<AssetNode>.Filter.And(
|
|
||||||
Builders<AssetNode>.Filter.Eq(fn => fn.Self.Path, node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = AssetNodes.Find(filter);
|
|
||||||
if (found == null || found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
AssetNodes.InsertOne(assetNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var result = AssetNodes.UpdateOne(filter, Builders<AssetNode>.Update.Combine(
|
|
||||||
Builders<AssetNode>.Update.Set(fn => fn.Self, assetNode.Self),
|
|
||||||
Builders<AssetNode>.Update.Set(fn => fn.AssetType, assetNode.AssetType),
|
|
||||||
Builders<AssetNode>.Update.Set(fn => fn.Dependencies, assetNode.Dependencies),
|
|
||||||
Builders<AssetNode>.Update.Set(fn => fn.Dependent, assetNode.Dependent)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete<T>(T node) where T : AssetNode
|
|
||||||
{
|
|
||||||
switch (node)
|
|
||||||
{
|
|
||||||
case FolderNode folderNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<FolderNode>.Filter.And(
|
|
||||||
Builders<FolderNode>.Filter.Eq(fn => fn.Self.Path, node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = FolderNodes.Find(filter);
|
|
||||||
if (found != null && found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
// TODO: del ref dep
|
|
||||||
FolderNodes.DeleteOne(filter);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PackageNode packageNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<PackageNode>.Filter.And(
|
|
||||||
Builders<PackageNode>.Filter.Eq(fn => fn.Self.Path, node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = PackageNodes.Find(filter);
|
|
||||||
if (found != null && found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
// TODO: del ref dep
|
|
||||||
PackageNodes.DeleteOne(filter);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AssetNode assetNode:
|
|
||||||
{
|
|
||||||
var filter = Builders<AssetNode>.Filter.And(
|
|
||||||
Builders<AssetNode>.Filter.Eq(fn => fn.Self.Path, node.Self.Path)
|
|
||||||
);
|
|
||||||
var found = AssetNodes.Find(filter);
|
|
||||||
if (found != null && found.CountDocuments() == 0)
|
|
||||||
{
|
|
||||||
// TODO: del ref dep
|
|
||||||
AssetNodes.DeleteOne(filter);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public AssetNode Find(string path)
|
|
||||||
{
|
|
||||||
if(findCacheDic.TryGetValue(path, out var assetNode))
|
|
||||||
{
|
|
||||||
return assetNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
var filter = Builders<AssetNode>.Filter.And(
|
|
||||||
Builders<AssetNode>.Filter.Eq(fn => fn.Self.Path, path)
|
|
||||||
);
|
|
||||||
var found = AssetNodes.Find(filter);
|
|
||||||
if (found != null && found.CountDocuments() != 0)
|
|
||||||
{
|
|
||||||
assetNode = found.First();
|
|
||||||
findCacheDic[path] = assetNode;
|
|
||||||
return assetNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
var filter1 = Builders<PackageNode>.Filter.And(
|
|
||||||
Builders<PackageNode>.Filter.Eq(fn => fn.Self.Path, path)
|
|
||||||
);
|
|
||||||
var found1 = PackageNodes.Find(filter1);
|
|
||||||
if (found1 != null && found1.CountDocuments() != 0)
|
|
||||||
{
|
|
||||||
assetNode = found1.First();
|
|
||||||
findCacheDic[path] = assetNode;
|
|
||||||
return assetNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
var filter2 = Builders<FolderNode>.Filter.And(
|
|
||||||
Builders<FolderNode>.Filter.Eq(fn => fn.Self.Path, path)
|
|
||||||
);
|
|
||||||
var found2 = FolderNodes.Find(filter2);
|
|
||||||
if (found2 != null && found2.CountDocuments() != 0)
|
|
||||||
{
|
|
||||||
assetNode = found2.First();
|
|
||||||
findCacheDic[path] = assetNode;
|
|
||||||
return assetNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3b678f0fc58371c4cb7735b9906443fd
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,912 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEditor.Experimental.GraphView;
|
|
||||||
using UnityEditor.UIElements;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.UIElements;
|
|
||||||
using Object = UnityEngine.Object;
|
|
||||||
|
|
||||||
namespace AssetDependencyGraph
|
|
||||||
{
|
|
||||||
public class AssetGraphView : GraphView
|
|
||||||
{
|
|
||||||
public AssetGraphView()
|
|
||||||
{
|
|
||||||
SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale);
|
|
||||||
|
|
||||||
this.AddManipulator(new ContentDragger());
|
|
||||||
this.AddManipulator(new SelectionDragger());
|
|
||||||
this.AddManipulator(new RectangleSelector());
|
|
||||||
this.AddManipulator(new FreehandSelector());
|
|
||||||
|
|
||||||
VisualElement background = new VisualElement
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
backgroundColor = new Color(0.17f, 0.17f, 0.17f, 1f)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Insert(0, background);
|
|
||||||
|
|
||||||
background.StretchToParentSize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AssetGroup
|
|
||||||
{
|
|
||||||
public AssetNode AssetNode;
|
|
||||||
public Group GroupNode = new Group();
|
|
||||||
public Node MainGraphNode = new Node();
|
|
||||||
public Rect MainGraphNodeLastPosition = new Rect();
|
|
||||||
public List<GraphElement> AssetGraphNodes = new List<GraphElement>();
|
|
||||||
public List<GraphElement> AssetGraphConnections = new List<GraphElement>();
|
|
||||||
public List<Node> DependenciesForPlacement = new List<Node>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class AssetDependencyGraph : EditorWindow
|
|
||||||
{
|
|
||||||
private const float NodeWidth = 300.0f;
|
|
||||||
DependencyAnalyzer da = new DependencyAnalyzer();
|
|
||||||
AssetDependencyGraphDB db = new AssetDependencyGraphDB("", "CCS20190109", "localhost");
|
|
||||||
|
|
||||||
Dictionary<string, Toggle> type2Toogle = new();
|
|
||||||
(string assetType, bool show)[] assetTypeHidenTogleItems = new[] {
|
|
||||||
("Executable" , true), ("UnityAssembly", true), ("SourceFile", true),
|
|
||||||
("MakeFile", true), ("DatFile", true), ("AudioClip", true),
|
|
||||||
("VideoClip", true), ("Texture", false), ("Shader", false),
|
|
||||||
("ComputeShader", false), ("ShaderHeader", false), ("Binary", true),
|
|
||||||
("TextFile", true), ("Excel", true), ("UnknowFileType", false),
|
|
||||||
};
|
|
||||||
|
|
||||||
Toggle AlignmentToggle;
|
|
||||||
|
|
||||||
private GraphView graphView;
|
|
||||||
|
|
||||||
private readonly List<Object> selectedObjects = new List<Object>();
|
|
||||||
private readonly List<AssetGroup> assetGroups = new List<AssetGroup>();
|
|
||||||
|
|
||||||
private readonly Dictionary<string, Node> fullPathNodeLookup = new Dictionary<string, Node>();
|
|
||||||
|
|
||||||
[MenuItem("Window/Asset Dependency Graph")]
|
|
||||||
public static void CreateTestGraphViewWindow()
|
|
||||||
{
|
|
||||||
var window = GetWindow<AssetDependencyGraph>(true);
|
|
||||||
window.titleContent = new GUIContent("Asset Dependency Graph");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnEnable()
|
|
||||||
{
|
|
||||||
CreateGraph();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnDisable()
|
|
||||||
{
|
|
||||||
rootVisualElement.Remove(graphView);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CreateGraph()
|
|
||||||
{
|
|
||||||
graphView = new AssetGraphView
|
|
||||||
{
|
|
||||||
name = "Asset Dependency Graph",
|
|
||||||
};
|
|
||||||
|
|
||||||
VisualElement toolbar = CreateToolbar();
|
|
||||||
VisualElement toolbar2 = CreateFilterbar();
|
|
||||||
|
|
||||||
rootVisualElement.Add(toolbar);
|
|
||||||
rootVisualElement.Add(toolbar2);
|
|
||||||
rootVisualElement.Add(graphView);
|
|
||||||
graphView.StretchToParentSize();
|
|
||||||
toolbar.BringToFront();
|
|
||||||
toolbar2.BringToFront();
|
|
||||||
}
|
|
||||||
|
|
||||||
VisualElement CreateToolbar()
|
|
||||||
{
|
|
||||||
var toolbar = new VisualElement
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
flexDirection = FlexDirection.Row,
|
|
||||||
flexGrow = 0,
|
|
||||||
backgroundColor = new Color(0.25f, 0.25f, 0.25f, 0.75f)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var options = new VisualElement
|
|
||||||
{
|
|
||||||
style = { alignContent = Align.Center }
|
|
||||||
};
|
|
||||||
|
|
||||||
toolbar.Add(options);
|
|
||||||
toolbar.Add(new Button(ExploreAsset)
|
|
||||||
{
|
|
||||||
text = "Explore Asset",
|
|
||||||
});
|
|
||||||
toolbar.Add(new Button(ClearGraph)
|
|
||||||
{
|
|
||||||
text = "Clear"
|
|
||||||
});
|
|
||||||
toolbar.Add(new Button(ResetGroups)
|
|
||||||
{
|
|
||||||
text = "Reset Groups"
|
|
||||||
});
|
|
||||||
toolbar.Add(new Button(ResetAllNodes)
|
|
||||||
{
|
|
||||||
text = "Reset Nodes"
|
|
||||||
});
|
|
||||||
toolbar.Add(new Button(() =>
|
|
||||||
{
|
|
||||||
da.Analyze(Application.dataPath);
|
|
||||||
})
|
|
||||||
{
|
|
||||||
text = "Analyze Asset"
|
|
||||||
});
|
|
||||||
|
|
||||||
var ts = new ToolbarSearchField();
|
|
||||||
ts.RegisterValueChangedCallback(x =>
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(x.newValue))
|
|
||||||
{
|
|
||||||
graphView.FrameAll();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
graphView.ClearSelection();
|
|
||||||
graphView.graphElements.ToList().ForEach(y =>
|
|
||||||
{
|
|
||||||
if (y is Node node && y.title.IndexOf(x.newValue, System.StringComparison.OrdinalIgnoreCase) >= 0)
|
|
||||||
{
|
|
||||||
graphView.AddToSelection(node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
graphView.FrameSelection();
|
|
||||||
});
|
|
||||||
toolbar.Add(ts);
|
|
||||||
|
|
||||||
AlignmentToggle = new Toggle();
|
|
||||||
AlignmentToggle.text = "Horizontal Layout";
|
|
||||||
AlignmentToggle.value = true;
|
|
||||||
AlignmentToggle.RegisterValueChangedCallback(x =>
|
|
||||||
{
|
|
||||||
ResetAllNodes();
|
|
||||||
});
|
|
||||||
toolbar.Add(AlignmentToggle);
|
|
||||||
|
|
||||||
return toolbar;
|
|
||||||
}
|
|
||||||
|
|
||||||
VisualElement CreateFilterbar()
|
|
||||||
{
|
|
||||||
var toolbar = new VisualElement
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
flexDirection = FlexDirection.Row,
|
|
||||||
flexGrow = 0,
|
|
||||||
backgroundColor = new Color(0.25f, 0.25f, 0.25f, 0.75f)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var options = new VisualElement
|
|
||||||
{
|
|
||||||
style = { alignContent = Align.Center }
|
|
||||||
};
|
|
||||||
|
|
||||||
toolbar.Add(options);
|
|
||||||
|
|
||||||
toolbar.Add(new Label("Filters: "));
|
|
||||||
foreach (var pair in assetTypeHidenTogleItems)
|
|
||||||
{
|
|
||||||
var assetTypeTogle = new Toggle();
|
|
||||||
assetTypeTogle.text = "Hide " + pair.assetType;
|
|
||||||
assetTypeTogle.value = pair.show;
|
|
||||||
assetTypeTogle.RegisterValueChangedCallback(x =>
|
|
||||||
{
|
|
||||||
FilterAssetGroups();
|
|
||||||
});
|
|
||||||
toolbar.Add(assetTypeTogle);
|
|
||||||
type2Toogle[pair.assetType] = assetTypeTogle;
|
|
||||||
}
|
|
||||||
|
|
||||||
return toolbar;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ExploreAsset()
|
|
||||||
{
|
|
||||||
Object[] objs = Selection.objects;
|
|
||||||
|
|
||||||
foreach (var obj in objs)
|
|
||||||
{
|
|
||||||
//Prevent readding same object
|
|
||||||
if (selectedObjects.Contains(obj))
|
|
||||||
{
|
|
||||||
Debug.Log("Object already loaded");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
selectedObjects.Add(obj);
|
|
||||||
|
|
||||||
AssetGroup AssetGroup = new AssetGroup();
|
|
||||||
AssetGroup.AssetNode = db.Find(AssetDatabase.GetAssetPath(obj).ToUniversalPath());
|
|
||||||
assetGroups.Add(AssetGroup);
|
|
||||||
|
|
||||||
// assetPath will be empty if obj is null or isn't an asset (a scene object)
|
|
||||||
if (obj == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AssetGroup.GroupNode = new Group { title = obj.name };
|
|
||||||
|
|
||||||
PopulateGroup(AssetGroup, obj, new Rect(10, graphView.contentRect.height / 2, 0, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void PopulateGroup(AssetGroup AssetGroup, Object obj, Rect position)
|
|
||||||
{
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
obj = AssetDatabase.LoadMainAssetAtPath(AssetGroup.AssetNode.Self.Path);
|
|
||||||
|
|
||||||
if (obj == null)
|
|
||||||
{
|
|
||||||
Debug.Log("Object doesn't exist anymore");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AssetGroup.MainGraphNode = CreateNode(AssetGroup, AssetGroup.AssetNode, obj, true);
|
|
||||||
AssetGroup.MainGraphNode.userData = 0;
|
|
||||||
AssetGroup.MainGraphNode.SetPosition(position);
|
|
||||||
|
|
||||||
if (!graphView.Contains(AssetGroup.GroupNode))
|
|
||||||
{
|
|
||||||
graphView.AddElement(AssetGroup.GroupNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
graphView.AddElement(AssetGroup.MainGraphNode);
|
|
||||||
|
|
||||||
AssetGroup.GroupNode.AddElement(AssetGroup.MainGraphNode);
|
|
||||||
|
|
||||||
CreateDependencyNodes(AssetGroup, AssetGroup.AssetNode, AssetGroup.MainGraphNode, AssetGroup.GroupNode, 1);
|
|
||||||
CreateDependentNodes(AssetGroup, AssetGroup.AssetNode, AssetGroup.MainGraphNode, AssetGroup.GroupNode, -1);
|
|
||||||
|
|
||||||
AssetGroup.AssetGraphNodes.Add(AssetGroup.MainGraphNode);
|
|
||||||
AssetGroup.GroupNode.capabilities &= ~Capabilities.Deletable;
|
|
||||||
|
|
||||||
AssetGroup.GroupNode.Focus();
|
|
||||||
|
|
||||||
AssetGroup.MainGraphNode.RegisterCallback<GeometryChangedEvent, AssetGroup>(
|
|
||||||
UpdateGroupDependencyNodePlacement, AssetGroup
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Recreate the groups but use the already created groups instead of new ones
|
|
||||||
void FilterAssetGroups()
|
|
||||||
{
|
|
||||||
|
|
||||||
//first collect the main node's position and then clear the graph
|
|
||||||
foreach (var AssetGroup in assetGroups)
|
|
||||||
{
|
|
||||||
AssetGroup.MainGraphNodeLastPosition = AssetGroup.MainGraphNode.GetPosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
fullPathNodeLookup.Clear();
|
|
||||||
|
|
||||||
foreach (var AssetGroup in assetGroups)
|
|
||||||
{
|
|
||||||
//clear the nodes and dependencies after getting the position of the main node
|
|
||||||
CleanGroup(AssetGroup);
|
|
||||||
|
|
||||||
PopulateGroup(AssetGroup, null, AssetGroup.MainGraphNodeLastPosition);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CleanGroup(AssetGroup assetGroup)
|
|
||||||
{
|
|
||||||
if (assetGroup.AssetGraphConnections.Count > 0)
|
|
||||||
{
|
|
||||||
foreach (var edge in assetGroup.AssetGraphConnections)
|
|
||||||
{
|
|
||||||
graphView.RemoveElement(edge);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assetGroup.AssetGraphConnections.Clear();
|
|
||||||
|
|
||||||
foreach (var node in assetGroup.AssetGraphNodes)
|
|
||||||
{
|
|
||||||
graphView.RemoveElement(node);
|
|
||||||
}
|
|
||||||
assetGroup.AssetGraphNodes.Clear();
|
|
||||||
|
|
||||||
assetGroup.DependenciesForPlacement.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CreateDependencyNodes(AssetGroup assetGroup, AssetNode asssetNode, Node selfGraphNode, Group groupGraphNode, int depth)
|
|
||||||
{
|
|
||||||
foreach (var dependAssetId in asssetNode.Dependencies)
|
|
||||||
{
|
|
||||||
AssetNode dependAssetNode = db.Find(dependAssetId.Path);
|
|
||||||
var typeName = dependAssetNode.AssetType;
|
|
||||||
//filter out selected asset types
|
|
||||||
if (FilterType(typeName))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Node dependGraphNode = CreateNode(assetGroup, dependAssetNode, AssetDatabase.LoadMainAssetAtPath(dependAssetId.Path.ToUnityRelatePath()), false);
|
|
||||||
|
|
||||||
if (!assetGroup.AssetGraphNodes.Contains(dependGraphNode))
|
|
||||||
{
|
|
||||||
dependGraphNode.userData = depth;
|
|
||||||
}
|
|
||||||
|
|
||||||
//CreateDependencyNodes(assetGroup, dependAssetNode, dependGraphNode, groupGraphNode, depth + 1);
|
|
||||||
|
|
||||||
//if the node doesnt exists yet, put it in the group
|
|
||||||
if (!graphView.Contains(dependGraphNode))
|
|
||||||
{
|
|
||||||
graphView.AddElement(dependGraphNode);
|
|
||||||
|
|
||||||
assetGroup.DependenciesForPlacement.Add(dependGraphNode);
|
|
||||||
groupGraphNode.AddElement(dependGraphNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//TODO: if it already exists, put it in a separate group for shared assets
|
|
||||||
//Check if the dependencyNode is in the same group or not
|
|
||||||
//if it's a different group move it to a new shared group
|
|
||||||
/*
|
|
||||||
if (SharedToggle.value) {
|
|
||||||
if (!assetGroup.m_AssetNodes.Contains(dependencyNode)) {
|
|
||||||
if (assetGroup.SharedGroup == null) {
|
|
||||||
assetGroup.SharedGroup = new AssetGroup();
|
|
||||||
|
|
||||||
AssetGroups.Add(assetGroup.SharedGroup);
|
|
||||||
assetGroup.SharedGroup.assetPath = assetGroup.assetPath;
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.groupNode = new Group { title = "Shared Group" };
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.mainNode = dependencyNode;
|
|
||||||
assetGroup.SharedGroup.mainNode.userData = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_GraphView.Contains(assetGroup.SharedGroup.groupNode)) {
|
|
||||||
m_GraphView.AddElement(assetGroup.SharedGroup.groupNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
//add the node to the group and remove it from the previous group
|
|
||||||
assetGroup.m_AssetNodes.Remove(dependencyNode);
|
|
||||||
//assetGroup.groupNode.RemoveElement(dependencyNode);
|
|
||||||
assetGroup.m_DependenciesForPlacement.Remove(dependencyNode);
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.m_DependenciesForPlacement.Add(dependencyNode);
|
|
||||||
|
|
||||||
if (!assetGroup.SharedGroup.groupNode.ContainsElement(dependencyNode)) {
|
|
||||||
assetGroup.SharedGroup.groupNode.AddElement(dependencyNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.m_AssetNodes.Add(dependencyNode);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
Edge edge = CreateEdge(dependGraphNode, selfGraphNode);
|
|
||||||
|
|
||||||
assetGroup.AssetGraphConnections.Add(edge);
|
|
||||||
assetGroup.AssetGraphNodes.Add(dependGraphNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CreateDependentNodes(AssetGroup assetGroup, AssetNode asssetNode, Node selfGraphNode, Group groupGraphNode, int depth)
|
|
||||||
{
|
|
||||||
foreach (var dependAssetId in asssetNode.Dependent)
|
|
||||||
{
|
|
||||||
AssetNode dependAssetNode = db.Find(dependAssetId.Path);
|
|
||||||
var typeName = dependAssetNode.AssetType;
|
|
||||||
//filter out selected asset types
|
|
||||||
if (FilterType(typeName))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Node dependentGraphNode = CreateNode(assetGroup, dependAssetNode, AssetDatabase.LoadMainAssetAtPath(dependAssetId.Path.ToUnityRelatePath()), false);
|
|
||||||
|
|
||||||
if (!assetGroup.AssetGraphNodes.Contains(dependentGraphNode))
|
|
||||||
{
|
|
||||||
dependentGraphNode.userData = depth;
|
|
||||||
}
|
|
||||||
|
|
||||||
//CreateDependencyNodes(assetGroup, dependAssetNode, dependGraphNode, groupGraphNode, depth - 1);
|
|
||||||
|
|
||||||
//if the node doesnt exists yet, put it in the group
|
|
||||||
if (!graphView.Contains(dependentGraphNode))
|
|
||||||
{
|
|
||||||
graphView.AddElement(dependentGraphNode);
|
|
||||||
|
|
||||||
assetGroup.DependenciesForPlacement.Add(dependentGraphNode);
|
|
||||||
groupGraphNode.AddElement(dependentGraphNode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//TODO: if it already exists, put it in a separate group for shared assets
|
|
||||||
//Check if the dependencyNode is in the same group or not
|
|
||||||
//if it's a different group move it to a new shared group
|
|
||||||
/*
|
|
||||||
if (SharedToggle.value) {
|
|
||||||
if (!assetGroup.m_AssetNodes.Contains(dependencyNode)) {
|
|
||||||
if (assetGroup.SharedGroup == null) {
|
|
||||||
assetGroup.SharedGroup = new AssetGroup();
|
|
||||||
|
|
||||||
AssetGroups.Add(assetGroup.SharedGroup);
|
|
||||||
assetGroup.SharedGroup.assetPath = assetGroup.assetPath;
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.groupNode = new Group { title = "Shared Group" };
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.mainNode = dependencyNode;
|
|
||||||
assetGroup.SharedGroup.mainNode.userData = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!m_GraphView.Contains(assetGroup.SharedGroup.groupNode)) {
|
|
||||||
m_GraphView.AddElement(assetGroup.SharedGroup.groupNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
//add the node to the group and remove it from the previous group
|
|
||||||
assetGroup.m_AssetNodes.Remove(dependencyNode);
|
|
||||||
//assetGroup.groupNode.RemoveElement(dependencyNode);
|
|
||||||
assetGroup.m_DependenciesForPlacement.Remove(dependencyNode);
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.m_DependenciesForPlacement.Add(dependencyNode);
|
|
||||||
|
|
||||||
if (!assetGroup.SharedGroup.groupNode.ContainsElement(dependencyNode)) {
|
|
||||||
assetGroup.SharedGroup.groupNode.AddElement(dependencyNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
assetGroup.SharedGroup.m_AssetNodes.Add(dependencyNode);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
|
|
||||||
Edge edge = CreateEdge(selfGraphNode, dependentGraphNode);
|
|
||||||
|
|
||||||
assetGroup.AssetGraphConnections.Add(edge);
|
|
||||||
assetGroup.AssetGraphNodes.Add(dependentGraphNode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Edge CreateEdge(Node dependencyNode, Node parentNode)
|
|
||||||
{
|
|
||||||
Edge edge = new Edge
|
|
||||||
{
|
|
||||||
input = dependencyNode.inputContainer[0] as Port,
|
|
||||||
output = parentNode.outputContainer[0] as Port,
|
|
||||||
};
|
|
||||||
edge.input?.Connect(edge);
|
|
||||||
edge.output?.Connect(edge);
|
|
||||||
|
|
||||||
dependencyNode.RefreshPorts();
|
|
||||||
|
|
||||||
graphView.AddElement(edge);
|
|
||||||
|
|
||||||
edge.capabilities &= ~Capabilities.Deletable;
|
|
||||||
|
|
||||||
return edge;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Node CreateNode(AssetGroup assetGroup, AssetNode assetNode, Object obj, bool isMainNode)
|
|
||||||
{
|
|
||||||
Node resultNode;
|
|
||||||
string fullPath = assetNode.Self.Path;
|
|
||||||
if (fullPathNodeLookup.TryGetValue(fullPath, out resultNode))
|
|
||||||
{
|
|
||||||
//----not sure what this is, the more dependencies the further removed on the chart?
|
|
||||||
//int currentDepth = (int)resultNode.userData;
|
|
||||||
//resultNode.userData = currentDepth + 1;
|
|
||||||
return resultNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AssetDatabase.TryGetGUIDAndLocalFileIdentifier(obj, out var assetGuid, out long _))
|
|
||||||
{
|
|
||||||
var objNode = new Node
|
|
||||||
{
|
|
||||||
title = obj.name,
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
width = NodeWidth
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
objNode.extensionContainer.style.backgroundColor = new Color(0.24f, 0.24f, 0.24f, 0.8f);
|
|
||||||
|
|
||||||
#region Select button
|
|
||||||
objNode.titleContainer.Add(new Button(() =>
|
|
||||||
{
|
|
||||||
Selection.activeObject = obj;
|
|
||||||
EditorGUIUtility.PingObject(obj);
|
|
||||||
})
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
height = 16.0f,
|
|
||||||
alignSelf = Align.Center,
|
|
||||||
alignItems = Align.Center
|
|
||||||
},
|
|
||||||
text = "Select"
|
|
||||||
});
|
|
||||||
objNode.titleContainer.Add(new Button(() =>
|
|
||||||
{
|
|
||||||
// assetNode
|
|
||||||
})
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
height = 16.0f,
|
|
||||||
alignSelf = Align.Center,
|
|
||||||
alignItems = Align.Center
|
|
||||||
},
|
|
||||||
text = "Delete"
|
|
||||||
});
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Padding
|
|
||||||
var infoContainer = new VisualElement
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
paddingBottom = 4.0f,
|
|
||||||
paddingTop = 4.0f,
|
|
||||||
paddingLeft = 4.0f,
|
|
||||||
paddingRight = 4.0f
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Asset Path, removed to improve visibility with large amount of assets
|
|
||||||
// infoContainer.Add(new Label {
|
|
||||||
// text = assetPath,
|
|
||||||
//#if UNITY_2019_1_OR_NEWER
|
|
||||||
// style = { whiteSpace = WhiteSpace.Normal }
|
|
||||||
//#else
|
|
||||||
// style = { wordWrap = true }
|
|
||||||
//#endif
|
|
||||||
// });
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Asset type
|
|
||||||
var typeName = assetNode.AssetType;
|
|
||||||
|
|
||||||
var typeLabel = new Label
|
|
||||||
{
|
|
||||||
text = $"Type: {typeName}",
|
|
||||||
};
|
|
||||||
infoContainer.Add(typeLabel);
|
|
||||||
|
|
||||||
objNode.extensionContainer.Add(infoContainer);
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
var typeContainer = new VisualElement
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
paddingBottom = 4.0f,
|
|
||||||
paddingTop = 4.0f,
|
|
||||||
paddingLeft = 4.0f,
|
|
||||||
paddingRight = 4.0f,
|
|
||||||
backgroundColor = GetColorByAssetType(typeName)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
objNode.extensionContainer.Add(typeContainer);
|
|
||||||
|
|
||||||
#region Node Icon, replaced with color
|
|
||||||
//Texture assetTexture = AssetPreview.GetAssetPreview(obj);
|
|
||||||
//if (!assetTexture)
|
|
||||||
// assetTexture = AssetPreview.GetMiniThumbnail(obj);
|
|
||||||
|
|
||||||
//if (assetTexture)
|
|
||||||
//{
|
|
||||||
// AddDivider(objNode);
|
|
||||||
|
|
||||||
// objNode.extensionContainer.Add(new Image
|
|
||||||
// {
|
|
||||||
// image = assetTexture,
|
|
||||||
// scaleMode = ScaleMode.ScaleToFit,
|
|
||||||
// style =
|
|
||||||
// {
|
|
||||||
// paddingBottom = 4.0f,
|
|
||||||
// paddingTop = 4.0f,
|
|
||||||
// paddingLeft = 4.0f,
|
|
||||||
// paddingRight = 4.0f
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// Ports
|
|
||||||
var dependentAmount = 0;
|
|
||||||
foreach (var item in assetNode.Dependent)
|
|
||||||
{
|
|
||||||
if (item.AssetType != "Folder")
|
|
||||||
{
|
|
||||||
++dependentAmount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (assetNode.Dependent.Count > 0)
|
|
||||||
{
|
|
||||||
Port port = objNode.InstantiatePort(Orientation.Horizontal, Direction.Input, Port.Capacity.Single, typeof(Object));
|
|
||||||
port.Add(new Button(() =>
|
|
||||||
{
|
|
||||||
CreateDependentNodes(assetGroup, assetNode, fullPathNodeLookup[fullPath], assetGroup.GroupNode, (int)fullPathNodeLookup[fullPath].userData - 1);
|
|
||||||
EditorApplication.delayCall += () => ResetAllNodes();
|
|
||||||
})
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
height = 16.0f,
|
|
||||||
alignSelf = Align.Center,
|
|
||||||
alignItems = Align.Center
|
|
||||||
},
|
|
||||||
text = "展开"
|
|
||||||
});
|
|
||||||
port.portName = dependentAmount + "个引用";
|
|
||||||
objNode.inputContainer.Add(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
var dependencyAmount = assetNode.Dependencies.Count;
|
|
||||||
if (dependencyAmount > 0)
|
|
||||||
{
|
|
||||||
Port port = objNode.InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Single, typeof(Object));
|
|
||||||
port.Add(new Button(() =>
|
|
||||||
{
|
|
||||||
CreateDependencyNodes(assetGroup, assetNode, fullPathNodeLookup[fullPath], assetGroup.GroupNode, (int)fullPathNodeLookup[fullPath].userData + 1);
|
|
||||||
EditorApplication.delayCall += () => ResetAllNodes();
|
|
||||||
|
|
||||||
})
|
|
||||||
{
|
|
||||||
style =
|
|
||||||
{
|
|
||||||
height = 16.0f,
|
|
||||||
alignSelf = Align.Center,
|
|
||||||
alignItems = Align.FlexEnd
|
|
||||||
},
|
|
||||||
text = "展开"
|
|
||||||
});
|
|
||||||
port.portName = dependencyAmount + "个依赖";
|
|
||||||
objNode.outputContainer.Add(port);
|
|
||||||
objNode.RefreshPorts();
|
|
||||||
}
|
|
||||||
|
|
||||||
resultNode = objNode;
|
|
||||||
|
|
||||||
resultNode.RefreshExpandedState();
|
|
||||||
resultNode.RefreshPorts();
|
|
||||||
resultNode.capabilities &= ~Capabilities.Deletable;
|
|
||||||
resultNode.capabilities |= Capabilities.Collapsible;
|
|
||||||
}
|
|
||||||
fullPathNodeLookup[fullPath] = resultNode;
|
|
||||||
return resultNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FilterType(string type)
|
|
||||||
{
|
|
||||||
if (type2Toogle.TryGetValue(type, out var result))
|
|
||||||
{
|
|
||||||
return result.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
StyleColor GetColorByAssetType(string typeName)
|
|
||||||
{
|
|
||||||
switch (typeName)
|
|
||||||
{
|
|
||||||
case "MonoScript":
|
|
||||||
return Color.black;
|
|
||||||
case "Material":
|
|
||||||
return new Color(0.1f, 0.5f, 0.1f); //green
|
|
||||||
case "Texture2D":
|
|
||||||
return new Color(0.5f, 0.1f, 0.1f); //red
|
|
||||||
case "RenderTexture":
|
|
||||||
return new Color(0.8f, 0.1f, 0.1f); //red
|
|
||||||
case "Shader":
|
|
||||||
return new Color(0.1f, 0.1f, 0.5f); //dark blue
|
|
||||||
case "ComputeShader":
|
|
||||||
return new Color(0.1f, 0.1f, 0.5f); //dark blue
|
|
||||||
case "GameObject":
|
|
||||||
return new Color(0f, 0.8f, 0.7f); //light blue
|
|
||||||
case "AnimationClip":
|
|
||||||
return new Color(1, 0.7f, 1); //pink
|
|
||||||
case "AnimatorController":
|
|
||||||
return new Color(1, 0.7f, 0.8f); //pink
|
|
||||||
case "AudioClip":
|
|
||||||
return new Color(1, 0.8f, 0); //orange
|
|
||||||
case "AudioMixerController":
|
|
||||||
return new Color(1, 0.8f, 0); //orange
|
|
||||||
case "Font":
|
|
||||||
return new Color(0.9f, 1, 0.9f); //light green
|
|
||||||
case "TMP_FontAsset":
|
|
||||||
return new Color(0.9f, 1, 0.9f); //light green
|
|
||||||
case "Mesh":
|
|
||||||
return new Color(0.5f, 0, 0.5f); //purple
|
|
||||||
case "TerrainLayer":
|
|
||||||
return new Color(0.5f, 0.8f, 0f); //green
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return CustomColor(typeName);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Add custom assets here
|
|
||||||
StyleColor CustomColor(string assetType)
|
|
||||||
{
|
|
||||||
switch (assetType)
|
|
||||||
{
|
|
||||||
case "GearObject":
|
|
||||||
return new Color(0.9f, 0, 0.9f); //pink
|
|
||||||
case "TalentObject":
|
|
||||||
return new Color(0.9f, 0, 0.9f); //
|
|
||||||
case "AbilityInfo":
|
|
||||||
return new Color(0.9f, 0, 0.9f); //
|
|
||||||
case "HealthSO":
|
|
||||||
return new Color(0.9f, 0, 0.9f); //
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//standard color
|
|
||||||
return new Color(0.24f, 0.24f, 0.24f, 0.8f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void AddDivider(Node objNode)
|
|
||||||
{
|
|
||||||
var divider = new VisualElement { name = "divider" };
|
|
||||||
divider.AddToClassList("horizontal");
|
|
||||||
objNode.extensionContainer.Add(divider);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ClearGraph()
|
|
||||||
{
|
|
||||||
selectedObjects.Clear();
|
|
||||||
|
|
||||||
foreach (var assetGroup in assetGroups)
|
|
||||||
{
|
|
||||||
EmptyGroup(assetGroup);
|
|
||||||
}
|
|
||||||
|
|
||||||
fullPathNodeLookup.Clear();
|
|
||||||
|
|
||||||
assetGroups.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void EmptyGroup(AssetGroup assetGroup)
|
|
||||||
{
|
|
||||||
if (assetGroup.AssetGraphConnections.Count > 0)
|
|
||||||
{
|
|
||||||
foreach (var edge in assetGroup.AssetGraphConnections)
|
|
||||||
{
|
|
||||||
graphView.RemoveElement(edge);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assetGroup.AssetGraphConnections.Clear();
|
|
||||||
|
|
||||||
foreach (var node in assetGroup.AssetGraphNodes)
|
|
||||||
{
|
|
||||||
graphView.RemoveElement(node);
|
|
||||||
}
|
|
||||||
assetGroup.AssetGraphNodes.Clear();
|
|
||||||
|
|
||||||
assetGroup.DependenciesForPlacement.Clear();
|
|
||||||
|
|
||||||
graphView.RemoveElement(assetGroup.GroupNode);
|
|
||||||
|
|
||||||
assetGroup.GroupNode = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateGroupDependencyNodePlacement(GeometryChangedEvent e, AssetGroup assetGroup)
|
|
||||||
{
|
|
||||||
assetGroup.MainGraphNode.UnregisterCallback<GeometryChangedEvent, AssetGroup>(
|
|
||||||
UpdateGroupDependencyNodePlacement
|
|
||||||
);
|
|
||||||
|
|
||||||
ResetNodes(assetGroup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetAllNodes()
|
|
||||||
{
|
|
||||||
foreach (var assetGroup in assetGroups)
|
|
||||||
{
|
|
||||||
ResetNodes(assetGroup);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Reset the node positions of the given group
|
|
||||||
void ResetNodes(AssetGroup assetGroup)
|
|
||||||
{
|
|
||||||
// The current y offset in per depth
|
|
||||||
var depthOffset = new Dictionary<int, float>();
|
|
||||||
|
|
||||||
foreach (var node in assetGroup.DependenciesForPlacement)
|
|
||||||
{
|
|
||||||
int depth = (int)node.userData;
|
|
||||||
|
|
||||||
if (!depthOffset.ContainsKey(depth))
|
|
||||||
depthOffset.Add(depth, 0.0f);
|
|
||||||
|
|
||||||
if (AlignmentToggle.value)
|
|
||||||
{
|
|
||||||
depthOffset[depth] += node.layout.height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
depthOffset[depth] += node.layout.width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move half of the node into negative y space so they're on either size of the main node in y axis
|
|
||||||
var depths = new List<int>(depthOffset.Keys);
|
|
||||||
foreach (int depth in depths)
|
|
||||||
{
|
|
||||||
if (depth == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
float offset = depthOffset[depth];
|
|
||||||
depthOffset[depth] = (0f - offset / 2.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
Rect mainNodeRect = assetGroup.MainGraphNode.GetPosition();
|
|
||||||
|
|
||||||
foreach (var node in assetGroup.DependenciesForPlacement)
|
|
||||||
{
|
|
||||||
int depth = (int)node.userData;
|
|
||||||
if (AlignmentToggle.value)
|
|
||||||
{
|
|
||||||
node.SetPosition(new Rect(mainNodeRect.x + node.layout.width * 1.5f * depth, mainNodeRect.y + depthOffset[depth], 0, 0));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
node.SetPosition(new Rect(mainNodeRect.x + depthOffset[depth], mainNodeRect.y + node.layout.height * 1.5f * depth, 0, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AlignmentToggle.value)
|
|
||||||
{
|
|
||||||
depthOffset[depth] += node.layout.height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
depthOffset[depth] += node.layout.width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//fix the position of the groups so they dont overlap
|
|
||||||
void ResetGroups()
|
|
||||||
{
|
|
||||||
float y = 0;
|
|
||||||
float x = 0;
|
|
||||||
|
|
||||||
foreach (var assetGroup in assetGroups)
|
|
||||||
{
|
|
||||||
if (AlignmentToggle.value)
|
|
||||||
{
|
|
||||||
Rect pos = assetGroup.GroupNode.GetPosition();
|
|
||||||
pos.x = x;
|
|
||||||
assetGroup.GroupNode.SetPosition(pos);
|
|
||||||
x += assetGroup.GroupNode.GetPosition().width;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Rect pos = assetGroup.GroupNode.GetPosition();
|
|
||||||
pos.y = y;
|
|
||||||
assetGroup.GroupNode.SetPosition(pos);
|
|
||||||
y += assetGroup.GroupNode.GetPosition().height;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 43eecbcf2afaca84aa2af29388e193de
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,351 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEditor;
|
|
||||||
|
|
||||||
namespace AssetDependencyGraph
|
|
||||||
{
|
|
||||||
public static class FileExtensionHelper
|
|
||||||
{
|
|
||||||
public static string GetTypeByExtension(string ext)
|
|
||||||
{
|
|
||||||
switch (ext.ToLowerInvariant())
|
|
||||||
{
|
|
||||||
case ".a":
|
|
||||||
case ".dll":
|
|
||||||
case ".so":
|
|
||||||
case ".exe":
|
|
||||||
case ".dynlib":
|
|
||||||
return "Executable";
|
|
||||||
case ".asmdef":
|
|
||||||
case ".asmref":
|
|
||||||
return "UnityAssembly";
|
|
||||||
case ".cs":
|
|
||||||
case ".lua":
|
|
||||||
case ".js":
|
|
||||||
case ".ts":
|
|
||||||
case ".java":
|
|
||||||
case ".h":
|
|
||||||
case ".cpp":
|
|
||||||
case ".cxx":
|
|
||||||
case ".mm":
|
|
||||||
case ".py":
|
|
||||||
case ".bat":
|
|
||||||
case ".jar":
|
|
||||||
case ".arr":
|
|
||||||
case ".jslib":
|
|
||||||
return "SourceFile";
|
|
||||||
case ".gradle":
|
|
||||||
return "MakeFile";
|
|
||||||
case ".dat":
|
|
||||||
case ".data":
|
|
||||||
return "DatFile";
|
|
||||||
case ".mp3":
|
|
||||||
case ".ogg":
|
|
||||||
case ".wav":
|
|
||||||
return "AudioClip";
|
|
||||||
case ".mp4":
|
|
||||||
case ".webm":
|
|
||||||
return "VideoClip";
|
|
||||||
case ".mat":
|
|
||||||
return "Material";
|
|
||||||
case ".rendertexture":
|
|
||||||
case ".dds":
|
|
||||||
case ".exr":
|
|
||||||
case ".hdr":
|
|
||||||
case ".png":
|
|
||||||
case ".jpg":
|
|
||||||
case ".gif":
|
|
||||||
case ".psd":
|
|
||||||
case ".bmp":
|
|
||||||
case ".tiff":
|
|
||||||
case ".tga":
|
|
||||||
case ".gradient":
|
|
||||||
case ".spriteatlas":
|
|
||||||
return "Texture";
|
|
||||||
case ".obj":
|
|
||||||
case ".fbx":
|
|
||||||
case ".mesh":
|
|
||||||
return "Mesh";
|
|
||||||
case ".shader":
|
|
||||||
case ".surfshader":
|
|
||||||
case ".shadergraph":
|
|
||||||
return "Shader";
|
|
||||||
case ".compute":
|
|
||||||
return "ComputeShader";
|
|
||||||
case ".hlsl":
|
|
||||||
case ".cginc":
|
|
||||||
case ".shadersubgraph":
|
|
||||||
return "ShaderHeader";
|
|
||||||
case ".otf":
|
|
||||||
case ".ttf":
|
|
||||||
return "Font";
|
|
||||||
case ".byte":
|
|
||||||
case ".bytes":
|
|
||||||
case ".bin":
|
|
||||||
return "Binary";
|
|
||||||
case ".txt":
|
|
||||||
case ".md":
|
|
||||||
case ".chm":
|
|
||||||
case ".yml":
|
|
||||||
case ".url":
|
|
||||||
case ".json":
|
|
||||||
case ".json5":
|
|
||||||
case ".xml":
|
|
||||||
case ".uxml":
|
|
||||||
case ".nson":
|
|
||||||
case ".config":
|
|
||||||
case ".pdf":
|
|
||||||
return "TextFile";
|
|
||||||
case ".xlsx":
|
|
||||||
case ".xls":
|
|
||||||
return "Excel";
|
|
||||||
default:
|
|
||||||
return "UnknowFileType";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static bool IsPackage(string ext)
|
|
||||||
{
|
|
||||||
switch (ext.ToLowerInvariant())
|
|
||||||
{
|
|
||||||
case ".prefab":
|
|
||||||
case ".unity":
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool NeedAnalyzeDepend(string ext)
|
|
||||||
{
|
|
||||||
switch (ext.ToLowerInvariant())
|
|
||||||
{
|
|
||||||
case ".prefab":
|
|
||||||
case ".unity":
|
|
||||||
case ".asset":
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static bool Exclude(string path) => path.EndsWith(".meta")
|
|
||||||
|| path.EndsWith(".unitypackage")
|
|
||||||
|| path.EndsWith(".preset")
|
|
||||||
|| path.EndsWith(".backup")
|
|
||||||
|| path.EndsWith(".tmp")
|
|
||||||
|| path.EndsWith(".editor")
|
|
||||||
|| path.EndsWith(".zip")
|
|
||||||
|| path.EndsWith(".scenetemplate");
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IDependencyAnalysis
|
|
||||||
{
|
|
||||||
void Analyze(string path, ConcurrentDictionary<AssetIdentify, AssetNode> result);
|
|
||||||
|
|
||||||
public (AssetIdentify id, AssetNode node) GetOrCreateFolderNode(string path, ConcurrentDictionary<AssetIdentify, AssetNode> result)
|
|
||||||
{
|
|
||||||
AssetIdentify k = null;
|
|
||||||
|
|
||||||
foreach (var item in result.Keys)
|
|
||||||
{
|
|
||||||
if (item.Path == path)
|
|
||||||
{
|
|
||||||
k = item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (k == null)
|
|
||||||
{
|
|
||||||
k = new AssetIdentify()
|
|
||||||
{
|
|
||||||
Path = path,
|
|
||||||
AssetType = "Folder",
|
|
||||||
Guid = null,
|
|
||||||
Md5 = null
|
|
||||||
};
|
|
||||||
result[k] = new FolderNode()
|
|
||||||
{
|
|
||||||
Self = k,
|
|
||||||
AssetType = "Folder",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return (k, result[k]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public (AssetIdentify id, AssetNode node) GetOrCreateAssetNode(string path, ConcurrentDictionary<AssetIdentify, AssetNode> result)
|
|
||||||
{
|
|
||||||
AssetIdentify k = null;
|
|
||||||
|
|
||||||
foreach (var item in result.Keys)
|
|
||||||
{
|
|
||||||
if (item.Path == path)
|
|
||||||
{
|
|
||||||
k = item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (k == null)
|
|
||||||
{
|
|
||||||
k = new AssetIdentify()
|
|
||||||
{
|
|
||||||
Path = path,
|
|
||||||
Guid = null,
|
|
||||||
//Md5 = Utils.Md5(path)
|
|
||||||
};
|
|
||||||
if (FileExtensionHelper.IsPackage(Path.GetExtension(path)))
|
|
||||||
{
|
|
||||||
result[k] = new PackageNode()
|
|
||||||
{
|
|
||||||
Self = k,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result[k] = new AssetNode()
|
|
||||||
{
|
|
||||||
Self = k,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (k, result[k]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class FolderDependencyAnalysis : IDependencyAnalysis
|
|
||||||
{
|
|
||||||
public void Analyze(string path, ConcurrentDictionary<AssetIdentify, AssetNode> result)
|
|
||||||
{
|
|
||||||
var dependencyAnalysis = (this as IDependencyAnalysis);
|
|
||||||
var k = dependencyAnalysis.GetOrCreateFolderNode(path, result);
|
|
||||||
foreach (string file in Directory.EnumerateFiles(path))
|
|
||||||
{
|
|
||||||
if (FileExtensionHelper.Exclude(file))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var p = file.ToUnityRelatePath().ToUniversalPath();
|
|
||||||
var selfNode = result[k.id];
|
|
||||||
var kv = dependencyAnalysis.GetOrCreateAssetNode(p, result);
|
|
||||||
|
|
||||||
kv.node.Dependent.Add(selfNode.Self);
|
|
||||||
selfNode.Dependencies.Add(kv.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (string directory in Directory.EnumerateDirectories(path))
|
|
||||||
{
|
|
||||||
var p = directory.ToUnityRelatePath().ToUniversalPath();
|
|
||||||
var selfNode = result[k.id];
|
|
||||||
var kv = dependencyAnalysis.GetOrCreateFolderNode(p, result);
|
|
||||||
kv.node.Dependent.Add(selfNode.Self);
|
|
||||||
selfNode.Dependencies.Add(kv.id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class UnityDependencyAnalysis2 : IDependencyAnalysis
|
|
||||||
{
|
|
||||||
UnityLmdb unityLmdb;
|
|
||||||
HashSet<string> processed = new();
|
|
||||||
public UnityDependencyAnalysis2()
|
|
||||||
{
|
|
||||||
unityLmdb = new UnityLmdb();
|
|
||||||
unityLmdb.ResolveGuidPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Analyze(string path, ConcurrentDictionary<AssetIdentify, AssetNode> result)
|
|
||||||
{
|
|
||||||
if (!processed.Add(path))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var dependencyAnalysis = (this as IDependencyAnalysis);
|
|
||||||
|
|
||||||
var kv = dependencyAnalysis.GetOrCreateAssetNode(path, result);
|
|
||||||
var relatePath = path.ToUnityRelatePath();
|
|
||||||
kv.id.Guid = unityLmdb.GetGuidByPath(relatePath);
|
|
||||||
var selfNode = kv.node;
|
|
||||||
var ext = Path.GetExtension(path);
|
|
||||||
var assetType = FileExtensionHelper.GetTypeByExtension(ext);
|
|
||||||
|
|
||||||
selfNode.AssetType = assetType;
|
|
||||||
kv.id.AssetType = assetType;
|
|
||||||
if (FileExtensionHelper.NeedAnalyzeDepend(ext))
|
|
||||||
{
|
|
||||||
var dependencies = UnityFileApi.DependencyTool.GetDependencies(path);
|
|
||||||
for (int i = 0; i < dependencies.Count; i++)
|
|
||||||
{
|
|
||||||
var dep = dependencies[i].ToUnityRelatePath();
|
|
||||||
var depkv = dependencyAnalysis.GetOrCreateAssetNode(dep, result);
|
|
||||||
depkv.node.Dependent.Add(selfNode.Self);
|
|
||||||
selfNode.Dependencies.Add(depkv.id);
|
|
||||||
Analyze(dep, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class DependencyAnalyzer
|
|
||||||
{
|
|
||||||
private Dictionary<Predicate<string>, IDependencyAnalysis> dependencyAnalysisDic = new();
|
|
||||||
private ConcurrentDictionary<AssetIdentify, AssetNode> assetIdentify2AssetNodeDic = new();
|
|
||||||
private List<string> allPath = new();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public DependencyAnalyzer()
|
|
||||||
{
|
|
||||||
//dependencyAnalysisDic.Add(new Predicate<string>(path => !Directory.Exists(path)), new UnityDependencyAnalysis1());
|
|
||||||
//dependencyAnalysisDic.Add(new Predicate<string>(path => !Directory.Exists(path)), new UnityDependencyAnalysis2());
|
|
||||||
dependencyAnalysisDic.Add(new Predicate<string>(path => Directory.Exists(path)), new FolderDependencyAnalysis());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void Visivt(string path)
|
|
||||||
{
|
|
||||||
path = path.ToUniversalPath();
|
|
||||||
if (FileExtensionHelper.Exclude(path))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
allPath.Add(path);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Analyze(string rootFolder)
|
|
||||||
{
|
|
||||||
Stopwatch sw = Stopwatch.StartNew();
|
|
||||||
sw.Start();
|
|
||||||
Utils.TraverseDirectory(rootFolder, Visivt, -1);
|
|
||||||
Parallel.ForEach(allPath, (path) =>
|
|
||||||
{
|
|
||||||
path = path.ToUnityRelatePath();
|
|
||||||
foreach (var item in dependencyAnalysisDic)
|
|
||||||
{
|
|
||||||
if (item.Key(path))
|
|
||||||
{
|
|
||||||
item.Value.Analyze(path, assetIdentify2AssetNodeDic);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
sw.Stop();
|
|
||||||
UnityEngine.Debug.Log($"分析引用耗时:{sw.ElapsedMilliseconds / 1000f}s");
|
|
||||||
AssetDependencyGraphDB db = new AssetDependencyGraphDB("", "", "localhost");
|
|
||||||
sw.Restart();
|
|
||||||
db.Clean();
|
|
||||||
Parallel.ForEach(assetIdentify2AssetNodeDic, item =>
|
|
||||||
{
|
|
||||||
db.UpdateOrInsert(item.Value);
|
|
||||||
});
|
|
||||||
sw.Stop();
|
|
||||||
UnityEngine.Debug.Log($"更新数据库:{sw.ElapsedMilliseconds / 1000f}s");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: dfb4fe91c835f1a44853adfc3644470a
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,125 +0,0 @@
|
|||||||
using LightningDB;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace AssetDependencyGraph
|
|
||||||
{
|
|
||||||
public sealed class UnityLmdb
|
|
||||||
{
|
|
||||||
private Dictionary<string, string> guid2Path = new();
|
|
||||||
private Dictionary<string, string> path2Guid = new();
|
|
||||||
private static readonly string unityPath;
|
|
||||||
private static readonly string projPath;
|
|
||||||
|
|
||||||
static UnityLmdb()
|
|
||||||
{
|
|
||||||
var args = Environment.GetCommandLineArgs();
|
|
||||||
unityPath = Path.GetDirectoryName(args[0]);
|
|
||||||
for (int i = 0; i < args.Length; i++)
|
|
||||||
{
|
|
||||||
if (args[i].ToLowerInvariant() == "-projectpath")
|
|
||||||
{
|
|
||||||
projPath = args[i + 1];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] Guid2LmdbKey(string guid)
|
|
||||||
{
|
|
||||||
var inputByteArray = new byte[guid.Length / 2];
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i = 0; i < guid.Length; i += 2)
|
|
||||||
{
|
|
||||||
sb.Append(guid[i + 1]);
|
|
||||||
sb.Append(guid[i]);
|
|
||||||
}
|
|
||||||
guid = sb.ToString();
|
|
||||||
for (var x = 0; x < inputByteArray.Length; x++)
|
|
||||||
{
|
|
||||||
inputByteArray[x] = (byte)Convert.ToInt32(guid.Substring(x * 2, 2), 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
return inputByteArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string LmdbKey2Guid(byte[] bytes)
|
|
||||||
{
|
|
||||||
StringBuilder ret = new StringBuilder();
|
|
||||||
for (var i = 0; i < bytes.Length; i++)
|
|
||||||
{
|
|
||||||
ret.AppendFormat("{0:x2}", bytes[i]);
|
|
||||||
if (ret.Length == 32)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < ret.Length; i += 2)
|
|
||||||
{
|
|
||||||
var c = ret[i];
|
|
||||||
ret[i] = ret[i + 1];
|
|
||||||
ret[i + 1] = c;
|
|
||||||
}
|
|
||||||
var hex = ret.ToString();
|
|
||||||
return hex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResolveGuidPath()
|
|
||||||
{
|
|
||||||
var sourceDbPath = Path.Combine(projPath, "Library", "SourceAssetDB");
|
|
||||||
var dbPath = Path.Combine(projPath, "Library", "SourceAssetDB1");
|
|
||||||
File.Copy(sourceDbPath, dbPath, true);
|
|
||||||
using var env = new LightningEnvironment(dbPath, configuration: new()
|
|
||||||
{
|
|
||||||
MaxDatabases = 64,
|
|
||||||
MaxReaders = 64,
|
|
||||||
});
|
|
||||||
env.Open(EnvironmentOpenFlags.NoSubDir | EnvironmentOpenFlags.ReadOnly);
|
|
||||||
using var tx = env.BeginTransaction(TransactionBeginFlags.ReadOnly);
|
|
||||||
using (var db = tx.OpenDatabase("GuidToPath", closeOnDispose: true))
|
|
||||||
using (var cursor = tx.CreateCursor(db))
|
|
||||||
{
|
|
||||||
foreach (var item in cursor.AsEnumerable())
|
|
||||||
{
|
|
||||||
guid2Path[LmdbKey2Guid(item.Item1.AsSpan().ToArray())] = Encoding.UTF8.GetString(item.Item2.AsSpan()).ToLowerInvariant().Trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
using (var db = tx.OpenDatabase("PathToGuid", closeOnDispose: true))
|
|
||||||
using (var cursor = tx.CreateCursor(db))
|
|
||||||
{
|
|
||||||
foreach (var item in cursor.AsEnumerable())
|
|
||||||
{
|
|
||||||
path2Guid[Encoding.UTF8.GetString(item.Item1.AsSpan()).ToLowerInvariant().Trim()] = LmdbKey2Guid(item.Item2.AsSpan().ToArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetGuidByPath(string path)
|
|
||||||
{
|
|
||||||
if (path2Guid.ContainsKey(path))
|
|
||||||
{
|
|
||||||
return path2Guid[path];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetPathByGuid(string guid)
|
|
||||||
{
|
|
||||||
if (guid2Path.ContainsKey(guid))
|
|
||||||
{
|
|
||||||
return guid2Path[guid];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 7ffc50b27ba42c94c8b2cafa818c13eb
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,91 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace AssetDependencyGraph
|
|
||||||
{
|
|
||||||
public static class Utils
|
|
||||||
{
|
|
||||||
static readonly string dataPath;
|
|
||||||
static Utils()
|
|
||||||
{
|
|
||||||
dataPath = Application.dataPath;
|
|
||||||
}
|
|
||||||
public static string Md5(string filename)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
FileStream fs = new FileStream(filename, FileMode.Open);
|
|
||||||
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
|
|
||||||
byte[] retVal = md5.ComputeHash(fs);
|
|
||||||
fs.Close();
|
|
||||||
return BitConverter.ToString(retVal).ToLower().Replace("-", "");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void TraverseDirectory(string path, Action<string> action, int depth = 1)
|
|
||||||
{
|
|
||||||
if(depth == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (string file in Directory.EnumerateFiles(path))
|
|
||||||
{
|
|
||||||
action.Invoke(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (string directory in Directory.EnumerateDirectories(path))
|
|
||||||
{
|
|
||||||
action.Invoke(directory);
|
|
||||||
TraverseDirectory(directory, action, --depth);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ToUniversalPath(this string path)
|
|
||||||
{
|
|
||||||
return path.Replace("\\", "/");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ToUnityRelatePath(this string path)
|
|
||||||
{
|
|
||||||
if(path.StartsWith(dataPath.ToUniversalPath().Replace("Assets", "")) && !path.StartsWith(dataPath.ToUniversalPath() + "/Assets"))
|
|
||||||
{
|
|
||||||
return path.Replace(dataPath.ToUniversalPath().Replace("Assets", ""), "");
|
|
||||||
}
|
|
||||||
return path.Replace(dataPath.ToUniversalPath(), "Assets");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ToUnityFullPath(this string path)
|
|
||||||
{
|
|
||||||
if(path.StartsWith("Packages"))
|
|
||||||
{
|
|
||||||
var fullPath = (dataPath.ToUniversalPath().Replace("Assets", "") + path);
|
|
||||||
fullPath ??= (dataPath.ToUniversalPath().Replace("Assets", "Library/PackageCache") + path);
|
|
||||||
if (!File.Exists(fullPath) && Directory.Exists(fullPath))
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"ToUnityFullPath failure:{path}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return fullPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dataPath.ToUniversalPath().Replace("Assets", "") + path;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ByteString(this byte[] bytes)
|
|
||||||
{
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
|
||||||
for (int i = 0; i < bytes.Length; i++)
|
|
||||||
{
|
|
||||||
stringBuilder.Append(Convert.ToString(bytes[i], 2) );
|
|
||||||
}
|
|
||||||
return stringBuilder.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c90ae90b250ea244ca1b14d395893854
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a251feda1c6acfa418d3cb94f0255dbe
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 38356707733942742b1bd8da40abed2e
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,87 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: fe95ecf4b38fba648b13da516d4d36b5
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,83 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f80f2e68fd0af0b4e86097f187a00ffa
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,87 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9e4c5c5a6e7fdcf4a9bf7c06b691779d
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: x86_64
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8639b566b8d0cfd4daca122ad15c9c71
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,83 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1ead4ac145c227142af0602db4c79b87
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,83 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 78d79268cf082b846a2a63642acc37f4
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3de0577458e380243be22140907c0bc0
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c945cad0736669340b6639d058b729c8
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,83 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e44a450d127d0824cbc021fc238d7b80
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e1cd43f2c984df240a8c23991b2f1e1c
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,87 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 75990583b0a472b44bd9f0946b424361
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,87 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4c6f3ef996ab94842b02f3e832349bc1
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: x86_64
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2f19ef81d4f8ae746801dadcb62225a5
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: x86_64
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,87 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 83f2ea0e93026104faa9df07b11e4a1c
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Windows Store Apps: WindowsStoreApps
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@ -1,81 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9883f43a7e5cf0a47828e7f96db4726e
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
: Any
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
Exclude Android: 1
|
|
||||||
Exclude Editor: 0
|
|
||||||
Exclude Linux64: 1
|
|
||||||
Exclude OSXUniversal: 1
|
|
||||||
Exclude Win: 1
|
|
||||||
Exclude Win64: 1
|
|
||||||
Exclude iOS: 1
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AndroidSharedLibraryType: Executable
|
|
||||||
CPU: ARMv7
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
CPU: x86_64
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
OS: Windows
|
|
||||||
- first:
|
|
||||||
Standalone: Linux64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: OSXUniversal
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
Standalone: Win64
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: None
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: false
|
|
||||||
CPU: AnyCPU
|
|
||||||
CompileFlags:
|
|
||||||
FrameworkDependencies:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Loading…
x
Reference in New Issue
Block a user