Compare commits

..

No commits in common. "master" and "0.3" have entirely different histories.
master ... 0.3

90 changed files with 588 additions and 2603 deletions

View File

@ -11,8 +11,8 @@ namespace AsmdefHelper.CustomCreate.Editor {
public static void ShowWindow() { public static void ShowWindow() {
var window = GetWindow<AsmdefCustomCreateView>(); var window = GetWindow<AsmdefCustomCreateView>();
window.titleContent = new GUIContent("AsmdefCustomCreateView"); window.titleContent = new GUIContent("AsmdefCustomCreateView");
window.minSize = new Vector2(200, 200); window.minSize = new Vector2(200, 180);
window.maxSize = new Vector2(2000, 2000); window.maxSize = new Vector2(2000, 180);
} }
public void OnEnable() { public void OnEnable() {
@ -29,51 +29,36 @@ namespace AsmdefHelper.CustomCreate.Editor {
"Packages/dev.n5y.asmdefhelper/AsmdefHelper/CustomCreate/Editor/AsmdefCustomCreateView.uxml"); "Packages/dev.n5y.asmdefhelper/AsmdefHelper/CustomCreate/Editor/AsmdefCustomCreateView.uxml");
} }
#if UNITY_2020_1_OR_NEWER
VisualElement labelFromUXML = visualTree.Instantiate(); VisualElement labelFromUXML = visualTree.Instantiate();
#else
VisualElement labelFromUXML = visualTree.CloneTree();
#endif
root.Add(labelFromUXML); root.Add(labelFromUXML);
// UI取得 // UI取得
var pathTextField = root.Q<TextField>(className: "PathTextField"); var PathTextField = root.Q<TextField>(className: "PathTextField");
var nameTextField = root.Q<TextField>(className: "NameTextField"); var NameTextField = root.Q<TextField>(className: "NameTextField");
var allowUnsafeToggle = root.Q<Toggle>(className: "AllowUnsafeToggle"); var AllowUnsafeToggle = root.Q<Toggle>(className: "AllowUnsafeToggle");
var autoReferencedToggle = root.Q<Toggle>(className: "AutoReferencedToggle"); var AutoReferencedToggle = root.Q<Toggle>(className: "AutoReferencedToggle");
var noEngineReferencesToggle = root.Q<Toggle>(className: "NoEngineReferencesToggle"); var OverrideReferencesToggle = root.Q<Toggle>(className: "OverrideReferencesToggle");
var overrideReferencesToggle = root.Q<Toggle>(className: "OverrideReferencesToggle"); var NoEngineReferencesToggle = root.Q<Toggle>(className: "NoEngineReferencesToggle");
var rootNamespaceTextField = root.Q<TextField>(className: "RootNamespaceTextField"); var IsEditorToggle = root.Q<Toggle>(className: "IsEditorToggle");
var isEditorToggle = root.Q<Toggle>(className: "IsEditorToggle"); var CreateButton = root.Q<Button>(className: "CreateButton");
var createButton = root.Q<Button>(className: "CreateButton");
// PathとNameの初期値 // PathとNameの初期値
var asset = Selection.activeObject; var asset = Selection.activeObject;
var assetPath = AssetDatabase.GetAssetPath(asset); var assetPath = AssetDatabase.GetAssetPath(asset);
var directory = string.IsNullOrWhiteSpace(assetPath) ? "Assets/" : assetPath; var directory = string.IsNullOrWhiteSpace(assetPath) ? "Assets/" : assetPath;
pathTextField.value = directory; PathTextField.value = directory;
var defaultName = directory.Replace("Assets/", "").Replace('/', '.'); NameTextField.value = directory.Replace("Assets/", "").Replace('/', '.');
nameTextField.value = defaultName;
// RootNamespace が設定できるのは2020.2以降
#if UNITY_2020_2_OR_NEWER
rootNamespaceTextField.value = defaultName;
#else
root.Q<Box>(className: "Box").Remove(rootNamespaceTextField);
#endif
// .asmdefを作成して閉じる // .asmdefを作成して閉じる
createButton.clickable.clicked += () => { CreateButton.clickable.clicked += () => {
var asmdefName = nameTextField.value; var asmdefName = NameTextField.value;
var asmdef = new AssemblyDefinitionJson { var asmdef = new AssemblyDefinitionJson {
name = asmdefName, name = asmdefName,
#if UNITY_2020_2_OR_NEWER allowUnsafeCode = AllowUnsafeToggle.value,
rootNamespace = rootNamespaceTextField.value, autoReferenced = AutoReferencedToggle.value,
#endif overrideReferences = OverrideReferencesToggle.value,
allowUnsafeCode = allowUnsafeToggle.value, noEngineReferences = NoEngineReferencesToggle.value,
autoReferenced = autoReferencedToggle.value, includePlatforms = IsEditorToggle.value ? new[] { "Editor" } : new string[0]
overrideReferences = overrideReferencesToggle.value,
noEngineReferences = noEngineReferencesToggle.value,
includePlatforms = isEditorToggle.value ? new[] { "Editor" } : new string[0]
}; };
var asmdefJson = JsonUtility.ToJson(asmdef, true); var asmdefJson = JsonUtility.ToJson(asmdef, true);
var asmdefPath = $"{directory}/{asmdefName}.asmdef"; var asmdefPath = $"{directory}/{asmdefName}.asmdef";

View File

@ -6,14 +6,13 @@
xsi:noNamespaceSchemaLocation="../../../../UIElementsSchema/UIElements.xsd" xsi:noNamespaceSchemaLocation="../../../../UIElementsSchema/UIElements.xsd"
> >
<engine:Label class="AsmdefInfo" text="Input your asmdef info"/> <engine:Label class="AsmdefInfo" text="Input your asmdef info"/>
<engine:Box class="Box"> <engine:Box>
<engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/> <engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/>
<engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/> <engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/>
<engine:Toggle class="AllowUnsafeToggle" label="Allow 'unsafe' Code" value="false"/> <engine:Toggle class="AllowUnsafeToggle" label="Allow 'unsafe' Code" value="false"/>
<engine:Toggle class="AutoReferencedToggle" label="Auto Referenced" value="true"/> <engine:Toggle class="AutoReferencedToggle" label="Auto Referenced" value="true"/>
<engine:Toggle class="NoEngineReferencesToggle" label="No Engine References" value="false"/>
<engine:Toggle class="OverrideReferencesToggle" label="Override Referenced" value="false"/> <engine:Toggle class="OverrideReferencesToggle" label="Override Referenced" value="false"/>
<engine:TextField class="RootNamespaceTextField" label="Root Namespace" text="ROOT_NAMESPACE_HERE"/> <engine:Toggle class="NoEngineReferencesToggle" label="No Engine References" value="false"/>
<engine:Toggle class="IsEditorToggle" label="Is Editor" value="false"/> <engine:Toggle class="IsEditorToggle" label="Is Editor" value="false"/>
<engine:Button class="CreateButton" text="Create" /> <engine:Button class="CreateButton" text="Create" />
</engine:Box> </engine:Box>

View File

@ -21,8 +21,8 @@ namespace AsmdefHelper.CustomCreate.Editor {
if (extension == "asmdef") { if (extension == "asmdef") {
var window = GetWindow<AsmdefRenameView>(); var window = GetWindow<AsmdefRenameView>();
window.titleContent = new GUIContent("AsmdefRenameView"); window.titleContent = new GUIContent("AsmdefRenameView");
window.minSize = new Vector2(200, 100); window.minSize = new Vector2(200, 80);
window.maxSize = new Vector2(2000, 100); window.maxSize = new Vector2(2000, 80);
} }
} }
@ -40,50 +40,33 @@ namespace AsmdefHelper.CustomCreate.Editor {
"Packages/dev.n5y.asmdefhelper/AsmdefHelper/CustomCreate/Editor/AsmdefRenameView.uxml"); "Packages/dev.n5y.asmdefhelper/AsmdefHelper/CustomCreate/Editor/AsmdefRenameView.uxml");
} }
#if UNITY_2020_1_OR_NEWER
VisualElement labelFromUXML = visualTree.Instantiate(); VisualElement labelFromUXML = visualTree.Instantiate();
#else
VisualElement labelFromUXML = visualTree.CloneTree();
#endif
root.Add(labelFromUXML); root.Add(labelFromUXML);
// UI取得 // UI取得
var pathTextField = root.Q<TextField>(className: "PathTextField"); var PathTextField = root.Q<TextField>(className: "PathTextField");
var nameTextField = root.Q<TextField>(className: "NameTextField"); var NameTextField = root.Q<TextField>(className: "NameTextField");
var rootNamespaceTextField = root.Q<TextField>(className: "RootNamespaceTextField"); var CreateButton = root.Q<Button>(className: "RenameButton");
var createButton = root.Q<Button>(className: "RenameButton");
// 既存のasmdef読み込み // 既存のasmdef読み込み
var orgText = File.ReadAllText(renameAsmdefPath); var orgText = File.ReadAllText(renameAsmdefPath);
var asmdef = JsonUtility.FromJson<AssemblyDefinitionJson>(orgText); var asmdef = JsonUtility.FromJson<AssemblyDefinitionJson>(orgText);
// 既存パラメータの反映 // 既存パラメータの反映
pathTextField.value = asmdefDirectory; PathTextField.value = asmdefDirectory;
nameTextField.value = asmdef.name; NameTextField.value = asmdef.name;
var asmdefNameOrg = asmdef.name;
// RootNamespace が設定できるのは2020.2以降
#if UNITY_2020_2_OR_NEWER
rootNamespaceTextField.value = asmdef.rootNamespace;
#else
root.Q<Box>(className: "Box").Remove(rootNamespaceTextField);
#endif
// .asmdefのnameとファイル名を更新して閉じる // .asmdefのnameとファイル名を更新して閉じる
createButton.clickable.clicked += () => { CreateButton.clickable.clicked += () => {
var asmdefName = nameTextField.value; // nameのみ更新
var asmdefName = NameTextField.value;
asmdef.name = asmdefName; asmdef.name = asmdefName;
#if UNITY_2020_2_OR_NEWER
asmdef.rootNamespace = rootNamespaceTextField.value;
#endif
var asmdefJson = JsonUtility.ToJson(asmdef, true); var asmdefJson = JsonUtility.ToJson(asmdef, true);
var newAsmdefPath = $"{asmdefDirectory}/{asmdefName}.asmdef"; var newAsmdefPath = $"{asmdefDirectory}/{asmdefName}.asmdef";
// 新asmdef作成 // 新asmdef作成
File.WriteAllText(newAsmdefPath, asmdefJson, Encoding.UTF8); File.WriteAllText(newAsmdefPath, asmdefJson, Encoding.UTF8);
// ファイル名が変わった場合は旧asmdef削除 // 旧asmdef削除
if (asmdefNameOrg != asmdefName) { File.Delete(renameAsmdefPath);
FileUtil.DeleteFileOrDirectory(renameAsmdefPath);
}
AssetDatabase.Refresh(); AssetDatabase.Refresh();
Close(); Close();
}; };

View File

@ -9,7 +9,6 @@
<engine:Box> <engine:Box>
<engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/> <engine:TextField class="PathTextField" label="Path" text="ASMDEF_PATH_HERE" readonly="true"/>
<engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/> <engine:TextField class="NameTextField" label="Name" text="ASMDEF_NAME_HERE"/>
<engine:TextField label="Root Namespace" text="ROOT_NAMESPACE_HERE" class="RootNamespaceTextField" />
<engine:Button class="RenameButton" text="Rename" /> <engine:Button class="RenameButton" text="Rename" />
</engine:Box> </engine:Box>
</engine:UXML> </engine:UXML>

View File

@ -1,9 +1,6 @@
namespace AsmdefHelper.CustomCreate.Editor { namespace AsmdefHelper.CustomCreate.Editor {
public class AssemblyDefinitionJson { public class AssemblyDefinitionJson {
public string name = string.Empty; public string name = string.Empty;
#if UNITY_2020_2_OR_NEWER
public string rootNamespace = string.Empty;
#endif
public string[] references = new string[0]; public string[] references = new string[0];
public string[] includePlatforms = new string[0]; public string[] includePlatforms = new string[0];
public string[] excludePlatforms = new string[0]; public string[] excludePlatforms = new string[0];

View File

@ -1,11 +1,10 @@
using UnityEditor; using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Compilation; using UnityEditor.Compilation;
namespace AsmdefHelper.DependencyGraph.Editor { namespace AsmdefHelper.DependencyGraph.Editor {
public class AsmdefGraphEditorWindow : EditorWindow, IToggleCheckDelegate { public class AsmdefGraphEditorWindow : EditorWindow {
static AsmdefSelectionView selectionWindow;
AsmdefGraphView graphView;
[MenuItem("AsmdefHelper/Open DependencyGraph", priority = 2000)] [MenuItem("AsmdefHelper/Open DependencyGraph", priority = 2000)]
public static void Open() { public static void Open() {
GetWindow<AsmdefGraphEditorWindow>("Asmdef Dependency"); GetWindow<AsmdefGraphEditorWindow>("Asmdef Dependency");
@ -15,26 +14,10 @@ namespace AsmdefHelper.DependencyGraph.Editor {
// .asmdefをすべて取得 // .asmdefをすべて取得
var asmdefs = CompilationPipeline.GetAssemblies(); var asmdefs = CompilationPipeline.GetAssemblies();
// viewの作成 // viewの作成
graphView = new AsmdefGraphView(asmdefs) { var graphView = new AsmdefGraphView(asmdefs) {
style = { flexGrow = 1 } style = { flexGrow = 1 }
}; };
rootVisualElement.Add(graphView); rootVisualElement.Add(graphView);
// 選択ウィンドウも作成
selectionWindow = GetWindow<AsmdefSelectionView>("Asmdef Selection");
selectionWindow.SetAsmdef(asmdefs, this);
}
// 片方を閉じる
void OnDestroy() {
if (selectionWindow != null) {
selectionWindow.Close();
}
selectionWindow = null;
}
void IToggleCheckDelegate.OnSelectionChanged(string label, bool isChecked) {
graphView.SetNodeVisibility(label, isChecked);
} }
} }
} }

View File

@ -10,7 +10,6 @@ using UnityEngine.UIElements;
namespace AsmdefHelper.DependencyGraph.Editor { namespace AsmdefHelper.DependencyGraph.Editor {
public sealed class AsmdefGraphView : GraphView { public sealed class AsmdefGraphView : GraphView {
readonly Dictionary<string, IAsmdefNodeView> asmdefNodeDict;
public AsmdefGraphView(IEnumerable<Assembly> assemblies) { public AsmdefGraphView(IEnumerable<Assembly> assemblies) {
var assemblyArr = assemblies.ToArray(); var assemblyArr = assemblies.ToArray();
// zoom可能に // zoom可能に
@ -19,10 +18,8 @@ namespace AsmdefHelper.DependencyGraph.Editor {
Insert(0, new GridBackground()); Insert(0, new GridBackground());
// ドラッグによる移動可能に // ドラッグによる移動可能に
this.AddManipulator(new SelectionDragger()); this.AddManipulator(new SelectionDragger());
// ドラッグで描画範囲を動かせるように
this.AddManipulator(new ContentDragger());
// ノードの追加 // ノードの追加
asmdefNodeDict = new Dictionary<string, IAsmdefNodeView>(); var asmdefNodeDict = new Dictionary<string, IAsmdefNodeView>();
foreach (var asm in assemblyArr) { foreach (var asm in assemblyArr) {
var node = new AsmdefNode(asm.name, contentContainer); var node = new AsmdefNode(asm.name, contentContainer);
AddElement(node); AddElement(node);
@ -60,14 +57,6 @@ namespace AsmdefHelper.DependencyGraph.Editor {
} }
} }
// Portに接続数を追記
foreach (var dep in dependencies) {
if (asmdefNodeDict.TryGetValue(dep.Profile.Name, out var node)) {
node.LeftPort.Label = $"RefBy({dep.Sources.Count})";
node.RightPort.Label = $"RefTo({dep.Destinations.Count})";
}
}
// ノードの場所を整列 // ノードの場所を整列
var sortStrategy = new AlignSortStrategy(AlignParam.Default(), Vector2.zero); var sortStrategy = new AlignSortStrategy(AlignParam.Default(), Vector2.zero);
var sortedNode = sortStrategy.Sort(dependencies); var sortedNode = sortStrategy.Sort(dependencies);
@ -78,12 +67,6 @@ namespace AsmdefHelper.DependencyGraph.Editor {
} }
} }
public void SetNodeVisibility(string nodeName, bool visible_) {
if (asmdefNodeDict.TryGetValue(nodeName, out var node)) {
node.Visibility = visible_;
}
}
public override List<Port> GetCompatiblePorts(Port startAnchor, NodeAdapter nodeAdapter) { public override List<Port> GetCompatiblePorts(Port startAnchor, NodeAdapter nodeAdapter) {
return ports.ToList(); return ports.ToList();
} }

View File

@ -4,34 +4,17 @@ using UnityEngine.UIElements;
namespace AsmdefHelper.DependencyGraph.Editor { namespace AsmdefHelper.DependencyGraph.Editor {
public class AsmdefNode : UiElementsNodeView, IAsmdefNodeView { public class AsmdefNode : UiElementsNodeView, IAsmdefNodeView {
readonly GraphViewPort leftPort; public IPort LeftPort { get; }
readonly GraphViewPort rightPort; public IPort RightPort { get; }
public IPort LeftPort => leftPort;
public IPort RightPort => rightPort;
public AsmdefNode(string nodeName, VisualElement parentContentContainer) { public AsmdefNode(string nodeName, VisualElement parentContentContainer) {
Label = nodeName; Label = nodeName;
leftPort = new GraphViewPort(parentContentContainer, Direction.Input) { Label = "Ref By" }; LeftPort = new GraphViewPort(parentContentContainer, Direction.Input) { Label = "Ref By" };
inputContainer.Add(LeftPort as Port); // as right side inputContainer.Add(LeftPort as Port); // as right side
rightPort = new GraphViewPort(parentContentContainer, Direction.Output) { Label = "Ref To" }; RightPort = new GraphViewPort(parentContentContainer, Direction.Output) { Label = "Ref To" };
outputContainer.Add(RightPort as Port); // as left side outputContainer.Add(RightPort as Port); // as left side
} }
public override bool Visibility {
get => base.Visibility;
set {
base.Visibility = value;
// right(output)
foreach (var edge in rightPort.connections) {
edge.visible = edge.input.node.visible & visible;
}
// left(input)
foreach (var edge in leftPort.connections) {
edge.visible = edge.output.node.visible & visible;
}
}
}
} }
} }

View File

@ -1,124 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEngine;
using UnityEngine.UIElements;
namespace AsmdefHelper.DependencyGraph.Editor {
public class AsmdefSelectionView : EditorWindow {
const int toggleCount = 1000;
static EditorWindow graphWindow;
readonly ToggleDict groupMasterToggleDict = new ToggleDict();
readonly ToggleDict toggleDict = new ToggleDict();
IToggleCheckDelegate toggleDelegate;
public void OnEnable() {
graphWindow = GetWindow<AsmdefGraphEditorWindow>();
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
// Import UXML
var visualTree =
AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(
"Assets/AsmdefHelper/DependencyGraph/Editor/AsmdefSelectionView/AsmdefSelectionView.uxml");
if (visualTree == null) {
visualTree =
AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(
"Packages/dev.n5y.asmdefhelper/AsmdefHelper/DependencyGraph/Editor/AsmdefSelectionView/AsmdefSelectionView.uxml");
}
#if UNITY_2020_1_OR_NEWER
VisualElement labelFromUXML = visualTree.Instantiate();
#else
VisualElement labelFromUXML = visualTree.CloneTree();
#endif
root.Add(labelFromUXML);
}
public void SetAsmdef(Assembly[] assemblies, IToggleCheckDelegate toggleDelegate_) {
var sortedAssemblies = assemblies.OrderBy(x => x.name).ToArray();
var scrollView = rootVisualElement.Q<ScrollView>(className: "ScrollView");
toggleDict.Clear();
for (var i = 0; i < toggleCount; i++) {
var toggle = rootVisualElement.Q<Toggle>(className: $"toggle{i}");
if (i < sortedAssemblies.Length) {
var assemblyName = sortedAssemblies[i].name;
toggle.text = assemblyName;
toggle.value = true;
toggleDict.Add(assemblyName, new UiElementToggle(toggle));
} else {
scrollView.Remove(toggle);
}
}
// グループに分ける
var group = new DomainGroup();
group.Create(sortedAssemblies.Select(x => x.name));
var tops = group.GetTopDomainsWithSomeSubDomains().ToArray();
foreach (var top in tops) {
var topToggle = new Toggle { text = top, value = true};
var slaveToggles = new List<IToggle>();
Toggle firstToggle = null;
var domains = group.GetSubDomains(top);
foreach (var domain in domains) {
var isLast = domains.Last() == domain;
if (toggleDict.TryGetToggle(domain.FullName, out var toggle)) {
var keisen = isLast ? "└" : "├";
toggle.Name = domain.HasSubDomain() ? $"{keisen} {domain.SubDomain}" : toggle.Name;
slaveToggles.Add(toggle);
if (firstToggle == null && toggle is UiElementToggle y) {
firstToggle = y.Toggle;
}
}
}
var toggleGroup = new ToggleGroup(new UiElementToggle(topToggle), slaveToggles);
if (firstToggle != null) {
var index = scrollView.IndexOf(firstToggle);
// グループに属する toggle は box に入れる
var box = new Box();
scrollView.Insert(index, topToggle);
scrollView.Insert(index + 1, box);
foreach (var slaveToggle in slaveToggles) {
if (slaveToggle is UiElementToggle x) {
box.Add(x.Toggle);
}
}
}
groupMasterToggleDict.Add(top, toggleGroup);
}
toggleDelegate = toggleDelegate_;
}
void OnGUI() {
// toggle の更新を監視 (onValueChangedが無さそう)
// ToggleGroup の長
var updatedGroups = groupMasterToggleDict.ScanUpdate().ToArray();
groupMasterToggleDict.OverwriteToggles(updatedGroups.Select(x => x.Item1));
// 普通の Toggle達
var updated = toggleDict.ScanUpdate().ToArray();
foreach (var x in updated) {
var (key, current) = x;
toggleDelegate?.OnSelectionChanged(key, current);
}
}
// 片方を閉じる
async void OnDestroy() {
// 同フレームで OnDestroy を呼ぶと警告が出るので遅延実行
await Task.Delay(1);
if (graphWindow != null) {
graphWindow.Close();
}
graphWindow = null;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 69bee09693f54d46954fb60401f58b66
timeCreated: 1606312787

View File

@ -1,5 +0,0 @@
Label {
font-size: 20px;
-unity-font-style: bold;
color: rgb(68, 138, 255);
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 7906d8f1d4e539745bf53fba8fc20d3a
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
disableValidation: 0

View File

@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 24d749776c208f4408be0cfccb02d1c7
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}

View File

@ -1,6 +0,0 @@
namespace AsmdefHelper.DependencyGraph.Editor {
public interface IToggle {
bool IsOn { set; get; }
string Name { set; get; }
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 4f8c1aea6924490e9d1f3745569b7c03
timeCreated: 1606663328

View File

@ -1,5 +0,0 @@
namespace AsmdefHelper.DependencyGraph.Editor {
public interface IToggleCheckDelegate {
void OnSelectionChanged(string label, bool isChecked);
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 0c48da7c3f95419cbfc95c4ec2816489
timeCreated: 1606313215

View File

@ -1,58 +0,0 @@
using System.Collections.Generic;
using System.Linq;
namespace AsmdefHelper.DependencyGraph.Editor {
public class ToggleDict {
class TogglePair {
public bool prevToggleValue;
public readonly IToggle toggle;
public TogglePair(IToggle toggle) {
this.toggle = toggle;
prevToggleValue = toggle.IsOn;
}
}
readonly IDictionary<string, TogglePair> dict;
public ToggleDict() {
dict = new Dictionary<string, TogglePair>();
}
public void Add(string key, IToggle toggle) {
dict.Add(key, new TogglePair(toggle));
}
public IEnumerable<(string, bool)> ScanUpdate() {
return dict
.Where(x => x.Value.prevToggleValue != x.Value.toggle.IsOn)
.Select(x => {
// 更新も行う
dict[x.Key].prevToggleValue = x.Value.toggle.IsOn;
return (x.Key, x.Value.toggle.IsOn);
});
}
public void OverwriteToggles(IEnumerable<string> updateKeys) {
// UI 上の Toggle の check が変わってもisOnには反映されないのでここで設定
foreach (var keys in updateKeys) {
var val = dict[keys];
val.toggle.IsOn = val.toggle.IsOn;
}
}
public bool TryGetToggle(string key, out IToggle toggle) {
if (dict.TryGetValue(key, out var x)) {
toggle = x.toggle;
return true;
}
toggle = default;
return false;
}
public void Clear() {
dict.Clear();
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 8725d14bce6043b387ea7f0361a56750
timeCreated: 1606747756

View File

@ -1,28 +0,0 @@
using System.Collections.Generic;
namespace AsmdefHelper.DependencyGraph.Editor {
public class ToggleGroup : IToggle {
readonly IToggle masterToggle;
readonly IEnumerable<IToggle> slaveToggles;
public ToggleGroup(IToggle masterToggle, IEnumerable<IToggle> slaveToggles) {
this.masterToggle = masterToggle;
this.slaveToggles = slaveToggles;
}
public string Name {
get => masterToggle.Name;
set => masterToggle.Name = value;
}
public bool IsOn {
get => masterToggle.IsOn;
set {
masterToggle.IsOn = value;
foreach (var toggle in slaveToggles) {
toggle.IsOn = value;
}
}
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 5308ff649752450ba423e8ce799f2048
timeCreated: 1606663303

View File

@ -1,10 +0,0 @@
using UnityEngine.UIElements;
namespace AsmdefHelper.DependencyGraph.Editor {
public class UiElementToggle : IToggle {
public readonly Toggle Toggle;
public UiElementToggle(Toggle toggle) => Toggle = toggle;
public string Name { get => Toggle.text; set => Toggle.text = value; }
public bool IsOn { get => Toggle.value; set => Toggle.value = value; }
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: faa82404bed34442b46aceb699aa2fd6
timeCreated: 1606663359

View File

@ -1,67 +0,0 @@
using System.Collections.Generic;
using System.Linq;
namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode {
public class DomainGroup {
readonly Dictionary<string, List<DomainUnit>> dict;
public DomainGroup() {
dict = new Dictionary<string, List<DomainUnit>>();
}
public void Create(IEnumerable<string> all) {
dict.Clear();
foreach (var str in all) {
var unit = new DomainUnit(str, '.');
if (!unit.HasSubDomain()) {
unit = new DomainUnit(str, '-');
}
if (!unit.HasSubDomain()) {
unit = new DomainUnit(str, '_');
}
if (!unit.HasSubDomain()) {
dict.Add(unit.FullName, new List<DomainUnit> { unit });
} else {
if (dict.TryGetValue(unit.TopDomain, out var list)) {
list.Add(unit);
} else {
dict.Add(unit.TopDomain, new List<DomainUnit> { unit });
}
}
}
// 1つしかなかったものを単独とする
var soloKeys = GetSoloDomains().ToArray();
foreach (var key in soloKeys) {
var unit = dict[key].FirstOrDefault();
if (unit == null || key == unit.FullName) {
continue;
}
dict.Remove(key);
var newKey = unit.FullName;
if (dict.ContainsKey(newKey)) {
dict[newKey].Add(unit);
} else {
dict.Add(newKey, new List<DomainUnit> { new DomainUnit(unit.FullName, '\0') });
}
}
}
public IEnumerable<string> GetTopDomains() => dict.Keys;
public IEnumerable<string> GetSoloDomains() => dict
.Where(x => x.Value.Count == 1)
.Select(x => x.Key);
public IEnumerable<string> GetTopDomainsWithSomeSubDomains() => dict
.Keys
.Except(GetSoloDomains());
public IEnumerable<DomainUnit> GetSubDomains(string topDomain) {
if (dict.TryGetValue(topDomain, out var list)) {
return list;
}
return new DomainUnit[0];
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: d9fe84ab1b8c44b0a841738f0ecb37d3
timeCreated: 1606659209

View File

@ -1,27 +0,0 @@
using System;
using System.Linq;
namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode {
public class DomainUnit {
public readonly string FullName;
public readonly string TopDomain;
public readonly string SubDomain;
public DomainUnit(string fullName, char separator) {
this.FullName = fullName;
if (string.IsNullOrEmpty(FullName)) return;
var split = fullName.Split(separator).Where(x => !string.IsNullOrEmpty(x)).ToArray();
if (split.Length < 2) {
TopDomain = fullName.Replace(separator.ToString(), "");
SubDomain = string.Empty;
} else {
TopDomain = split[0];
SubDomain = split.Skip(1).Aggregate((a, b) => $"{a}{separator}{b}");
}
}
public bool HasSubDomain() => !string.IsNullOrEmpty(SubDomain);
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 2927a4439ddc45a0a386b64e05220d53
timeCreated: 1606658272

View File

@ -18,7 +18,6 @@ namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Sort {
var posDict = nodeArr.ToDictionary(x => x.Profile, _ => originPosition); var posDict = nodeArr.ToDictionary(x => x.Profile, _ => originPosition);
// まず順番に整列させる // まず順番に整列させる
nodeArr = nodeArr.OrderBy(x => x.Profile.Name).ToArray();
var nodeGrid = new NodeGrid(alignParam.nodeWidth, alignParam.nodeHeight, alignParam.basicDistance, nodeArr.Length); var nodeGrid = new NodeGrid(alignParam.nodeWidth, alignParam.nodeHeight, alignParam.basicDistance, nodeArr.Length);
for (var i = 0; i < nodeArr.Length; i++) { for (var i = 0; i < nodeArr.Length; i++) {
posDict[nodeArr[i].Profile] += nodeGrid.GridCenterPositions()[i]; posDict[nodeArr[i].Profile] += nodeGrid.GridCenterPositions()[i];
@ -44,15 +43,6 @@ namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Sort {
} }
} }
// 接続数に応じて左右に移動させる
// ref to が多いものが左に、ref by が多いものが右に
const float factor = 60.0F;
foreach (var dep in nodeArr) {
var score = (dep.Sources.Count - dep.Destinations.Count) * factor;
var p = posDict[dep.Profile];
posDict[dep.Profile] = new Vector2(p.x + score, p.y);
}
return posDict.Select(x => new SortedNode { Profile = x.Key, Position = x.Value }); return posDict.Select(x => new SortedNode { Profile = x.Key, Position = x.Value });
} }
} }

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 686371b55f14bdb4ca1a0ee236361071 guid: 7f68a5c3b1e9b8b4aa69caf9b0838471
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -3,9 +3,8 @@ using AsmdefHelper.DependencyGraph.Editor.DependencyNode.Sort;
using NUnit.Framework; using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class DependencyNodeExtensionsTest { public class DependencyNodeExtensionsTest {
[SetUp] [SetUp]

View File

@ -1,10 +1,9 @@
using System.Collections; using System.Collections;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using NUnit.Framework; using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class HashSetDependencyNodeTest { public class HashSetDependencyNodeTest {
[Test] [Test]

View File

@ -1,13 +1,12 @@
using System.Collections; using System.Collections;
using System.Linq; using System.Linq;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode.Sort; using AsmdefHelper.DependencyGraph.Editor.DependencyNode.Sort;
using NUnit.Framework; using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class LinerSortStrategyTest { public class LinerSortStrategyTest {
const float d = 10.0F; const float d = 10.0F;
const float w = 10.0F; const float w = 10.0F;

View File

@ -4,7 +4,7 @@ using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class NodeGridTest { public class NodeGridTest {
[Test] [Test]

View File

@ -1,11 +1,10 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using NUnit.Framework; using NUnit.Framework;
using UnityEngine; using UnityEngine;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class NodeIdTest { public class NodeIdTest {
[Test] [Test]
public void TestNodeIdValue() { public void TestNodeIdValue() {

View File

@ -1,11 +1,10 @@
using System.Collections; using System.Collections;
using System.Linq; using System.Linq;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using NUnit.Framework; using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class NodeProcessorTest { public class NodeProcessorTest {
[SetUp] [SetUp]

View File

@ -2,9 +2,8 @@ using System.Collections;
using NUnit.Framework; using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class NodeProfileTest { public class NodeProfileTest {
[Test] [Test]

View File

@ -1,7 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public static class Ids { public static class Ids {
public static readonly NodeId _0 = new NodeId(0); public static readonly NodeId _0 = new NodeId(0);

View File

@ -6,7 +6,7 @@ using UnityEditor;
using UnityEngine; using UnityEngine;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class RandomSortStrategyTest { public class RandomSortStrategyTest {
const float d = 10.0F; const float d = 10.0F;
const float w = 10.0F; const float w = 10.0F;

View File

@ -5,7 +5,7 @@ using NUnit.Framework;
using UnityEditor; using UnityEditor;
using UnityEngine.TestTools; using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests { namespace AsmdefHelper.DependencyGraph.Editor.DependencyNode.Tests {
public class SquareValueProviderTest { public class SquareValueProviderTest {
[Test] [Test]

View File

@ -1,5 +1,5 @@
namespace AsmdefHelper.DependencyGraph.Editor.NodeView { namespace AsmdefHelper.DependencyGraph.Editor.NodeView {
public interface INodeView : IRect, IVisible { public interface INodeView : IRect {
string Label { set; get; } string Label { set; get; }
} }
} }

View File

@ -1,5 +0,0 @@
namespace AsmdefHelper.DependencyGraph.Editor.NodeView {
public interface IVisible {
bool Visibility { set; get; }
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: aecb56b3d2f84f408ad0aff39ba9e24c
timeCreated: 1606396097

View File

@ -22,10 +22,5 @@ namespace AsmdefHelper.DependencyGraph.Editor.NodeView {
public float Height => contentRect.height; public float Height => contentRect.height;
public float Width => contentRect.width; public float Width => contentRect.width;
public virtual bool Visibility {
get => visible;
set => visible = value;
}
} }
} }

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 8119c430aef94628a88162f0f2dede2c
timeCreated: 1606663500

View File

@ -1,53 +0,0 @@
using System.Collections;
using System.Linq;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using NUnit.Framework;
using UnityEditor;
using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests {
public class DomainGroupTest {
readonly string[] inputs ={
"unity.hoge",
"unity.fuga",
"unity.foo.bar",
"UniRx",
"UniRx.Async",
"zenject",
"zenject-test-framework",
"MyAsmdef",
"MyAsmdef2_Test",
"MyAsmdef3.hoge",
"MyAsmdef3-hoge",
};
[Test]
public void TestDomainGroup() {
var group = new DomainGroup();
group.Create(inputs);
Assert.That(group.GetTopDomains().Count(), Is.EqualTo(6));
Assert.That(group.GetSubDomains("unity").Count(), Is.EqualTo(3));
Assert.That(group.GetSubDomains("UniRx").Count(), Is.EqualTo(2));
Assert.That(group.GetSubDomains("zenject").Count(), Is.EqualTo(2));
Assert.That(group.GetSubDomains("MyAsmdef").Count(), Is.EqualTo(1));
Assert.That(group.GetSubDomains("MyAsmdef2_Test").Count(), Is.EqualTo(1));
Assert.That(group.GetSubDomains("MyAsmdef3").Count(), Is.EqualTo(2));
Assert.That(group.GetTopDomainsWithSomeSubDomains().Count(), Is.EqualTo(4));
Assert.That(group.GetSoloDomains().Count(), Is.EqualTo(2));
Assert.That(group.GetSubDomains("unity").Any(x => x.SubDomain == "hoge"), Is.True);
Assert.That(group.GetSubDomains("unity").Any(x => x.SubDomain == "fuga"), Is.True);
Assert.That(group.GetSubDomains("unity").Any(x => x.SubDomain == "foo.bar"), Is.True);
Assert.That(group.GetSubDomains("UniRx").Any(x => x.SubDomain == ""), Is.True);
Assert.That(group.GetSubDomains("UniRx").Any(x => x.SubDomain == "Async"), Is.True);
Assert.That(group.GetSubDomains("zenject").Any(x => x.SubDomain == ""), Is.True);
Assert.That(group.GetSubDomains("zenject").Any(x => x.SubDomain == "test-framework"), Is.True);
Assert.That(group.GetSubDomains("MyAsmdef").Any(x => x.SubDomain == ""), Is.True);
Assert.That(group.GetSubDomains("MyAsmdef2_Test").Any(x => x.SubDomain == ""), Is.True);
Assert.That(group.GetSubDomains("MyAsmdef3").Any(x => x.SubDomain == "hoge"), Is.True);
Assert.That(group.GetSubDomains("MyAsmdef3").Count(x => x.SubDomain == "hoge"), Is.EqualTo(2));
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 1ccc87caf20a4985a4e3c94bfc1c12c6
timeCreated: 1606660230

View File

@ -1,73 +0,0 @@
using System.Collections;
using AsmdefHelper.DependencyGraph.Editor.DependencyNode;
using NUnit.Framework;
using UnityEditor;
using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests {
public class DomainUnitTest {
[Test]
public void TestDomainUnit_HasTopDomain() {
var unit = new DomainUnit("abc.def.ghi.jk", '.');
Assert.That(unit.FullName, Is.EqualTo("abc.def.ghi.jk"));
Assert.That(unit.TopDomain, Is.EqualTo("abc"));
Assert.That(unit.SubDomain, Is.EqualTo("def.ghi.jk"));
Assert.That(unit.HasSubDomain, Is.True);
}
[Test]
public void TestDomainUnit_HasNoTopDomain() {
var unit = new DomainUnit("abcdefghijk", '.');
Assert.That(unit.FullName, Is.EqualTo("abcdefghijk"));
Assert.That(unit.TopDomain, Is.EqualTo("abcdefghijk"));
Assert.That(unit.SubDomain, Is.Empty);
Assert.That(unit.HasSubDomain, Is.False);
}
[Test]
public void TestDomainUnit_StartWithSeparator() {
var unit = new DomainUnit(".abc", '.');
Assert.That(unit.FullName, Is.EqualTo(".abc"));
Assert.That(unit.TopDomain, Is.EqualTo("abc"));
Assert.That(unit.SubDomain, Is.Empty);
Assert.That(unit.HasSubDomain, Is.False);
}
[Test]
public void TestDomainUnit_EndWithSeparator() {
var unit = new DomainUnit("abc.", '.');
Assert.That(unit.FullName, Is.EqualTo("abc."));
Assert.That(unit.TopDomain, Is.EqualTo("abc"));
Assert.That(unit.SubDomain, Is.Empty);
Assert.That(unit.HasSubDomain, Is.False);
}
[Test]
public void TestDomainUnit_StartAndEndWithSeparator() {
var unit = new DomainUnit(".abc.def.", '.');
Assert.That(unit.FullName, Is.EqualTo(".abc.def."));
Assert.That(unit.TopDomain, Is.EqualTo("abc"));
Assert.That(unit.SubDomain, Is.EqualTo("def"));
Assert.That(unit.HasSubDomain, Is.True);
}
[Test]
public void TestDomainUnit_OnlySeparator() {
var unit = new DomainUnit(".", '.');
Assert.That(unit.FullName, Is.EqualTo("."));
Assert.That(unit.TopDomain, Is.Empty);
Assert.That(unit.SubDomain, Is.Empty);
Assert.That(unit.HasSubDomain, Is.False);
}
[Test]
public void TestDomainUnit_OnlySeparators() {
var unit = new DomainUnit("...", '.');
Assert.That(unit.FullName, Is.EqualTo("..."));
Assert.That(unit.TopDomain, Is.Empty);
Assert.That(unit.SubDomain, Is.Empty);
Assert.That(unit.HasSubDomain, Is.False);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: ecc6823b62f94fd3a910f5a885a201dc
timeCreated: 1606658361

View File

@ -1,48 +0,0 @@
using System.Collections;
using System.Linq;
using NUnit.Framework;
using UnityEditor;
using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests {
public class ToggleDictTest {
[Test]
public void TestScanUpdate() {
var dict = new ToggleDict();
var toggle0 = new ToggleMock { IsOn = false };
var toggle1 = new ToggleMock { IsOn = false };
dict.Add("key0", toggle0);
dict.Add("key1", toggle1);
toggle0.IsOn = true;
// toggleの更新が取得できるか
var updated = dict.ScanUpdate().ToArray();
Assert.That(updated.Length, Is.EqualTo(1));
var (key0, val0) = updated[0];
Assert.That(key0, Is.EqualTo("key0"));
Assert.That(val0, Is.True);
}
[Test]
public void TestTryGetToggle() {
var dict = new ToggleDict();
var toggle0 = new ToggleMock { IsOn = false };
var toggle1 = new ToggleMock { IsOn = false };
dict.Add("key0", toggle0);
dict.Add("key1", toggle1);
var ret = dict.TryGetToggle("key0", out var getToggle);
Assert.That(ret, Is.True);
Assert.That(getToggle, Is.EqualTo(toggle0));
ret = dict.TryGetToggle("key1", out getToggle);
Assert.That(ret, Is.True);
Assert.That(getToggle, Is.EqualTo(toggle1));
dict.Clear();
ret = dict.TryGetToggle("key0", out getToggle);
Assert.That(ret, Is.False);
Assert.That(getToggle, Is.Null);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: d5e4669ffa314d21bd51796c7ee890f4
timeCreated: 1606750547

View File

@ -1,25 +0,0 @@
using System.Collections;
using NUnit.Framework;
using UnityEditor;
using UnityEngine.TestTools;
namespace AsmdefHelper.DependencyGraph.Editor.Tests {
public class ToggleGroupTest {
[Test]
public void TestToggleGroup() {
var toggle0 = new ToggleMock();
var toggle1 = new ToggleMock();
var toggle2 = new ToggleMock();
var toggleGroup = new ToggleGroup(toggle0, new[] { toggle1, toggle2 });
toggleGroup.IsOn = true;
toggle0.IsOn = true;
Assert.That(toggle1.IsOn, Is.True);
Assert.That(toggle2.IsOn, Is.True);
}
}
public class ToggleMock : IToggle {
public bool IsOn { set; get; }
public string Name { get; set; }
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 70c75ed559ab47378f605fbf1b75c85f
timeCreated: 1606747443

View File

@ -0,0 +1,361 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 705507994}
m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 1490641308}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 705507995}
- component: {fileID: 705507994}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &705507994
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 705507993}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 1
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &705507995
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 705507993}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &963194225
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 963194228}
- component: {fileID: 963194227}
- component: {fileID: 963194226}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &963194226
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_Enabled: 1
--- !u!20 &963194227
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &963194228
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!850595691 &1490641308
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Settings.lighting
serializedVersion: 2
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
m_TextureCompression: 1
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 2
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 256
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRRussianRouletteStartBounce: 2
m_PVREnvironmentMIS: 0
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9fc0d4010bbf28b4594072e72b8655ab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3343c43624a31f447a1961156a2cac6e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 07e92c78d576a8a458ce4a298eeb512d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,17 @@
{
"name": "AsmdefHelper.SyncSolution.Editor",
"references": [
"GUID:211243abc45174c45b3a6c275ea126b9"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

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

View File

@ -0,0 +1,57 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
using AsmdefHelper.UnityInternal;
// https://forum.unity.com/threads/solved-unity-not-generating-sln-file-from-assets-open-c-project.538487/
// Thank you Flexford!
namespace AsmdefHelper.SyncSolution.Editor {
public static class SyncSolutionUtilities {
[MenuItem("AsmdefHelper/Sync C# Solution", priority = 3000)]
public static void Sync() {
Sync(true);
}
static void Sync(bool logsEnabled) {
CleanOldFiles(logsEnabled);
Call_SyncSolution(logsEnabled);
Call_SynchronizerSync(logsEnabled);
}
static void CleanOldFiles(bool logsEnabled) {
var assetsDirectoryInfo = new DirectoryInfo(Application.dataPath);
var projectDirectoryInfo = assetsDirectoryInfo.Parent;
var files = GetFilesByExtensions(projectDirectoryInfo, "*.sln", "*.csproj");
foreach (var file in files) {
if (logsEnabled) {
Debug.Log($"Remove old solution file: {file.Name}");
}
file.Delete();
}
}
static void Call_SyncSolution(bool logsEnabled) {
if (logsEnabled) {
Debug.Log($"Coll method: SyncVS.Sync()");
}
SolutionSynchronizerWrapper.SyncSolution();
}
static void Call_SynchronizerSync(bool logsEnabled) {
if (logsEnabled) {
Debug.Log($"Coll method: SyncVS.Synchronizer.Sync()");
}
SolutionSynchronizerWrapper.SynchronizerSync();
}
static IEnumerable<FileInfo> GetFilesByExtensions(DirectoryInfo dir, params string[] extensions) {
extensions = extensions ?? new[] { "*" };
var files = Enumerable.Empty<FileInfo>();
return extensions.Aggregate(files, (current, ext) => current.Concat(dir.GetFiles(ext)));
}
}
}

View File

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

View File

@ -1,5 +1,5 @@
using UnityEditor; using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
namespace AsmdefHelper.UnityInternal { namespace AsmdefHelper.UnityInternal {
public class InspectorWindowWrapper : EditorWindow{ public class InspectorWindowWrapper : EditorWindow{
@ -17,11 +17,7 @@ namespace AsmdefHelper.UnityInternal {
public void AllApply() { public void AllApply() {
foreach (var editor in inspectorWindow.tracker.activeEditors) { foreach (var editor in inspectorWindow.tracker.activeEditors) {
#if UNITY_2021_1_OR_NEWER var assetImporterEditor = editor as AssetImporterEditor;
var assetImporterEditor = editor as UnityEditor.AssetImporters.AssetImporterEditor;
#else
var assetImporterEditor = editor as UnityEditor.Experimental.AssetImporters.AssetImporterEditor;
#endif
if (assetImporterEditor != null && assetImporterEditor.HasModified()) { if (assetImporterEditor != null && assetImporterEditor.HasModified()) {
assetImporterEditor.ApplyAndImport(); assetImporterEditor.ApplyAndImport();

View File

@ -0,0 +1,22 @@
using UnityEditor;
using UnityEditor.VisualStudioIntegration;
namespace AsmdefHelper.UnityInternal {
public static class SolutionSynchronizerWrapper {
static readonly SolutionSynchronizer synchronizer;
static SolutionSynchronizerWrapper() {
synchronizer = SyncVS.Synchronizer;
}
public static void SyncSolution() {
SyncVS.SyncSolution();
}
public static void SynchronizerSync() {
synchronizer?.Sync();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: aeb995b6396143f58028eb4aa639c7c4
timeCreated: 1586952223

View File

@ -1,7 +1,7 @@
{ {
"name": "dev.n5y.asmdefhelper", "name": "dev.n5y.asmdefhelper",
"displayName": "AsmdefHelper", "displayName": "AsmdefHelper",
"version": "0.5.3", "version": "0.3.0",
"unity": "2019.3", "unity": "2019.3",
"description": "Unity assembly definition utilities.", "description": "Unity assembly definition utilities.",
"keywords": ["asmdef", "editor"], "keywords": ["asmdef", "editor"],

View File

@ -1,8 +1,8 @@
{ {
"dependencies": { "dependencies": {
"com.unity.ide.rider": "3.0.9", "com.unity.ide.rider": "1.2.1",
"com.unity.ide.visualstudio": "2.0.12", "com.unity.ide.visualstudio": "2.0.2",
"com.unity.test-framework": "1.1.29", "com.unity.test-framework": "1.1.16",
"com.unity.modules.ai": "1.0.0", "com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0", "com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0", "com.unity.modules.animation": "1.0.0",

View File

@ -1,36 +1,34 @@
{ {
"dependencies": { "dependencies": {
"com.unity.ext.nunit": { "com.unity.ext.nunit": {
"version": "1.0.6", "version": "1.0.0",
"depth": 1, "depth": 1,
"source": "registry", "source": "registry",
"dependencies": {}, "dependencies": {},
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.ide.rider": { "com.unity.ide.rider": {
"version": "3.0.9", "version": "1.2.1",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
"com.unity.ext.nunit": "1.0.6" "com.unity.test-framework": "1.1.1"
}, },
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.ide.visualstudio": { "com.unity.ide.visualstudio": {
"version": "2.0.12", "version": "2.0.2",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {},
"com.unity.test-framework": "1.1.9"
},
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.test-framework": { "com.unity.test-framework": {
"version": "1.1.29", "version": "1.1.16",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
"com.unity.ext.nunit": "1.0.6", "com.unity.ext.nunit": "1.0.0",
"com.unity.modules.imgui": "1.0.0", "com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0" "com.unity.modules.jsonserialize": "1.0.0"
}, },

View File

@ -1,35 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!387306366 &1
MemorySettings:
m_ObjectHideFlags: 0
m_EditorMemorySettings:
m_MainAllocatorBlockSize: -1
m_ThreadAllocatorBlockSize: -1
m_MainGfxBlockSize: -1
m_ThreadGfxBlockSize: -1
m_CacheBlockSize: -1
m_TypetreeBlockSize: -1
m_ProfilerBlockSize: -1
m_ProfilerEditorBlockSize: -1
m_BucketAllocatorGranularity: -1
m_BucketAllocatorBucketsCount: -1
m_BucketAllocatorBlockSize: -1
m_BucketAllocatorBlockCount: -1
m_ProfilerBucketAllocatorGranularity: -1
m_ProfilerBucketAllocatorBucketsCount: -1
m_ProfilerBucketAllocatorBlockSize: -1
m_ProfilerBucketAllocatorBlockCount: -1
m_TempAllocatorSizeMain: -1
m_JobTempAllocatorBlockSize: -1
m_BackgroundJobTempAllocatorBlockSize: -1
m_JobTempAllocatorReducedBlockSize: -1
m_TempAllocatorSizeGIBakingWorker: -1
m_TempAllocatorSizeNavMeshWorker: -1
m_TempAllocatorSizeAudioWorker: -1
m_TempAllocatorSizeCloudWorker: -1
m_TempAllocatorSizeGfx: -1
m_TempAllocatorSizeJobWorker: -1
m_TempAllocatorSizeBackgroundWorker: -1
m_TempAllocatorSizePreloadManager: -1
m_PlatformMemorySettings: {}

View File

@ -1,2 +1,2 @@
m_EditorVersion: 2021.2.8f1 m_EditorVersion: 2020.1.6f1
m_EditorVersionWithRevision: 2021.2.8f1 (d0e5f0a7b06a) m_EditorVersionWithRevision: 2020.1.6f1 (fc477ca6df10)

View File

@ -6,13 +6,6 @@ Unity assembly definition utilities.
This library solve inconvenience of assembly definition on unity. This library solve inconvenience of assembly definition on unity.
### install via upm
Please add this line to `dependencies` of `Packages/manifest.json`.
```
"dev.n5y.asmdefhelper": "https://git.roseapollo.com/rose/AsmdefHelper.git?path=Assets"
```
## Dependency Graph ## Dependency Graph
Unity assembly definition viewer. Unity assembly definition viewer.
@ -21,12 +14,10 @@ Unity assembly definition viewer.
Show assembly definition referances in your project like this. Show assembly definition referances in your project like this.
<img src="https://user-images.githubusercontent.com/15327448/100633752-cdae3800-3371-11eb-9729-dfb8c4fd3412.png" width="580" /> <img src="https://user-images.githubusercontent.com/15327448/79340184-e8f44080-7f64-11ea-87f9-3ec90f9c5fa5.png" width="450" />
You need to organize the nodes by yourself. You need to organize the nodes by yourself.
You can toggle node appear/disappear.
## Multiple Edit ## Multiple Edit
Open multiple assembly definition inspector views for parallel editing. Open multiple assembly definition inspector views for parallel editing.
@ -39,6 +30,15 @@ Open multiple assembly definition inspector views for parallel editing.
<img src="https://user-images.githubusercontent.com/15327448/79342775-813ff480-7f68-11ea-851d-3e93b5948c0b.gif" width="450" /> <img src="https://user-images.githubusercontent.com/15327448/79342775-813ff480-7f68-11ea-851d-3e93b5948c0b.gif" width="450" />
## Sync Solution
Refresh .sln/.csproj in your project.
(menu) > [AsmdefHelper] > [Sync C# Solution]
I referred to this: [[SOLVED] Unity not generating .sln file from Assets > Open C# Project
](https://forum.unity.com/threads/solved-unity-not-generating-sln-file-from-assets-open-c-project.538487/)
## Compile Locker ## Compile Locker
Lock unity editor compile to edit an asmdef. Lock unity editor compile to edit an asmdef.
@ -70,7 +70,7 @@ And you can also rename an asmdef by one action.
___ ___
## Environment ## Environment
Unity 2021.2.8f1 Unity 2020.1.6f1
This library use unity internal class, so may be not work (or couse build error) depending your unity vresion. This library use unity internal class, so may be not work (or couse build error) depending your unity vresion.

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" /> <xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:import schemaLocation="UnityEditor.PackageManager.UI.xsd" namespace="UnityEditor.PackageManager.UI" /> <xs:import schemaLocation="UnityEditor.PackageManager.UI.xsd" namespace="UnityEditor.PackageManager.UI" />
<xs:import schemaLocation="UnityEditor.UIElements.xsd" namespace="UnityEditor.UIElements" /> <xs:import schemaLocation="UnityEditor.UIElements.xsd" namespace="UnityEditor.UIElements" />
<xs:import schemaLocation="UnityEditor.UIElements.Debugger.xsd" namespace="UnityEditor.UIElements.Debugger" /> <xs:import schemaLocation="UnityEditor.UIElements.Debugger.xsd" namespace="UnityEditor.UIElements.Debugger" />
<xs:import schemaLocation="UnityEditor.Experimental.GraphView.xsd" namespace="UnityEditor.Experimental.GraphView" />
</xs:schema> </xs:schema>

View File

@ -1,66 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" targetNamespace="UnityEditor.Experimental.GraphView" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:complexType name="PillType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="false" name="highlighted" type="xs:boolean" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Pill" substitutionGroup="engine:VisualElement" type="PillType" />
<xs:complexType name="ResizableElementType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ResizableElement" substitutionGroup="engine:VisualElement" type="ResizableElementType" />
<xs:complexType name="StickyNoteType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="StickyNote" substitutionGroup="engine:VisualElement" type="StickyNoteType" />
</xs:schema>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" targetNamespace="UnityEditor.PackageManager.UI" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.PackageManager.UI" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" /> <xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:complexType name="AlertType"> <xs:complexType name="AlertType">
<xs:complexContent mixed="false"> <xs:complexContent mixed="false">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements.Debugger" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements.Debugger" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" /> <xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:complexType name="EventTypeSelectFieldType"> <xs:complexType name="EventTypeSelectFieldType">
<xs:complexContent mixed="false"> <xs:complexContent mixed="false">
@ -23,5 +23,5 @@
</xs:restriction> </xs:restriction>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<xs:element name="EventTypeSelectField" substitutionGroup="engine:VisualElement" xmlns:q1="UnityEditor.UIElements.Debugger" type="q1:EventTypeSelectFieldType" /> <xs:element name="EventTypeSelectField" substitutionGroup="engine:VisualElement" type="EventTypeSelectFieldType" />
</xs:schema> </xs:schema>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" /> <xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:simpleType name="PropertyControl_value-type_Type"> <xs:simpleType name="PropertyControl_value-type_Type">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.Experimental.GraphView" elementFormDefault="qualified" targetNamespace="UnityEngine.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEngine.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="UXMLType"> <xs:complexType name="UXMLType">
<xs:complexContent mixed="false"> <xs:complexContent mixed="false">
<xs:restriction base="xs:anyType"> <xs:restriction base="xs:anyType">

View File

@ -1,689 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_PixelRect:
serializedVersion: 2
x: 0
y: 45
width: 2560
height: 1391
m_ShowMode: 4
m_Title:
m_RootView: {fileID: 6}
m_MinSize: {x: 950, y: 300}
m_MaxSize: {x: 10000, y: 10000}
--- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 9}
- {fileID: 3}
m_Position:
serializedVersion: 2
x: 0
y: 30
width: 2560
height: 1341
m_MinSize: {x: 683, y: 492}
m_MaxSize: {x: 14004, y: 14042}
vertical: 0
controlID: 615
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 2041
y: 0
width: 519
height: 1341
m_MinSize: {x: 277, y: 71}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 14}
m_Panes:
- {fileID: 14}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &4
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 505
height: 811
m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 15}
m_Panes:
- {fileID: 15}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 811
width: 2041
height: 530
m_MinSize: {x: 232, y: 271}
m_MaxSize: {x: 10002, y: 10021}
m_ActualView: {fileID: 13}
m_Panes:
- {fileID: 13}
- {fileID: 18}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 7}
- {fileID: 2}
- {fileID: 8}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 2560
height: 1391
m_MinSize: {x: 950, y: 300}
m_MaxSize: {x: 10000, y: 10000}
--- !u!114 &7
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 2560
height: 30
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName: Default
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 1371
width: 2560
height: 20
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
--- !u!114 &9
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 10}
- {fileID: 5}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 2041
height: 1341
m_MinSize: {x: 406, y: 492}
m_MaxSize: {x: 10002, y: 14042}
vertical: 1
controlID: 547
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 4}
- {fileID: 11}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 2041
height: 811
m_MinSize: {x: 406, y: 221}
m_MaxSize: {x: 8006, y: 4021}
vertical: 0
controlID: 548
--- !u!114 &11
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 505
y: 0
width: 1536
height: 811
m_MinSize: {x: 204, y: 221}
m_MaxSize: {x: 4004, y: 4021}
m_ActualView: {fileID: 16}
m_Panes:
- {fileID: 16}
- {fileID: 17}
- {fileID: 12}
m_Selected: 0
m_LastSelected: 1
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12111, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 400, y: 100}
m_MaxSize: {x: 2048, y: 2048}
m_TitleContent:
m_Text: Asset Store
m_Image: {fileID: 357073275683767465, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 468
y: 181
width: 973
height: 501
--- !u!114 &13
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 230, y: 250}
m_MaxSize: {x: 10000, y: 10000}
m_TitleContent:
m_Text: Project
m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 0
y: 905
width: 2039
height: 509
m_SearchFilter:
m_NameFilter:
m_ClassNames: []
m_AssetLabels: []
m_AssetBundleNames: []
m_VersionControlStates: []
m_ReferencingInstanceIDs:
m_ScenePaths: []
m_ShowAllHits: 0
m_SearchArea: 0
m_Folders:
- Assets
m_ViewMode: 1
m_StartGridSize: 64
m_LastFolders:
- Assets
m_LastFoldersGridSize: -1
m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 20
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: b0230000
m_LastClickedID: 9136
m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_SearchString:
m_ColumnWidths: []
m_AssetTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_SearchString:
m_ColumnWidths: []
m_ListAreaState:
m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c6230000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 0}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_NewAssetIndexInList: -1
m_ScrollPosition: {x: 0, y: 0}
m_GridSize: 64
m_DirectoriesAreaWidth: 115
--- !u!114 &14
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 275, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Inspector
m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 2043
y: 94
width: 517
height: 1320
m_ScrollPosition: {x: 0, y: 0}
m_InspectorMode: 0
m_PreviewResizer:
m_CachedPref: 160
m_ControlHash: -371814159
m_PrefName: Preview_InspectorPreview
m_PreviewWindow: {fileID: 0}
--- !u!114 &15
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Hierarchy
m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 0
y: 94
width: 503
height: 790
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 00000000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
m_Path:
m_Icon: {fileID: 0}
m_ResourceFile:
m_SearchString:
m_ColumnWidths: []
m_ExpandedScenes: []
m_CurrenRootInstanceID: 0
m_Locked: 0
m_CurrentSortingName: TransformSorting
--- !u!114 &16
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 1
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Scene
m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 32
m_Pos:
serializedVersion: 2
x: 507
y: 94
width: 1532
height: 790
m_SceneLighting: 1
lastFramingTime: 0
m_2DMode: 0
m_isRotationLocked: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: 0, y: 0, z: 0}
speed: 2
m_Value: {x: 0, y: 0, z: 0}
m_RenderMode: 0
m_SceneViewState:
showFog: 1
showMaterialUpdate: 0
showSkybox: 1
showFlares: 1
showImageEffects: 1
grid:
xGrid:
m_Target: 0
speed: 2
m_Value: 0
yGrid:
m_Target: 1
speed: 2
m_Value: 1
zGrid:
m_Target: 0
speed: 2
m_Value: 0
m_Rotation:
m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
speed: 2
m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
m_Size:
m_Target: 10
speed: 2
m_Value: 10
m_Ortho:
m_Target: 0
speed: 2
m_Value: 0
m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0}
m_LastSceneViewOrtho: 0
m_ReplacementShader: {fileID: 0}
m_ReplacementString:
m_LastLockedObject: {fileID: 0}
m_ViewIsLockedToObject: 0
--- !u!114 &17
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 1
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Game
m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 32
m_Pos:
serializedVersion: 2
x: 507
y: 94
width: 1532
height: 790
m_MaximizeOnPlay: 0
m_Gizmos: 0
m_Stats: 0
m_SelectedSizes: 000000000000000000000000000000000000000000000000000000000000000000000000
m_TargetDisplay: 0
m_ZoomArea:
m_HRangeLocked: 0
m_VRangeLocked: 0
m_HBaseRangeMin: -383
m_HBaseRangeMax: 383
m_VBaseRangeMin: -193.25
m_VBaseRangeMax: 193.25
m_HAllowExceedBaseRangeMin: 1
m_HAllowExceedBaseRangeMax: 1
m_VAllowExceedBaseRangeMin: 1
m_VAllowExceedBaseRangeMax: 1
m_ScaleWithWindow: 0
m_HSlider: 0
m_VSlider: 0
m_IgnoreScrollWheelUntilClicked: 0
m_EnableMouseInput: 1
m_EnableSliderZoom: 0
m_UniformScale: 1
m_UpDirection: 1
m_DrawArea:
serializedVersion: 2
x: 0
y: 17
width: 1532
height: 773
m_Scale: {x: 2, y: 2}
m_Translation: {x: 766, y: 386.5}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
m_MarginBottom: 0
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -383
y: -193.25
width: 766
height: 386.5
m_MinimalGUI: 1
m_defaultScale: 2
m_TargetTexture: {fileID: 0}
m_CurrentColorSpace: 1
m_LastWindowPixelSize: {x: 3064, y: 1580}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
--- !u!114 &18
MonoBehaviour:
m_ObjectHideFlags: 52
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_AutoRepaintOnSceneChange: 0
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Console
m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000,
type: 0}
m_Tooltip:
m_DepthBufferBits: 0
m_Pos:
serializedVersion: 2
x: 8
y: 718
width: 1366
height: 308