diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml index 29df583ec..8eee5e43c 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml @@ -51,6 +51,8 @@ + + @@ -71,168 +73,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1447,6 +1287,7 @@ + @@ -1887,7 +1728,6 @@ - diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index 06c1863c1..e412490ee 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -26,7 +26,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_17;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_22;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -50,13 +50,13 @@ - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEditor.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEditor.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll @@ -141,238 +141,238 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Library/ScriptAssemblies/Unity.TextMeshPro.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpatialTrackingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpatialTrackingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/Unity.Locator.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/Unity.Locator.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEditor.Graphs.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEditor.Graphs.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Microsoft.Extensions.Logging.Abstractions.dll @@ -414,358 +414,358 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll diff --git a/Assembly-CSharp-firstpass.csproj b/Assembly-CSharp-firstpass.csproj index b5d64bebf..d1dd42d30 100644 --- a/Assembly-CSharp-firstpass.csproj +++ b/Assembly-CSharp-firstpass.csproj @@ -26,7 +26,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_17;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_22;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -50,13 +50,13 @@ - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEditor.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEditor.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll @@ -88,205 +88,205 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Library/ScriptAssemblies/Unity.TextMeshPro.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/Unity.Locator.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/Unity.Locator.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Microsoft.Extensions.Logging.Abstractions.dll @@ -325,358 +325,358 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 78571da4b..2a94f5290 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -26,7 +26,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_17;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_22;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -50,146 +50,22 @@ - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEditor.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEditor.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1022,7 +898,6 @@ - @@ -1046,7 +921,6 @@ - @@ -1075,7 +949,6 @@ - @@ -1097,205 +970,205 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Library/ScriptAssemblies/Unity.TextMeshPro.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/Unity.Locator.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/Unity.Locator.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Microsoft.Extensions.Logging.Abstractions.dll @@ -1334,358 +1207,358 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll diff --git a/Assets/Resources/Ubuntu/UbuntuMono-R SDF.mat b/Assets/Resources/Ubuntu/UbuntuMono-R SDF.mat index e70633e8a..170d51e00 100644 --- a/Assets/Resources/Ubuntu/UbuntuMono-R SDF.mat +++ b/Assets/Resources/Ubuntu/UbuntuMono-R SDF.mat @@ -5,10 +5,11 @@ Material: serializedVersion: 6 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_Name: UbuntuMono-R SDF m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} - m_ShaderKeywords: + m_ShaderKeywords: UNDERLAY_ON m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 @@ -50,7 +51,7 @@ Material: - _BumpOutline: 0 - _ColorMask: 15 - _Diffuse: 0.5 - - _FaceDilate: -0.5 + - _FaceDilate: 0 - _FaceUVSpeedX: 0 - _FaceUVSpeedY: 0 - _GlowInner: 0.05 @@ -61,18 +62,19 @@ Material: - _LightAngle: 3.1416 - _MaskSoftnessX: 0 - _MaskSoftnessY: 0 - - _OutlineSoftness: 1 + - _OutlineSoftness: 0.3 - _OutlineUVSpeedX: 0 - _OutlineUVSpeedY: 0 - _OutlineWidth: 0 - _PerspectiveFilter: 0.875 - _Reflectivity: 10 - _ScaleRatioA: 0.8333333 - - _ScaleRatioB: 1.09375 - - _ScaleRatioC: 1.09375 + - _ScaleRatioB: 0.6770833 + - _ScaleRatioC: 0.22569445 - _ScaleX: 1 - _ScaleY: 1 - _ShaderFlags: 0 + - _Sharpness: 0 - _SpecularPower: 2 - _Stencil: 0 - _StencilComp: 8 @@ -81,10 +83,10 @@ Material: - _StencilWriteMask: 255 - _TextureHeight: 512 - _TextureWidth: 512 - - _UnderlayDilate: 0 - - _UnderlayOffsetX: 0 - - _UnderlayOffsetY: 0 - - _UnderlaySoftness: 0 + - _UnderlayDilate: 1 + - _UnderlayOffsetX: 1 + - _UnderlayOffsetY: -1 + - _UnderlaySoftness: 1 - _VertexOffsetX: 0 - _VertexOffsetY: 0 - _WeightBold: 0.75 @@ -92,11 +94,11 @@ Material: m_Colors: - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} - - _FaceColor: {r: 0.7490196, g: 0.7490196, b: 0.5803922, a: 1} + - _FaceColor: {r: 0.8, g: 0.9333333, b: 1, a: 1} - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} - - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index c84836e74..7176fdad0 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -1215,6 +1215,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 47384829} m_CullTransparentMesh: 0 +--- !u!1 &53320553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 53320554} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &53320554 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 53320553} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1082785902} + m_Father: {fileID: 412194188} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &66932364 GameObject: m_ObjectHideFlags: 0 @@ -6543,7 +6579,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 + m_ReferencePixelsPerUnit: 65 m_ScaleFactor: 1 m_ReferenceResolution: {x: 1920, y: 1080} m_ScreenMatchMode: 0 @@ -6584,7 +6620,9 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} m_Children: + - {fileID: 1771592280} - {fileID: 784574043} + - {fileID: 1551320371} m_Father: {fileID: 0} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -8234,6 +8272,125 @@ MonoBehaviour: m_FlexibleWidth: 1 m_FlexibleHeight: -1 m_LayoutPriority: 1 +--- !u!1 &412194187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 412194188} + - component: {fileID: 412194191} + - component: {fileID: 412194190} + - component: {fileID: 412194189} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &412194188 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 412194187} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 53320554} + m_Father: {fileID: 1663644539} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!114 &412194189 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 412194187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1082785903} + m_HandleRect: {fileID: 1082785902} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &412194190 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 412194187} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &412194191 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 412194187} + m_CullTransparentMesh: 0 --- !u!1 &416479118 GameObject: m_ObjectHideFlags: 0 @@ -8823,6 +8980,79 @@ MonoBehaviour: m_ChildForceExpandHeight: 1 m_ChildControlWidth: 1 m_ChildControlHeight: 1 +--- !u!1 &456371627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 456371628} + - component: {fileID: 456371630} + - component: {fileID: 456371629} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &456371628 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 456371627} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1953832408} + m_Father: {fileID: 1541068462} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.99999976} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &456371629 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 456371627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.44583336, b: 0.050000012, a: 0.65882355} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &456371630 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 456371627} + m_CullTransparentMesh: 0 --- !u!1 &464402652 GameObject: m_ObjectHideFlags: 0 @@ -10057,6 +10287,81 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 52538a3309c36fc4583c964a1c0b705f, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &519035860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519035861} + - component: {fileID: 519035862} + - component: {fileID: 519035863} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &519035861 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519035860} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1101630446} + m_Father: {fileID: 953390097} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -73.03003} + m_Pivot: {x: 0, y: 1} +--- !u!114 &519035862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519035860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &519035863 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519035860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -11025,6 +11330,7 @@ MonoBehaviour: m_EditorClassIdentifier: Camera: {fileID: 519420031} Scaling: -0.025 + Background: {fileID: 1771592284} --- !u!4 &565356062 Transform: m_ObjectHideFlags: 0 @@ -15416,7 +15722,6 @@ GameObject: m_Component: - component: {fileID: 712278634} - component: {fileID: 712278633} - - component: {fileID: 712278632} - component: {fileID: 712278635} m_Layer: 0 m_Name: Tech View @@ -15425,68 +15730,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &712278632 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 712278631} - m_Enabled: 0 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6270ad993ac7b944786c936b7b058263, type: 3} - m_Name: - m_EditorClassIdentifier: - IconsPath: Sprites/Icons/Tech - Ring: {fileID: 680383218} - Tech: {fileID: 586612708} - Link: {fileID: 1941419275} - RadialLink: {fileID: 1417816149} - Arrow: {fileID: 1083812776} - Algorithm: 1 - TechCount: 200 - SeedTechs: 10 - RollingWindowSize: 20 - EliminateIslands: 0 - MultipleDependencies: 0 - MultipleDependencyProbability: 0.5 - MaxDependencyDistance: 4 - MaxDependencyTierDifference: 2 - DisconnectedMultiplier: 4 - K: 0.25 - LengthFactor: 2 - Iterations: 1000 - LayerDistance: 1 - VertexDistance: 1 - WidthPerHeight: 1 - PositionMode: -1 - Radial: 1 - MinimizeEdgeLength: 1 - OptimizeWidth: 1 - Sections: 360 - PaddingRadians: 3.14 - StartTier: 4 - Scale: 2 - LinkPoints: 32 - LinkDepth: 5 - LinkTargetDistance: 0.75 - RingDepth: 6 - ArrowDepth: 3 - Saturation: 0.95 - HueMin: 0 - HueMax: 1 - Brightness: 1 - RingInnerSaturation: 1 - RingOuterSaturation: 0.25 - RingInnerBrightness: 1 - RingOuterBrightness: 0.1 - RingColorKeys: 8 - FillOpacity: 0.15 - GlowOpacity: 0.6 - TechFillMaterial: {fileID: 2100000, guid: c3c13ba00125fdf4c92bd96210dc7230, type: 2} - TechGlowMaterial: {fileID: 2100000, guid: 1426b25e088759647b77658321197be7, type: 2} - TechArrowMaterial: {fileID: 2100000, guid: 2a2ec810cb24ddb4d869e73fe8a1510a, type: 2} - TechLinkMaterial: {fileID: 2100000, guid: 67e23cda35beab546a57003dd2d33de1, type: 2} --- !u!114 &712278633 MonoBehaviour: m_ObjectHideFlags: 0 @@ -15552,7 +15795,7 @@ MonoBehaviour: type: 3} DescendantPrefab: {fileID: 5359016349318343761, guid: 7696b62947035dd4f8f5ef66ef53464b, type: 3} - ClickRaycaster: {fileID: 784574045} + ClickRaycaster: {fileID: 1771592283} TestMode: 0 TechCount: 500 SeedTechs: 15 @@ -17193,13 +17436,9 @@ GameObject: m_Component: - component: {fileID: 784574043} - component: {fileID: 784574044} - - component: {fileID: 784574046} - - component: {fileID: 784574045} - - component: {fileID: 784574048} - - component: {fileID: 784574047} m_Layer: 5 m_Name: Root - m_TagString: UIBackground + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -17219,7 +17458,7 @@ RectTransform: - {fileID: 1723832127} - {fileID: 143833100} m_Father: {fileID: 323746067} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -17249,67 +17488,6 @@ MonoBehaviour: m_ChildForceExpandHeight: 1 m_ChildControlWidth: 1 m_ChildControlHeight: 1 ---- !u!114 &784574045 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 784574042} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ba30ab714c5cf6943957d3e4ae549c84, type: 3} - m_Name: - m_EditorClassIdentifier: - RayCamera: {fileID: 519420031} ---- !u!114 &784574046 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 784574042} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 20fa7724865c6b04097615292a325dfe, type: 3} - m_Name: - m_EditorClassIdentifier: - ClickTime: 0.5 ---- !u!114 &784574047 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 784574042} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &784574048 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 784574042} - m_CullTransparentMesh: 0 --- !u!1 &786694367 GameObject: m_ObjectHideFlags: 0 @@ -19791,6 +19969,80 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 906582746} m_CullTransparentMesh: 0 +--- !u!1 &907710630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 907710631} + - component: {fileID: 907710633} + - component: {fileID: 907710632} + m_Layer: 5 + m_Name: View Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &907710631 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907710630} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1663644539} + - {fileID: 1751312750} + m_Father: {fileID: 1551320371} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 8} + m_SizeDelta: {x: 0, y: 16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &907710632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907710630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.123487175, b: 0.301, a: 0.49019608} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &907710633 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907710630} + m_CullTransparentMesh: 0 --- !u!1 &915457376 GameObject: m_ObjectHideFlags: 0 @@ -20516,6 +20768,93 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 948368005} m_CullTransparentMesh: 0 +--- !u!1 &953390096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 953390097} + - component: {fileID: 953390100} + - component: {fileID: 953390099} + - component: {fileID: 953390098} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &953390097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953390096} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 519035861} + m_Father: {fileID: 1663644539} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &953390098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953390096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &953390099 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953390096} + m_CullTransparentMesh: 0 +--- !u!114 &953390100 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953390096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 --- !u!1 &956918186 GameObject: m_ObjectHideFlags: 0 @@ -23441,6 +23780,78 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1081687107} m_CullTransparentMesh: 0 +--- !u!1 &1082785901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1082785902} + - component: {fileID: 1082785904} + - component: {fileID: 1082785903} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1082785902 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1082785901} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 53320554} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1082785903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1082785901} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1082785904 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1082785901} + m_CullTransparentMesh: 0 --- !u!1 &1083812775 GameObject: m_ObjectHideFlags: 0 @@ -24148,6 +24559,217 @@ MonoBehaviour: m_FlexibleWidth: -1 m_FlexibleHeight: -1 m_LayoutPriority: 1 +--- !u!1 &1101630445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1101630446} + - component: {fileID: 1101630449} + - component: {fileID: 1101630448} + - component: {fileID: 1101630447} + - component: {fileID: 1101630450} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1101630446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101630445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1935781036} + m_Father: {fileID: 519035861} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 943.50006, y: -263.485} + m_SizeDelta: {x: 1887.0001, y: 526.97} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1101630447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101630445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1101630448 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101630445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "What the fuck did you just fucking type about me, you little bitch? I\u2019ll + have you know I graduated top of my class at MIT, and I\u2019ve been involved + in numerous secret raids with Anonymous, and I have over 300 confirmed DDoSes.\n\nI + am trained in online trolling and I\u2019m the top hacker in the entire world. + You are nothing to me but just another virus host. I will wipe you the fuck out + with precision the likes of which has never been seen before on the Internet, + mark my fucking words. You think you can get away with typing that shit to me + over the Internet? Think again, fucker.\n\nAs we chat over IRC I am tracing your + IP with my damn bare hands so you better prepare for the storm, maggot. The storm + that wipes out the pathetic little thing you call your computer. You\u2019re fucking + dead, kid. I can be anywhere, anytime, and I can hack into your files in over + seven hundred ways, and that\u2019s just with my bare hands.\n\nNot only am I + extensively trained in hacking, but I have access to the entire arsenal of every + piece of malware ever created and I will use it to its full extent to wipe your + miserable ass off the face of the world wide web, you little shit. If only you + could have known what unholy retribution your little \u201Cclever\u201D comment + was about to bring down upon you, maybe you would have held your fucking fingers. + But you couldn\u2019t, you didn\u2019t, and now you\u2019re paying the price, + you goddamn idiot. I will shit code all over you and you will drown in it.\n\nYou\u2019re + fucking dead, kiddo." + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3fb7d873bb5a7944bb9a7c73c430c44b, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: b9d2f6c9804cec1489502dcc1c19ec54, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 28 + m_fontSizeBase: 28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_textAlignment: 257 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1101630448} + characterCount: 1486 + spriteCount: 0 + spaceCount: 284 + wordCount: 281 + linkCount: 0 + lineCount: 18 + pageCount: 1 + materialCount: 2 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 1935781037} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1101630449 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101630445} + m_CullTransparentMesh: 0 +--- !u!114 &1101630450 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1101630445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 --- !u!1 &1105158292 GameObject: m_ObjectHideFlags: 0 @@ -33379,6 +34001,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1535913198} m_CullTransparentMesh: 0 +--- !u!1 &1541068461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1541068462} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1541068462 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1541068461} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 456371628} + m_Father: {fileID: 1627128570} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1546469477 GameObject: m_ObjectHideFlags: 0 @@ -33645,6 +34303,58 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1550918578} m_CullTransparentMesh: 0 +--- !u!1 &1551320370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1551320371} + - component: {fileID: 1551320372} + m_Layer: 5 + m_Name: Console + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1551320371 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1551320370} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 907710631} + m_Father: {fileID: 323746067} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 600} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1551320372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1551320370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 60214997723e68547b9c784ebda51d9a, type: 3} + m_Name: + m_EditorClassIdentifier: + ViewContainer: {fileID: 907710630} + LogTextArea: {fileID: 1101630448} + Scroll: {fileID: 1663644542} --- !u!1 &1556827356 GameObject: m_ObjectHideFlags: 0 @@ -35159,6 +35869,125 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1624906833} m_CullTransparentMesh: 0 +--- !u!1 &1627128569 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1627128570} + - component: {fileID: 1627128573} + - component: {fileID: 1627128572} + - component: {fileID: 1627128571} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1627128570 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1627128569} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1541068462} + m_Father: {fileID: 1663644539} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &1627128571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1627128569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 456371629} + m_HandleRect: {fileID: 456371628} + m_Direction: 2 + m_Value: 0 + m_Size: 0.9999998 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1627128572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1627128569} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b412943088786454c9bf10b1f7e1e94b, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1627128573 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1627128569} + m_CullTransparentMesh: 0 --- !u!1 &1630921978 GameObject: m_ObjectHideFlags: 0 @@ -36232,6 +37061,75 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1662897634} m_CullTransparentMesh: 0 +--- !u!1 &1663644538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1663644539} + - component: {fileID: 1663644542} + m_Layer: 5 + m_Name: Scroll View + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1663644539 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1663644538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 953390097} + - {fileID: 412194188} + - {fileID: 1627128570} + m_Father: {fileID: 907710631} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 8, y: -8} + m_SizeDelta: {x: -16, y: -16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1663644542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1663644538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 519035861} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 10 + m_Viewport: {fileID: 953390097} + m_HorizontalScrollbar: {fileID: 412194189} + m_VerticalScrollbar: {fileID: 1627128571} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] --- !u!1 &1664222252 GameObject: m_ObjectHideFlags: 0 @@ -38175,6 +39073,78 @@ MonoBehaviour: m_ChildForceExpandHeight: 1 m_ChildControlWidth: 1 m_ChildControlHeight: 1 +--- !u!1 &1751312749 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1751312750} + - component: {fileID: 1751312752} + - component: {fileID: 1751312751} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1751312750 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751312749} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 907710631} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1751312751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751312749} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b412943088786454c9bf10b1f7e1e94b, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1751312752 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1751312749} + m_CullTransparentMesh: 0 --- !u!1 &1765339522 GameObject: m_ObjectHideFlags: 0 @@ -38678,6 +39648,106 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1771534027} m_CullTransparentMesh: 0 +--- !u!1 &1771592279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1771592280} + - component: {fileID: 1771592284} + - component: {fileID: 1771592283} + - component: {fileID: 1771592282} + - component: {fileID: 1771592281} + m_Layer: 5 + m_Name: Background + m_TagString: UIBackground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1771592280 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1771592279} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 323746067} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1771592281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1771592279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1771592282 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1771592279} + m_CullTransparentMesh: 0 +--- !u!114 &1771592283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1771592279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ba30ab714c5cf6943957d3e4ae549c84, type: 3} + m_Name: + m_EditorClassIdentifier: + RayCamera: {fileID: 519420031} +--- !u!114 &1771592284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1771592279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 20fa7724865c6b04097615292a325dfe, type: 3} + m_Name: + m_EditorClassIdentifier: + ClickTime: 0.5 --- !u!1 &1777186238 GameObject: m_ObjectHideFlags: 0 @@ -42638,6 +43708,78 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1934951781} m_CullTransparentMesh: 0 +--- !u!1 &1935781035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1935781036} + - component: {fileID: 1935781038} + - component: {fileID: 1935781037} + m_Layer: 5 + m_Name: TMP SubMeshUI [UbuntuMono-R SDF + LiberationSans SDF Atlas] + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1935781036 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935781035} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1101630446} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1935781037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935781035} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 058cba836c1846c3aa1c5fd2e28aea77, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_spriteAsset: {fileID: 0} + m_material: {fileID: 0} + m_sharedMaterial: {fileID: 0} + m_isDefaultMaterial: 0 + m_padding: 8.5625 + m_canvasRenderer: {fileID: 1935781038} + m_TextComponent: {fileID: 1101630448} + m_materialReferenceIndex: 1 +--- !u!222 &1935781038 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1935781035} + m_CullTransparentMesh: 0 --- !u!1 &1938745695 GameObject: m_ObjectHideFlags: 0 @@ -43202,6 +44344,78 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952436143} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1953832407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1953832408} + - component: {fileID: 1953832410} + - component: {fileID: 1953832409} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1953832408 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953832407} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 456371628} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1953832409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953832407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b412943088786454c9bf10b1f7e1e94b, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1953832410 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953832407} + m_CullTransparentMesh: 0 --- !u!1 &1955372718 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/ConsoleController.cs b/Assets/Scripts/ConsoleController.cs new file mode 100644 index 000000000..e5ecbfdd3 --- /dev/null +++ b/Assets/Scripts/ConsoleController.cs @@ -0,0 +1,110 @@ +/// +/// Handles parsing and execution of console commands, as well as collecting log output. +/// +using UnityEngine; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Text; +using UnityEngine.SceneManagement; +using Object = UnityEngine.Object; + +public class ConsoleController +{ + private static ConsoleController instance; + + private ConsoleController() + { + } + + public static ConsoleController Instance + { + get + { + if (instance == null) + { + instance = new ConsoleController(); + } + return instance; + } + } + + #region Event declarations + // Used to communicate with ConsoleView + public delegate void LogChangedHandler(string[] log); + public event LogChangedHandler LogChanged; + + public delegate void VisibilityChangedHandler(bool visible); + public event VisibilityChangedHandler VisibilityChanged; + #endregion + + /// + /// How many log lines should be retained? + /// Note that strings submitted to appendLogLine with embedded newlines will be counted as a single line. + /// + const int ScrollbackSize = 100; + + Queue _scrollback = new Queue(ScrollbackSize); + List _commandHistory = new List(); + + public string[] Log { get; private set; } //Copy of scrollback as an array for easier use by ConsoleView + + public void AppendLogLine(string line) { + //Debug.Log(line); + + if (_scrollback.Count >= ConsoleController.ScrollbackSize) { + _scrollback.Dequeue(); + } + _scrollback.Enqueue(line); + + Log = _scrollback.ToArray(); + if (LogChanged != null) { + LogChanged(Log); + } + } + + public void RunCommandString(string commandString) { + AppendLogLine("$ " + commandString); + + string[] commandSplit = ParseArguments(commandString); + string[] args = {"",""}; + if (commandSplit.Length < 1) { + AppendLogLine(string.Format("Unable to process command '{0}'", commandString)); + return; + + } + if (commandSplit.Length >= 2) { + int numArgs = commandSplit.Length - 1; + args = new string[numArgs]; + Array.Copy(commandSplit, 1, args, 0, numArgs); + } + foreach(var go in Object.FindObjectsOfType().Where(t=>t.parent==null)) + go.gameObject.BroadcastMessageExt(commandSplit[0].ToLower(), args, SendMessageOptions.DontRequireReceiver); + _commandHistory.Add(commandString); + } + + static string[] ParseArguments(string commandString) + { + LinkedList parmChars = new LinkedList(commandString.ToCharArray()); + bool inQuote = false; + var node = parmChars.First; + while (node != null) + { + var next = node.Next; + if (node.Value == '"') { + inQuote = !inQuote; + parmChars.Remove(node); + } + if (!inQuote && node.Value == ' ') { + node.Value = '\n'; + } + node = next; + } + char[] parmCharsArr = new char[parmChars.Count]; + parmChars.CopyTo(parmCharsArr, 0); + return (new string(parmCharsArr)).Split(new char[] {'\n'}, StringSplitOptions.RemoveEmptyEntries); + } +} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs.meta b/Assets/Scripts/ConsoleController.cs.meta similarity index 83% rename from Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs.meta rename to Assets/Scripts/ConsoleController.cs.meta index 0ad21c8a4..7d07ee170 100644 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs.meta +++ b/Assets/Scripts/ConsoleController.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bed8fe5597d81214294894077e52ba2d +guid: 426b2d2dbea4d4d40b069c1ba2f6efb0 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/ConsoleView.cs b/Assets/Scripts/ConsoleView.cs new file mode 100644 index 000000000..2bc2ea152 --- /dev/null +++ b/Assets/Scripts/ConsoleView.cs @@ -0,0 +1,138 @@ +/// +/// Marshals events and data between ConsoleController and uGUI. +/// +using UnityEngine; +using UnityEngine.UI; +using System.Text; +using System.Collections; +using System.Linq; +using TMPro; +using UniRx; + +public class ConsoleView : MonoBehaviour { + bool _didShow = false; + + public GameObject ViewContainer; //Container for console view, should be a child of this GameObject + public TextMeshProUGUI LogTextArea; + public ScrollRect Scroll; + + private string _inputString = ""; + private string[] _log; + public bool AcceptingInput { get; private set; } + + public ConsoleView() + { + AcceptingInput = false; + } + + public bool Visible { get; private set; } + + void Start() + { + //_console = new ConsoleController(); + Application.logMessageReceived += (condition, trace, type) => ConsoleController.Instance.AppendLogLine("" + condition + ""); + + SetVisibility(false); + + ConsoleController.Instance.VisibilityChanged += OnVisibilityChanged; + ConsoleController.Instance.LogChanged += OnLogChanged; + + UpdateLogStr(ConsoleController.Instance.Log); + + // var sizeFitter = GetComponentInChildren().on + } + + ~ConsoleView() { + ConsoleController.Instance.VisibilityChanged -= OnVisibilityChanged; + ConsoleController.Instance.LogChanged -= OnLogChanged; + } + + void Update() { + //Toggle visibility when tilde key pressed + if (Input.GetKeyUp("`")) { + ToggleVisibility(); + } + + if (Visible) + { + string s = Input.inputString; + + if (s.Length > 0) + { + if (s.Contains("\b")) + { + if(_inputString.Length>0) + _inputString = _inputString.Substring(0, _inputString.Length - 1); + } + else + _inputString += s; + DisplayLog(); + } + + if (Input.GetKeyDown(KeyCode.Return)) + { + if (AcceptingInput && _inputString.Length > 0) + { + if(_inputString.StartsWith("!") || _inputString.StartsWith("/")) + ConsoleController.Instance.RunCommandString(_inputString.Substring(1)); + else ConsoleController.Instance.RunCommandString($"say \"{_inputString}\""); + } + AcceptingInput = !AcceptingInput; + _inputString = ""; + DisplayLog(); + } + } + } + + /// + /// Example of a console command. Can be on any behavior but always has lowercase name and string array parameter + /// + /// + void echo(string[] args) + { + if(args.Length>0) + Debug.Log(args.Aggregate((a,b) => a + " " + b)); + } + + void ToggleVisibility() { + SetVisibility(!ViewContainer.activeSelf); + } + + void SetVisibility(bool visible) { + ViewContainer.SetActive(visible); + Visible = visible; + if(visible) + Cursor.lockState = CursorLockMode.None; + } + + void OnVisibilityChanged(bool visible) { + SetVisibility(visible); + } + + void OnLogChanged(string[] newLog) { + UpdateLogStr(newLog); + } + + void UpdateLogStr(string[] newLog) + { + _log = newLog; + DisplayLog(); + } + + void DisplayLog() + { + if (_log == null) + { + LogTextArea.text = ""; + } + else + { + LogTextArea.text = string.Join("\n", _log); + if (AcceptingInput) + LogTextArea.text += "\n\n> " + _inputString; + } + + Observable.NextFrame().Subscribe(_ => Scroll.verticalNormalizedPosition = 0); + } + +} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs.meta b/Assets/Scripts/ConsoleView.cs.meta similarity index 83% rename from Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs.meta rename to Assets/Scripts/ConsoleView.cs.meta index 8ec530018..ec8e1118a 100644 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs.meta +++ b/Assets/Scripts/ConsoleView.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4e98aa53af093bd418646cf9b584d57e +guid: 60214997723e68547b9c784ebda51d9a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Editor/DatabaseView.cs b/Assets/Scripts/Editor/DatabaseView.cs index e7d40601e..4cd242c06 100644 --- a/Assets/Scripts/Editor/DatabaseView.cs +++ b/Assets/Scripts/Editor/DatabaseView.cs @@ -1,22 +1,12 @@ -using System; -using System.Collections; -using System.Collections.Generic; +// TODO: USE THIS EVERYWHERE +using System; using System.IO; using System.Linq; using System.Reflection; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; -using Newtonsoft.Json; using RethinkDb.Driver; using RethinkDb.Driver.Net; -using UniRx; -using Unity.Mathematics; using UnityEditor; using UnityEngine; -using UnityEngine.Serialization; -// TODO: USE THIS EVERYWHERE -using static Unity.Mathematics.math; -using Object = UnityEngine.Object; using static UnityEditor.EditorGUILayout; public class DatabaseListView : EditorWindow @@ -61,7 +51,7 @@ public class DatabaseListView : EditorWindow { // "Get existing open window or if none, make a new one:" says documentation. // But if called after script reloads a second instance will be opened! => Custom singleton required. - DatabaseListView window = EditorWindow.GetWindow(); + DatabaseListView window = GetWindow(); window.titleContent = new GUIContent("DB List"); _instance = window; _instance.InitStyles(); @@ -147,14 +137,22 @@ public class DatabaseListView : EditorWindow // Indicate that we don't accept drags ourselves DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; - using (var h = new EditorGUILayout.HorizontalScope()) + using (var h = new HorizontalScope()) { - _connectionString = EditorGUILayout.TextField(_connectionString); + _connectionString = TextField(_connectionString); if (GUILayout.Button("Connect")) { EditorPrefs.SetString("RethinkDB.URL", _connectionString); _connection = RethinkConnection.RethinkConnect(_databaseCache, _connectionString); } + } + using (var h = new HorizontalScope()) + { + if (GUILayout.Button("Connect All")) + { + EditorPrefs.SetString("RethinkDB.URL", _connectionString); + _connection = RethinkConnection.RethinkConnect(_databaseCache, _connectionString, true, false); + } if (GUILayout.Button("Save")) { @@ -171,19 +169,19 @@ public class DatabaseListView : EditorWindow _inspector.Repaint(); }; - using (var h = new EditorGUILayout.HorizontalScope(ListItemStyle)) + using (var h = new HorizontalScope(ListItemStyle)) { - _itemsFoldout = EditorGUILayout.Foldout(_itemsFoldout, "Items", true); + _itemsFoldout = Foldout(_itemsFoldout, "Items", true); } if (_itemsFoldout) { var items = _databaseCache.AllEntries.Where(item => item is ItemData).Cast().ToArray(); for (var i = 0; i < _itemTypes.Length; i++) { - using (var h = new EditorGUILayout.HorizontalScope(ListItemStyle)) + using (var h = new HorizontalScope(ListItemStyle)) { GUILayout.Space(10); - _gearFoldouts[i] = EditorGUILayout.Foldout(_gearFoldouts[i], + _gearFoldouts[i] = Foldout(_gearFoldouts[i], ((NameAttribute) _itemTypes[i].GetCustomAttribute(typeof(NameAttribute)))?.Name ?? FormatTypeName(_itemTypes[i].Name), true); } @@ -193,7 +191,7 @@ public class DatabaseListView : EditorWindow { var style = ListItemStyle; var selected = SelectedItem == item.ID; - using (var h = new EditorGUILayout.HorizontalScope(selected?SelectedStyle:style)) + using (var h = new HorizontalScope(selected?SelectedStyle:style)) { if (h.rect.Contains(currentEvent.mousePosition)) { @@ -212,13 +210,13 @@ public class DatabaseListView : EditorWindow } } - using (var h = new EditorGUILayout.HorizontalScope(ListItemStyle)) + using (var h = new HorizontalScope(ListItemStyle)) { if(GUI.Button(h.rect, GUIContent.none, GUIStyle.none)) CreateItem(_itemTypes[i]); GUILayout.Space(20); GUILayout.Label("New " + _itemTypes[i].Name); - var rect = EditorGUILayout.GetControlRect(false, GUILayout.Width(EditorGUIUtility.singleLineHeight)); + var rect = GetControlRect(false, GUILayout.Width(EditorGUIUtility.singleLineHeight)); GUI.DrawTexture(rect, Icons.Instance.plus, ScaleMode.StretchToFill, true, 1, LabelColor, 0, 0); } } @@ -228,9 +226,9 @@ public class DatabaseListView : EditorWindow var entries = _databaseCache.AllEntries.Where(item => !(item is ItemData)).ToArray(); for (var i = 0; i < _entryTypes.Length; i++) { - using (var h = new EditorGUILayout.HorizontalScope(ListItemStyle)) + using (var h = new HorizontalScope(ListItemStyle)) { - _entryFoldouts[i] = EditorGUILayout.Foldout(_entryFoldouts[i], + _entryFoldouts[i] = Foldout(_entryFoldouts[i], ((NameAttribute) _entryTypes[i].GetCustomAttribute(typeof(NameAttribute)))?.Name ?? FormatTypeName(_entryTypes[i].Name), true); } @@ -243,7 +241,7 @@ public class DatabaseListView : EditorWindow index++; var style = ListItemStyle; var selected = SelectedItem == entry.ID; - using (var h = new EditorGUILayout.HorizontalScope(selected?SelectedStyle:style)) + using (var h = new HorizontalScope(selected?SelectedStyle:style)) { if (h.rect.Contains(currentEvent.mousePosition)) { @@ -261,13 +259,13 @@ public class DatabaseListView : EditorWindow } } - using (var h = new EditorGUILayout.HorizontalScope(ListItemStyle)) + using (var h = new HorizontalScope(ListItemStyle)) { if(GUI.Button(h.rect, GUIContent.none, GUIStyle.none)) CreateItem(_entryTypes[i]); GUILayout.Space(10); GUILayout.Label("New " + _entryTypes[i].Name); - var rect = EditorGUILayout.GetControlRect(false, GUILayout.Width(EditorGUIUtility.singleLineHeight)); + var rect = GetControlRect(false, GUILayout.Width(EditorGUIUtility.singleLineHeight)); GUI.DrawTexture(rect, Icons.Instance.plus, ScaleMode.StretchToFill, true, 1, LabelColor, 0, 0); } } diff --git a/Assets/Scripts/NIH/Graph#.meta b/Assets/Scripts/NIH/Graph#.meta deleted file mode 100644 index 30916739d..000000000 --- a/Assets/Scripts/NIH/Graph#.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c3951a828808a3141be749fd521d02ac -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms.meta b/Assets/Scripts/NIH/Graph#/Algorithms.meta deleted file mode 100644 index 8527671e5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fe100818283207a418b64e510fcdbbbd -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs deleted file mode 100644 index 9a0b63c55..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using QuickGraph.Algorithms; - -namespace GraphSharp.Algorithms -{ - public abstract class AlgorithmBase : IAlgorithm - { - private volatile object syncRoot = new object(); - private int cancelling; - private volatile ComputationState state = ComputationState.NotRunning; - - public Object SyncRoot - { - get { return syncRoot; } - } - - public ComputationState State - { - get - { - lock ( syncRoot ) - { - return state; - } - } - } - - protected bool IsAborting - { - get { return cancelling > 0; } - } - - public void Compute() - { - BeginComputation(); - InternalCompute(); - EndComputation(); - } - - protected abstract void InternalCompute(); - - public virtual void Abort() - { - bool raise = false; - lock ( syncRoot ) - { - if ( state == ComputationState.Running ) - { - state = ComputationState.PendingAbortion; - System.Threading.Interlocked.Increment( ref cancelling ); - raise = true; - } - } - if ( raise ) - OnStateChanged( EventArgs.Empty ); - } - - public event EventHandler StateChanged; - protected virtual void OnStateChanged( EventArgs e ) - { - EventHandler eh = StateChanged; - if ( eh != null ) - eh( this, e ); - } - - public event EventHandler Started; - protected virtual void OnStarted( EventArgs e ) - { - EventHandler eh = Started; - if ( eh != null ) - eh( this, e ); - } - - public event EventHandler Finished; - protected virtual void OnFinished( EventArgs e ) - { - EventHandler eh = Finished; - if ( eh != null ) - eh( this, e ); - } - - public event EventHandler Aborted; - protected virtual void OnAborted( EventArgs e ) - { - EventHandler eh = Aborted; - if ( eh != null ) - eh( this, e ); - } - - protected void BeginComputation() - { - lock ( syncRoot ) - { - if ( state != ComputationState.NotRunning ) - throw new InvalidOperationException(); - - state = ComputationState.Running; - cancelling = 0; - OnStarted( EventArgs.Empty ); - OnStateChanged( EventArgs.Empty ); - } - } - - protected void EndComputation() - { - lock ( syncRoot ) - { - switch ( state ) - { - case ComputationState.Running: - state = ComputationState.Finished; - OnFinished( EventArgs.Empty ); - break; - case ComputationState.PendingAbortion: - state = ComputationState.Aborted; - OnAborted( EventArgs.Empty ); - break; - default: - throw new InvalidOperationException(); - } - cancelling = 0; - OnStateChanged( EventArgs.Empty ); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs.meta deleted file mode 100644 index 51e2d2b25..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/AlgorithmBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 840c4866f2043954bb4a43316aa0ba23 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting.meta b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting.meta deleted file mode 100644 index 6bbd625d7..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d4af44a1cb169b047b47143756381bfb -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs deleted file mode 100644 index 670cc5656..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingAlgorithmBase.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using QuickGraph.Algorithms; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.EdgeRouting -{ - public abstract class EdgeRoutingAlgorithmBase : AlgorithmBase, IEdgeRoutingAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - protected IDictionary vertexPositions; - - /// - /// Gets or sets the routing points of the edges. - /// - public IDictionary EdgeRoutes - { - get; - private set; - } - - public EdgeRoutingAlgorithmBase(TGraph visitedGraph, IDictionary vertexPositions) - : base(visitedGraph) - { - this.vertexPositions = vertexPositions; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs deleted file mode 100644 index de9a7188d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/EdgeRoutingParameters.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace GraphSharp.Algorithms.EdgeRouting -{ - public class EdgeRoutingParameters : IEdgeRoutingParameters - { - public object Clone() - { - return this.MemberwiseClone(); - } - - protected void NotifyChanged( string propertyName ) - { - if ( PropertyChanged != null ) - PropertyChanged( this, new System.ComponentModel.PropertyChangedEventArgs( propertyName ) ); - } - - public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs deleted file mode 100644 index 8eaeca9e1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; -using QuickGraph.Algorithms; -using QuickGraph; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.EdgeRouting -{ - public interface IEdgeRoutingAlgorithm : IAlgorithm - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - IDictionary EdgeRoutes { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs deleted file mode 100644 index c50810cd9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; -using GraphSharp.Algorithms.Layout; -using QuickGraph; - -namespace GraphSharp.Algorithms.EdgeRouting -{ - public interface IEdgeRoutingAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - /// - /// List of the available algorithms. - /// - IEnumerable AlgorithmTypes { get; } - - IEdgeRoutingAlgorithm CreateAlgorithm( string newAlgorithmType, ILayoutContext context, IEdgeRoutingParameters parameters); - - IEdgeRoutingParameters CreateParameters( string algorithmType, IEdgeRoutingParameters oldParameters ); - - bool IsValidAlgorithm( string algorithmType ); - - string GetAlgorithmType( IEdgeRoutingAlgorithm algorithm ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs.meta deleted file mode 100644 index 58bf09d46..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b27d7d08f55d06241aafc2dd2043377d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs deleted file mode 100644 index 4aaf0e741..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace GraphSharp.Algorithms.EdgeRouting -{ - public interface IEdgeRoutingParameters : IAlgorithmParameters - { - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs.meta deleted file mode 100644 index 69a770489..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5ac77f8617e945740be2953866a9af7d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs deleted file mode 100644 index 617dd91ee..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Collections.Generic; -using GraphSharp.Algorithms.Layout; -using System.Linq; -using QuickGraph; - -namespace GraphSharp.Algorithms.EdgeRouting -{ - public class StandardEdgeRoutingAlgorithmFactory : IEdgeRoutingAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - protected static readonly string[] algorithmTypes = new string[] { }; - public IEnumerable AlgorithmTypes - { - get { return algorithmTypes; } - } - - public IEdgeRoutingAlgorithm CreateAlgorithm( string newAlgorithmType, ILayoutContext context, IEdgeRoutingParameters parameters ) - { - return null; - } - - public IEdgeRoutingParameters CreateParameters( string algorithmType, IEdgeRoutingParameters oldParameters ) - { - return null; - } - - public bool IsValidAlgorithm( string algorithmType ) - { - return AlgorithmTypes.Any( at => at == algorithmType ); - } - - public string GetAlgorithmType( IEdgeRoutingAlgorithm algorithm ) - { - return string.Empty; - } - - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs.meta deleted file mode 100644 index 68bd55e77..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/StandardEdgeRoutingAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 42cb3c373dd36714799b300b45df721b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs b/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs deleted file mode 100644 index 43c99e5ed..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using GraphSharp.Algorithms.Layout; - -namespace GraphSharp.Algorithms -{ - public static class FactoryHelper - { - public static TParam CreateNewParameter(this ILayoutParameters oldParameters) - where TParam : class,ILayoutParameters,new() - { - return !(oldParameters is TParam) - ? new TParam() : - (TParam)(oldParameters as TParam).Clone(); - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs.meta deleted file mode 100644 index 81af6c125..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/FactoryHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6c7fcd3c9e6c0d54384f7de657ba87d2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight.meta deleted file mode 100644 index 54d559fd0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6fd45e73b2ed38a44a5a653234eb266c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs deleted file mode 100644 index 08ffc1479..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.ComponentModel; -using System.Diagnostics.Contracts; -using QuickGraph; -using System.Diagnostics; - -namespace GraphSharp.Algorithms.Highlight -{ - public abstract class HighlightAlgorithmBase : IHighlightAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - where TParameters : class, IHighlightParameters - { - public IHighlightController Controller { get; private set; } - - IHighlightParameters IHighlightAlgorithm.Parameters - { - get { return Parameters; } - } - - public TParameters Parameters { get; private set; } - - protected HighlightAlgorithmBase( - IHighlightController controller, - IHighlightParameters parameters ) - { - Controller = controller; - TrySetParameters( parameters ); - } - - public abstract void ResetHighlight(); - public abstract bool OnVertexHighlighting( TVertex vertex ); - public abstract bool OnVertexHighlightRemoving( TVertex vertex ); - public abstract bool OnEdgeHighlighting( TEdge edge ); - public abstract bool OnEdgeHighlightRemoving( TEdge edge ); - - public bool IsParametersSettable( IHighlightParameters parameters ) - { - return parameters != null && parameters is TParameters; - } - - public bool TrySetParameters( IHighlightParameters parameters ) - { - if ( IsParametersSettable( parameters ) ) - { - if ( Parameters != null ) - Parameters.PropertyChanged -= OnParameterPropertyChanged; - Parameters = (TParameters)parameters; - if ( Parameters != null ) - Parameters.PropertyChanged += OnParameterPropertyChanged; - return true; - } - return false; - } - - protected virtual void OnParametersChanged() - { - this.ResetHighlight(); - } - - private void OnParameterPropertyChanged( object sender, PropertyChangedEventArgs e ) - { - OnParametersChanged(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs.meta deleted file mode 100644 index 8c8a266df..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightAlgorithmBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: de0a87e59efe95a44a7c95625f1584af -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs deleted file mode 100644 index 5e148e1ac..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs +++ /dev/null @@ -1,20 +0,0 @@ -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public class HighlightContext : IHighlightContext - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - public TGraph Graph - { - get; private set; - } - - public HighlightContext(TGraph graph) - { - this.Graph = graph; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs.meta deleted file mode 100644 index 60f754a0d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2480fc7369694ef4e9506685b8902650 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs deleted file mode 100644 index 85e32aaa4..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.ComponentModel; - -namespace GraphSharp.Algorithms.Highlight -{ - public class HighlightParameterBase : IHighlightParameters - { - #region ICloneable Members - - public object Clone() - { - return MemberwiseClone(); - } - - #endregion - - #region INotifyPropertyChanged Members - - public event PropertyChangedEventHandler PropertyChanged; - - protected void OnPropertyChanged( string propertyName ) - { - if ( PropertyChanged != null ) - PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) ); - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs.meta deleted file mode 100644 index 923e9e3f4..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/HighlightParameterBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 975eca90cc758be4886238e860c8edbc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs deleted file mode 100644 index 838deb499..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs +++ /dev/null @@ -1,25 +0,0 @@ -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public interface IHighlightAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - IHighlightParameters Parameters { get; } - - /// - /// Reset the whole highlight. - /// - void ResetHighlight(); - - bool OnVertexHighlighting( TVertex vertex ); - bool OnVertexHighlightRemoving( TVertex vertex ); - bool OnEdgeHighlighting( TEdge edge ); - bool OnEdgeHighlightRemoving( TEdge edge ); - - bool IsParametersSettable(IHighlightParameters parameters); - bool TrySetParameters(IHighlightParameters parameters); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs.meta deleted file mode 100644 index 3a2ce02c4..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2c8c1786bae9007498205dc11952ffb9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs deleted file mode 100644 index df53fb1bb..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public interface IHighlightAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - IEnumerable HighlightModes { get; } - bool IsValidMode( string mode ); - - IHighlightAlgorithm CreateAlgorithm( - string highlightMode, - IHighlightContext context, - IHighlightController controller, - IHighlightParameters parameters ); - - IHighlightParameters CreateParameters( string highlightMode, IHighlightParameters oldParameters ); - - string GetHighlightMode( IHighlightAlgorithm algorithm ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs.meta deleted file mode 100644 index dadd97cc2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7544860789ab4cd42aef36c403689688 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs deleted file mode 100644 index c819d20bd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs +++ /dev/null @@ -1,11 +0,0 @@ -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public interface IHighlightContext - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - TGraph Graph { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs.meta deleted file mode 100644 index 82a6643e7..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 79156d864172f444695ab27099ac9be9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs deleted file mode 100644 index d4e4d21ae..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public interface IHighlightController - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - TGraph Graph { get; } - - IEnumerable HighlightedVertices { get; } - IEnumerable SemiHighlightedVertices { get; } - IEnumerable HighlightedEdges { get; } - IEnumerable SemiHighlightedEdges { get; } - - bool IsHighlightedVertex( TVertex vertex ); - bool IsHighlightedVertex( TVertex vertex, out object highlightInfo ); - bool IsSemiHighlightedVertex( TVertex vertex ); - bool IsSemiHighlightedVertex( TVertex vertex, out object semiHighlightInfo ); - bool IsHighlightedEdge( TEdge edge ); - bool IsHighlightedEdge( TEdge edge, out object highlightInfo ); - bool IsSemiHighlightedEdge( TEdge edge ); - bool IsSemiHighlightedEdge( TEdge edge, out object semiHighlightInfo ); - - void HighlightVertex( TVertex vertex, object highlightInfo ); - void SemiHighlightVertex( TVertex vertex, object semiHighlightInfo ); - void HighlightEdge( TEdge edge, object highlightInfo ); - void SemiHighlightEdge( TEdge edge, object semiHighlightInfo ); - - void RemoveHighlightFromVertex( TVertex vertex ); - void RemoveSemiHighlightFromVertex( TVertex vertex ); - void RemoveHighlightFromEdge( TEdge edge ); - void RemoveSemiHighlightFromEdge( TEdge edge ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs.meta deleted file mode 100644 index 00b2b6588..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightController.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e0e4a052750ba434d9e7b47f41254ebc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs deleted file mode 100644 index 96fa35f52..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.ComponentModel; - -namespace GraphSharp.Algorithms.Highlight -{ - public interface IHighlightParameters : ICloneable, INotifyPropertyChanged - { - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs.meta deleted file mode 100644 index 078e7ee61..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/IHighlightParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 74d481da9efa96c4f835885ef71fb92f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs deleted file mode 100644 index 0a25fc974..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs +++ /dev/null @@ -1,105 +0,0 @@ -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public class SimpleHighlightAlgorithm : HighlightAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - public SimpleHighlightAlgorithm( - IHighlightController controller, - IHighlightParameters parameters ) - : base( controller, parameters ) - { - } - - private void ClearSemiHighlights() - { - foreach ( var vertex in Controller.SemiHighlightedVertices ) - Controller.RemoveSemiHighlightFromVertex( vertex ); - - foreach ( var edge in Controller.SemiHighlightedEdges ) - Controller.RemoveSemiHighlightFromEdge( edge ); - } - - private void ClearAllHighlights() - { - ClearSemiHighlights(); - - foreach ( var vertex in Controller.HighlightedVertices ) - Controller.RemoveHighlightFromVertex( vertex ); - - foreach ( var edge in Controller.HighlightedEdges ) - Controller.RemoveHighlightFromEdge( edge ); - } - - /// - /// Resets the semi-highlights according to the actually - /// highlighted vertices/edges. - /// - /// This method should be called if the graph changed, - /// or the highlights should be resetted. - /// - public override void ResetHighlight() - { - ClearAllHighlights(); - } - - public override bool OnVertexHighlighting( TVertex vertex ) - { - ClearAllHighlights(); - - if ( vertex == null || !Controller.Graph.ContainsVertex( vertex ) ) - return false; - - //semi-highlight the in-edges, and the neighbours on their other side - foreach ( var edge in Controller.Graph.InEdges( vertex ) ) - { - Controller.SemiHighlightEdge( edge, "InEdge" ); - if ( edge.Source == vertex || Controller.IsHighlightedVertex( edge.Source ) ) - continue; - - Controller.SemiHighlightVertex( edge.Source, "Source" ); - } - - //semi-highlight the out-edges - foreach ( var edge in Controller.Graph.OutEdges( vertex ) ) - { - Controller.SemiHighlightEdge( edge, "OutEdge" ); - if ( edge.Target == vertex || Controller.IsHighlightedVertex( edge.Target ) ) - continue; - - Controller.SemiHighlightVertex( edge.Target, "Target" ); - } - Controller.HighlightVertex( vertex, "None" ); - return true; - } - - public override bool OnVertexHighlightRemoving( TVertex vertex ) - { - ClearAllHighlights(); - return true; - } - - public override bool OnEdgeHighlighting( TEdge edge ) - { - ClearAllHighlights(); - - //highlight the source and the target - if ( Equals( edge, default( TEdge ) ) || !Controller.Graph.ContainsEdge( edge ) ) - return false; - - Controller.HighlightEdge( edge, null ); - Controller.SemiHighlightVertex( edge.Source, "Source" ); - Controller.SemiHighlightVertex( edge.Target, "Target" ); - return true; - } - - public override bool OnEdgeHighlightRemoving( TEdge edge ) - { - ClearAllHighlights(); - return true; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs.meta deleted file mode 100644 index 30e2b8de7..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/SimpleHighlightAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 707756178922bf343bb53c545a66f6d0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs deleted file mode 100644 index d060774f1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using QuickGraph; - -namespace GraphSharp.Algorithms.Highlight -{ - public class StandardHighlightAlgorithmFactory : IHighlightAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - private static readonly string[] highlightModes = { "Simple" }; - - public IEnumerable HighlightModes - { - get { return highlightModes; } - } - - public bool IsValidMode( string mode ) - { - return string.IsNullOrEmpty( mode ) || highlightModes.Contains( mode ); - } - - public IHighlightAlgorithm CreateAlgorithm( - string highlightMode, - IHighlightContext context, - IHighlightController controller, - IHighlightParameters parameters ) - { - switch (highlightMode) - { - case "Simple": - return new SimpleHighlightAlgorithm(controller, parameters); - default: - return null; - } - } - - public IHighlightParameters CreateParameters( string highlightMode, IHighlightParameters oldParameters ) - { - switch (highlightMode) - { - case "Simple": - return new HighlightParameterBase(); - default: - return new HighlightParameterBase(); - } - } - - public string GetHighlightMode( IHighlightAlgorithm algorithm ) - { - if ( algorithm is SimpleHighlightAlgorithm ) - return "Simple"; - - return null; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs.meta deleted file mode 100644 index 21f18c5f4..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Highlight/StandardHighlightAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ad9f5a34732fe36489821652974bddb8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs deleted file mode 100644 index 31dd0f105..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using QuickGraph.Algorithms; - -namespace GraphSharp.Algorithms -{ - /// - /// Simple algorithm interface which is not connected to any graph. - /// - public interface IAlgorithm - { - object SyncRoot { get;} - ComputationState State { get;} - - void Compute(); - void Abort(); - - event EventHandler StateChanged; - event EventHandler Started; - event EventHandler Finished; - event EventHandler Aborted; - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs.meta deleted file mode 100644 index 4b0ce4972..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6fe4b9a345a86a244a6c195309a2aa59 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs deleted file mode 100644 index e82d44ba2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; -using System.ComponentModel; - -namespace GraphSharp.Algorithms -{ - public interface IAlgorithmParameters : ICloneable, INotifyPropertyChanged - { - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs.meta deleted file mode 100644 index 0b0431caf..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/IAlgorithmParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 863e1d8f88a040944aa87054331199cb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs deleted file mode 100644 index f9ec8c0b0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using QuickGraph; -using QuickGraph.Algorithms; - -namespace GraphSharp.Algorithms -{ - public class LayeredTopologicalSortAlgorithm : AlgorithmBase> - where TEdge : IEdge - { - #region Private values - private readonly IDictionary layerIndices = new Dictionary(); //the index of the layer where the vertex belongs to - private readonly List> layers = new List>(); //the list of the vertices in the layers - private int layer; //gives the index of the actual layer - private readonly IMutableBidirectionalGraph tmpGraph; - #endregion - - #region Properties - /// - /// This dictionary contains the layer-index for every vertices. - /// - public IDictionary LayerIndices - { - get { return layerIndices; } - } - - /// - /// The count of the layers in the graph. - /// - public int LayerCount - { - get { return layer; } - } - - /// - /// The vertices grouped by their LayerIndex. - /// - public IList> Layers - { - get { return layers; } - } - #endregion - - public delegate void LayerFinishedDelegate( object sender, LayeredTopologicalSortEventArgs e ); - public event LayerFinishedDelegate LayerFinished; - - public LayeredTopologicalSortAlgorithm( IVertexAndEdgeListGraph g ) - : base( g ) - { - tmpGraph = new BidirectionalGraph(); - - //create a copy from the graph - tmpGraph.AddVertexRange( g.Vertices ); - foreach ( var e in g.Edges ) - tmpGraph.AddEdge( e ); - } - - protected override void InternalCompute() - { - //initializing the sources - var sources = GetSources( tmpGraph.Vertices ); - - //initializing the candidates (candidate for 'source' of the next layer) - var newSources = new HashSet(); - - for ( layer = 0; sources.Count != 0; layer++ ) - { - foreach ( var s in sources ) - { - layerIndices[s] = layer; - - //get the neighbours of this source - var outNeighbours = tmpGraph.GetOutNeighbours( s ); - - //remove this source - tmpGraph.RemoveVertex( s ); - - //check if any of the neighbours became a source - foreach ( var n in outNeighbours ) - if ( tmpGraph.IsInEdgesEmpty( n ) ) - newSources.Add( n ); - } - - //the actual layer have been finished - layers.Add( sources ); - OnLayerFinished( new LayeredTopologicalSortEventArgs - { - LayerIndex = layer, - Vertices = sources - } ); - - //prepare for the next layer - sources = newSources.ToList(); - newSources = new HashSet(); - } - - - //if the graph is not empty, it's a problem - if ( !tmpGraph.IsVerticesEmpty ) - throw new NonAcyclicGraphException(); - } - - protected IList GetSources( IEnumerable vertices ) - { - return ( from v in vertices - where tmpGraph.IsInEdgesEmpty( v ) - select v ).ToList(); - } - - protected void OnLayerFinished( LayeredTopologicalSortEventArgs args ) - { - if ( LayerFinished != null ) - LayerFinished( this, args ); - } - - public class LayeredTopologicalSortEventArgs : EventArgs - { - public int LayerIndex { get; internal set; } - public IEnumerable Vertices { get; internal set; } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs.meta deleted file mode 100644 index 8309bb8e8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/LayeredTopologicalSortAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: dd2e54ae549170842bbac94cfcd0194a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout.meta deleted file mode 100644 index e503cead8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b346539380c38444aa42035501f20594 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound.meta deleted file mode 100644 index 011303d06..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 59b531dac7b0fc440b9946b386c0dda4 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs deleted file mode 100644 index 9b601133a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Windows; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public class CompoundLayoutContext - : LayoutContext, ICompoundLayoutContext - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - public CompoundLayoutContext( - TGraph graph, - IDictionary positions, - IDictionary sizes, - LayoutMode mode, - // IDictionary vertexBorders, - IDictionary layoutTypes) - : base( graph, positions, sizes, mode ) - { - // VertexBorders = vertexBorders; - LayoutTypes = layoutTypes; - } - - // public IDictionary VertexBorders { get; private set; } - public IDictionary LayoutTypes { get; private set; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs.meta deleted file mode 100644 index b42522a6e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 01aaa31a669873342a18865ecea141e3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs deleted file mode 100644 index cab6f5f2b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public class CompoundLayoutIterationEventArgs - : LayoutIterationEventArgs, ICompoundLayoutIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - public CompoundLayoutIterationEventArgs( - int iteration, - double statusInPercent, - string message, - IDictionary vertexPositions, - IDictionary innerCanvasSizes) - : base(iteration, statusInPercent, message, vertexPositions) - { - InnerCanvasSizes = innerCanvasSizes; - } - - #region ICompoundLayoutIterationEventArgs Members - - public IDictionary InnerCanvasSizes - { - get; private set; - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs.meta deleted file mode 100644 index 12abb738a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundLayoutIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f2dc57d0a594b9741b197804e5c3cf47 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs deleted file mode 100644 index ecaffb80a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Compound -{ - public enum CompoundVertexInnerLayoutType - { - Automatic, - ContextFree, - Contextual, - Fixed - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs.meta deleted file mode 100644 index 0a5822a88..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/CompoundVertexInnerLayoutType.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4587271fd90cae24e84685cdb311dc7b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP.meta deleted file mode 100644 index 48eaa8181..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 751b64aba9e41e34cbcc3f2f0832f02e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs deleted file mode 100644 index 55ce3d659..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs +++ /dev/null @@ -1,475 +0,0 @@ -using System; -using System.Diagnostics.Contracts; -using System.Windows; -using System.Linq; -using QuickGraph; -using System.Collections.Generic; -using System.Collections; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound.FDP -{ - public partial class CompoundFDPLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - /// - /// Informations for compound vertices. - /// - private readonly IDictionary _compoundVertexDatas = - new Dictionary(); - - /// - /// Informations for the simple vertices. - /// - private readonly IDictionary _simpleVertexDatas = - new Dictionary(); - - /// - /// Informations for all kind of vertices. - /// - private readonly IDictionary _vertexDatas = - new Dictionary(); - - /// - /// The levels of the graph (generated by the containment associations). - /// - private readonly IList> _levels = - new List>(); - - public IList> Levels - { - get { return _levels; } - } - - private class RemovedTreeNodeData - { - public readonly TVertex1 Vertex; - public readonly TEdge1 Edge; - - public RemovedTreeNodeData(TVertex1 vertex, TEdge1 edge) - { - Vertex = vertex; - Edge = edge; - } - } - - /// - /// The list of the removed root-tree-nodes and edges by it's level - /// (level = distance from the closest not removed node). - /// - private readonly Stack>> _removedRootTreeNodeLevels = - new Stack>>(); - - private readonly HashSet _removedRootTreeNodes = - new HashSet(); - - private readonly HashSet _removedRootTreeEdges = - new HashSet(); - - /// - /// Temporary dictionary for the inner canvas sizes (do not depend on this!!! inside - /// the algorithm, use the vertexData objects instead). - /// - private IDictionary _innerCanvasSizes; - - /// - /// The dictionary of the initial vertex sizes. - /// DO NOT USE IT AFTER THE INITIALIZATION. - /// - private readonly IDictionary _vertexSizes; - - /// - /// The dictionary of the vertex bordex. - /// DO NOT USE IT AFTER THE INITIALIZATION. - /// - // private readonly IDictionary _vertexBorders; - - /// - /// The dictionary of the layout types of the compound vertices. - /// DO NOT USE IT AFTER THE INITIALIZATION. - /// - private readonly IDictionary _layoutTypes; - - private readonly IMutableCompoundGraph _compoundGraph; - - /// - /// Represents the root vertex. - /// - private readonly CompoundVertexData _rootCompoundVertex = - new CompoundVertexData( - null, null, false, new float2(), - new float2(), //new Thickness(), - CompoundVertexInnerLayoutType.Automatic); - - #region Constructors - public CompoundFDPLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexSizes, - // IDictionary vertexBorders, - IDictionary layoutTypes) - : this(visitedGraph, vertexSizes, /*vertexBorders,*/ layoutTypes, null, null) - { - } - - public CompoundFDPLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexSizes, - // IDictionary vertexBorders, - IDictionary layoutTypes, - IDictionary vertexPositions, - CompoundFDPLayoutParameters oldParameters) - : base(visitedGraph, vertexPositions, oldParameters) - { - _vertexSizes = vertexSizes; - //_vertexBorders = vertexBorders; - _layoutTypes = layoutTypes; - - if (VisitedGraph is ICompoundGraph) - _compoundGraph = new CompoundGraph(VisitedGraph as ICompoundGraph); - else - _compoundGraph = new CompoundGraph(VisitedGraph); - } - #endregion - - public int LevelOfVertex(TVertex vertex) - { - return _vertexDatas[vertex].Level; - } - - #region ICompoundLayoutAlgorithm Members - - public IDictionary InnerCanvasSizes - { - get - { - return _compoundVertexDatas.ToDictionary( - kvp => kvp.Key, - kvp => kvp.Value.InnerCanvasSize); - } - } - - #endregion - - #region Nested type: CompoundVertexData - - /// - /// Data for the compound vertices. - /// - private class CompoundVertexData : VertexData - { - /// - /// The thickness of the borders of the compound vertex. - /// - // public readonly Thickness Borders; - - /// - /// Gets the layout type of the compound vertex. - /// - public readonly CompoundVertexInnerLayoutType InnerVertexLayoutType; - - private float2 _innerCanvasSize; - - private float2 _size; - - private ICollection _children; - - public CompoundVertexData(TVertex vertex, - VertexData movableParent, - bool isFixedToParent, - float2 position, - float2 size, - // Thickness borders, - CompoundVertexInnerLayoutType innerVertexLayoutType) - : base(vertex, movableParent, isFixedToParent, position) - { - //Borders = borders; - - //calculate the size of the inner canvas - InnerCanvasSize = new float2(max(0.0f, size.x),// - Borders.Left - Borders.Right - max(0.0f, size.y));// - Borders.Top - Borders.Bottom - InnerVertexLayoutType = innerVertexLayoutType; - } - - /// - /// The size of the inner canvas of the compound vertex. - /// - public float2 InnerCanvasSize - { - get { return _innerCanvasSize; } - set - { - _innerCanvasSize = value; - - //set the size of the canvas - _size = new float2(_innerCanvasSize.x,// + Borders.Left + Borders.Right, - _innerCanvasSize.y); //+ Borders.Top + Borders.Bottom - } - } - - /// - /// The overall size of the vertex (inner canvas size + borders + ...). - /// - public override float2 Size - { - get { return _size; } - } - - /// - /// Modifies the position of the children with the given - /// vector. - /// - /// The vector of the position modification. - private void PropogateToChildren(float2 force) - { - foreach (var child in _children) - { - child.ApplyForce(force); - } - } - - public ICollection Children - { - get { return _children; } - set - { - _children = value; - } - } - - internal override void ApplyForce(float2 force) - { - Position += force; - PropogateToChildren(force); - RecalculateBounds(); - } - - public float2 InnerCanvasCenter - { - get - { - return new float2( - Position.x - Size.x / 2 + /*Borders.Left +*/ InnerCanvasSize.x / 2, - Position.y - Size.y / 2 + /*Borders.Top +*/ InnerCanvasSize.y / 2 - ); - } - set - { - Position = new float2( - value.x - InnerCanvasSize.x / 2 /*- Borders.Left*/ + Size.x / 2, - value.y - InnerCanvasSize.y / 2 /*- Borders.Top*/ + Size.y / 2 - ); - } - } - - public void RecalculateBounds() - { - if (_children == null) - { - InnerCanvasSize = new float2(); //TODO padding - return; - } - - float2 topLeft = new float2(float.PositiveInfinity, float.PositiveInfinity); - float2 bottomRight = new float2(float.NegativeInfinity, float.NegativeInfinity); - foreach (var child in _children) - { - topLeft.x = Math.Min(topLeft.x, child.Position.x - child.Size.x / 2); - topLeft.y = Math.Min(topLeft.y, child.Position.y - child.Size.y / 2); - - bottomRight.x = Math.Max(bottomRight.x, child.Position.x + child.Size.x / 2); - bottomRight.y = Math.Max(bottomRight.y, child.Position.y + child.Size.y / 2); - } - InnerCanvasSize = new float2(bottomRight.y - topLeft.y, bottomRight.y - topLeft.y); - InnerCanvasCenter = new float2((topLeft.x + bottomRight.x) / 2.0f, (topLeft.y + bottomRight.y) / 2.0f); - } - } - - #endregion - - #region Nested type: SimpleVertexData - - private class SimpleVertexData : VertexData - { - /// - /// The size of the vertex. - /// - private readonly float2 _size; - - public SimpleVertexData(TVertex vertex, VertexData movableParent, bool isFixed, float2 position, float2 size) - : base(vertex, movableParent, isFixed, position) - { - _size = size; - } - - /// - /// Gets the actual size of the vertex (inner size + border + anything else...). - /// - public override float2 Size - { - get { return _size; } - } - - internal override void ApplyForce(float2 force) - { - Position += force; - } - } - - #endregion - - #region Nested type: VertexData - - /// - /// Data for the simple vertices. - /// - private abstract class VertexData - { - /// - /// Gets the vertex which is wrapped by this object. - /// - public readonly TVertex Vertex; - public CompoundVertexData Parent; - private float2 _springForce; - private float2 _repulsionForce; - private float2 _gravitationForce; - private float2 _applicationForce; - private float2 _previousForce; - private float2 _childrenForce; - protected VertexData _movableParent; - - protected VertexData(TVertex vertex, VertexData movableParent, bool isFixedToParent, float2 position) - { - Vertex = vertex; - MovableParent = movableParent; - IsFixedToParent = isFixedToParent; - Parent = null; - Position = position; - } - - /// - /// If the vertex is fixed (cannot be moved), that's it's parent - /// that could be moved (if there's any). - /// - /// This property can only be set once. - /// - public VertexData MovableParent - { - get { return _movableParent; } - set - { - _movableParent = value; - } - } - - /// - /// Gets or sets that the position of the vertex is fixed to - /// it's parent vertex or not. - /// - public bool IsFixedToParent { get; set; } - - /// - /// Gets the actual size of the vertex (inner size + border + anything else...). - /// - public abstract float2 Size { get; } - - /// - /// The level of the vertex inside the graph. - /// - public int Level; - - /// - /// The position of the vertex. - /// - public float2 Position; - - /// - /// Gets or sets the spring force. - /// - public float2 SpringForce - { - get { return IsFixedToParent ? new float2() : _springForce; } - set - { - if (IsFixedToParent) - _springForce = new float2(); - else _springForce = value; - } - } - - /// - /// Gets or sets the spring force. - /// - public float2 RepulsionForce - { - get { return IsFixedToParent ? new float2() : _repulsionForce; } - set - { - if (IsFixedToParent) - _repulsionForce = new float2(); - else _repulsionForce = value; - } - } - - /// - /// Gets or sets the spring force. - /// - public float2 GravitationForce - { - get { return IsFixedToParent ? new float2() : _gravitationForce; } - set - { - if (IsFixedToParent) - _gravitationForce = new float2(); - else _gravitationForce = value; - } - } - - /// - /// Gets or sets the spring force. - /// - public float2 ApplicationForce - { - get { return IsFixedToParent ? new float2() : _applicationForce; } - set - { - if (IsFixedToParent) - _applicationForce = new float2(); - else _applicationForce = value; - } - } - - internal abstract void ApplyForce(float2 force); - public float2 ApplyForce(float limit) - { - var force = _springForce - + _repulsionForce - + _gravitationForce - + _applicationForce - + 0.5f * _childrenForce; - - Parent._childrenForce += force; - - if (length(force) > limit) - force *= limit / length(force); - force += 0.7f * _previousForce; - if (length(force) > limit) - force *= limit / length(force); - - ApplyForce(force); - _springForce = new float2(); - _repulsionForce = new float2(); - _gravitationForce = new float2(); - _applicationForce = new float2(); - _childrenForce = new float2(); - - _previousForce = force; - return force; - } - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs.meta deleted file mode 100644 index 75ec4296f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Data.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 04f6319aebf16be48b7d36d70101d150 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs deleted file mode 100644 index 62d54c00b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs +++ /dev/null @@ -1,278 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Windows; -using QuickGraph; -using System; -using System.Diagnostics.Contracts; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound.FDP -{ - public partial class CompoundFDPLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - private static void RemoveAll(ICollection set, IEnumerable elements) - { - foreach (var e in elements) - { - set.Remove(e); - } - } - - /// - /// - /// - /// Initializes the algorithm, and the following things: - /// - /// the nodes sizes (of the compound vertices) - /// the thresholds for the convergence - /// random initial positions (if the position is not null) - /// remove the 'tree-nodes' from the root graph (level 0) - /// - /// - /// The dictionary of the inner canvas sizes - /// of the compound vertices. - /// The dictionary of the border thickness of - /// the compound vertices. - /// The dictionary of the layout types of - /// the compound vertices. - private void Init(IDictionary vertexSizes, /*IDictionary vertexBorders, */IDictionary layoutTypes) - { - InitializeWithRandomPositions(100, 100); - - var movableParentUpdateQueue = new Queue(); - _rootCompoundVertex.Children = new HashSet(); - - InitialLevels(); - - InitSimpleVertices(vertexSizes); - InitCompoundVertices(/*vertexBorders, */vertexSizes, layoutTypes, /*out*/ movableParentUpdateQueue); - - SetLevelIndices(); - - //TODO do we need this? - InitMovableParentOfFixedVertices(movableParentUpdateQueue); - - RemoveTreeNodesFromRootGraph(); - - InitGravitationMagnitude(); - } - - private void InitGravitationMagnitude() - { - //get the average width and height - float sumWidth = 0, sumHeight = 0; - foreach (var vertex in _levels[0]) - { - var v = _vertexDatas[vertex]; - sumWidth += v.Size.x; - sumHeight += v.Size.y; - } - if (_levels[0].Count > 0) - _gravityForceMagnitude = min(sumWidth, sumHeight) / _levels[0].Count; - } - - private void RemoveTreeNodesFromRootGraph() - { - bool removed = true; - for (int i = 0; removed; i++) - { - removed = false; - foreach (var vertex in _levels[0]) - { - if (_compoundGraph.Degree(vertex) != 1 || _compoundGraph.IsCompoundVertex(vertex)) - continue; - - TEdge edge = default(TEdge); - if (_compoundGraph.InDegree(vertex) > 0) - edge = _compoundGraph.InEdge(vertex, 0); - else - edge = _compoundGraph.OutEdge(vertex, 0); - if (_removedRootTreeEdges.Contains(edge)) - continue; - - //the vertex is a leaf tree node - removed = true; - while (_removedRootTreeNodeLevels.Count <= i) - _removedRootTreeNodeLevels.Push(new List>()); - - //add to the removed vertices - _removedRootTreeNodeLevels.Peek().Add(new RemovedTreeNodeData(vertex, edge)); - _removedRootTreeNodes.Add(vertex); - _removedRootTreeEdges.Add(edge); - } - - if (removed && _removedRootTreeNodeLevels.Count > 0) - //remove from the level - foreach (var tnd in _removedRootTreeNodeLevels.Peek()) - { - _levels[0].Remove(tnd.Vertex); - - //remove the vertex from the graph - _compoundGraph.RemoveEdge(tnd.Edge); - _compoundGraph.RemoveVertex(tnd.Vertex); - } - } - } - - private void InitMovableParentOfFixedVertices(Queue movableParentUpdateQueue) - { - while (movableParentUpdateQueue.Count > 0) - { - //geth the compound vertex with the fixed layout - var fixedLayoutedCompoundVertex = movableParentUpdateQueue.Dequeue(); - - //find the not fixed predecessor - TVertex movableVertex = fixedLayoutedCompoundVertex; - for (; ; ) - { - //if the vertex hasn't parent - if (movableVertex == null) - break; - - TVertex parent = _compoundGraph.GetParent(movableVertex); - if (parent == null) - break; - - //if the parent's layout type is fixed - if (_compoundVertexDatas[parent].InnerVertexLayoutType != CompoundVertexInnerLayoutType.Fixed) - break; - - movableVertex = parent; - } - //the movable vertex is the ancestor of the children of the vertex - //that could be moved - - //fix the child vertices and set the movable parent - foreach (var childVertex in _compoundGraph.GetChildrenVertices(fixedLayoutedCompoundVertex)) - { - var data = _vertexDatas[childVertex]; - data.IsFixedToParent = true; - data.MovableParent = _vertexDatas[movableVertex]; - } - } - } - - /// - /// Initializes the data of the simple vertices. - /// - /// Dictionary of the vertex sizes. - private void InitSimpleVertices(IDictionary vertexSizes) - { - foreach (var vertex in _compoundGraph.SimpleVertices) - { - float2 vertexSize; - vertexSizes.TryGetValue(vertex, out vertexSize); - - var position = new float2(); - VertexPositions.TryGetValue(vertex, out position); - - //create the information container for this simple vertex - var dataContainer = new SimpleVertexData(vertex, _rootCompoundVertex, false, position, vertexSize); - dataContainer.Parent = _rootCompoundVertex; - _simpleVertexDatas[vertex] = dataContainer; - _vertexDatas[vertex] = dataContainer; - _rootCompoundVertex.Children.Add(dataContainer); - } - } - - /// - /// Initializes the data of the compound vertices. - /// - /// Dictionary of the border thicknesses. - /// Dictionary of the vertex sizes. - /// Dictionary of the layout types. - /// The compound vertices with fixed layout - /// should be added to this queue. - private void InitCompoundVertices( - //IDictionary vertexBorders, - IDictionary vertexSizes, - IDictionary layoutTypes, - Queue movableParentUpdateQueue) - { - for (int i = _levels.Count - 1; i >= 0; i--) - { - foreach (var vertex in _levels[i]) - { - if (!_compoundGraph.IsCompoundVertex(vertex)) - continue; - - //get the data of the vertex - // Thickness border; - // vertexBorders.TryGetValue(vertex, out border); - - float2 vertexSize; - vertexSizes.TryGetValue(vertex, out vertexSize); - var layoutType = CompoundVertexInnerLayoutType.Automatic; - layoutTypes.TryGetValue(vertex, out layoutType); - - if (layoutType == CompoundVertexInnerLayoutType.Fixed) - { - movableParentUpdateQueue.Enqueue(vertex); - } - - var position = new float2(); - VertexPositions.TryGetValue(vertex, out position); - - //create the information container for this compound vertex - var dataContainer = new CompoundVertexData(vertex, _rootCompoundVertex, false, position, vertexSize, /*border, */layoutType); - if (i == 0) - { - dataContainer.Parent = _rootCompoundVertex; - _rootCompoundVertex.Children.Add(dataContainer); - } - _compoundVertexDatas[vertex] = dataContainer; - _vertexDatas[vertex] = dataContainer; - - //add the datas of the childrens - var children = _compoundGraph.GetChildrenVertices(vertex); - var childrenData = children.Select(v => _vertexDatas[v]).ToList(); - dataContainer.Children = childrenData; - foreach (var child in dataContainer.Children) - { - _rootCompoundVertex.Children.Remove(child); - child.Parent = dataContainer; - } - } - } - } - - private void InitialLevels() - { - var verticesLeft = new HashSet(VisitedGraph.Vertices); - - //initial 0th level - _levels.Add(new HashSet(VisitedGraph.Vertices.Where(v => _compoundGraph.GetParent(v) == default(TVertex)))); - RemoveAll(verticesLeft, _levels[0]); - - //other layers - for (int i = 1; verticesLeft.Count > 0; i++) - { - var nextLevel = new HashSet(); - foreach (var parent in _levels[i - 1]) - { - if (_compoundGraph.GetChildrenCount(parent) <= 0) - continue; - - foreach (var children in _compoundGraph.GetChildrenVertices(parent)) - nextLevel.Add(children); - } - _levels.Add(nextLevel); - RemoveAll(verticesLeft, nextLevel); - } - } - - private void SetLevelIndices() - { - //set the level indexes in the vertex datas - for (int i = 0; i < _levels.Count; i++) - { - foreach (var v in _levels[i]) - _vertexDatas[v].Level = i; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs.meta deleted file mode 100644 index aaa142da2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.Init.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bfb500bde641d9b42a21f471a6359c29 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs deleted file mode 100644 index 7a3949c3e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs +++ /dev/null @@ -1,399 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Windows; -using QuickGraph; -using System.Diagnostics.Contracts; -using System.Diagnostics; -using Unity.Mathematics; -using static Unity.Mathematics.math; -using Random = System.Random; - -namespace GraphSharp.Algorithms.Layout.Compound.FDP -{ - /// The type of the vertices. - /// The type of the edges. - /// The type of the graph. - public partial class CompoundFDPLayoutAlgorithm : - DefaultParameterizedLayoutAlgorithmBase, - ICompoundLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - /*[ContractInvariantMethod] - private void InvariantContracts() - { - Contract.Invariant(1 <= _phase && _phase <= 3); - Contract.Invariant(_treeGrowingStep > 0); - }*/ - - private float _temperature = 0; - private float _temperatureDelta; //need to be initialized - private readonly float _temperatureLambda = 0.99f; - private readonly Random rnd = new Random(DateTime.Now.Millisecond); - - /// - /// Phase of the layout process. - /// Values: 1,2,3 - /// - private int _phase = 1; - - /// - /// The steps in the actual phase. - /// - private int _step; - - /// - /// The maximal iteration count in the phases. - /// - private /*readonly*/ int[] _maxIterationCounts = new int[3] { 30, 70, 50 }; - - /// - /// The error thresholds for the phases (calculated inside the Init method). - /// - private readonly float[] _errorThresholds = new float[3]; - - /// - /// Indicates whether the removed tree-node - /// has been grown back or not. - /// - private bool _allTreesGrown - { - get { return _removedRootTreeNodeLevels.Count == 0; } - } - - /// - /// Grows back a tree-node level in every 'treeGrowingStep'th step. - /// - private int _treeGrowingStep = 5; - - /// - /// The magnitude of the gravity force calculated in the init phased. - /// - private float _gravityForceMagnitude; - - /// - /// Has been the gravity center initiated or not. - /// - private bool _gravityCenterCalculated; - - private float _phaseDependentRepulsionMultiplier = 1.0f; - - /// - /// This method is the skeleton of the layout algorithm. - /// - protected override void InternalCompute() - { - //call initialize - Init(_vertexSizes, /*_vertexBorders,*/ _layoutTypes); - - //Phases: - //1: layout the skeleton graph without app. specific and gravitation forces. - //2: add the removed tree nodes and apply app. specific and gravitation forces. - //3: stabilization - - /* ********* FOR OPTIMIZATION PURPOSES ********** */ - _maxIterationCounts = new int[3]; - _maxIterationCounts[0] = Parameters.Phase1Iterations; - _maxIterationCounts[1] = Parameters.Phase2Iterations; - _maxIterationCounts[2] = Parameters.Phase3Iterations; - - var _temperatureMultipliers = new float[3] - { - 1.0f, - Parameters.Phase2TemperatureInitialMultiplier, - Parameters.Phase3TemperatureInitialMultiplier - }; - - float initialTemperature = sqrt(_compoundGraph.VertexCount) * Parameters.IdealEdgeLength; - float minimalTemperature = initialTemperature * 0.1f; - _temperature = initialTemperature; - - _gravityCenterCalculated = false; - - for (_phase = 1; _phase <= 3; _phase++) - { - _temperature = initialTemperature * _temperatureMultipliers[_phase - 1]; - _phaseDependentRepulsionMultiplier = _phase < 2 ? 0.5f : 1.0f; - //TODO put back the error and its threshold - /*float error = _errorThresholds[_phase] + 1;*/ - for (_step = _maxIterationCounts[_phase - 1]; - (_step > 0 && true/*error > _errorThresholds[_phase - 1] */) || (_phase == 2 && !_allTreesGrown); - _step--) - { - /*error = 0;*/ - - ApplySpringForces(); - ApplyRepulsionForces(); - - if (_phase > 1) - { - ApplyGravitationForces(); - ApplyApplicationSpecificForces(); - } - - if (ReportOnIterationEndNeeded) - SavePositions(); - - CalcNodePositionsAndSizes(); - - if (_phase == 2 && !_allTreesGrown && _step % _treeGrowingStep == 0) - GrowTreesOneLevel(); - - _temperature *= _temperatureLambda; - _temperature = Math.Max(_temperature, minimalTemperature); - } - if (!_gravityCenterCalculated) - { - _rootCompoundVertex.RecalculateBounds(); - _gravityCenterCalculated = true; - } - //if (_phase == 1) - _temperature *= Parameters.TemperatureDecreasing; - } - SavePositions(); - } - - private void SavePositions() - { - foreach (var vertex in _vertexDatas.Keys) - { - var v = _vertexDatas[vertex]; - VertexPositions[vertex] = v.Position; - } - - /*var iterationEndedArgs = - new CompoundLayoutIterationEventArgs( - 0, 0, string.Empty, - VertexPositions, - InnerCanvasSizes);*/ - - //build the test vertex infos - var vertexInfos = _vertexDatas.ToDictionary( - kvp => kvp.Key, - kvp => new TestingCompoundVertexInfo( - kvp.Value.SpringForce, - kvp.Value.RepulsionForce, - kvp.Value.GravitationForce, - kvp.Value.ApplicationForce)); - - var iterationEndedArgs = - new TestingCompoundLayoutIterationEventArgs( - 0, 0, string.Format("Phase: {0}, Steps: {1}", _phase, _step), - VertexPositions, - InnerCanvasSizes, - vertexInfos, - _rootCompoundVertex.InnerCanvasCenter); - - //raise the event - OnIterationEnded(iterationEndedArgs); - } - - private void GrowTreesOneLevel() - { - if (_removedRootTreeNodeLevels.Count <= 0) - return; - - var treeNodeDatas = _removedRootTreeNodeLevels.Pop(); - foreach (var tnd in treeNodeDatas) - { - _removedRootTreeNodes.Remove(tnd.Vertex); - _removedRootTreeEdges.Remove(tnd.Edge); - _levels[0].Add(tnd.Vertex); - _compoundGraph.AddVertex(tnd.Vertex); - _compoundGraph.AddEdge(tnd.Edge); - - var otherVertex = tnd.Edge.GetOtherVertex(tnd.Vertex); - _vertexDatas[tnd.Vertex].Position = _vertexDatas[otherVertex].Position; - } - } - - private float2 GetSpringForce(float idealLength, float2 uPos, float2 vPos, float2 uSize, float2 vSize) - { - var positionVector = (uPos - vPos); - if (abs(math.length(positionVector)) < .001f) - { - var compensationVector = new float2((float) rnd.NextDouble(), (float) rnd.NextDouble()); - positionVector = compensationVector * 2; - uPos += compensationVector; - vPos -= compensationVector; - } - positionVector = normalize(positionVector); - - //get the clipping points - var c_u = LayoutUtil.GetClippingPoint(uSize, uPos, vPos); - var c_v = LayoutUtil.GetClippingPoint(vSize, vPos, uPos); - - float2 F = (c_u - c_v); - bool isSameDirection = LayoutUtil.IsSameDirection(positionVector, F); - float length = 0; - if (isSameDirection) - length = math.length(F) - idealLength; - else - length = math.length(F) + idealLength; - - if (abs(math.length(F)) < .001f) - F = -positionVector; - F = normalize(F); - if (length > 0) - F *= -1; - - var Fs = pow(length / (idealLength), 2) / Parameters.ElasticConstant * F; - return Fs; - } - - private float2 GetRepulsionForce(float2 uPos, float2 vPos, float2 uSize, float2 vSize, float repulsionRange) - { - var positionVector = (uPos - vPos); - if (math.length(positionVector) == 0) - { - var compensationVector = new float2((float) rnd.NextDouble(), (float) rnd.NextDouble()); - positionVector = compensationVector * 2; - uPos += compensationVector; - vPos -= compensationVector; - } - positionVector = normalize(positionVector); - - var c_u = LayoutUtil.GetClippingPoint(uSize, uPos, vPos); - var c_v = LayoutUtil.GetClippingPoint(vSize, vPos, uPos); - - var F = c_u - c_v; - var isSameDirection = LayoutUtil.IsSameDirection(positionVector, F); - var Fr = new float2(); - - if (isSameDirection && math.length(F) > repulsionRange) - return new float2(); - float length = Math.Max(1, math.length(F)); - //float length = F.LengthSquared; - length = pow(isSameDirection ? length / (Parameters.IdealEdgeLength * 2.0f) : 1 / length, 2); - Fr = Parameters.RepulsionConstant / length * positionVector * _phaseDependentRepulsionMultiplier; - return Fr; - } - - /// - /// Applies the attraction forces (between the end nodes - /// of the edges). - /// - private void ApplySpringForces() - { - foreach (var edge in VisitedGraph.Edges) - { - if (!_allTreesGrown && (_removedRootTreeNodes.Contains(edge.Source) || _removedRootTreeNodes.Contains(edge.Target))) - continue; - //get the ideal edge length - float idealLength = Parameters.IdealEdgeLength; - var u = _vertexDatas[edge.Source]; - var v = _vertexDatas[edge.Target]; - var multiplier = (u.Level + v.Level) / 2.0f + 1; - if (IsInterGraphEdge(edge)) - { - //idealLength *= (u.Level + v.Level + 1) * Parameters.NestingFactor; - idealLength *= 1 + (u.Level + v.Level + 1) * Parameters.NestingFactor; - //multiplier = 1; - } - - var Fs = GetSpringForce(idealLength, u.Position, v.Position, u.Size, v.Size) * multiplier; - - //aggregate the forces - if ((u.IsFixedToParent && u.MovableParent == null) ^ (v.IsFixedToParent && v.MovableParent == null)) - Fs *= 2; - if (!u.IsFixedToParent) - u.SpringForce += Fs /* * u.Mass / (u.Mass + v.Mass)*/; - else if (u.MovableParent != null) - { - u.MovableParent.SpringForce += Fs; - } - if (!v.IsFixedToParent) - v.SpringForce -= Fs /* * v.Mass / (u.Mass + v.Mass)*/; - else if (v.MovableParent != null) - { - v.MovableParent.SpringForce -= Fs; - } - } - } - - /// - /// Applies the repulsion forces between every node-pair. - /// - private void ApplyRepulsionForces() - { - var repulsionRange = Parameters.IdealEdgeLength * Parameters.SeparationMultiplier; - for (int i = _levels.Count - 1; i >= 0; i--) - { - var checkedVertices = new HashSet(); - foreach (var uVertex in _levels[i]) - { - checkedVertices.Add(uVertex); - var u = _vertexDatas[uVertex]; - foreach (var vVertex in _levels[i]) - { - if (checkedVertices.Contains(vVertex)) - continue; - var v = _vertexDatas[vVertex]; - - if (u.Parent != v.Parent) - continue; //the two vertex not in the same graph - - var Fr = GetRepulsionForce(u.Position, v.Position, u.Size, v.Size, repulsionRange) * pow(u.Level + 1,2); - - if (u.IsFixedToParent ^ v.IsFixedToParent) - Fr *= 2; - if (!u.IsFixedToParent) - u.RepulsionForce += Fr /** u.Mass / (u.Mass + v.Mass)*/; - if (!v.IsFixedToParent) - v.RepulsionForce -= Fr /** v.Mass / (u.Mass + v.Mass)*/; - } - } - } - } - - /// - /// Applies the gravitation forces. - /// - private void ApplyGravitationForces() - { - for (int i = _levels.Count - 1; i >= 0; i--) - { - foreach (var uVertex in _levels[i]) - { - var u = _vertexDatas[uVertex]; - var center = u.Parent.InnerCanvasCenter; - - var Fg = center - u.Position; - if (math.length(Fg) < .001f) - continue; - - float length = Math.Max(1, math.length(Fg) / (Parameters.IdealEdgeLength * 2.0f)); - Fg = normalize(Fg); - Fg *= Parameters.GravitationFactor * _gravityForceMagnitude * pow(u.Level + 1,2) / pow(length, 0.25f); - u.GravitationForce += Fg; - } - } - } - - /// - /// Applies the application specific forces to the vertices. - /// - protected virtual void ApplyApplicationSpecificForces() - { - } - - private void CalcNodePositionsAndSizes() - { - for (int i = _levels.Count - 1; i >= 0; i--) - { - foreach (var uVertex in _levels[i]) - { - var u = _vertexDatas[uVertex]; - var force = u.ApplyForce(_temperature * max(1, _step) / 100.0f * Parameters.DisplacementLimitMultiplier); - } - } - } - - private bool IsInterGraphEdge(TEdge e) - { - return _vertexDatas[e.Source].Parent != _vertexDatas[e.Target].Parent; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs.meta deleted file mode 100644 index f3efbae6d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 18b1a2cf0e101ee4cb799f53aebfff4c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs deleted file mode 100644 index 9eefe39b0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs +++ /dev/null @@ -1,222 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Compound.FDP -{ - public class CompoundFDPLayoutParameters : LayoutParametersBase - { - private float _idealEdgeLength = 25; - private float _elasticConstant = 0.005f; - private float _repulsionConstant = 150; - private float _nestingFactor = 0.2f; - private float _gravitationFactor = 8; - - private int _phase1Iterations = 50; - private int _phase2Iterations = 70; - private int _phase3Iterations = 30; - - private float _phase2TemperatureInitialMultiplier = 0.5f; - private float _phase3TemperatureInitialMultiplier = 0.2f; - - private float _temperatureDecreasing = 0.5f; - private float _temperatureFactor = 0.95f; - private float _displacementLimitMultiplier = 0.5f; - private float _separationMultiplier = 15; - - /// - /// Gets or sets the ideal edge length. - /// - public float IdealEdgeLength - { - get { return _idealEdgeLength; } - set - { - if (value == _idealEdgeLength) - return; - - _idealEdgeLength = value; - NotifyPropertyChanged("IdealEdgeLength"); - } - } - - /// - /// Gets or sets the elastic constant for the edges. - /// - public float ElasticConstant - { - get { return _elasticConstant; } - set - { - if (value == _elasticConstant) - return; - - _elasticConstant = value; - NotifyPropertyChanged("ElasticConstant"); - } - } - - /// - /// Gets or sets the repulsion constant for the node-node - /// repulsion. - /// - public float RepulsionConstant - { - get { return _repulsionConstant; } - set - { - if (value == _repulsionConstant) - return; - - _repulsionConstant = value; - NotifyPropertyChanged("RepulsionConstant"); - } - } - - /// - /// Gets or sets the factor of the ideal edge length for the - /// inter-graph edges. - /// - public float NestingFactor - { - get { return _nestingFactor; } - set - { - if (value == _nestingFactor) - return; - - _nestingFactor = value; - NotifyPropertyChanged("NestingFactor"); - } - } - - /// - /// Gets or sets the factor of the gravitation. - /// - public float GravitationFactor - { - get { return _gravitationFactor; } - set - { - if (value == _gravitationFactor) - return; - - _gravitationFactor = value; - NotifyPropertyChanged("GravitationFactor"); - } - } - - public int Phase1Iterations - { - get { return _phase1Iterations; } - set - { - if (value == _phase1Iterations) - return; - - _phase1Iterations = value; - NotifyPropertyChanged("Phase1Iterations"); - } - } - - public int Phase2Iterations - { - get { return _phase2Iterations; } - set - { - if (value == _phase2Iterations) - return; - - _phase2Iterations = value; - NotifyPropertyChanged("Phase2Iterations"); - } - } - - public int Phase3Iterations - { - get { return _phase3Iterations; } - set - { - if (value == _phase3Iterations) - return; - - _phase3Iterations = value; - NotifyPropertyChanged("Phase3Iterations"); - } - } - - public float Phase2TemperatureInitialMultiplier - { - get { return _phase2TemperatureInitialMultiplier; } - set - { - if (value == _phase2TemperatureInitialMultiplier) - return; - - _phase2TemperatureInitialMultiplier = value; - NotifyPropertyChanged("Phase2TemperatureInitialMultiplier"); - } - } - - public float Phase3TemperatureInitialMultiplier - { - get { return _phase3TemperatureInitialMultiplier; } - set - { - if (value == _phase3TemperatureInitialMultiplier) - return; - - _phase3TemperatureInitialMultiplier = value; - NotifyPropertyChanged("Phase3TemperatureInitialMultiplier"); - } - } - - public float TemperatureDecreasing - { - get { return _temperatureDecreasing; } - set - { - if (value == _temperatureDecreasing) - return; - - _temperatureDecreasing = value; - NotifyPropertyChanged("TemperatureDecreasing"); - } - } - - public float TemperatureFactor - { - get { return _temperatureFactor; } - set - { - if (value == _temperatureFactor) - return; - - _temperatureFactor = value; - NotifyPropertyChanged("TemperatureFactor"); - } - } - - public float DisplacementLimitMultiplier - { - get { return _displacementLimitMultiplier; } - set - { - if (value == _displacementLimitMultiplier) - return; - - _displacementLimitMultiplier = value; - NotifyPropertyChanged("DisplacementLimitMultiplier"); - } - } - - public float SeparationMultiplier - { - get { return _separationMultiplier; } - set - { - if (value == _separationMultiplier) - return; - - _separationMultiplier = value; - NotifyPropertyChanged("SeparationMultiplier"); - } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs.meta deleted file mode 100644 index 948ae45e5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/FDP/CompoundFDPLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fb985b217904cfb40a64fc91d7846140 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs deleted file mode 100644 index 5bdaca42c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; -using System.Windows; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public interface ICompoundLayoutAlgorithm : ILayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - IDictionary InnerCanvasSizes { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs.meta deleted file mode 100644 index d93e444ca..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0e4cf28522a9e174e88fbe8ba7aa302b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs deleted file mode 100644 index 974fd0ecd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Windows; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public interface ICompoundLayoutContext : ILayoutContext - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - // IDictionary VertexBorders { get; } - IDictionary LayoutTypes { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs.meta deleted file mode 100644 index 6f930726b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 05b8cb2e16ce46b40935e68b560a7547 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs deleted file mode 100644 index 5add5036f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public interface ICompoundLayoutIterationEventArgs - : ILayoutIterationEventArgs - where TVertex : class - { - IDictionary InnerCanvasSizes { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs.meta deleted file mode 100644 index d13b4cfec..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/ICompoundLayoutIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0f86aed8aefca354f88d2d60172c1b3d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs deleted file mode 100644 index 0f53d176f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public class TestingCompoundLayoutIterationEventArgs - : CompoundLayoutIterationEventArgs, ILayoutInfoIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - private IDictionary vertexInfos; - - public float2 GravitationCenter { get; private set; } - - public TestingCompoundLayoutIterationEventArgs( - int iteration, - double statusInPercent, - string message, - IDictionary vertexPositions, - IDictionary innerCanvasSizes, - IDictionary vertexInfos, - float2 gravitationCenter) - : base(iteration, statusInPercent, message, vertexPositions, innerCanvasSizes) - { - this.vertexInfos = vertexInfos; - this.GravitationCenter = gravitationCenter; - } - - public override object GetVertexInfo(TVertex vertex) - { - TVertexInfo info = default(TVertexInfo); - if (vertexInfos.TryGetValue(vertex, out info)) - return info; - - return null; - } - - public IDictionary VertexInfos - { - get { return this.vertexInfos; } - } - - public IDictionary EdgeInfos - { - get { return null; } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs.meta deleted file mode 100644 index 938b7e42e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundLayoutIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2749eb7cc688780428b6826a1bb9f799 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs deleted file mode 100644 index 6eb01a62a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Compound -{ - public class TestingCompoundVertexInfo - { - public TestingCompoundVertexInfo(float2 springForce, float2 repulsionForce, float2 gravityForce, float2 applicationForce) - { - SpringForce = springForce; - RepulsionForce = repulsionForce; - GravityForce = gravityForce; - ApplicationForce = applicationForce; - } - - public float2 SpringForce { get; set; } - public float2 RepulsionForce { get; set; } - public float2 GravityForce { get; set; } - public float2 ApplicationForce { get; set; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs.meta deleted file mode 100644 index 9e6e69e2a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Compound/TestingCompoundVertexInfo.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f49438cc322bc5840aecb2cd2f78dabe -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual.meta deleted file mode 100644 index 9290411e1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 91bee5591d233f24db1aa32e4f3a0243 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs deleted file mode 100644 index 1a13450b3..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using QuickGraph; -using GraphSharp.Algorithms.Layout.Simple.Tree; - -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public class ContextualLayoutAlgorithmFactory : IContextualLayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - private readonly string[] algorithmTypes = new[] { "DoubleTree", "BalloonTree" }; - - public IEnumerable AlgorithmTypes - { - get { return algorithmTypes; } - } - - public ILayoutAlgorithm CreateAlgorithm( string newAlgorithmType, ILayoutContext context, ILayoutParameters parameters ) - { - var layoutContext = context as ContextualLayoutContext; - - switch ( newAlgorithmType ) - { - case "DoubleTree": - return new DoubleTreeLayoutAlgorithm( layoutContext.Graph, layoutContext.Positions, layoutContext.Sizes, parameters as DoubleTreeLayoutParameters, layoutContext.SelectedVertex ); - case "BalloonTree": - return new BalloonTreeLayoutAlgorithm( layoutContext.Graph, layoutContext.Positions, layoutContext.Sizes, parameters as BalloonTreeLayoutParameters, layoutContext.SelectedVertex ); - default: - return null; - } - } - - public ILayoutParameters CreateParameters( string algorithmType, ILayoutParameters oldParameters ) - { - switch ( algorithmType ) - { - case "DoubleTree": - return !( oldParameters is DoubleTreeLayoutParameters ) ? new DoubleTreeLayoutParameters() : (DoubleTreeLayoutParameters)( oldParameters as DoubleTreeLayoutParameters ).Clone(); - case "BaloonTree": - return !( oldParameters is BalloonTreeLayoutParameters ) ? new BalloonTreeLayoutParameters() : (BalloonTreeLayoutParameters)( oldParameters as BalloonTreeLayoutParameters ).Clone(); - default: - return null; - } - } - - public string GetAlgorithmType( ILayoutAlgorithm algorithm ) - { - if ( algorithm is DoubleTreeLayoutAlgorithm ) - return "DoubleTree"; - - if ( algorithm is BalloonTreeLayoutAlgorithm ) - return "BalloonTree"; - - return string.Empty; - } - - public bool IsValidAlgorithm( string algorithmType ) - { - return ( AlgorithmTypes.Contains( algorithmType ) ); - } - - public bool NeedEdgeRouting( string algorithmType ) - { - return true; - } - - public bool NeedOverlapRemoval( string algorithmType ) - { - return false; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs.meta deleted file mode 100644 index b60b7d920..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4b08537ed969a3b489a3544360dbc2bb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs deleted file mode 100644 index a190c003f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Windows; -using System.Diagnostics.Contracts; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public class ContextualLayoutContext : LayoutContext - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - public TVertex SelectedVertex { get; private set; } - - public ContextualLayoutContext( TGraph graph, TVertex selectedVertex, IDictionary positions, IDictionary sizes ) - : base( graph, positions, sizes, LayoutMode.Simple ) - { - SelectedVertex = selectedVertex; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs.meta deleted file mode 100644 index 46e9b1e5d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/ContextualLayoutContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b79468344f5b45c4399f30f6812459f5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs deleted file mode 100644 index 0350cd401..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Windows; -using QuickGraph; -using System.Diagnostics.Contracts; -using GraphSharp.Algorithms.Layout.Simple.Tree; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public enum DoubleTreeVertexType - { - Backward, - Forward, - Center - } - - public class DoubleTreeLayoutAlgorithm : ParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - readonly TVertex root; - readonly IDictionary vertexSizes; - - protected override DoubleTreeLayoutParameters DefaultParameters - { - get { return new DoubleTreeLayoutParameters(); } - } - - public DoubleTreeLayoutAlgorithm( TGraph visitedGraph, IDictionary vertexPositions, IDictionary vertexSizes, DoubleTreeLayoutParameters oldParameters, TVertex selectedVertex ) - : base( visitedGraph, vertexPositions, oldParameters ) - { - root = selectedVertex; - this.vertexSizes = ( vertexSizes ?? new Dictionary() ); - } - - protected override void InternalCompute() - { - // - // Separate the two sides - // - HashSet side1, side2; - SeparateSides( VisitedGraph, root, out side1, out side2 ); - - #region Build the temporary graph for the two sides - - // - // The IN side - // - //on the IN side we should reverse the edges - var graph1 = new BidirectionalGraph>(); - graph1.AddVertexRange( side1 ); - foreach ( var v in side1 ) - { - vertexInfos[v] = DoubleTreeVertexType.Backward; - foreach ( var e in VisitedGraph.InEdges( v ) ) - { - if ( !side1.Contains( e.Source ) || e.Source.Equals( e.Target ) ) - continue; - - //reverse the edge - graph1.AddEdge( new Edge( e.Target, e.Source ) ); - } - } - - // - // The OUT side - // - var graph2 = new BidirectionalGraph(); - graph2.AddVertexRange( side2 ); - foreach ( var v in side2 ) - { - vertexInfos[v] = DoubleTreeVertexType.Forward; - foreach ( var e in VisitedGraph.OutEdges( v ) ) - { - if ( !side2.Contains( e.Target ) || e.Source.Equals( e.Target ) ) - continue; - - //simply add the edge - graph2.AddEdge( e ); - } - } - - vertexInfos[root] = DoubleTreeVertexType.Center; - #endregion - - LayoutDirection side2Direction = Parameters.Direction; - LayoutDirection side1Direction = Parameters.Direction; - switch ( side2Direction ) - { - case LayoutDirection.BottomToTop: - side1Direction = LayoutDirection.TopToBottom; - break; - case LayoutDirection.LeftToRight: - side1Direction = LayoutDirection.RightToLeft; - break; - case LayoutDirection.RightToLeft: - side1Direction = LayoutDirection.LeftToRight; - break; - case LayoutDirection.TopToBottom: - side1Direction = LayoutDirection.BottomToTop; - break; - } - - // - // SimpleTree layout on the two side - // - var side1LayoutAlg = new SimpleTreeLayoutAlgorithm, BidirectionalGraph>>( - graph1, VertexPositions, vertexSizes, - new SimpleTreeLayoutParameters - { - LayerGap = Parameters.LayerGap, - VertexGap = Parameters.VertexGap, - Direction = side1Direction, - SpanningTreeGeneration = SpanningTreeGeneration.BFS - } ); - var side2LayoutAlg = new SimpleTreeLayoutAlgorithm>( - graph2, VertexPositions, vertexSizes, - new SimpleTreeLayoutParameters - { - LayerGap = Parameters.LayerGap, - VertexGap = Parameters.VertexGap, - Direction = side2Direction, - SpanningTreeGeneration = SpanningTreeGeneration.BFS - } ); - - side1LayoutAlg.Compute(); - side2LayoutAlg.Compute(); - - // - // Merge the layouts - // - var side2Translate = side1LayoutAlg.VertexPositions[root] - side2LayoutAlg.VertexPositions[root]; - foreach ( var v in side1 ) - VertexPositions[v] = side1LayoutAlg.VertexPositions[v]; - - foreach ( var v in side2 ) - VertexPositions[v] = side2LayoutAlg.VertexPositions[v] + side2Translate; - NormalizePositions(); - } - - /// - /// Separates the points of the graph according to the given . - /// - /// - /// - /// - /// - public static void SeparateSides( TGraph graph, TVertex selectedVertex, out HashSet side1, out HashSet side2 ) - { - var visitedVertices = new HashSet { selectedVertex }; - - //create the set of the side 1 and 2 - side1 = new HashSet { selectedVertex }; - side2 = new HashSet { selectedVertex }; - - var queue1 = new Queue(); - var queue2 = new Queue(); - queue1.Enqueue( selectedVertex ); - queue2.Enqueue( selectedVertex ); - - do - { - //get the next layer of vertices on the IN side - for ( int i = 0, n = queue1.Count; i < n; i++ ) - { - var vertex = queue1.Dequeue(); - foreach ( var edge in graph.InEdges( vertex ) ) - { - if ( ( graph.ContainsVertex( edge.Source ) && visitedVertices.Add( edge.Source ) ) || vertex.Equals( selectedVertex ) ) - { - queue1.Enqueue( edge.Source ); - side1.Add( edge.Source ); - } - } - } - - //get the next layer of vertices on the OUT side - for ( int i = 0, n = queue2.Count; i < n; i++ ) - { - var vertex = queue2.Dequeue(); - foreach ( var edge in graph.OutEdges( vertex ) ) - { - if ( ( graph.ContainsVertex( edge.Target ) && visitedVertices.Add( edge.Target ) ) || vertex.Equals( selectedVertex ) ) - { - queue2.Enqueue( edge.Target ); - side2.Add( edge.Target ); - } - } - } - } while ( queue1.Count > 0 || queue2.Count > 0 ); - //we got the 2 sides - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs.meta deleted file mode 100644 index 5c340ae2f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ca869432dda75b0488e5e13d6b853059 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs deleted file mode 100644 index 7153bb29f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs +++ /dev/null @@ -1,80 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public enum DoubleTreeSides - { - Side1, - Side2 - } - - public class DoubleTreeLayoutParameters : LayoutParametersBase - { - private LayoutDirection direction = LayoutDirection.LeftToRight; - /// - /// Gets or sets the layout direction. - /// - public LayoutDirection Direction - { - get { return direction; } - set - { - if ( direction != value ) - { - direction = value; - NotifyPropertyChanged( "Direction" ); - } - } - } - - private float layerGap = 10; - /// - /// Gets or sets the gap between the layers. - /// - public float LayerGap - { - get { return layerGap; } - set - { - if ( layerGap != value ) - { - layerGap = value; - NotifyPropertyChanged( "LayerGap" ); - } - } - } - - private float vertexGap = 10; - /// - /// Gets or sets the gap between the neighbor vertices in a layer. - /// - public float VertexGap - { - get { return vertexGap; } - set - { - if ( vertexGap != value ) - { - vertexGap = value; - NotifyPropertyChanged( "VertexGap" ); - } - } - } - - private DoubleTreeSides prioritizedTreeSide = DoubleTreeSides.Side1; - /// - /// Gets or sets the the prioritized tree side (the one with the bigger priority: where a vertex - /// goes if it should go on both side). - /// - public DoubleTreeSides PrioritizedTreeSide - { - get { return prioritizedTreeSide; } - set - { - if ( prioritizedTreeSide != value ) - { - prioritizedTreeSide = value; - NotifyPropertyChanged( "PrioritizedTreeSide" ); - } - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs.meta deleted file mode 100644 index 351fe67d9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/DoubleTreeLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4b7810d4c9a602945b703c39de543302 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs deleted file mode 100644 index a0a55d690..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs +++ /dev/null @@ -1,12 +0,0 @@ -using QuickGraph; -using System.Diagnostics.Contracts; - -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public interface IContextualLayoutAlgorithmFactory : ILayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs.meta deleted file mode 100644 index 7a3467bca..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/IContextualLayoutAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b771698c04360d54786bcda1fcc06c22 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs deleted file mode 100644 index b3a85f06c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; -using System.Windows; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - - -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public class RadialTreeLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - private readonly TVertex root; - - public RadialTreeLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexPositions, - RadialTreeLayoutParameters oldParameters, - TVertex selectedVertex ) - : base( visitedGraph, vertexPositions, oldParameters ) - { - this.root = selectedVertex; - } - - protected override void InternalCompute() - { - - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs.meta deleted file mode 100644 index 59b2672b6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 87c52b55f6c18524db96158ea5b9bb21 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs deleted file mode 100644 index 0366017f1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Contextual -{ - public class RadialTreeLayoutParameters : LayoutParametersBase - { - - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs.meta deleted file mode 100644 index 76e53ee8c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Contextual/RadialTreeLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ea6f658fd5b673c47bc2d527b7e55abf -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs deleted file mode 100644 index f0b28cdeb..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System.Collections.Generic; -using QuickGraph.Algorithms; -using QuickGraph; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public delegate void LayoutIterationEndedEventHandler( object sender, ILayoutIterationEventArgs e ) - where TVertex : class - where TEdge : IEdge; - - public delegate void LayoutIterationEndedEventHandler( object sender, ILayoutInfoIterationEventArgs e ) - where TVertex : class - where TEdge : IEdge; - - /// - /// Reports the progress of the layout. - /// - /// The sender. - /// The status of the progress in percent. - public delegate void ProgressChangedEventHandler(object sender, double percent); - - public interface ILayoutAlgorithm : ILayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - /// - /// Extra informations, calculated by the layout - /// - IDictionary VertexInfos { get; } - - /// - /// Extra informations, calculated by the layout - /// - IDictionary EdgeInfos { get; } - - new event LayoutIterationEndedEventHandler IterationEnded; - } - - public interface ILayoutAlgorithm : IAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - IDictionary VertexPositions { get; } - - /// - /// Returns with the extra layout information of the vertex (or null). - /// - object GetVertexInfo( TVertex vertex ); - - /// - /// Returns with the extra layout information of the edge (or null). - /// - object GetEdgeInfo( TEdge edge ); - - event LayoutIterationEndedEventHandler IterationEnded; - - event ProgressChangedEventHandler ProgressChanged; - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs.meta deleted file mode 100644 index 6d883792d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0f1afdff86cccf8498709efbd37366cc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs deleted file mode 100644 index 730c0db01..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Diagnostics.Contracts; - -namespace GraphSharp.Algorithms.Layout -{ - public interface ILayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - IEnumerable AlgorithmTypes { get; } - - /// - /// Creates a new algorithm specified by the newAlgorithmType parameter. - /// - /// The identifier of the new layout algorithm. - /// - /// - /// The new layout algorithm object. - ILayoutAlgorithm CreateAlgorithm( string newAlgorithmType, ILayoutContext context, ILayoutParameters parameters ); - - ILayoutParameters CreateParameters( string algorithmType, ILayoutParameters oldParameters ); - - bool IsValidAlgorithm( string algorithmType ); - - /// - /// Gets the type of the algorithm (usually the name of the algorithm which identifies the algorithm). - /// - /// The layout algorithm object. - /// The identified of the algorithm. - string GetAlgorithmType( ILayoutAlgorithm algorithm ); - - bool NeedEdgeRouting( string algorithmType ); - - bool NeedOverlapRemoval( string algorithmType ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs.meta deleted file mode 100644 index 062cc7f6e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 25df130b4dde3bc409d99a7e0e250b08 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs deleted file mode 100644 index 93ac5d900..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using QuickGraph; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public interface ILayoutContext - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - IDictionary Positions { get; } - IDictionary Sizes { get; } - - TGraph Graph { get; } - - LayoutMode Mode { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs.meta deleted file mode 100644 index 1e8ad615a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a53021c32b555184291d2b55424ba6bb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs deleted file mode 100644 index 05796a930..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout -{ - public interface ILayoutInfoIterationEventArgs - : ILayoutIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - object GetVertexInfo(TVertex vertex); - - object GetEdgeInfo(TEdge edge); - } - - public interface ILayoutInfoIterationEventArgs - : ILayoutInfoIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - IDictionary VertexInfos { get; } - IDictionary EdgeInfos { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs.meta deleted file mode 100644 index 167859508..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutInfoIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 544c5b7b388ed714ab69f066f2cfdde8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs deleted file mode 100644 index 3a540be5e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public interface ILayoutIterationEventArgs - where TVertex : class - { - /// - /// Represent the status of the layout algorithm in percent. - /// - double StatusInPercent { get; } - - /// - /// If the user sets this value to true, the algorithm aborts ASAP. - /// - bool Abort { get; set; } - - /// - /// Number of the actual iteration. - /// - int Iteration { get; } - - /// - /// Message, textual representation of the status of the algorithm. - /// - string Message { get; } - - IDictionary VertexPositions { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs.meta deleted file mode 100644 index 642b76c7d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ebb2337ea7f8b45409f5cad9c28e8411 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs deleted file mode 100644 index f30539b7d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs +++ /dev/null @@ -1,7 +0,0 @@ - -namespace GraphSharp.Algorithms.Layout -{ - public interface ILayoutParameters : IAlgorithmParameters - { - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs.meta deleted file mode 100644 index 704c4cbd5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ILayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e695e04e52109b549bb318f45de1e92c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs deleted file mode 100644 index 5308c35d9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace GraphSharp.Algorithms.Layout -{ - public interface IParameterizedLayoutAlgorithm - { - ILayoutParameters GetParameters(); - } - - public interface IParameterizedLayoutAlgorithm : IParameterizedLayoutAlgorithm - where TParam : ILayoutParameters - { - TParam Parameters { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs.meta deleted file mode 100644 index 99aa38b9c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/IParameterizedLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 347a186ff88cf4d4d94459dac9dc2511 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs deleted file mode 100644 index b7877a6bf..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs +++ /dev/null @@ -1,134 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Windows; -using System.Diagnostics; -using System.Diagnostics.Contracts; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public abstract class LayoutAlgorithmBase : LayoutAlgorithmBase, ILayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - protected readonly IDictionary vertexInfos = new Dictionary(); - protected readonly IDictionary edgeInfos = new Dictionary(); - - protected LayoutAlgorithmBase( TGraph visitedGraph ) - : base( visitedGraph ) - { - } - - protected LayoutAlgorithmBase( TGraph visitedGraph, IDictionary vertexPositions ) - : base( visitedGraph, vertexPositions ) - { - } - - public IDictionary VertexInfos - { - get { return vertexInfos; } - } - - public IDictionary EdgeInfos - { - get { return edgeInfos; } - } - - public new event LayoutIterationEndedEventHandler IterationEnded; - - public override object GetVertexInfo( TVertex vertex ) - { - TVertexInfo info; - if ( VertexInfos.TryGetValue( vertex, out info ) ) - return info; - - return null; - } - - public override object GetEdgeInfo( TEdge edge ) - { - TEdgeInfo info; - if ( EdgeInfos.TryGetValue( edge, out info ) ) - return info; - - return null; - } - } - - public abstract class LayoutAlgorithmBase : AlgorithmBase, ILayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private readonly Dictionary vertexPositions; - private readonly TGraph visitedGraph; - - public IDictionary VertexPositions - { - get { return vertexPositions; } - } - - public TGraph VisitedGraph - { - get { return visitedGraph; } - } - - public event LayoutIterationEndedEventHandler IterationEnded; - - public event ProgressChangedEventHandler ProgressChanged; - - public bool ReportOnIterationEndNeeded - { - get { return IterationEnded != null; } - } - - public bool ReportOnProgressChangedNeeded - { - get { return ProgressChanged != null; } - } - - protected LayoutAlgorithmBase( TGraph visitedGraph ) : - this( visitedGraph, null ) - { - } - - protected LayoutAlgorithmBase( TGraph visitedGraph, IDictionary vertexPositions ) - { - this.visitedGraph = visitedGraph; - if ( vertexPositions != null ) - this.vertexPositions = new Dictionary( vertexPositions ); - else - this.vertexPositions = new Dictionary( visitedGraph.VertexCount ); - } - - protected virtual void OnIterationEnded( ILayoutIterationEventArgs args ) - { - if ( IterationEnded != null ) - { - IterationEnded( this, args ); - - //if the layout should be aborted - if ( args.Abort ) - Abort(); - } - } - - protected virtual void OnProgressChanged( double percent ) - { - if ( ProgressChanged != null ) - ProgressChanged( this, percent ); - } - - public virtual object GetVertexInfo( TVertex vertex ) - { - return null; - } - - public virtual object GetEdgeInfo( TEdge edge ) - { - return null; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs.meta deleted file mode 100644 index b11b9f641..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutAlgorithmBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e5ed2d8fad48ceb40921704cc183dcf4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs deleted file mode 100644 index 3e625a55f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public class LayoutContext : ILayoutContext - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - public IDictionary Positions { get; private set; } - - public IDictionary Sizes { get; private set; } - - public TGraph Graph { get; private set; } - - public LayoutMode Mode { get; private set; } - - public LayoutContext( TGraph graph, IDictionary positions, IDictionary sizes, LayoutMode mode ) - { - Graph = graph; - Positions = positions; - Sizes = sizes; - Mode = mode; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs.meta deleted file mode 100644 index 84c0991e8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 15b31b1debb281241bf3569233e00999 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs deleted file mode 100644 index 4e84a6b85..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace GraphSharp.Algorithms.Layout -{ - public enum LayoutDirection - { - LeftToRight = 0, - TopToBottom = 1, - RightToLeft = 2, - BottomToTop = 3 - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs.meta deleted file mode 100644 index b63df65e6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutDirection.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eb0a45e349c95054fa03b65979516c49 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs deleted file mode 100644 index 861f6c80f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public class LayoutIterationEventArgs - : LayoutIterationEventArgs, - ILayoutInfoIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - public LayoutIterationEventArgs() - : this( 0, 0, string.Empty, null, null, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent ) - : this( iteration, statusInPercent, string.Empty, null, null, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, string message ) - : this( iteration, statusInPercent, message, null, null, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, - IDictionary vertexPositions ) - : this( iteration, statusInPercent, string.Empty, vertexPositions, null, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, string message, - IDictionary vertexPositions, - IDictionary vertexInfos, - IDictionary edgeInfos) - : base( iteration, statusInPercent, message, vertexPositions ) - { - this.VertexInfos = vertexInfos; - this.EdgeInfos = edgeInfos; - } - - public IDictionary VertexInfos { get; private set; } - public IDictionary EdgeInfos { get; private set; } - - public sealed override object GetVertexInfo( TVertex vertex ) - { - if ( VertexInfos == null ) - return null; - TVertexInfo info; - return VertexInfos.TryGetValue( vertex, out info ) ? info : default( TVertexInfo ); - } - - public sealed override object GetEdgeInfo( TEdge edge ) - { - if ( EdgeInfos == null ) - return null; - TEdgeInfo info; - return EdgeInfos.TryGetValue( edge, out info ) ? info : default( TEdgeInfo ); - } - } - - public class LayoutIterationEventArgs - : EventArgs, - ILayoutIterationEventArgs, - ILayoutInfoIterationEventArgs - where TVertex : class - where TEdge : IEdge - { - public LayoutIterationEventArgs() - : this( 0, 0, string.Empty, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent ) - : this( iteration, statusInPercent, string.Empty, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, string message ) - : this( iteration, statusInPercent, message, null ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, - IDictionary vertexPositions ) - : this( iteration, statusInPercent, string.Empty, vertexPositions ) - { } - - public LayoutIterationEventArgs( int iteration, double statusInPercent, string message, - IDictionary vertexPositions ) - { - this.StatusInPercent = statusInPercent; - this.Iteration = iteration; - this.Abort = false; - this.Message = message; - this.VertexPositions = vertexPositions; - } - - /// - /// Represent the status of the layout algorithm in percent. - /// - public double StatusInPercent { get; private set; } - - /// - /// If the user sets this value to true, the algorithm aborts ASAP. - /// - public bool Abort { get; set; } - - /// - /// Number of the actual iteration. - /// - public int Iteration { get; private set; } - - /// - /// Message, textual representation of the status of the algorithm. - /// - public string Message { get; private set; } - - public IDictionary VertexPositions { get; private set; } - - public virtual object GetVertexInfo( TVertex vertex ) - { - return null; - } - - public virtual object GetEdgeInfo( TEdge edge ) - { - return null; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs.meta deleted file mode 100644 index 6639ce72d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutIterationEventArgs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6d3c1472672479e4b9351e7cb64429e9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs deleted file mode 100644 index 303218379..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace GraphSharp.Algorithms.Layout -{ - public enum LayoutMode - { - /// - /// Simple layout mode without compound vertices. - /// - Simple, - - /// - /// Compound vertices, compound graph. - /// - Compound - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs.meta deleted file mode 100644 index 5833890ef..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutMode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ff251831c085b2c44a1e86161fd1790a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs deleted file mode 100644 index a52c9bdcf..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.ComponentModel; - -namespace GraphSharp.Algorithms.Layout -{ - public abstract class LayoutParametersBase : ILayoutParameters - { - #region ICloneable Members - - public object Clone() - { - return this.MemberwiseClone(); - } - - #endregion - - #region INotifyPropertyChanged Members - - public event PropertyChangedEventHandler PropertyChanged; - - protected void NotifyPropertyChanged(string propertyName) - { - //delegating to the event... - if (PropertyChanged != null) - PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); - } - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs.meta deleted file mode 100644 index 546f912f7..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutParametersBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a0e5f7d0914a45347b63c566ac4f4e7c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs deleted file mode 100644 index 749330f1b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public class LayoutState - { - /// - /// Gets the position of every vertex in this state of the layout process. - /// - public IDictionary Positions { get; protected set; } - - public IDictionary OverlapRemovedPositions { get; set; } - - public IDictionary RouteInfos { get; set; } - - /// - /// Gets how much time did it take to compute the position of the vertices (till the end of this iteration). - /// - public TimeSpan ComputationTime { get; protected set; } - - /// - /// Gets the index of the iteration. - /// - public int Iteration { get; protected set; } - - /// - /// Get the status message of this layout state. - /// - public string Message { get; protected set; } - - public LayoutState( - IDictionary positions, - IDictionary overlapRemovedPositions, - IDictionary routeInfos, - TimeSpan computationTime, - int iteration, - string message ) - { - Debug.Assert( computationTime != null ); - - Positions = positions; - OverlapRemovedPositions = overlapRemovedPositions != null ? overlapRemovedPositions : positions; - - if ( routeInfos != null ) - RouteInfos = routeInfos; - else - RouteInfos = new Dictionary( 0 ); - - ComputationTime = computationTime; - Iteration = iteration; - Message = message; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs.meta deleted file mode 100644 index 92991f30a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cbc73da39f389d54da74f106b14b3b95 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs deleted file mode 100644 index 9e776158d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs +++ /dev/null @@ -1,161 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics; -using System.Windows; -using System; -using System.Diagnostics.Contracts; -using System.Linq; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - [DebuggerDisplay("First = {First}, Second = {Second}")] - public class Pair - { - public int First; - public int Second; - public int Weight = 1; - } - - public static class LayoutUtil - { - - public static int BiLayerCrossCount(IEnumerable pairs, int firstLayerVertexCount, int secondLayerVertexCount) - { - if (pairs == null) - return 0; - - //radix sort of the pair, order by First asc, Second asc - - #region Sort by Second ASC - var radixBySecond = new List[secondLayerVertexCount]; - List r; - int pairCount = 0; - foreach (var pair in pairs) - { - //get the radix where the pair should be inserted - r = radixBySecond[pair.Second]; - if (r == null) - { - r = new List(); - radixBySecond[pair.Second] = r; - } - r.Add(pair); - pairCount++; - } - #endregion - - #region Sort By First ASC - var radixByFirst = new List[firstLayerVertexCount]; - foreach (var list in radixBySecond) - { - if (list == null) - continue; - - foreach (var pair in list) - { - //get the radix where the pair should be inserted - r = radixByFirst[pair.First]; - if (r == null) - { - r = new List(); - radixByFirst[pair.First] = r; - } - r.Add(pair); - } - } - #endregion - - // - // Build the accumulator tree - // - int firstIndex = 1; - while (firstIndex < pairCount) - firstIndex *= 2; - int treeSize = 2 * firstIndex - 1; - firstIndex -= 1; - int[] tree = new int[treeSize]; - - // - // Count the crossings - // - int crossCount = 0; - int index; - foreach (var list in radixByFirst) - { - if (list == null) - continue; - - foreach (var pair in list) - { - index = pair.Second + firstIndex; - tree[index] += pair.Weight; - while (index > 0) - { - if (index % 2 > 0) - crossCount += tree[index + 1] * pair.Weight; - index = (index - 1) / 2; - tree[index] += pair.Weight; - } - } - } - - return crossCount; - } - - public static float2 GetClippingPoint(float2 size, float2 s, float2 t) - { - float[] sides = new float[4]; - sides[0] = (s.x - size.x / 2.0f - t.x) / (s.x - t.x); - sides[1] = (s.y - size.y / 2.0f - t.y) / (s.y - t.y); - sides[2] = (s.x + size.x / 2.0f - t.x) / (s.x - t.x); - sides[3] = (s.y + size.y / 2.0f - t.y) / (s.y - t.y); - - float fi = 0; - for (int i = 0; i < 4; i++) - { - if (sides[i] <= 1) - fi = max(fi, sides[i]); - } - if (fi == 0) - { - fi = float.PositiveInfinity; - for (int i = 0; i < 4; i++) - fi = min(fi, Math.Abs(sides[i])); - fi *= -1; - } - - return t + fi * (s - t); - } - - - public static bool IsSameDirection(float2 a, float2 b) - { - return Math.Sign(a.x) == Math.Sign(b.x) && Math.Sign(a.y) == Math.Sign(b.y); - } - - public static int BiLayerCrossCount(List edgePairs) - { - int[] firsts = edgePairs.Select(e => e.First).Distinct().OrderBy(f => f).ToArray(); - int[] seconds = edgePairs.Select(e => e.Second).Distinct().OrderBy(f => f).ToArray(); - Dictionary firstMap = new Dictionary(firsts.Length); - Dictionary secondMap = new Dictionary(seconds.Length); - for (int i = 0; i < firsts.Length; i++) - { - firstMap.Add(firsts[i], i); - } - for (int i = 0; i < seconds.Length; i++) - { - secondMap.Add(seconds[i], i); - } - foreach (var pair in edgePairs) - { - pair.First = firstMap[pair.First]; - pair.Second = secondMap[pair.Second]; - } - return BiLayerCrossCount(edgePairs, firsts.Length, seconds.Length); - } - } - - -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs.meta deleted file mode 100644 index 3290aca29..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/LayoutUtil.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5cc4aef7ed007fb4e82b4302c8892fb6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs deleted file mode 100644 index 863b7ba2c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs +++ /dev/null @@ -1,257 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; -using System.Linq; -using System.Diagnostics; -using System.Windows; -using Random = System.Random; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public abstract class ParameterizedLayoutAlgorithmBase : ParameterizedLayoutAlgorithmBase, ILayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - where TParam : class, ILayoutParameters - { - protected readonly IDictionary vertexInfos = new Dictionary(); - protected readonly IDictionary edgeInfos = new Dictionary(); - - protected ParameterizedLayoutAlgorithmBase( TGraph visitedGraph ) - : base( visitedGraph, null, null ) { } - - protected ParameterizedLayoutAlgorithmBase( TGraph visitedGraph, IDictionary vertexPositions, - TParam oldParameters ) - : base( visitedGraph, vertexPositions, oldParameters ) - { - } - - #region ILayoutAlgorithm Members - - public IDictionary VertexInfos - { - get { return vertexInfos; } - } - - public IDictionary EdgeInfos - { - get { return edgeInfos; } - } - - protected override ILayoutIterationEventArgs CreateLayoutIterationEventArgs( int iteration, float statusInPercent, string message, IDictionary vertexPositions ) - { - return new LayoutIterationEventArgs( iteration, statusInPercent, message, vertexPositions, vertexInfos, edgeInfos ); - } - - public new event LayoutIterationEndedEventHandler IterationEnded; - - public override object GetVertexInfo( TVertex vertex ) - { - TVertexInfo info; - if ( VertexInfos.TryGetValue( vertex, out info ) ) - return info; - - return null; - } - - public override object GetEdgeInfo( TEdge edge ) - { - TEdgeInfo info; - if ( EdgeInfos.TryGetValue( edge, out info ) ) - return info; - - return null; - } - - #endregion - } - - /// - /// Use this class as a base class for your layout algorithm - /// if it's parameter class has a default contstructor. - /// - /// The type of the vertices. - /// The type of the edges. - /// The type of the graph. - /// The type of the parameters. Must be based on the LayoutParametersBase. - public abstract class DefaultParameterizedLayoutAlgorithmBase : ParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - where TParam : class, ILayoutParameters, new() - { - protected DefaultParameterizedLayoutAlgorithmBase(TGraph visitedGraph) - : base(visitedGraph) - { - } - - protected DefaultParameterizedLayoutAlgorithmBase(TGraph visitedGraph, IDictionary vertexPositions, TParam oldParameters) - : base(visitedGraph, vertexPositions, oldParameters) - { - } - - protected override TParam DefaultParameters - { - get { return new TParam(); } - } - } - - /// Type of the vertices. - /// Type of the edges. - /// Type of the graph. - /// Type of the parameters. Must be based on the LayoutParametersBase. - public abstract class ParameterizedLayoutAlgorithmBase : LayoutAlgorithmBase, IParameterizedLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - where TParam : class, ILayoutParameters - { - #region Properties - /// - /// Parameters of the algorithm. For more information see . - /// - public TParam Parameters { get; protected set; } - public ILayoutParameters GetParameters() - { - return Parameters; - } - public TraceSource TraceSource { get; protected set; } - #endregion - - #region Constructors - - protected ParameterizedLayoutAlgorithmBase( TGraph visitedGraph ) - : this( visitedGraph, null, null ) { } - - protected ParameterizedLayoutAlgorithmBase( TGraph visitedGraph, IDictionary vertexPositions, - TParam oldParameters ) - : base( visitedGraph, vertexPositions ) - { - InitParameters( oldParameters ); - TraceSource = new TraceSource( "LayoutAlgorithm", SourceLevels.All ); - } - #endregion - - #region Initializers - - protected abstract TParam DefaultParameters { get; } - - /// - /// Initializes the parameters (cloning or creating new parameter object with default values). - /// - /// Parameters from a prevorious layout. If it is null, - /// the parameters will be set to the default ones. - protected void InitParameters( TParam oldParameters ) - { - if (oldParameters == null) - Parameters = DefaultParameters; - else - { - Parameters = (TParam)oldParameters.Clone(); - } - } - - /// - /// Initializes the positions of the vertices. Assign a random position inside the 'bounding box' to the vertices without positions. - /// It does NOT modify the position of the other vertices. - /// - /// It generates an IterationEnded event. - /// - /// Bounding box: - /// x coordinates: float.Epsilon - width - /// y coordinates: float.Epsilon - height - /// - /// Width of the bounding box. - /// Height of the bounding box. - protected virtual void InitializeWithRandomPositions( float width, float height ) - { - InitializeWithRandomPositions( width, height, 0, 0 ); - } - - /// - /// Initializes the positions of the vertices. Assign a random position inside the 'bounding box' to the vertices without positions. - /// It does NOT modify the position of the other vertices. - /// - /// It generates an IterationEnded event. - /// - /// Bounding box: - /// x coordinates: float.Epsilon - width - /// y coordinates: float.Epsilon - height - /// - /// Width of the bounding box. - /// Height of the bounding box. - /// Translates the generated x coordinate. - /// Translates the generated y coordinate. - protected virtual void InitializeWithRandomPositions( float width, float height, float translate_x, float translate_y ) - { - var rnd = new Random( DateTime.Now.Millisecond ); - - //initialize with random position - foreach ( TVertex v in VisitedGraph.Vertices ) - { - //for vertices without assigned position - if ( !VertexPositions.ContainsKey( v ) ) - { - VertexPositions[v] = - new float2( - max( float.Epsilon, (float) rnd.NextDouble() * width + translate_x ), - max( float.Epsilon, (float) rnd.NextDouble() * height + translate_y ) ); - } - } - } - - protected virtual void NormalizePositions() - { - lock ( SyncRoot ) - { - NormalizePositions( VertexPositions ); - } - } - - protected static void NormalizePositions( IDictionary vertexPositions ) - { - if ( vertexPositions == null || vertexPositions.Count == 0 ) - return; - - //get the topLeft position - var topLeft = new float2( float.PositiveInfinity, float.PositiveInfinity ); - foreach ( var pos in vertexPositions.Values.ToArray() ) - { - topLeft.x = Math.Min( topLeft.x, pos.x ); - topLeft.y = Math.Min( topLeft.y, pos.y ); - } - - //translate with the topLeft position - foreach ( var v in vertexPositions.Keys.ToArray() ) - { - var pos = vertexPositions[v]; - pos.x -= topLeft.x; - pos.y -= topLeft.y; - vertexPositions[v] = pos; - } - } - #endregion - - protected void OnIterationEnded( int iteration, float statusInPercent, string message, bool normalizePositions ) - { - //copy the actual positions - IDictionary vertexPositions; - lock ( SyncRoot ) - { - vertexPositions = new Dictionary( VertexPositions ); - } - if ( normalizePositions ) - NormalizePositions( vertexPositions ); - - var args = CreateLayoutIterationEventArgs( iteration, statusInPercent, message, vertexPositions ); - OnIterationEnded( args ); - } - - protected virtual ILayoutIterationEventArgs CreateLayoutIterationEventArgs( int iteration, float statusInPercent, string message, IDictionary vertexPositions ) - { - return new LayoutIterationEventArgs( iteration, statusInPercent, message, vertexPositions ); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs.meta deleted file mode 100644 index fb69b6f9e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/ParameterizedLayoutAlgorithmBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d856cf5544be0ba46b3a6616e0048a6a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple.meta deleted file mode 100644 index 80707724e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2f3d3d09bf972274cae93d379fff0279 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular.meta deleted file mode 100644 index 5d9c5c48b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 128e94b302287834cad013aa6e4a0570 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs deleted file mode 100644 index a3241b2a6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Linq; -using System.Windows; -using System.Diagnostics; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Circular -{ - public class CircularLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - readonly IDictionary sizes; - - public CircularLayoutAlgorithm( TGraph visitedGraph, IDictionary vertexPositions, IDictionary vertexSizes, CircularLayoutParameters parameters ) - : base( visitedGraph, vertexPositions, parameters ) - { - //Contract.Requires( vertexSizes != null ); - //Contract.Requires( visitedGraph.Vertices.All( v => vertexSizes.ContainsKey( v ) ) ); - - sizes = vertexSizes; - } - - protected override void InternalCompute() - { - //calculate the size of the circle - float perimeter = 0; - float[] halfSize = new float[VisitedGraph.VertexCount]; - int i = 0; - foreach ( var v in VisitedGraph.Vertices ) - { - float2 s = sizes[v]; - halfSize[i] = sqrt( s.x * s.x + s.y * s.y ) * 0.5f; - perimeter += halfSize[i] * 2; - i++; - } - - float radius = perimeter / ( 2 * PI ); - - // - //precalculation - // - float angle = 0, a; - i = 0; - foreach ( var v in VisitedGraph.Vertices ) - { - a = sin( halfSize[i] * 0.5f / radius ) * 2; - angle += a; - if ( ReportOnIterationEndNeeded ) - VertexPositions[v] = new float2( cos( angle ) * radius + radius, sin( angle ) * radius + radius ); - angle += a; - } - - if ( ReportOnIterationEndNeeded ) - OnIterationEnded( 0, 50, "Precalculation done.", false ); - - //recalculate radius - radius = angle / ( 2 * PI ) * radius; - - //calculation - angle = 0; - i = 0; - foreach ( var v in VisitedGraph.Vertices ) - { - a = sin( halfSize[i] * 0.5f / radius ) * 2; - angle += a; - VertexPositions[v] = new float2( cos( angle ) * radius + radius, sin( angle ) * radius + radius ); - angle += a; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs.meta deleted file mode 100644 index 7543509fb..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6f8341a206cc9964089b93fcac58b273 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs deleted file mode 100644 index 6e35cf84f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.Circular -{ - public class CircularLayoutParameters : LayoutParametersBase - { - - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs.meta deleted file mode 100644 index c7e5587b2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Circular/CircularLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 91108515ccd418547bd9e48441e6e782 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP.meta deleted file mode 100644 index ac52f25d5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ff1534e43aabf354c80b48d1cfa6cc2a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs deleted file mode 100644 index a00f247fc..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - /// - /// Parameters of the Fruchterman-Reingold Algorithm (FDP), bounded version. - /// - public class BoundedFRLayoutParameters : FRLayoutParametersBase - { - #region Properties, Parameters - //some of the parameters declared with 'internal' modifier to 'speed up' - - private float _width = 100; - private float _height = 100; - private float _k; - - /// - /// Width of the bounding box. - /// - public float Width - { - get { return _width; } - set - { - _width = value; - UpdateParameters(); - NotifyPropertyChanged("Width"); - } - } - - /// - /// Height of the bounding box. - /// - public float Height - { - get { return _height; } - set - { - _height = value; - UpdateParameters(); - NotifyPropertyChanged("Height"); - } - } - - /// - /// Constant. IdealEdgeLength = sqrt(height * width / vertexCount) - /// - public override float K - { - get { return _k; } - } - - /// - /// Gets the initial temperature of the mass. - /// - public override float InitialTemperature - { - get { return min(Width, Height) / 10; } - } - - protected override void UpdateParameters() - { - _k = sqrt(_width * Height / VertexCount); - NotifyPropertyChanged("K"); - base.UpdateParameters(); - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs.meta deleted file mode 100644 index f2f5b10a0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/BoundedFRLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 120b9afd84b16064e83179d9a4b23a71 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs deleted file mode 100644 index bf9d47a95..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public enum FRCoolingFunction - { - Linear, - Exponential - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs.meta deleted file mode 100644 index e771e1971..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRCoolingFunction.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bb279af3040a08c409519d90b9a0de08 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs deleted file mode 100644 index 2e0834510..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs +++ /dev/null @@ -1,152 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; -using QuickGraph.Algorithms; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class FRLayoutAlgorithm : ParameterizedLayoutAlgorithmBase - where Vertex : class - where Edge : IEdge - where Graph : IVertexAndEdgeListGraph - { - /// - /// Actual temperature of the 'mass'. - /// - private float _temperature; - - private float _maxWidth = float.PositiveInfinity; - private float _maxHeight = float.PositiveInfinity; - - protected override FRLayoutParametersBase DefaultParameters - { - get { return new FreeFRLayoutParameters(); } - } - - #region Constructors - public FRLayoutAlgorithm(Graph visitedGraph) - : base(visitedGraph) { } - - public FRLayoutAlgorithm(Graph visitedGraph, IDictionary vertexPositions, FRLayoutParametersBase parameters) - : base(visitedGraph, vertexPositions, parameters) { } - #endregion - - /// - /// It computes the layout of the vertices. - /// - protected override void InternalCompute() - { - //initializing the positions - if (Parameters is BoundedFRLayoutParameters) - { - var param = Parameters as BoundedFRLayoutParameters; - InitializeWithRandomPositions(param.Width, param.Height); - _maxWidth = param.Width; - _maxHeight = param.Height; - } - else - { - InitializeWithRandomPositions(10.0f, 10.0f); - } - Parameters.VertexCount = VisitedGraph.VertexCount; - - // Actual temperature of the 'mass'. Used for cooling. - var minimalTemperature = Parameters.InitialTemperature*0.01; - _temperature = Parameters.InitialTemperature; - for (int i = 0; - i < Parameters._iterationLimit - && _temperature > minimalTemperature - && State != ComputationState.PendingAbortion; - i++) - { - IterateOne(); - - //make some cooling - switch (Parameters._coolingFunction) - { - case FRCoolingFunction.Linear: - _temperature *= (1.0f - i / (float)Parameters._iterationLimit); - break; - case FRCoolingFunction.Exponential: - _temperature *= Parameters._lambda; - break; - } - - //iteration ended, do some report - if (ReportOnIterationEndNeeded) - { - float statusInPercent = i / (float)Parameters._iterationLimit; - OnIterationEnded(i, statusInPercent, string.Empty, true); - } - } - } - - - protected void IterateOne() - { - //create the forces (zero forces) - var forces = new Dictionary(); - - #region Repulsive forces - var force = new float2(0, 0); - foreach (Vertex v in VisitedGraph.Vertices) - { - force.x = 0; force.y = 0; - float2 posV = VertexPositions[v]; - foreach (Vertex u in VisitedGraph.Vertices) - { - //doesn't repulse itself - if (u.Equals(v)) - continue; - - //calculating repulsive force - float2 delta = posV - VertexPositions[u]; - float length = max(math.length(delta), float.Epsilon); - delta = delta / length * Parameters.ConstantOfRepulsion / length; - - force += delta; - } - forces[v] = force; - } - #endregion - - #region Attractive forces - foreach (Edge e in VisitedGraph.Edges) - { - Vertex source = e.Source; - Vertex target = e.Target; - - //vonzóerõ számítása a két pont közt - float2 delta = VertexPositions[source] - VertexPositions[target]; - float length = Math.Max(math.length(delta), float.Epsilon); - delta = delta / length * pow(length, 2) / Parameters.ConstantOfAttraction; - - forces[source] -= delta; - forces[target] += delta; - } - #endregion - - #region Limit displacement - foreach (Vertex v in VisitedGraph.Vertices) - { - float2 pos = VertexPositions[v]; - - //erõ limitálása a temperature-el - float2 delta = forces[v]; - float length = Math.Max(math.length(delta), float.Epsilon); - delta = delta / length * Math.Min(math.length(delta), _temperature); - - //erõhatás a pontra - pos += delta; - - //falon ne menjünk ki - pos.x = Math.Min(_maxWidth, Math.Max(0, pos.x)); - pos.y = Math.Min(_maxHeight, Math.Max(0, pos.y)); - VertexPositions[v] = pos; - } - #endregion - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs.meta deleted file mode 100644 index ab8126b92..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e7ce74323a78afc46a5f018de01e0303 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs deleted file mode 100644 index b3cc8373a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs +++ /dev/null @@ -1,153 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - /// - /// Parameters base for the Fruchterman-Reingold Algorithm (FDP). - /// - public abstract class FRLayoutParametersBase : LayoutParametersBase - { - #region Properties, Parameters - private int _vertexCount; - internal float _attractionMultiplier = 1.2f; - internal float _repulsiveMultiplier = 0.6f; - internal int _iterationLimit = 200; - internal float _lambda = 0.95f; - internal FRCoolingFunction _coolingFunction = FRCoolingFunction.Exponential; - - /// - /// Count of the vertices (used to calculate the constants) - /// - internal int VertexCount - { - get { return _vertexCount; } - set - { - _vertexCount = value; - UpdateParameters(); - NotifyPropertyChanged( "VertexCount" ); - } - } - - protected virtual void UpdateParameters() - { - CalculateConstantOfRepulsion(); - CalculateConstantOfAttraction(); - } - - private void CalculateConstantOfRepulsion() - { - ConstantOfRepulsion = pow( K * _repulsiveMultiplier, 2 ); - NotifyPropertyChanged( "ConstantOfRepulsion" ); - } - - private void CalculateConstantOfAttraction() - { - ConstantOfAttraction = K * _attractionMultiplier; - NotifyPropertyChanged( "ConstantOfAttraction" ); - } - - /// - /// Gets the computed ideal edge length. - /// - public abstract float K { get; } - - /// - /// Gets the initial temperature of the mass. - /// - public abstract float InitialTemperature { get; } - - /// - /// Constant. Equals with K * attractionMultiplier - /// - public float ConstantOfAttraction { get; private set; } - - /// - /// Multiplier of the attraction. Default value is 2. - /// - public float AttractionMultiplier - { - get { return _attractionMultiplier; } - set - { - _attractionMultiplier = value; - CalculateConstantOfAttraction(); - NotifyPropertyChanged( "AttractionMultiplier" ); - } - } - - /// - /// Constant. Equals with Pow(K * repulsiveMultiplier, 2) - /// - public float ConstantOfRepulsion { get; private set; } - - /// - /// Multiplier of the repulsion. Default value is 1. - /// - public float RepulsiveMultiplier - { - get { return _repulsiveMultiplier; } - set - { - _repulsiveMultiplier = value; - CalculateConstantOfRepulsion(); - NotifyPropertyChanged( "RepulsiveMultiplier" ); - } - } - - /// - /// Limit of the iterations. Default value is 200. - /// - public int IterationLimit - { - get { return _iterationLimit; } - set - { - _iterationLimit = value; - NotifyPropertyChanged( "IterationLimit" ); - } - } - - /// - /// Lambda for the cooling. Default value is 0.95. - /// - public float Lambda - { - get { return _lambda; } - set - { - _lambda = value; - NotifyPropertyChanged( "Lamdba" ); - } - } - - /// - /// Gets or sets the cooling function which could be Linear or Exponential. - /// - public FRCoolingFunction CoolingFunction - { - get { return _coolingFunction; } - set - { - _coolingFunction = value; - NotifyPropertyChanged( "CoolingFunction" ); - } - } - - #endregion - - /// - /// Default constructor - /// - public FRLayoutParametersBase() - { - //update the parameters - UpdateParameters(); - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs.meta deleted file mode 100644 index 118a61cd1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FRLayoutParametersBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 957efa365a091cc4486edd6c7f0f6546 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs deleted file mode 100644 index 4fc3fac8b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class FreeFRLayoutParameters : FRLayoutParametersBase - { - private float _idealEdgeLength = 10; - - public override float K - { - get { return _idealEdgeLength; } - } - - public override float InitialTemperature - { - get { return sqrt(pow(_idealEdgeLength, 2) * VertexCount); } - } - - /// - /// Constant. Represents the ideal length of the edges. - /// - public float IdealEdgeLength - { - get { return _idealEdgeLength; } - set - { - _idealEdgeLength = value; - UpdateParameters(); - } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs.meta deleted file mode 100644 index 06ebc37b6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/FreeFRLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 64d97455df1107244af8c38e4b944298 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs deleted file mode 100644 index ed7c00550..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs +++ /dev/null @@ -1,179 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; -using Random = System.Random; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class ISOMLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - #region Private fields - private Queue _queue; - private Dictionary _isomDataDict; - private readonly Random _rnd = new Random( DateTime.Now.Millisecond ); - private float2 _tempPos; - private float adaptation; - private int radius; - #endregion - - #region Constructors - - public ISOMLayoutAlgorithm( TGraph visitedGraph, ISOMLayoutParameters oldParameters ) - : base( visitedGraph ) - { - Init( oldParameters ); - } - - public ISOMLayoutAlgorithm( TGraph visitedGraph, IDictionary vertexPositions, - ISOMLayoutParameters oldParameters ) - : base( visitedGraph, vertexPositions, oldParameters ) - { - Init( oldParameters ); - } - - protected void Init( ISOMLayoutParameters oldParameters ) - { - //init _parameters - base.InitParameters( oldParameters ); - - _queue = new Queue(); - _isomDataDict = new Dictionary(); - adaptation = Parameters.InitialAdaption; - } - #endregion - - protected override void InternalCompute() - { - //initialize vertex positions - InitializeWithRandomPositions( Parameters.Width, Parameters.Height ); - - //initialize ISOM data - foreach ( var vertex in VisitedGraph.Vertices ) - { - ISOMData isomData; - if ( !_isomDataDict.TryGetValue( vertex, out isomData ) ) - { - isomData = new ISOMData(); - _isomDataDict[vertex] = isomData; - } - } - - radius = Parameters.InitialRadius; - for ( int epoch = 0; epoch < Parameters.MaxEpoch; epoch++ ) - { - Adjust(); - - //Update Parameters - float factor = exp( -1 * Parameters.CoolingFactor * ( 1.0f * epoch / Parameters.MaxEpoch ) ); - adaptation = Math.Max( Parameters.MinAdaption, factor * Parameters.InitialAdaption ); - if ( radius > Parameters.MinRadius && epoch % Parameters.RadiusConstantTime == 0 ) - { - radius--; - } - - //report - if ( ReportOnIterationEndNeeded ) - OnIterationEnded( epoch, (float)epoch / (float)Parameters.MaxEpoch, "Iteration " + epoch + " finished.", true ); - else if (ReportOnProgressChangedNeeded) - OnProgressChanged( (float)epoch / (float)Parameters.MaxEpoch * 100 ); - } - } - - /// - /// R�ntsunk egyet az �sszes ponton. - /// - protected void Adjust() - { - _tempPos = new float2(); - - //get a random point in the container - _tempPos.x = 0.1f * Parameters.Width + ( (float) _rnd.NextDouble() * 0.8f * Parameters.Width ); - _tempPos.y = 0.1f * Parameters.Height + ( (float) _rnd.NextDouble() * 0.8f * Parameters.Height ); - - //find the closest vertex to this random point - TVertex closest = GetClosest( _tempPos ); - - //adjust the vertices to the selected vertex - foreach ( TVertex v in VisitedGraph.Vertices ) - { - ISOMData vid = _isomDataDict[v]; - vid.Distance = 0; - vid.Visited = false; - } - AdjustVertex( closest ); - } - - private void AdjustVertex( TVertex closest ) - { - _queue.Clear(); - ISOMData vid = _isomDataDict[closest]; - vid.Distance = 0; - vid.Visited = true; - _queue.Enqueue( closest ); - - while ( _queue.Count > 0 ) - { - TVertex current = _queue.Dequeue(); - ISOMData currentVid = _isomDataDict[current]; - float2 pos = VertexPositions[current]; - - float2 force = _tempPos - pos; - float factor = adaptation / pow( 2, currentVid.Distance ); - - pos += factor * force; - VertexPositions[current] = pos; - - //ha m�g a hat�k�r�n bel�l van - if ( currentVid.Distance < radius ) - { - //akkor a szomszedokra is hatassal vagyunk - foreach ( TVertex neighbour in VisitedGraph.GetNeighbours( current ) ) - { - ISOMData nvid = _isomDataDict[neighbour]; - if ( !nvid.Visited ) - { - nvid.Visited = true; - nvid.Distance = currentVid.Distance + 1; - _queue.Enqueue( neighbour ); - } - } - } - } - } - - /// - /// Finds the the closest vertex to the given position. - /// - /// The position. - /// Returns with the reference of the closest vertex. - private TVertex GetClosest( float2 tempPos ) - { - TVertex vertex = default( TVertex ); - float distance = float.MaxValue; - - //find the closest vertex - foreach ( TVertex v in VisitedGraph.Vertices ) - { - float d = length( tempPos - VertexPositions[v] ); - if ( d < distance ) - { - vertex = v; - distance = d; - } - } - return vertex; - } - - private class ISOMData - { - public float2 Force = new float2(); - public bool Visited = false; - public float Distance = 0.0f; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs.meta deleted file mode 100644 index 5efb18a2f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 035f3d213d531c14fa6592266205bda9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs deleted file mode 100644 index 1aa304273..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs +++ /dev/null @@ -1,131 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class ISOMLayoutParameters : LayoutParametersBase - { - private float _width = 300; - /// - /// Width of the bounding box. Default value is 300. - /// - public float Width - { - get { return _width; } - set - { - _width = value; - NotifyPropertyChanged("Width"); - } - } - - private float _height = 300; - /// - /// Height of the bounding box. Default value is 300. - /// - public float Height - { - get { return _height; } - set - { - _height = value; - NotifyPropertyChanged("Height"); - } - } - - private int maxEpoch = 2000; - /// - /// Maximum iteration number. Default value is 2000. - /// - public int MaxEpoch - { - get { return maxEpoch; } - set - { - maxEpoch = value; - NotifyPropertyChanged("MaxEpoch"); - } - } - - private int _radiusConstantTime = 100; - /// - /// Radius constant time. Default value is 100. - /// - public int RadiusConstantTime - { - get { return _radiusConstantTime; } - set - { - _radiusConstantTime = value; - NotifyPropertyChanged("RadiusConstantTime"); - } - } - - private int _initialRadius = 5; - /// - /// Default value is 5. - /// - public int InitialRadius - { - get { return _initialRadius; } - set - { - _initialRadius = value; - NotifyPropertyChanged("InitialRadius"); - } - } - - private int _minRadius = 1; - /// - /// Minimal radius. Default value is 1. - /// - public int MinRadius - { - get { return _minRadius; } - set - { - _minRadius = value; - NotifyPropertyChanged("MinRadius"); - } - } - - private float _initialAdaption = 0.9f; - /// - /// Default value is 0.9. - /// - public float InitialAdaption - { - get { return _initialAdaption; } - set - { - _initialAdaption = value; - NotifyPropertyChanged("InitialAdaption"); - } - } - - private float _minAdaption; - /// - /// Default value is 0. - /// - public float MinAdaption - { - get { return _minAdaption; } - set - { - _minAdaption = value; - NotifyPropertyChanged("MinAdaption"); - } - } - - private float _coolingFactor = 2; - /// - /// Default value is 2. - /// - public float CoolingFactor - { - get { return _coolingFactor; } - set - { - _coolingFactor = value; - NotifyPropertyChanged("CoolingFactor"); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs.meta deleted file mode 100644 index 342b850f0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/ISOMLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8b1088bfa03e3fb41b450bdd2bfacc22 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs deleted file mode 100644 index 3c9f3e484..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs +++ /dev/null @@ -1,296 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; -using System.Diagnostics; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class KKLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where Vertex : class - where Edge : IEdge - where Graph : IBidirectionalGraph - { - - #region Variables needed for the layout - /// - /// Minimal distances between the vertices. - /// - private float[,] distances; - private float[,] edgeLengths; - private float[,] springConstants; - - //cache for speed-up - private Vertex[] vertices; - /// - /// Positions of the vertices, stored by indices. - /// - private float2[] positions; - - private float diameter; - private float idealEdgeLength; - #endregion - - #region Contructors - public KKLayoutAlgorithm( Graph visitedGraph, KKLayoutParameters oldParameters ) - : this( visitedGraph, null, oldParameters ) { } - - public KKLayoutAlgorithm( Graph visitedGraph, IDictionary vertexPositions, - KKLayoutParameters oldParameters ) - : base( visitedGraph, vertexPositions, oldParameters ) { } - #endregion - - protected override void InternalCompute() - { - #region Initialization - distances = new float[VisitedGraph.VertexCount, VisitedGraph.VertexCount]; - edgeLengths = new float[VisitedGraph.VertexCount, VisitedGraph.VertexCount]; - springConstants = new float[VisitedGraph.VertexCount, VisitedGraph.VertexCount]; - vertices = new Vertex[VisitedGraph.VertexCount]; - positions = new float2[VisitedGraph.VertexCount]; - - //initializing with random positions - InitializeWithRandomPositions( Parameters.Width, Parameters.Height ); - - //copy positions into array (speed-up) - int index = 0; - foreach ( var v in VisitedGraph.Vertices ) - { - vertices[index] = v; - positions[index] = VertexPositions[v]; - index++; - } - - //calculating the diameter of the graph - //TODO check the diameter algorithm - diameter = VisitedGraph.GetDiameter( out distances ); - - //L0 is the length of a side of the display area - float L0 = Math.Min( Parameters.Width, Parameters.Height ); - - //ideal length = L0 / max d_i,j - idealEdgeLength = ( L0 / diameter ) * Parameters.LengthFactor; - - //calculating the ideal distance between the nodes - for ( int i = 0; i < VisitedGraph.VertexCount - 1; i++ ) - { - for ( int j = i + 1; j < VisitedGraph.VertexCount; j++ ) - { - //distance between non-adjacent vertices - float dist = diameter * Parameters.DisconnectedMultiplier; - - //calculating the minimal distance between the vertices - if ( distances[i, j] != float.MaxValue ) - dist = Math.Min( distances[i, j], dist ); - if ( distances[j, i] != float.MaxValue ) - dist = Math.Min( distances[j, i], dist ); - distances[i, j] = distances[j, i] = dist; - edgeLengths[i, j] = edgeLengths[j, i] = idealEdgeLength * dist; - springConstants[i, j] = springConstants[j, i] = Parameters.K / pow( dist, 2 ); - } - } - #endregion - - int n = VisitedGraph.VertexCount; - if ( n == 0 ) - return; - - //TODO check this condition - for ( int currentIteration = 0; currentIteration < Parameters.MaxIterations; currentIteration++ ) - { - #region An iteration - float maxDeltaM = float.NegativeInfinity; - int pm = -1; - - //get the 'p' with the max delta_m - for ( int i = 0; i < n; i++ ) - { - float deltaM = CalculateEnergyGradient( i ); - if ( maxDeltaM < deltaM ) - { - maxDeltaM = deltaM; - pm = i; - } - } - //TODO is needed? - if ( pm == -1 ) - return; - - //calculating the delta_x & delta_y with the Newton-Raphson method - //there is an upper-bound for the while (deltaM > epsilon) {...} cycle (100) - for ( int i = 0; i < 100; i++ ) - { - positions[pm] += CalcDeltaXY( pm ); - - float deltaM = CalculateEnergyGradient( pm ); - //real stop condition - if ( deltaM < float.Epsilon ) - break; - } - - //what if some of the vertices would be exchanged? - if ( Parameters.ExchangeVertices && maxDeltaM < float.Epsilon ) - { - float energy = CalcEnergy(); - for ( int i = 0; i < n - 1; i++ ) - { - for ( int j = i + 1; j < n; j++ ) - { - float xenergy = CalcEnergyIfExchanged( i, j ); - if ( energy > xenergy ) - { - float2 p = positions[i]; - positions[i] = positions[j]; - positions[j] = p; - return; - } - } - } - } - #endregion - - if ( ReportOnIterationEndNeeded ) - Report( currentIteration ); - } - Report( Parameters.MaxIterations ); - } - - protected void Report( int currentIteration ) - { - #region Copy the calculated positions - //poz�ci�k �tm�sol�sa a VertexPositions-ba - for ( int i = 0; i < vertices.Length; i++ ) - VertexPositions[vertices[i]] = positions[i]; - #endregion - - OnIterationEnded( currentIteration, (float)currentIteration / (float)Parameters.MaxIterations, "Iteration " + currentIteration + " finished.", true ); - } - - /// - /// Calculates the energy of the state where - /// the positions of the vertex 'p' & 'q' are exchanged. - /// - private float CalcEnergyIfExchanged( int p, int q ) - { - float energy = 0; - for ( int i = 0; i < vertices.Length - 1; i++ ) - { - for ( int j = i + 1; j < vertices.Length; j++ ) - { - int ii = ( i == p ) ? q : i; - int jj = ( j == q ) ? p : j; - - float l_ij = edgeLengths[i, j]; - float k_ij = springConstants[i, j]; - float dx = positions[ii].x - positions[jj].x; - float dy = positions[ii].y - positions[jj].y; - - energy += k_ij / 2 * ( dx * dx + dy * dy + l_ij * l_ij - - 2 * l_ij * sqrt( dx * dx + dy * dy ) ); - } - } - return energy; - } - - /// - /// Calculates the energy of the spring system. - /// - /// Returns with the energy of the spring system. - private float CalcEnergy() - { - float energy = 0, dist, l_ij, k_ij, dx, dy; - for ( int i = 0; i < vertices.Length - 1; i++ ) - { - for ( int j = i + 1; j < vertices.Length; j++ ) - { - dist = distances[i, j]; - l_ij = edgeLengths[i, j]; - k_ij = springConstants[i, j]; - - dx = positions[i].x - positions[j].x; - dy = positions[i].y - positions[j].y; - - energy += k_ij / 2 * ( dx * dx + dy * dy + l_ij * l_ij - - 2 * l_ij * sqrt( dx * dx + dy * dy ) ); - } - } - return energy; - } - - /// - /// Determines a step to new position of the vertex m. - /// - /// - private float2 CalcDeltaXY( int m ) - { - float dxm = 0, dym = 0, d2xm = 0, dxmdym = 0, dymdxm = 0, d2ym = 0; - float l, k, dx, dy, d, ddd; - - for ( int i = 0; i < vertices.Length; i++ ) - { - if ( i != m ) - { - //common things - l = edgeLengths[m, i]; - k = springConstants[m, i]; - dx = positions[m].x - positions[i].x; - dy = positions[m].y - positions[i].y; - - //distance between the points - d = sqrt( dx * dx + dy * dy ); - ddd = pow( d, 3 ); - - dxm += k * ( 1 - l / d ) * dx; - dym += k * ( 1 - l / d ) * dy; - //TODO isn't it wrong? - d2xm += k * ( 1 - l * pow( dy, 2 ) / ddd ); - //d2E_d2xm += k_mi * ( 1 - l_mi / d + l_mi * dx * dx / ddd ); - dxmdym += k * l * dx * dy / ddd; - //d2E_d2ym += k_mi * ( 1 - l_mi / d + l_mi * dy * dy / ddd ); - //TODO isn't it wrong? - d2ym += k * ( 1 - l * pow( dx, 2 ) / ddd ); - } - } - // d2E_dymdxm equals to d2E_dxmdym - dymdxm = dxmdym; - - float denomi = d2xm * d2ym - dxmdym * dymdxm; - float deltaX = ( dxmdym * dym - d2ym * dxm ) / denomi; - float deltaY = ( dymdxm * dxm - d2xm * dym ) / denomi; - return new float2( deltaX, deltaY ); - } - - /// - /// Calculates the gradient energy of a vertex. - /// - /// The index of the vertex. - /// Calculates the gradient energy of the vertex m. - private float CalculateEnergyGradient( int m ) - { - float dxm = 0, dym = 0, dx, dy, d, common; - // { 1, if m < i - // sign = { - // { -1, if m > i - for ( int i = 0; i < vertices.Length; i++ ) - { - if ( i == m ) - continue; - - //differences of the positions - dx = ( positions[m].x - positions[i].x ); - dy = ( positions[m].y - positions[i].y ); - - //distances of the two vertex (by positions) - d = sqrt( dx * dx + dy * dy ); - - common = springConstants[m, i] * ( 1 - edgeLengths[m, i] / d ); - dxm += common * dx; - dym += common * dy; - } - // delta_m = sqrt((dE/dx)^2 + (dE/dy)^2) - return sqrt( dxm * dxm + dym * dym ); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs.meta deleted file mode 100644 index 3ca5dd9ba..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8b20148a582857e4d89cfe8721fe5814 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs deleted file mode 100644 index dcb0cb869..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs +++ /dev/null @@ -1,113 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class KKLayoutParameters : LayoutParametersBase - { - private float width = 300; - /// - /// Width of the bounding box. - /// - public float Width - { - get { return width; } - set - { - width = value; - NotifyPropertyChanged("Width"); - } - } - - private float height = 300; - /// - /// Height of the bounding box. - /// - public float Height - { - get { return height; } - set - { - height = value; - NotifyPropertyChanged("Height"); - } - } - - private int maxIterations = 200; - /// - /// Maximum number of the iterations. - /// - public int MaxIterations - { - get { return maxIterations; } - set - { - maxIterations = value; - NotifyPropertyChanged("MaxIterations"); - } - } - - private float _k = 1; - public float K - { - get { return _k; } - set - { - _k = value; - NotifyPropertyChanged("K"); - } - } - - - private bool adjustForGravity; - /// - /// If true, then after the layout process, the vertices will be moved, so the barycenter will be - /// in the center point of the bounding box. - /// - public bool AdjustForGravity - { - get { return adjustForGravity; } - set - { - adjustForGravity = value; - NotifyPropertyChanged("AdjustForGravity"); - } - } - - private bool exchangeVertices; - public bool ExchangeVertices - { - get { return exchangeVertices; } - set - { - exchangeVertices = value; - NotifyPropertyChanged("ExchangeVertices"); - } - } - - private float lengthFactor = 1; - /// - /// Multiplier of the ideal edge length. (With this parameter the user can modify the ideal edge length). - /// - public float LengthFactor - { - get { return lengthFactor; } - set - { - lengthFactor = value; - NotifyPropertyChanged("LengthFactor"); - } - } - - private float disconnectedMultiplier = 0.5f; - /// - /// Ideal distance between the disconnected points (1 is equal the ideal edge length). - /// - public float DisconnectedMultiplier - { - get { return disconnectedMultiplier; } - set - { - disconnectedMultiplier = value; - NotifyPropertyChanged("DisconnectedMultiplier"); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs.meta deleted file mode 100644 index 4143ea7c0..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/KKLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1208ce3820e09c944930b6cc628508ce -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs deleted file mode 100644 index 67f30a9a6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System; -using Unity.Mathematics; -using static Unity.Mathematics.math; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public partial class LinLogLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - class QuadTree - { - #region Properties - private readonly QuadTree[] children = new QuadTree[4]; - public QuadTree[] Children - { - get { return children; } - } - - private int index; - public int Index - { - get { return index; } - } - - private float2 position; - - public float2 Position - { - get { return position; } - } - - private float weight; - - public float Weight - { - get { return weight; } - } - - private float2 minPos; - private float2 maxPos; - - #endregion - - public float Width - { - get - { - return Math.Max( maxPos.x - minPos.x, maxPos.y - minPos.y ); - } - } - - protected const int maxDepth = 20; - - public QuadTree( int index, float2 position, float weight, float2 minPos, float2 maxPos ) - { - this.index = index; - this.position = position; - this.weight = weight; - this.minPos = minPos; - this.maxPos = maxPos; - } - - public void AddNode( int nodeIndex, float2 nodePos, float nodeWeight, int depth ) - { - if ( depth > maxDepth ) - return; - - if ( index >= 0 ) - { - AddNode2( index, position, weight, depth ); - index = -1; - } - - position.x = ( position.x * weight + nodePos.x * nodeWeight ) / ( weight + nodeWeight ); - position.y = ( position.y * weight + nodePos.y * nodeWeight ) / ( weight + nodeWeight ); - weight += nodeWeight; - - AddNode2( nodeIndex, nodePos, nodeWeight, depth ); - } - - protected void AddNode2( int nodeIndex, float2 nodePos, float nodeWeight, int depth ) - { - //Debug.WriteLine( string.Format( "AddNode2 {0} {1} {2} {3}", nodeIndex, nodePos, nodeWeight, depth ) ); - int childIndex = 0; - float middleX = ( minPos.x + maxPos.x ) / 2; - float middleY = ( minPos.y + maxPos.y ) / 2; - - if ( nodePos.x > middleX ) - childIndex += 1; - - if ( nodePos.y > middleY ) - childIndex += 2; - - //Debug.WriteLine( string.Format( "childIndex: {0}", childIndex ) ); - - - if ( children[childIndex] == null ) - { - var newMin = new float2(); - var newMax = new float2(); - if ( nodePos.x <= middleX ) - { - newMin.x = minPos.x; - newMax.x = middleX; - } - else - { - newMin.x = middleX; - newMax.x = maxPos.x; - } - if ( nodePos.y <= middleY ) - { - newMin.y = minPos.y; - newMax.y = middleY; - } - else - { - newMin.y = middleY; - newMax.y = maxPos.y; - } - children[childIndex] = new QuadTree( nodeIndex, nodePos, nodeWeight, newMin, newMax ); - } - else - { - children[childIndex].AddNode( nodeIndex, nodePos, nodeWeight, depth + 1 ); - } - } - - /// - /// Az adott rész pozícióját újraszámítja, levonva belőle a mozgatott node részét. - /// - /// - /// - /// - public void MoveNode( float2 oldPos, float2 newPos, float nodeWeight ) - { - position += ( ( newPos - oldPos ) * ( nodeWeight / weight ) ); - - int childIndex = 0; - float middleX = ( minPos.x + maxPos.x ) / 2; - float middleY = ( minPos.y + maxPos.y ) / 2; - - if ( oldPos.x > middleX ) - childIndex += 1; - if ( oldPos.y > middleY ) - childIndex += 1 << 1; - - if ( children[childIndex] != null ) - children[childIndex].MoveNode( oldPos, newPos, nodeWeight ); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs.meta deleted file mode 100644 index 91b1df7ac..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.QuadTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0a3c31153aed4c0419d150995264d375 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs deleted file mode 100644 index 1071e0ab2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs +++ /dev/null @@ -1,437 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; -using System.Linq; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public partial class LinLogLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - #region Constructors - public LinLogLayoutAlgorithm( TGraph visitedGraph ) - : base( visitedGraph ) { } - - public LinLogLayoutAlgorithm( TGraph visitedGraph, IDictionary positions, - LinLogLayoutParameters parameters ) - : base( visitedGraph, positions, parameters ) { } - #endregion - - #region Member variables - privates - class LinLogVertex - { - public int Index; - public TVertex OriginalVertex; - public LinLogEdge[] Attractions; - public float RepulsionWeight; - public float2 Position; - } - - class LinLogEdge - { - public LinLogVertex Target; - public float AttractionWeight; - } - - private LinLogVertex[] vertices; - private float2 baryCenter; - private float repulsionMultiplier; - - #endregion - - - protected override void InternalCompute() - { - if ( VisitedGraph.VertexCount <= 1 ) return; - - InitializeWithRandomPositions( 1, 1, -0.5f, -0.5f ); - - InitAlgorithm(); - QuadTree quadTree; - - float finalRepuExponent = Parameters.repulsiveExponent; - float finalAttrExponent = Parameters.attractionExponent; - - for ( int step = 1; step <= Parameters.iterationCount; step++ ) - { - ComputeBaryCenter(); - quadTree = BuildQuadTree(); - - #region h�l�si f�ggv�ny meghat�roz�sa - if ( Parameters.iterationCount >= 50 && finalRepuExponent < 1.0 ) - { - Parameters.attractionExponent = finalAttrExponent; - Parameters.repulsiveExponent = finalRepuExponent; - if ( step <= 0.6 * Parameters.iterationCount ) - { - // use energy model with few local minima - Parameters.attractionExponent += 1.1f * ( 1.0f - finalRepuExponent ); - Parameters.repulsiveExponent += 0.9f * ( 1.0f - finalRepuExponent ); - } - else if ( step <= 0.9 * Parameters.iterationCount ) - { - // gradually move to final energy model - Parameters.attractionExponent += - 1.1f * ( 1.0f - finalRepuExponent ) * ( 0.9f - step / (float)Parameters.iterationCount ) / 0.3f; - Parameters.repulsiveExponent += - 0.9f * ( 1.0f - finalRepuExponent ) * ( 0.9f - step / (float)Parameters.iterationCount ) / 0.3f; - } - } - #endregion - - #region Move each node - for ( int i = 0; i < vertices.Length; i++ ) - { - var v = vertices[i]; - float oldEnergy = GetEnergy( i, quadTree ); - - // compute direction of the move of the node - float2 bestDir; - GetDirection( i, quadTree, out bestDir ); - - // line search: compute length of the move - float2 oldPos = v.Position; - - float bestEnergy = oldEnergy; - int bestMultiple = 0; - bestDir /= 32; - //kisebb mozgat�sok eset�n a legjobb eset meghat�roz�sa - for ( int multiple = 32; - multiple >= 1 && ( bestMultiple == 0 || bestMultiple / 2 == multiple ); - multiple /= 2 ) - { - v.Position = oldPos + bestDir * multiple; - float curEnergy = GetEnergy( i, quadTree ); - if ( curEnergy < bestEnergy ) - { - bestEnergy = curEnergy; - bestMultiple = multiple; - } - } - - //nagyobb mozgat�s eset�n van-e jobb megold�s? - for ( int multiple = 64; - multiple <= 128 && bestMultiple == multiple / 2; - multiple *= 2 ) - { - v.Position = oldPos + bestDir * multiple; - float curEnergy = GetEnergy( i, quadTree ); - if ( curEnergy < bestEnergy ) - { - bestEnergy = curEnergy; - bestMultiple = multiple; - } - } - - //legjobb megold�ssal mozgat�s - v.Position = oldPos + bestDir * bestMultiple; - if ( bestMultiple > 0 ) - { - quadTree.MoveNode( oldPos, v.Position, v.RepulsionWeight ); - } - } - #endregion - - if ( ReportOnIterationEndNeeded ) - Report( step ); - } - CopyPositions(); - NormalizePositions(); - } - - protected void CopyPositions() - { - // Copy positions - foreach ( var v in vertices ) - VertexPositions[v.OriginalVertex] = v.Position; - } - - protected void Report( int step ) - { - CopyPositions(); - OnIterationEnded( step, step / Parameters.iterationCount * 100, "Iteration " + step + " finished.", true ); - } - - private void GetDirection( int index, QuadTree quadTree, out float2 dir ) - { - dir = new float2( 0, 0 ); - - float dir2 = AddRepulsionDirection( index, quadTree, ref dir ); - dir2 += AddAttractionDirection( index, ref dir ); - dir2 += AddGravitationDirection( index, ref dir ); - - if ( dir2 != 0.0 ) - { - dir /= dir2; - - float length = math.length(dir); - if ( length > quadTree.Width / 8 ) - { - length /= quadTree.Width / 8; - dir /= length; - } - } - else { dir = new float2( 0, 0 ); } - } - - private float AddGravitationDirection( int index, ref float2 dir ) - { - var v = vertices[index]; - float2 gravitationVector = ( baryCenter - v.Position ); - float dist = math.length(gravitationVector); - float tmp = Parameters.gravitationMultiplier * repulsionMultiplier * max( v.RepulsionWeight, 1 ) * pow( dist, Parameters.attractionExponent - 2 ); - dir += gravitationVector * tmp; - - return tmp * Math.Abs( Parameters.attractionExponent - 1 ); - } - - private float AddAttractionDirection( int index, ref float2 dir ) - { - float dir2 = 0.0f; - var v = vertices[index]; - foreach ( var e in v.Attractions ) - { - //onhurkok elhagyasa - if ( e.Target == v ) - continue; - - float2 attractionVector = ( e.Target.Position - v.Position ); - float dist = math.length(attractionVector); - if ( dist <= 0 ) - continue; - - float tmp = e.AttractionWeight * pow( dist, Parameters.attractionExponent - 2 ); - dir2 += tmp * Math.Abs( Parameters.attractionExponent - 1 ); - - dir += ( e.Target.Position - v.Position ) * tmp; - } - return dir2; - } - - /// - /// Kisz�m�tja az index sorsz�m� pontra hat� er�t a - /// quadTree seg�ts�g�vel. - /// - /// A node sorsz�ma, melyre a repulz�v er�t sz�m�tani akarjuk. - /// - /// A repulz�v er�t hozz�adja ehhez a Vectorhoz. - /// Becs�lt m�sodik deriv�ltja a repulz�v energi�nak. - private float AddRepulsionDirection( int index, QuadTree quadTree, ref float2 dir ) - { - var v = vertices[index]; - - if ( quadTree == null || quadTree.Index == index || v.RepulsionWeight <= 0 ) - return 0.0f; - - float2 repulsionVector = ( quadTree.Position - v.Position ); - float dist = math.length(repulsionVector); - if ( quadTree.Index < 0 && dist < 2.0 * quadTree.Width ) - { - float dir2 = 0.0f; - for ( int i = 0; i < quadTree.Children.Length; i++ ) - dir2 += AddRepulsionDirection( index, quadTree.Children[i], ref dir ); - return dir2; - } - - if ( dist != 0.0 ) - { - float tmp = repulsionMultiplier * v.RepulsionWeight * quadTree.Weight - * pow( dist, Parameters.repulsiveExponent - 2 ); - dir -= repulsionVector * tmp; - return tmp * abs( Parameters.repulsiveExponent - 1 ); - } - - return 0.0f; - } - - /* - private float GetEnergySum( QuadTree q ) - { - float sum = 0; - for ( int i = 0; i < vertices.Length; i++ ) - sum += GetEnergy( i, q ); - return sum; - } - */ - - private float GetEnergy( int index, QuadTree q ) - { - return GetRepulsionEnergy( index, q ) - + GetAttractionEnergy( index ) + GetGravitationEnergy( index ); - } - - private float GetGravitationEnergy( int index ) - { - var v = vertices[index]; - - float dist = length( v.Position - baryCenter ); - return Parameters.gravitationMultiplier * repulsionMultiplier * max( v.RepulsionWeight, 1 ) - * pow( dist, Parameters.attractionExponent ) / Parameters.attractionExponent; - } - - private float GetAttractionEnergy( int index ) - { - float energy = 0.0f; - var v = vertices[index]; - foreach ( var e in v.Attractions ) - { - if ( e.Target == v ) - continue; - - float dist = length( e.Target.Position - v.Position ); - energy += e.AttractionWeight * pow( dist, Parameters.attractionExponent ) / Parameters.attractionExponent; - } - return energy; - } - - private float GetRepulsionEnergy( int index, QuadTree tree ) - { - if ( tree == null || tree.Index == index || index >= vertices.Length ) - return 0.0f; - - var v = vertices[index]; - - float dist = length( v.Position - tree.Position ); - if ( tree.Index < 0 && dist < ( 2 * tree.Width ) ) - { - float energy = 0.0f; - for ( int i = 0; i < tree.Children.Length; i++ ) - energy += GetRepulsionEnergy( index, tree.Children[i] ); - - return energy; - } - - if ( Parameters.repulsiveExponent == 0.0 ) - return -repulsionMultiplier * v.RepulsionWeight * tree.Weight * log( dist ); - - return -repulsionMultiplier * v.RepulsionWeight * tree.Weight - * pow( dist, Parameters.repulsiveExponent ) / Parameters.repulsiveExponent; - } - - private void InitAlgorithm() - { - vertices = new LinLogVertex[VisitedGraph.VertexCount]; - - var vertexMap = new Dictionary(); - - //vertexek indexel�se - int i = 0; - foreach ( TVertex v in VisitedGraph.Vertices ) - { - vertices[i] = new LinLogVertex - { - Index = i, - OriginalVertex = v, - Attractions = new LinLogEdge[VisitedGraph.Degree( v )], - RepulsionWeight = 0, - Position = VertexPositions[v] - }; - vertexMap[v] = vertices[i]; - i++; - } - - //minden vertex-hez fel�p�ti az attractionWeights, attractionIndexes, - //�s a repulsionWeights strukt�r�t, valamint �tm�solja a poz�ci�j�t a VertexPositions-b�l - foreach ( var v in vertices ) - { - int attrIndex = 0; - foreach ( var e in VisitedGraph.InEdges( v.OriginalVertex ) ) - { - float weight = e is WeightedEdge ? ( ( e as WeightedEdge ).Weight ) : 1; - v.Attractions[attrIndex] = new LinLogEdge - { - Target = vertexMap[e.Source], - AttractionWeight = weight - }; - //TODO look at this line below - //v.RepulsionWeight += weight; - v.RepulsionWeight += 1; - attrIndex++; - } - - foreach ( var e in VisitedGraph.OutEdges( v.OriginalVertex ) ) - { - float weight = e is WeightedEdge ? ( ( e as WeightedEdge ).Weight ) : 1; - v.Attractions[attrIndex] = new LinLogEdge - { - Target = vertexMap[e.Target], - AttractionWeight = weight - }; - //v.RepulsionWeight += weight; - v.RepulsionWeight += 1; - attrIndex++; - } - v.RepulsionWeight = Math.Max( v.RepulsionWeight, Parameters.gravitationMultiplier ); - } - - repulsionMultiplier = ComputeRepulsionMultiplier(); - } - - private void ComputeBaryCenter() - { - baryCenter = new float2( 0, 0 ); - float repWeightSum = 0.0f; - foreach ( var v in vertices ) - { - repWeightSum += v.RepulsionWeight; - baryCenter.x += v.Position.x * v.RepulsionWeight; - baryCenter.y += v.Position.y * v.RepulsionWeight; - } - if ( repWeightSum > 0.0 ) - { - baryCenter.x /= repWeightSum; - baryCenter.y /= repWeightSum; - } - } - - private float ComputeRepulsionMultiplier() - { - float attractionSum = vertices.Sum( v => v.Attractions.Sum( e => e.AttractionWeight ) ); - float repulsionSum = vertices.Sum( v => v.RepulsionWeight ); - - if ( repulsionSum > 0 && attractionSum > 0 ) - return attractionSum / pow( repulsionSum, 2 ) * pow( repulsionSum, 0.5f * ( Parameters.attractionExponent - Parameters.repulsiveExponent ) ); - - return 1; - } - - /// - /// Fel�p�t egy QuadTree-t (olyan mint az OctTree, csak 2D-ben). - /// - private QuadTree BuildQuadTree() - { - //a minim�lis �s maxim�lis poz�ci� sz�m�t�sa - var minPos = new float2( float.MaxValue, float.MaxValue ); - var maxPos = new float2( -float.MaxValue, -float.MaxValue ); - - foreach ( var v in vertices ) - { - if ( v.RepulsionWeight <= 0 ) - continue; - - minPos.x = Math.Min( minPos.x, v.Position.x ); - minPos.y = Math.Min( minPos.y, v.Position.y ); - maxPos.x = Math.Max( maxPos.x, v.Position.x ); - maxPos.y = Math.Max( maxPos.y, v.Position.y ); - } - - //a nemnulla repulsionWeight-el rendelkez� node-ok hozz�ad�sa a QuadTree-hez. - QuadTree result = null; - foreach ( var v in vertices ) - { - if ( v.RepulsionWeight <= 0 ) - continue; - - if ( result == null ) - result = new QuadTree( v.Index, v.Position, v.RepulsionWeight, minPos, maxPos ); - else - result.AddNode( v.Index, v.Position, v.RepulsionWeight, 0 ); - } - return result; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs.meta deleted file mode 100644 index 5dff073bc..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6536e684dfdebd7418f6ef8a38dd5d86 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs deleted file mode 100644 index e7a8dcb93..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs +++ /dev/null @@ -1,53 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.FDP -{ - public class LinLogLayoutParameters : LayoutParametersBase - { - internal float attractionExponent = 1.0f; - - public float AttractionExponent - { - get { return attractionExponent; } - set - { - attractionExponent = value; - NotifyPropertyChanged("AttractionExponent"); - } - } - - internal float repulsiveExponent; - - public float RepulsiveExponent - { - get { return repulsiveExponent; } - set - { - repulsiveExponent = value; - NotifyPropertyChanged("RepulsiveExponent"); - } - } - - internal float gravitationMultiplier = 0.1f; - - public float GravitationMultiplier - { - get { return gravitationMultiplier; } - set - { - gravitationMultiplier = value; - NotifyPropertyChanged("GravitationMultiplier"); - } - } - - internal int iterationCount = 100; - - public int IterationCount - { - get { return iterationCount; } - set - { - iterationCount = value; - NotifyPropertyChanged("IterationCount"); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs.meta deleted file mode 100644 index dc3585cdd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/FDP/LinLogLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1d97f6a4274860842ab4d7cb7274ce15 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical.meta deleted file mode 100644 index 0090afb7a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cf8691c69e40de54e8a15845562d137e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs deleted file mode 100644 index 7f93677bd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs +++ /dev/null @@ -1,390 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using System.Diagnostics.Contracts; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private class WHOptimizationLayerInfo - { - public bool IsInsertedLayer; - public double LayerWidth; - public double LayerHeight; - public readonly Queue Vertices = new Queue(); - } - - private class WHOptimizationVertexInfo - { - public SugiVertex Vertex; - public double Value; - public double Cost; - - public double ValuePerCost - { - get - { - if (Value < 0) - return double.NaN; - else if (Cost <= 0) - return double.PositiveInfinity; - else - return Value / Cost; - } - } - } - - private double _whAverageVertexHeight; - private double _actualWidth; - private double _actualHeight; - - private double _actualWidthPerHeight - { - get { return _actualWidth / _actualHeight; } - } - - private readonly IList _whOptLayerInfos = - new List(); - - private readonly IDictionary _whOptVertexInfos = - new Dictionary(); - - /// - /// From the original graph it creates a sparse normalized graph - /// with segments and dummy vertices (p-vertex, q-vertex, s-vertex). - /// - private void BuildSparseNormalizedGraph() - { - CreateInitialLayering(); - if (Parameters.OptimizeWidth) - DoWidthAndHeightOptimization(); - CreateDummyVerticesAndSegments(); - RemoveParallelEdges(); - } - - private void DoWidthAndHeightOptimization() - { - CreateVertexWHOptInfos(); - CreateLayerWHOptInfos(); - - if (_actualWidthPerHeight <= Parameters.WidthPerHeight) - return; - - bool optimized = false; - do - { - optimized = DoWHOptimizationStep(); - } while (optimized); - RewriteLayerIndexes(); - } - - private void RewriteLayerIndexes() - { - int i = 0; - foreach (var layer in _layers) - { - foreach (var vertex in layer) - { - vertex.LayerIndex = i; - } - i++; - } - } - - private bool DoWHOptimizationStep() - { - double desiredWidth = _actualHeight * Parameters.WidthPerHeight; - - int maxWidthLayerIndex = 0; - var maxWidthLayer = _whOptLayerInfos[0]; - for (int i = 0; i < _whOptLayerInfos.Count; i++) - { - if (_whOptLayerInfos[i].LayerWidth > maxWidthLayer.LayerWidth - && _whOptLayerInfos[i].Vertices.Count > 0 - && _whOptLayerInfos[i].LayerWidth > desiredWidth) - { - maxWidthLayer = _whOptLayerInfos[i]; - maxWidthLayerIndex = i; - } - } - - if (maxWidthLayer.LayerWidth <= desiredWidth || maxWidthLayer.Vertices.Count <= 0) - return false; - - //get a layer nearby the maxWidthLayer - int insertedLayerIndex = -1; - WHOptimizationLayerInfo insertedLayerInfo = null; - IList insertedLayer = null; - if (maxWidthLayerIndex < _whOptLayerInfos.Count - 1 - && _whOptLayerInfos[maxWidthLayerIndex + 1].IsInsertedLayer - && _whOptLayerInfos[maxWidthLayerIndex + 1].LayerWidth < (desiredWidth - maxWidthLayer.Vertices.Peek().Cost)) - { - insertedLayerIndex = maxWidthLayerIndex + 1; - insertedLayerInfo = _whOptLayerInfos[insertedLayerIndex]; - insertedLayer = _layers[insertedLayerIndex]; - } - else - { - //insert a new layer - insertedLayerIndex = maxWidthLayerIndex + 1; - double width = 0; - double c = 0; - if (insertedLayerIndex > 0) - { - foreach (var vertex in _layers[insertedLayerIndex - 1]) - { - width += Math.Max(0, _graph.OutDegree(vertex) - 1) * Parameters.LayerDistance; - } - c += 1; - } - if (insertedLayerIndex < _layers.Count - 1) - { - foreach (var vertex in _layers[insertedLayerIndex]) - { - width += Math.Max(0, _graph.OutDegree(vertex) - 1) * Parameters.LayerDistance; - } - c += 1; - } - if (c > 0) - width /= c; - - if (width >= (desiredWidth - _whOptLayerInfos[insertedLayerIndex - 1].Vertices.Peek().Cost)) - return false; - - insertedLayerInfo = new WHOptimizationLayerInfo(); - insertedLayerInfo.LayerWidth = width; - insertedLayer = new List(); - _whOptLayerInfos.Insert(insertedLayerIndex, insertedLayerInfo); - _layers.Insert(insertedLayerIndex, insertedLayer); - - double height = 0.0; - while (insertedLayerInfo.LayerWidth < _whOptLayerInfos[insertedLayerIndex - 1].LayerWidth - && _whOptLayerInfos[insertedLayerIndex - 1].Vertices.Count > 0 - && insertedLayerInfo.LayerWidth <= (desiredWidth - _whOptLayerInfos[insertedLayerIndex - 1].Vertices.Peek().Cost)) - { - var repositionedVertex = _whOptLayerInfos[insertedLayerIndex - 1].Vertices.Dequeue(); - insertedLayerInfo.LayerWidth += repositionedVertex.Cost; - _whOptLayerInfos[insertedLayerIndex - 1].LayerWidth -= repositionedVertex.Value; - _layers[insertedLayerIndex - 1].Remove(repositionedVertex.Vertex); - insertedLayer.Add(repositionedVertex.Vertex); - height = Math.Max(height, repositionedVertex.Vertex.Size.y); - } - _actualHeight += height + Parameters.LayerDistance; - _actualWidth = _whOptLayerInfos.Max(li => li.LayerWidth); - } - - - return true; - } - - private void CreateLayerWHOptInfos() - { - _actualHeight = 0; - _actualWidth = 0; - foreach (var layer in _layers) - { - var layerInfo = new WHOptimizationLayerInfo(); - layerInfo.IsInsertedLayer = false; - foreach (var vertex in layer) - { - layerInfo.LayerHeight = Math.Max(vertex.Size.y, layerInfo.LayerHeight); - layerInfo.LayerWidth += vertex.Size.x; - WHOptimizationVertexInfo vertexInfo; - if (_whOptVertexInfos.TryGetValue(vertex, out vertexInfo)) - { - if (vertexInfo.ValuePerCost >= 0) - layerInfo.Vertices.Enqueue(vertexInfo); - } - } - layerInfo.LayerWidth += Math.Max(0, layer.Count - 1) * Parameters.VertexDistance; - _actualWidth = Math.Max(layerInfo.LayerWidth, _actualWidth); - var vertexList = new List(); - foreach (var v in layerInfo.Vertices) - { - if (!double.IsNaN(v.ValuePerCost) && !double.IsPositiveInfinity(v.ValuePerCost) && !double.IsNegativeInfinity(v.ValuePerCost)) - vertexList.Add(v); - } - vertexList.Sort(new Comparison( - (v1, v2) => Math.Sign(v2.ValuePerCost - v1.ValuePerCost))); - _actualHeight += layerInfo.LayerHeight + Parameters.LayerDistance; - layerInfo.Vertices.Clear(); - foreach (var v in vertexList) - { - layerInfo.Vertices.Enqueue(v); - } - _whOptLayerInfos.Add(layerInfo); - } - _actualHeight -= Parameters.LayerDistance; - _actualWidth -= Parameters.VertexDistance; - } - - private void CreateVertexWHOptInfos() - { - double vertexCount = 0; - foreach (var vertex in _graph.Vertices) - { - if (vertex.Type != VertexTypes.Original) - continue; - - var whOptInfo = new WHOptimizationVertexInfo(); - whOptInfo.Value = vertex.Size.x - Math.Max(0, _graph.InDegree(vertex) - 1) * Parameters.VertexDistance; - whOptInfo.Cost = vertex.Size.x - Math.Max(0, _graph.OutDegree(vertex) - 1) * Parameters.VertexDistance; - whOptInfo.Vertex = vertex; - _whOptVertexInfos[vertex] = whOptInfo; - vertexCount++; - _whAverageVertexHeight += vertex.Size.y; - } - _whAverageVertexHeight /= vertexCount; - } - - private void RemoveParallelEdges() - { - foreach (var vertex in _graph.Vertices) - { - var targets = new HashSet(); - foreach (var edge in _graph.OutEdges(vertex).ToArray()) - { - if (targets.Contains(edge.Target)) - _graph.RemoveEdge(edge); - } - } - } - - private void CreateInitialLayering() - { - var lts = new LayeredTopologicalSortAlgorithm(_graph); - lts.Compute(); - - for (int i = 0; i < lts.LayerCount; i++) - { - //set the layer - _layers.Add(lts.Layers[i].ToList()); - - //assign the layerindex - foreach (var v in _layers[i]) - v.LayerIndex = i; - } - - //minimize edge length - if (Parameters.MinimizeEdgeLength) - { - for (int i = _layers.Count - 1; i >= 0; i--) - { - var layer = _layers[i]; - foreach (var v in layer.ToList()) - { - if (_graph.OutDegree(v) == 0) continue; - - //put the vertex above the descendant on the highest layer - int newLayerIndex = _graph.OutEdges(v).Min(edge => edge.Target.LayerIndex - 1); - - if (newLayerIndex != v.LayerIndex) - { - //we're changing layer - layer.Remove(v); - _layers[newLayerIndex].Add(v); - v.LayerIndex = newLayerIndex; - } - } - } - } - } - - /// - /// Replace long edge (span(edge) > 1) with dummy vertices - /// or segments (span(edge) > 2). - /// - private void CreateDummyVerticesAndSegments() - { - foreach (var edge in _graph.Edges.ToList()) - { - int sourceLayerIndex = edge.Source.LayerIndex; - int targetLayerIndex = edge.Target.LayerIndex; - int span = targetLayerIndex - sourceLayerIndex; - if (span < 1) - throw new ArgumentException("span cannot be lower than 1"); - - if (span == 1) - continue; - - _graph.RemoveEdge(edge); - bool notReversed = edge.Source.OriginalVertex == edge.OriginalEdge.Source && edge.Target.OriginalVertex == edge.OriginalEdge.Target; - var dummyVertexList = new List(); - _dummyVerticesOfEdges[edge.OriginalEdge] = dummyVertexList; - if (span == 2) - { - //insert an R-vertex - var rVertex = AddDummyVertex(VertexTypes.RVertex, sourceLayerIndex + 1); - _graph.AddEdge(new SugiEdge(edge.OriginalEdge, edge.Source, rVertex)); - _graph.AddEdge(new SugiEdge(edge.OriginalEdge, rVertex, edge.Target)); - dummyVertexList.Add(rVertex); - } - else - { - //insert a P-vertex, a Q-vertex and a Segment - var pVertex = AddDummyVertex(VertexTypes.PVertex, sourceLayerIndex + 1); - var qVertex = AddDummyVertex(VertexTypes.QVertex, targetLayerIndex - 1); - if (notReversed) - { - dummyVertexList.Add(pVertex); - dummyVertexList.Add(qVertex); - } - else - { - dummyVertexList.Add(qVertex); - dummyVertexList.Add(pVertex); - } - _graph.AddEdge(new SugiEdge(edge.OriginalEdge, edge.Source, pVertex)); - _graph.AddEdge(new SugiEdge(edge.OriginalEdge, qVertex, edge.Target)); - var segment = AddSegment(pVertex, qVertex, edge); - } - } - } - - /// - /// Adds a new segment to the sparse compaction graph. - /// - /// The source vertex of the segment. - /// The target vertex of the segment. - /// The edge which has been replaced by the - /// dummy vertices and this segment. - /// The newly created segment. - private Segment AddSegment(SugiVertex pVertex, SugiVertex qVertex, SugiEdge edge) - { - var segment = new Segment() - { - PVertex = pVertex, - QVertex = qVertex - }; - pVertex.Segment = segment; - qVertex.Segment = segment; - return segment; - } - - /// - /// Adds a dummy vertex to the sparse compaction graph. - /// - /// The type of the dummy vertex (p,q,r). - /// The index of the layer of the vertex. - /// The new vertex which has been added to the graph and the - /// layers. - private SugiVertex AddDummyVertex(VertexTypes type, int layerIndex) - { - var vertex = new SugiVertex() - { - Type = type, - LayerIndex = layerIndex - }; - _layers[layerIndex].Add(vertex); - _graph.AddVertex(vertex); - - return vertex; - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs.meta deleted file mode 100644 index bf7fa3f71..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8c260d98ea2115045a132483c26d92ae -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs deleted file mode 100644 index ce4c1a4dd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs +++ /dev/null @@ -1,945 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using System.Diagnostics.Contracts; -using GraphSharp; -using System.Collections; -using System.Diagnostics; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private readonly Random _rnd = new Random(DateTime.Now.Millisecond); - - private int[] _crossCounts; - - private IList>[] _sparseCompactionByLayerBackup; - - private AlternatingLayer[] _alternatingLayers; - - /// - /// Minimizes the crossings between the layers by sweeping up and down - /// while there could be something optimized. - /// - private void DoCrossingMinimizations() - { - int prevCrossings = int.MaxValue; - int crossings = int.MaxValue; - int phase = 1; - - _crossCounts = new int[_layers.Count]; - _sparseCompactionByLayerBackup = new IList>[_layers.Count]; - _alternatingLayers = new AlternatingLayer[_layers.Count]; - for (int i = 0; i < _layers.Count; i++) - _crossCounts[i] = int.MaxValue; - - int phase1iterationLeft = 100; - int phase2iterationLeft = _layers.Count; - bool enableSameMeasureOptimization = true; - bool changed = false; - bool c = false; - bool wasPhase2 = false; - do - { - changed = false; - prevCrossings = crossings; - if (phase == 1) - phase1iterationLeft--; - else if (phase == 2) - phase2iterationLeft--; - wasPhase2 = (phase == 2); - - crossings = Sweeping(0, _layers.Count - 1, 1, enableSameMeasureOptimization, out c, ref phase); - changed = changed || c; - if (crossings == 0) - break; - - crossings = Sweeping(_layers.Count - 1, 0, -1, enableSameMeasureOptimization, out c, ref phase); - changed = changed || c; - if (phase == 1 && (!changed || crossings >= prevCrossings) && phase2iterationLeft > 0) - phase = 2; - else if (phase == 2) - phase = 1; - } while (crossings > 0 - && ((phase2iterationLeft > 0 || wasPhase2) - || (phase1iterationLeft > 0 && (crossings < prevCrossings) && changed))); - } - - /// - /// Sweeps between the and - /// in the way represented by the step - /// - /// The index of the start layer (where the sweeping starts from). - /// The index of the last layer (where the sweeping ends). - /// Increment or decrement of the layer index. (1 or -1) - /// The number of the edge crossings. - private int Sweeping(int startLayerIndex, int endLayerIndex, int step, bool enableSameMeasureOptimization, out bool changed, ref int phase) - { - int crossings = 0; - changed = false; - AlternatingLayer alternatingLayer = null; - if (_alternatingLayers[startLayerIndex] == null) - { - alternatingLayer = new AlternatingLayer(); - alternatingLayer.AddRange(_layers[startLayerIndex].OfType()); - alternatingLayer.EnsureAlternatingAndPositions(); - AddAlternatingLayerToSparseCompactionGraph(alternatingLayer, startLayerIndex); - _alternatingLayers[startLayerIndex] = alternatingLayer; - } else { - alternatingLayer = _alternatingLayers[startLayerIndex]; - } - OutputAlternatingLayer(alternatingLayer, startLayerIndex, 0); - for (int i = startLayerIndex; i != endLayerIndex; i += step) - { - int ci = Math.Min(i, i + step); - int prevCrossCount = _crossCounts[ci]; - - if (_alternatingLayers[i+step] != null) - { - alternatingLayer.SetPositions(); - _alternatingLayers[i + step].SetPositions(); - prevCrossCount = DoCrossCountingAndOptimization(alternatingLayer, _alternatingLayers[i + step], (i < i + step), false, (phase == 2), int.MaxValue); - _crossCounts[ci] = prevCrossCount; - } - - int crossCount = CrossingMinimizationBetweenLayers(ref alternatingLayer, i, i + step, enableSameMeasureOptimization, prevCrossCount, phase); - - if (crossCount < prevCrossCount || phase == 2 || changed) - { - /* set the sparse compaction graph */ - AddAlternatingLayerToSparseCompactionGraph(alternatingLayer, i + step); - ReplaceLayer(alternatingLayer, i + step); - _alternatingLayers[i + step] = alternatingLayer; - OutputAlternatingLayer(alternatingLayer, i + step, crossCount); - _crossCounts[i] = crossCount; - crossings += crossCount; - changed = true; - /*if (phase == 2) - { - Debug.WriteLine("Phase changed on layer " + (i + step)); - phase = 1; - }*/ - } - else - { - Debug.WriteLine("Layer " + (i + step) + " has not changed."); - alternatingLayer = _alternatingLayers[i + step]; - crossings += prevCrossCount; - } - } - return crossings; - } - - [Conditional("DEBUG")] - private void OutputAlternatingLayer(AlternatingLayer alternatingLayer, int layerIndex, int crossCount) - { - Debug.Write(layerIndex + " | " + crossCount + ": "); - for (int i = 0; i < alternatingLayer.Count; i++) - { - if (alternatingLayer[i] is SugiVertex) - { - var vertex = alternatingLayer[i] as SugiVertex; - Debug.Write(string.Format("{0},{1}\t", vertex.OriginalVertex, vertex.Type.ToString()[0])); - } - else - { - var segmentContainer = alternatingLayer[i] as SegmentContainer; - for (int j = 0; j < segmentContainer.Count; j++) - { - Debug.Write("| \t"); - } - } - } - Debug.WriteLine(""); - } - - private void ReplaceLayer(AlternatingLayer alternatingLayer, int i) - { - _layers[i].Clear(); - foreach (var item in alternatingLayer) - { - var vertex = item as SugiVertex; - if (vertex == null) - continue; - _layers[i].Add(vertex); - vertex.IndexInsideLayer = i; - } - } - - private int CrossingMinimizationBetweenLayers( - ref AlternatingLayer alternatingLayer, - int actualLayerIndex, - int nextLayerIndex, - bool enableSameMeasureOptimization, - int prevCrossCount, - int phase) - { - //decide which way we are sweeping (up or down) - //straight = down, reverse = up - bool straightSweep = (actualLayerIndex < nextLayerIndex); - var nextAlternatingLayer = alternatingLayer.Clone(); - - /* 1 */ - AppendSegmentsToAlternatingLayer(nextAlternatingLayer, straightSweep); - - /* 2 */ - ComputeMeasureValues(alternatingLayer, nextLayerIndex, straightSweep); - nextAlternatingLayer.SetPositions(); - - /* 3 */ - nextAlternatingLayer = InitialOrderingOfNextLayer(nextAlternatingLayer, _layers[nextLayerIndex], straightSweep); - - /* 4 */ - PlaceQVertices(nextAlternatingLayer, _layers[nextLayerIndex], straightSweep); - nextAlternatingLayer.SetPositions(); - - /* 5 */ - int crossCount = DoCrossCountingAndOptimization(alternatingLayer, nextAlternatingLayer, straightSweep, enableSameMeasureOptimization, (phase == 2), prevCrossCount); - - /* 6 */ - nextAlternatingLayer.EnsureAlternatingAndPositions(); - - alternatingLayer = nextAlternatingLayer; - return crossCount; - } - - private IList FindVerticesWithSameMeasure(AlternatingLayer nextAlternatingLayer, bool straightSweep, out IList ranges, out int maxRangeLength) - { - var ignorableVertexType = straightSweep ? VertexTypes.QVertex : VertexTypes.PVertex; - var verticesWithSameMeasure = new List(); - var vertices = nextAlternatingLayer.OfType().ToArray(); - int startIndex, endIndex; - maxRangeLength = 0; - int rangeCount = 0; - ranges = new List(); - for (startIndex = 0; startIndex < vertices.Length; startIndex = endIndex + 1) - { - for (endIndex = startIndex + 1; - endIndex < vertices.Length && vertices[startIndex].MeasuredPosition == vertices[endIndex].MeasuredPosition; - endIndex++) { } - endIndex -= 1; - - if (endIndex > startIndex) - { - int rangeLength = 0; - for (int i = startIndex; i <= endIndex; i++) - { - if (vertices[i].Type == ignorableVertexType || vertices[i].DoNotOpt) - continue; - - rangeLength++; - verticesWithSameMeasure.Add(vertices[i]); - } - if (rangeLength > 0) - { - maxRangeLength = Math.Max(rangeLength, maxRangeLength); - ranges.Add(rangeLength); - rangeCount++; - } - } - } - return verticesWithSameMeasure; - } - - private void AddAlternatingLayerToSparseCompactionGraph(AlternatingLayer nextAlternatingLayer, int layerIndex) - { - var _sparseCompationGraphEdgesOfLayer = _sparseCompactionByLayerBackup[layerIndex]; - if (_sparseCompationGraphEdgesOfLayer != null) - { - foreach (var edge in _sparseCompationGraphEdgesOfLayer) - _sparseCompactionGraph.RemoveEdge(edge); - } - - _sparseCompationGraphEdgesOfLayer = new List>(); - SugiVertex vertex = null, prevVertex = null; - for (int i = 1; i < nextAlternatingLayer.Count; i += 2) - { - vertex = nextAlternatingLayer[i] as SugiVertex; - var prevContainer = nextAlternatingLayer[i - 1] as SegmentContainer; - var nextContainer = nextAlternatingLayer[i + 1] as SegmentContainer; - if (prevContainer != null && prevContainer.Count > 0) - { - var lastSegment = prevContainer[prevContainer.Count - 1]; - var edge = new Edge(lastSegment, vertex); - _sparseCompationGraphEdgesOfLayer.Add(edge); - _sparseCompactionGraph.AddVerticesAndEdge(edge); - } - else if (prevVertex != null) - { - var edge = new Edge(prevVertex, vertex); - _sparseCompationGraphEdgesOfLayer.Add(edge); - _sparseCompactionGraph.AddVerticesAndEdge(edge); - } - - if (nextContainer != null && nextContainer.Count > 0) - { - var firstSegment = nextContainer[0]; - var edge = new Edge(vertex, firstSegment); - _sparseCompationGraphEdgesOfLayer.Add(edge); - _sparseCompactionGraph.AddVerticesAndEdge(edge); - } - - if (vertex != null && !_sparseCompactionGraph.ContainsVertex(vertex)) - _sparseCompactionGraph.AddVertex(vertex); - prevVertex = vertex; - } - _sparseCompactionByLayerBackup[layerIndex] = _sparseCompationGraphEdgesOfLayer; - } - - private class VertexGroup - { - public int Position; - public int Size; - } - - private class CrossCounterPair : Pair - { - public EdgeTypes Type = EdgeTypes.InnerSegment; - public SugiEdge NonInnerSegment = null; - } - - private class CrossCounterTreeNode - { - public int Accumulator; - public bool InnerSegmentMarker; - public readonly Queue NonInnerSegmentQueue = new Queue(); - } - - private int DoCrossCountingAndOptimization( - AlternatingLayer alternatingLayer, - AlternatingLayer nextAlternatingLayer, - bool straightSweep, - bool enableSameMeasureOptimization, - bool reverseVerticesWithSameMeasure, - int prevCrossCount) - { - IList virtualEdgePairs, realEdgePairs; - IList realEdges; - var topLayer = straightSweep ? alternatingLayer : nextAlternatingLayer; - var bottomLayer = straightSweep ? nextAlternatingLayer : alternatingLayer; - - int firstLayerSize, secondLayerSize; - var lastOnTopLayer = topLayer[topLayer.Count - 1]; - var lastOnBottomLayer = bottomLayer[bottomLayer.Count - 1]; - firstLayerSize = lastOnTopLayer.Position + (lastOnTopLayer is ISegmentContainer ? ((ISegmentContainer)lastOnTopLayer).Count : 1); - secondLayerSize = lastOnBottomLayer.Position + (lastOnBottomLayer is ISegmentContainer ? ((ISegmentContainer)lastOnBottomLayer).Count : 1); - - virtualEdgePairs = FindVirtualEdgePairs(topLayer, bottomLayer); - realEdges = FindRealEdges(topLayer); - - if (enableSameMeasureOptimization || reverseVerticesWithSameMeasure) - { - IList ranges; - int maxRangeLength; - var verticesWithSameMeasure = FindVerticesWithSameMeasure(nextAlternatingLayer, straightSweep, out ranges, out maxRangeLength); - var verticesWithSameMeasureSet = new HashSet(verticesWithSameMeasure); - - //initialize permutation indices - for (int i = 0; i < verticesWithSameMeasure.Count; i++) - verticesWithSameMeasure[i].PermutationIndex = i; - - int bestCrossCount = prevCrossCount; - foreach (var realEdge in realEdges) - realEdge.SaveMarkedToTemp(); - - List sortedVertexList = null; - if (!reverseVerticesWithSameMeasure) - { - sortedVertexList = new List(verticesWithSameMeasure); - } - else - { - sortedVertexList = new List(verticesWithSameMeasure.Count); - var stack = new Stack(verticesWithSameMeasure.Count); - var rnd = new Random(DateTime.Now.Millisecond); - foreach (var v in verticesWithSameMeasure) - { - if (stack.Count > 0 && (stack.Peek().MeasuredPosition != v.MeasuredPosition || rnd.NextDouble() > 0.8)) - { - while (stack.Count > 0) - sortedVertexList.Add(stack.Pop()); - } - stack.Push(v); - } - while (stack.Count > 0) - { - sortedVertexList.Add(stack.Pop()); - } - } - - int maxPermutations = EfficientSugiyamaLayoutParameters.MaxPermutations; - do - { - maxPermutations--; - if (!reverseVerticesWithSameMeasure) - { - //sort by permutation index and measure - sortedVertexList.Sort(new Comparison( - (v1, v2) => - { - if (v1.MeasuredPosition != v2.MeasuredPosition) - return Math.Sign(v1.MeasuredPosition - v2.MeasuredPosition); - else - return v1.PermutationIndex - v2.PermutationIndex; - })); - } - - //reinsert the vertices into the layer - ReinsertVerticesIntoLayer(nextAlternatingLayer, verticesWithSameMeasureSet, sortedVertexList); - - //set the positions - nextAlternatingLayer.SetPositions(); - realEdgePairs = ConvertRealEdgesToCrossCounterPairs(realEdges, true); - - var edgePairs = new List(); - edgePairs.AddRange(virtualEdgePairs); - edgePairs.AddRange(realEdgePairs); - - int crossCount = BiLayerCrossCount(edgePairs, firstLayerSize, secondLayerSize); - - if (reverseVerticesWithSameMeasure) - return crossCount; - - //if the crosscount is better than the best known - //save the actual state - if (crossCount < bestCrossCount) - { - foreach (var vertex in verticesWithSameMeasure) - vertex.SavePositionToTemp(); - - foreach (var edge in realEdges) - edge.SaveMarkedToTemp(); - - bestCrossCount = crossCount; - } - if (crossCount == 0) - break; - } while (maxPermutations > 0 && Permutate(verticesWithSameMeasure, ranges)); - - //reload the best solution - foreach (var vertex in verticesWithSameMeasure) - vertex.LoadPositionFromTemp(); - - foreach (var edge in realEdges) - edge.LoadMarkedFromTemp(); - - //sort by permutation index and measure - sortedVertexList.Sort(new Comparison((v1, v2) => v1.Position - v2.Position)); - - //reinsert the vertices into the layer - ReinsertVerticesIntoLayer(nextAlternatingLayer, verticesWithSameMeasureSet, sortedVertexList); - nextAlternatingLayer.SetPositions(); - - return bestCrossCount; - } - else - { - realEdgePairs = ConvertRealEdgesToCrossCounterPairs(realEdges, true); - var edgePairs = new List(); - edgePairs.AddRange(virtualEdgePairs); - edgePairs.AddRange(realEdgePairs); - - return BiLayerCrossCount(edgePairs, firstLayerSize, secondLayerSize); - } - } - - private static void ReinsertVerticesIntoLayer( - AlternatingLayer layer, - HashSet vertexSet, - IList vertexList) - { - int reinsertIndex = 0; - for (int i = 0; i < layer.Count; i++) - { - var vertex = layer[i] as SugiVertex; - if (vertex == null || !vertexSet.Contains(vertex)) - continue; - - layer.RemoveAt(i); - layer.Insert(i, vertexList[reinsertIndex]); - reinsertIndex++; - } - } - - private IList ConvertRealEdgesToCrossCounterPairs(IList edges, bool clearMark) - { - var pairs = new List(); - foreach (var edge in edges) - { - var source = edge.Source; - var target = edge.Target; - pairs.Add( - new CrossCounterPair - { - First = source.Position, - Second = target.Position, - Weight = 1, - Type = EdgeTypes.NonInnerSegment, - NonInnerSegment = edge - }); - - if (clearMark) - edge.Marked = false; - } - return pairs; - } - - private IList FindRealEdges(AlternatingLayer topLayer) - { - var realEdges = new List(); - foreach (var item in topLayer) - { - var vertex = item as SugiVertex; - if (vertex == null || vertex.Type == VertexTypes.PVertex) - continue; - - foreach (var edge in _graph.OutEdges(vertex)) - realEdges.Add(edge); - } - return realEdges; - } - - private IList FindVirtualEdgePairs(AlternatingLayer topLayer, AlternatingLayer bottomLayer) - { - var virtualEdgePairs = new List(); - Queue firstLayerQueue = GetContainerLikeItems(topLayer, VertexTypes.PVertex); - Queue secondLayerQueue = GetContainerLikeItems(bottomLayer, VertexTypes.QVertex); - VertexGroup vg1, vg2; - vg1 = new VertexGroup(); - vg2 = new VertexGroup(); - while (firstLayerQueue.Count > 0 || secondLayerQueue.Count > 0) - { - if (vg1.Size == 0) - vg1 = firstLayerQueue.Dequeue(); - if (vg2.Size == 0) - vg2 = secondLayerQueue.Dequeue(); - if (vg1.Size <= vg2.Size) - { - virtualEdgePairs.Add( - new CrossCounterPair - { - First = vg1.Position, - Second = vg2.Position, - Weight = vg1.Size - }); - vg2.Size -= vg1.Size; - vg1.Size = 0; - } - else - { - virtualEdgePairs.Add( - new CrossCounterPair - { - First = vg1.Position, - Second = vg2.Position, - Weight = vg2.Size - }); - vg1.Size -= vg2.Size; - vg2.Size = 0; - } - } - return virtualEdgePairs; - } - - private bool Permutate(IList vertices, IList ranges) - { - bool b = false; - for (int i = 0, startIndex = 0; i < ranges.Count; startIndex += ranges[i], i++) { - b = b || PermutateSomeHow(vertices, startIndex, ranges[i]); - } - return b; - } - - private bool PermutateSomeHow(IList vertices, int startIndex, int count) - { - if (count <= 4) { - return Permutate(vertices, startIndex, count); - } else { - return PermutateRandom(vertices, startIndex, count); - } - } - - private bool PermutateRandom(IList vertices, int startIndex, int count) - { - int endIndex = startIndex + count; - for (int i = startIndex; i < endIndex; i++) - { - vertices[i].PermutationIndex = _rnd.Next(count); - } - return true; - } - - private bool Permutate(IList vertices, int startIndex, int count) - { - //do the initial ordering - int n = startIndex + count; - int i, j; - - //find place to start - for (i = n - 1; - i > startIndex && vertices[i - 1].PermutationIndex >= vertices[i].PermutationIndex; - i--) { } - - //all in reverse order - if (i < startIndex + 1) - return false; //no more permutation - - //do next permutation - for (j = n; - j > startIndex + 1 && vertices[j - 1].PermutationIndex <= vertices[i - 1].PermutationIndex; - j--) { } - - //swap values i-1, j-1 - int c = vertices[i - 1].PermutationIndex; - vertices[i - 1].PermutationIndex = vertices[j - 1].PermutationIndex; - vertices[j - 1].PermutationIndex = c; - - //need more swaps - for (i++, j = n; i < j; i++, j--) - { - c = vertices[i - 1].PermutationIndex; - vertices[i - 1].PermutationIndex = vertices[j - 1].PermutationIndex; - vertices[j - 1].PermutationIndex = c; - } - - return true; //new permutation generated - } - - private static int BiLayerCrossCount(IEnumerable pairs, int firstLayerVertexCount, int secondLayerVertexCount) - { - if (pairs == null) - return 0; - - //radix sort of the pair, order by First asc, Second asc - - #region Sort by Second ASC - var radixBySecond = new List[secondLayerVertexCount]; - List r; - int pairCount = 0; - foreach (var pair in pairs) - { - //get the radix where the pair should be inserted - r = radixBySecond[pair.Second]; - if (r == null) - { - r = new List(); - radixBySecond[pair.Second] = r; - } - r.Add(pair); - pairCount = Math.Max(pairCount, pair.Second); - } - pairCount += 1; - #endregion - - #region Sort By First ASC - var radixByFirst = new List[firstLayerVertexCount]; - foreach (var list in radixBySecond) - { - if (list == null) - continue; - - foreach (var pair in list) - { - //get the radix where the pair should be inserted - r = radixByFirst[pair.First]; - if (r == null) - { - r = new List(); - radixByFirst[pair.First] = r; - } - r.Add(pair); - } - } - #endregion - - // - // Build the accumulator tree - // - int firstIndex = 1; - while (firstIndex < pairCount) - firstIndex *= 2; - int treeSize = 2 * firstIndex - 1; - firstIndex -= 1; - CrossCounterTreeNode[] tree = new CrossCounterTreeNode[treeSize]; - for (int i = 0; i < treeSize; i++) - tree[i] = new CrossCounterTreeNode(); - - // - // Count the crossings - // - int crossCount = 0; - int index; - foreach (var list in radixByFirst) - { - if (list == null) - continue; - - foreach (var pair in list) - { - index = pair.Second + firstIndex; - tree[index].Accumulator += pair.Weight; - switch (pair.Type) - { - case EdgeTypes.InnerSegment: - tree[index].InnerSegmentMarker = true; - break; - case EdgeTypes.NonInnerSegment: - tree[index].NonInnerSegmentQueue.Enqueue(pair.NonInnerSegment); - break; - default: - break; - } - while (index > 0) - { - if (index % 2 > 0) - { - crossCount += tree[index + 1].Accumulator * pair.Weight; - switch (pair.Type) - { - case EdgeTypes.InnerSegment: - var queue = tree[index + 1].NonInnerSegmentQueue; - while (queue.Count > 0) - { - queue.Dequeue().Marked = true; - } - break; - case EdgeTypes.NonInnerSegment: - if (tree[index + 1].InnerSegmentMarker) - { - pair.NonInnerSegment.Marked = true; - } - break; - default: - break; - } - } - index = (index - 1) / 2; - tree[index].Accumulator += pair.Weight; - switch (pair.Type) - { - case EdgeTypes.InnerSegment: - tree[index].InnerSegmentMarker = true; - break; - case EdgeTypes.NonInnerSegment: - tree[index].NonInnerSegmentQueue.Enqueue(pair.NonInnerSegment); - break; - default: - break; - } - } - } - } - - return crossCount; - } - - private static Queue GetContainerLikeItems(AlternatingLayer alternatingLayer, VertexTypes containerLikeVertexType) - { - Queue queue = new Queue(); - foreach (var item in alternatingLayer) - { - var vertex = item as SugiVertex; - if (vertex != null && vertex.Type == containerLikeVertexType) - { - queue.Enqueue(new VertexGroup() { Position = vertex.Position, Size = 1 }); - } - else if (vertex == null) - { - var container = item as ISegmentContainer; - if (container.Count > 0) - queue.Enqueue(new VertexGroup() { Position = container.Position, Size = container.Count }); - } - } - return queue; - } - - private void PlaceQVertices(AlternatingLayer alternatingLayer, IList nextLayer, bool straightSweep) - { - var type = straightSweep ? VertexTypes.QVertex : VertexTypes.PVertex; - var qVertices = new HashSet(); - foreach (var vertex in nextLayer) - { - if (vertex.Type != type) - continue; - - qVertices.Add(vertex); - } - - for (int i = 0; i < alternatingLayer.Count; i++) - { - var segmentContainer = alternatingLayer[i] as SegmentContainer; - if (segmentContainer == null) - continue; - for (int j = 0; j < segmentContainer.Count; j++) - { - var segment = segmentContainer[j]; - var vertex = straightSweep ? segment.QVertex : segment.PVertex; - if (!qVertices.Contains(vertex)) - continue; - - alternatingLayer.RemoveAt(i); - ISegmentContainer sc1, sc2; - segmentContainer.Split(segment, out sc1, out sc2); - sc1.Position = segmentContainer.Position; - sc2.Position = segmentContainer.Position + sc1.Count + 1; - alternatingLayer.Insert(i, sc1); - alternatingLayer.Insert(i + 1, vertex); - alternatingLayer.Insert(i + 2, sc2); - i = i + 1; - break; - } - } - } - - /// - /// Replaces the P or Q vertices of the actualLayer with their - /// segment on the next layer. - /// - /// The actual alternating layer. It will be modified. - /// If true, we are sweeping down else we're sweeping up. - private void AppendSegmentsToAlternatingLayer(AlternatingLayer alternatingLayer, bool straightSweep) - { - var type = straightSweep ? VertexTypes.PVertex : VertexTypes.QVertex; - for (int i = 1; i < alternatingLayer.Count; i += 2) - { - var vertex = alternatingLayer[i] as SugiVertex; - if (vertex.Type == type) - { - var precedingContainer = alternatingLayer[i - 1] as SegmentContainer; - var succeedingContainer = alternatingLayer[i + 1] as SegmentContainer; - precedingContainer.Append(vertex.Segment); - precedingContainer.Join(succeedingContainer); - - //remove the vertex and the succeeding container from the alternating layer - alternatingLayer.RemoveRange(i, 2); - i -= 2; - } - } - } - - private void ComputeMeasureValues(AlternatingLayer alternatingLayer, int nextLayerIndex, bool straightSweep) - { - AssignPositionsOnActualLayer(alternatingLayer); - AssignMeasuresOnNextLayer(_layers[nextLayerIndex], straightSweep); - } - - private AlternatingLayer InitialOrderingOfNextLayer(AlternatingLayer alternatingLayer, IList nextLayer, bool straightSweep) - { - //get the list of the containers and vertices - var segmentContainerStack = new Stack(alternatingLayer.OfType().Reverse()); - var ignorableVertexType = straightSweep ? VertexTypes.QVertex : VertexTypes.PVertex; - var vertexStack = new Stack(nextLayer.Where(v => v.Type != ignorableVertexType).OrderBy(v => v.MeasuredPosition).Reverse()); - var newAlternatingLayer = new AlternatingLayer(); - - while (vertexStack.Count > 0 && segmentContainerStack.Count > 0) - { - var vertex = vertexStack.Peek(); - var segmentContainer = segmentContainerStack.Peek(); - if (vertex.MeasuredPosition <= segmentContainer.Position) - { - newAlternatingLayer.Add(vertexStack.Pop()); - } - else if (vertex.MeasuredPosition >= (segmentContainer.Position + segmentContainer.Count - 1)) - { - newAlternatingLayer.Add(segmentContainerStack.Pop()); - } - else - { - vertexStack.Pop(); - segmentContainerStack.Pop(); - int k = (int)Math.Ceiling(vertex.MeasuredPosition - segmentContainer.Position); - ISegmentContainer sc1, sc2; - segmentContainer.Split(k, out sc1, out sc2); - newAlternatingLayer.Add(sc1); - newAlternatingLayer.Add(vertex); - sc2.Position = segmentContainer.Position + k; - segmentContainerStack.Push(sc2); - } - } - if (vertexStack.Count > 0) - newAlternatingLayer.AddRange(vertexStack.OfType()); - if (segmentContainerStack.Count > 0) - newAlternatingLayer.AddRange(segmentContainerStack.OfType()); - - return newAlternatingLayer; - } - - /// - /// Assigns the positions of the vertices and segment container - /// on the actual layer. - /// - /// The actual layer (L_i). - private static void AssignPositionsOnActualLayer(AlternatingLayer alternatingLayer) - { - //assign positions to vertices on the actualLayer (L_i) - for (int i = 1; i < alternatingLayer.Count; i += 2) - { - var precedingContainer = alternatingLayer[i - 1] as SegmentContainer; - var vertex = alternatingLayer[i] as SugiVertex; - if (i == 1) - { - vertex.Position = precedingContainer.Count; - } - else - { - var previousVertex = alternatingLayer[i - 2] as SugiVertex; - vertex.Position = previousVertex.Position + precedingContainer.Count + 1; - } - } - - //assign positions to containers on the actualLayer (L_i+1) - for (int i = 0; i < alternatingLayer.Count; i += 2) - { - var container = alternatingLayer[i] as SegmentContainer; - if (i == 0) - { - container.Position = 0; - } - else - { - var precedingVertex = alternatingLayer[i - 1] as SugiVertex; - container.Position = precedingVertex.Position + 1; - } - } - } - - private void AssignMeasuresOnNextLayer(IList layer, bool straightSweep) - { - //measures of the containers is the same as their positions - //so we should set the measures only for the vertices - foreach (var vertex in layer) - { - if ((straightSweep && vertex.Type == VertexTypes.QVertex) - || (!straightSweep && vertex.Type == VertexTypes.PVertex)) - continue; - - var edges = straightSweep ? _graph.InEdges(vertex) : _graph.OutEdges(vertex); - var oldMeasuredPosition = vertex.MeasuredPosition; - vertex.MeasuredPosition = 0; - vertex.DoNotOpt = false; - int count = 0; - foreach (var edge in edges) - { - var otherVertex = edge.OtherVertex(vertex); - vertex.MeasuredPosition += otherVertex.Position; - count++; - } - if (count > 0) - vertex.MeasuredPosition /= count; - else - { - vertex.MeasuredPosition = oldMeasuredPosition; - //vertex.MeasuredPosition = vertex.Position; - vertex.DoNotOpt = true; - } - } - } - } -} - diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs.meta deleted file mode 100644 index 1cf368b81..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoCrossingMinimizations.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ae91e7a27acfa6c4aa5569be806bf04a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs deleted file mode 100644 index e12067f87..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using QuickGraph.Algorithms.Search; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private void DoPreparing() - { - RemoveCycles(); - RemoveLoops(); - RemoveIsolatedVertices(); //it must run after the two method above - } - - private void RemoveIsolatedVertices() - { - _isolatedVertices = _graph.Vertices.Where(v => _graph.Degree(v) == 0).ToList(); - foreach (var isolatedVertex in _isolatedVertices) - _graph.RemoveVertex(isolatedVertex); - } - - /// - /// Removes the edges which source and target is the same vertex. - /// - private void RemoveLoops() - { - _graph.RemoveEdgeIf(edge => edge.Source == edge.Target); - } - - /// - /// Removes the cycles from the original graph with simply reverting - /// some edges. - /// - private void RemoveCycles() - { - //find the cycle edges with dfs - var cycleEdges = new List(); - var dfsAlgo = new DepthFirstSearchAlgorithm(_graph); - dfsAlgo.BackEdge += cycleEdges.Add; - dfsAlgo.Compute(); - - //and revert them - foreach (var edge in cycleEdges) - { - _graph.RemoveEdge(edge); - _graph.AddEdge(new SugiEdge(edge.OriginalEdge, edge.Target, edge.Source)); - } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs.meta deleted file mode 100644 index 3488f4507..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaAlgorithm.DoPreparing.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bdb31932b3f51bc4b9667914107be8de -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs deleted file mode 100644 index a73af8233..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - protected class AlternatingLayer : List, ICloneable - { - /// - /// This method ensures that the layer is a real alternating - /// layer: starts with a SegmentContainer followed by a Vertex, - /// another SegmentContainer, another Vertex, ... ending wiht - /// a SegmentContainer. - /// - public void EnsureAlternatingAndPositions() - { - bool shouldBeAContainer = true; - for (int i = 0; i < Count; i++, shouldBeAContainer = !shouldBeAContainer) - { - if (shouldBeAContainer && this[i] is SugiVertex) - { - Insert(i, new SegmentContainer()); - } - else - { - while (i < Count && !shouldBeAContainer && this[i] is SegmentContainer) - { - //the previous one must be a container too - var prevContainer = this[i - 1] as SegmentContainer; - var actualContainer = this[i] as SegmentContainer; - prevContainer.Join(actualContainer); - RemoveAt(i); - } - if (i >= Count) - break; - } - } - - if (shouldBeAContainer) - { - //the last element in the alternating layer - //should be a container, but it's not - //so add an empty one - Add(new SegmentContainer()); - } - } - - protected void EnsurePositions() - { - //assign positions to vertices on the actualLayer (L_i) - for (int i = 1; i < this.Count; i += 2) - { - var precedingContainer = this[i - 1] as SegmentContainer; - var vertex = this[i] as SugiVertex; - if (i == 1) - { - vertex.Position = precedingContainer.Count; - } - else - { - var previousVertex = this[i - 2] as SugiVertex; - vertex.Position = previousVertex.Position + precedingContainer.Count + 1; - } - } - - //assign positions to containers on the actualLayer (L_i+1) - for (int i = 0; i < this.Count; i += 2) - { - var container = this[i] as SegmentContainer; - if (i == 0) - { - container.Position = 0; - } - else - { - var precedingVertex = this[i - 1] as SugiVertex; - container.Position = precedingVertex.Position + 1; - } - } - } - - public void SetPositions() - { - int nextPosition = 0; - for (int i = 0; i < this.Count; i++) - { - var segmentContainer = this[i] as SegmentContainer; - var vertex = this[i] as SugiVertex; - if (segmentContainer != null) - { - segmentContainer.Position = nextPosition; - nextPosition += segmentContainer.Count; - } - else if (vertex != null) - { - vertex.Position = nextPosition; - nextPosition += 1; - } - } - } - - public AlternatingLayer Clone() - { - var clonedLayer = new AlternatingLayer(); - foreach (var item in this) - { - var cloneableItem = item as ICloneable; - if (cloneableItem != null) - clonedLayer.Add(cloneableItem.Clone() as IData); - else - clonedLayer.Add(item); - } - return clonedLayer; - } - - #region ICloneable Members - - object ICloneable.Clone() - { - return this.Clone(); - } - - #endregion - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs.meta deleted file mode 100644 index 4d412264e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.AlternatingLayer.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ceab242b765a9eb4c8154d5262e5f948 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs deleted file mode 100644 index 7d33e93f1..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs +++ /dev/null @@ -1,145 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Diagnostics.Contracts; -using QuickGraph; -using System.Diagnostics; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - protected class SugiEdge : TaggedEdge - { - public SugiEdge(TEdge originalEdge, SugiVertex source, SugiVertex target) - : base(source, target, originalEdge) { } - - /// - /// Gets the original edge of this SugiEdge. - /// - public TEdge OriginalEdge { get { return this.Tag; } } - - /// - /// Gets or sets that the edge is included in a - /// type 1 conflict as a non-inner segment (true) or not (false). - /// - public bool Marked = false; - - public bool TempMark = false; - - public void SaveMarkedToTemp() - { - TempMark = Marked; - } - - public void LoadMarkedFromTemp() - { - Marked = TempMark; - } - } - - - - protected enum VertexTypes - { - Original, - PVertex, - QVertex, - RVertex - } - - protected enum EdgeTypes - { - NonInnerSegment, - InnerSegment - } - - protected interface IData - { - int Position { get; set; } - } - - protected abstract class Data : IData - { - public int Position { get; set; } - - /* Used by horizontal assignment */ - public readonly Data[] Sinks = new Data[4]; - public readonly float[] Shifts = new float[4] { float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity }; - } - - protected abstract class SugiVertex : Data - { - public TVertex1 OriginalVertex; - public VertexTypes Type; - public Segment Segment; - public int LayerIndex { get; set; } - public float MeasuredPosition { get; set; } - - public SugiVertex() { } - - public SugiVertex(TVertex1 originalVertex) - { - OriginalVertex = originalVertex; - Type = VertexTypes.Original; - Segment = null; - } - } - - [DebuggerDisplay("{Type}: {OriginalVertex} - {Position} ; {MeasuredPosition} on layer {LayerIndex}")] - protected class SugiVertex : SugiVertex - { - public readonly float[] HorizontalPositions = new float[4] { float.NaN, float.NaN, float.NaN, float.NaN }; - public float HorizontalPosition = float.NaN; - public float VerticalPosition = float.NaN; - public readonly SugiVertex[] Roots = new SugiVertex[4]; - public readonly SugiVertex[] Aligns = new SugiVertex[4]; - public readonly float[] BlockWidths = new float[4] { float.NaN, float.NaN, float.NaN, float.NaN }; - public int IndexInsideLayer; - public int PermutationIndex; - public int TempPosition; - public bool DoNotOpt; - public readonly float2 Size; - - public SugiVertex() - { - Size = new float2(); - } - - public SugiVertex(TVertex originalVertex, float2 size) - : base(originalVertex) - { - Size = size; - } - - public void SavePositionToTemp() - { - TempPosition = Position; - } - - public void LoadPositionFromTemp() - { - Position = TempPosition; - } - } - - protected class Segment : Data - { - /// - /// Gets or sets the p-vertex of the segment. - /// - public SugiVertex PVertex; - - /// - /// Gets or sets the q-vertex of the segment. - /// - public SugiVertex QVertex; - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs.meta deleted file mode 100644 index 13a260feb..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.Data.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9bc3e9bf6efa860419c2e7354d0286c2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs deleted file mode 100644 index 7b584f0b6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs +++ /dev/null @@ -1,441 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using GraphSharp; -using System.Diagnostics; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private readonly IMutableBidirectionalGraph> _sparseCompactionGraph - = new BidirectionalGraph>(); - - private float[] _layerHeights; - private float[] _layerPositions; - - private enum LeftRightMode : byte - { - Left = 0, - Right = 1 - } - - private enum UpperLowerEdges : byte - { - Upper = 0, - Lower = 1 - } - - private void CalculatePositions() - { - PutbackIsolatedVertices(); - CalculateLayerHeightsAndPositions(); - CalculateVerticalPositions(); - - if (Parameters.PositionMode < 0 || Parameters.PositionMode == 0) - CalculateHorizontalPositions(LeftRightMode.Left, UpperLowerEdges.Upper); - if (Parameters.PositionMode < 0 || Parameters.PositionMode == 1) - CalculateHorizontalPositions(LeftRightMode.Right, UpperLowerEdges.Upper); - if (Parameters.PositionMode < 0 || Parameters.PositionMode == 2) - CalculateHorizontalPositions(LeftRightMode.Left, UpperLowerEdges.Lower); - if (Parameters.PositionMode < 0 || Parameters.PositionMode == 3) - CalculateHorizontalPositions(LeftRightMode.Right, UpperLowerEdges.Lower); - - CalculateRealPositions(); - DoEdgeRouting(); - - SavePositions(); - } - - private void DoEdgeRouting() - { - switch (Parameters.EdgeRouting) - { - case SugiyamaEdgeRoutings.Traditional: - DoTraditionalEdgeRouting(); - break; - case SugiyamaEdgeRoutings.Orthogonal: - DoOrthogonalEdgeRouting(); - break; - default: - break; - } - - } - - private void DoOrthogonalEdgeRouting() - { - foreach (var edge in VisitedGraph.Edges) - { - float2[] orthoRoutePoints = new float2[2]; - var sourceVertex = _vertexMap[edge.Source]; - var targetVertex = _vertexMap[edge.Target]; - bool notSwitched = (sourceVertex.LayerIndex < targetVertex.LayerIndex); - int sourceIndex = notSwitched ? 0 : 1; - int targetIndex = notSwitched ? 1 : 0; - orthoRoutePoints[sourceIndex] = new float2() - { - x = sourceVertex.HorizontalPosition, - y = _layerPositions[sourceVertex.LayerIndex] + _layerHeights[sourceVertex.LayerIndex] + Parameters.LayerDistance / 2.0f - }; - orthoRoutePoints[targetIndex] = new float2() - { - x = targetVertex.HorizontalPosition, - y = _layerPositions[targetVertex.LayerIndex] - Parameters.LayerDistance / 2.0f - }; - _edgeRoutingPoints[edge] = orthoRoutePoints; - } - - foreach (var kvp in _dummyVerticesOfEdges) - { - float2[] orthoRoutePoints = _edgeRoutingPoints[kvp.Key]; - - var routePoints = new float2[kvp.Value.Count + 4]; - routePoints[0] = orthoRoutePoints[0]; - routePoints[kvp.Value.Count + 3] = orthoRoutePoints[1]; - for (int i = 0; i < kvp.Value.Count; i++) - { - var vertex = kvp.Value[i]; - routePoints[i+2] = new float2(vertex.HorizontalPosition, vertex.VerticalPosition); - } - routePoints[1] = new float2(routePoints[2].x, routePoints[0].y); - routePoints[kvp.Value.Count + 2] = new float2(routePoints[kvp.Value.Count + 1].x, routePoints[kvp.Value.Count + 3].y); - _edgeRoutingPoints[kvp.Key] = routePoints; - } - - } - - private void DoTraditionalEdgeRouting() - { - foreach (var kvp in _dummyVerticesOfEdges) - { - var routePoints = new float2[kvp.Value.Count]; - for (int i = 0; i < kvp.Value.Count; i++) - { - var vertex = kvp.Value[i]; - routePoints[i] = new float2(vertex.HorizontalPosition, vertex.VerticalPosition); - } - _edgeRoutingPoints[kvp.Key] = routePoints; - } - - } - - private void SavePositions() - { - foreach (var vertex in _graph.Vertices) - { - if (vertex.Type == VertexTypes.Original) - VertexPositions[vertex.OriginalVertex] = new float2(vertex.HorizontalPosition, vertex.VerticalPosition); - } - - } - - private void PutbackIsolatedVertices() - { - _sparseCompactionGraph.AddVertexRange(_isolatedVertices.OfType()); - _graph.AddVertexRange(_isolatedVertices); - int layer = 0; - SugiVertex prevIsolatedVertex = null; - foreach (var isolatedVertex in _isolatedVertices) - { - var lastOnLayer = _sparseCompactionByLayerBackup[layer].LastOrDefault(); - _layers[layer].Add(isolatedVertex); - isolatedVertex.LayerIndex = layer; - isolatedVertex.Position = _layers[layer].Count - 1; - if (lastOnLayer != null) - { - var edge = new Edge(lastOnLayer.Target, isolatedVertex); - _sparseCompactionByLayerBackup[layer].Add(edge); - _sparseCompactionGraph.AddEdge(edge); - } - if (layer > 0 && prevIsolatedVertex != null) - { - _graph.AddEdge(new SugiEdge(default(TEdge), prevIsolatedVertex, isolatedVertex)); - } - layer = (layer + 1) % _layers.Count; - prevIsolatedVertex = isolatedVertex; - } - } - - private void CalculateLayerHeightsAndPositions() - { - _layerHeights = new float[_layers.Count]; - for (int i = 0; i < _layers.Count; i++) - _layerHeights[i] = _layers[i].Max(v => v.Size.y); - - float layerDistance = Parameters.LayerDistance; - _layerPositions = new float[_layers.Count]; - _layerPositions[0] = 0; - for (int i = 1; i < _layers.Count; i++) - _layerPositions[i] = _layerPositions[i - 1] + _layerHeights[i - 1] + layerDistance; - - } - - private void CalculateRealPositions() - { - foreach (var vertex in _graph.Vertices) - { - Debug.WriteLine(string.Format("{0}:\t{1}\t{2}\t{3}\t{4}", - vertex.OriginalVertex, - vertex.HorizontalPositions[0], - vertex.HorizontalPositions[1], - vertex.HorizontalPositions[2], - vertex.HorizontalPositions[3])); - if (Parameters.PositionMode < 0) - { - vertex.HorizontalPosition = - (vertex.HorizontalPositions[0] + vertex.HorizontalPositions[1] - + vertex.HorizontalPositions[2] + vertex.HorizontalPositions[3]) / 4.0f; - } - else - { - vertex.HorizontalPosition = vertex.HorizontalPositions[Parameters.PositionMode]; - } - } - } - - private void CalculateVerticalPositions() - { - foreach (var vertex in _graph.Vertices) - vertex.VerticalPosition = _layerPositions[vertex.LayerIndex] + (vertex.Size.y <= 0 ? _layerHeights[vertex.LayerIndex] : vertex.Size.y) / 2.0f; - } - - /// - /// Calculates the horizontal positions based on the selected modes. - /// - /// Mode of the vertical alignment. - /// Alignment based on which edges (upper or lower ones). - private void CalculateHorizontalPositions(LeftRightMode leftRightMode, UpperLowerEdges upperLowerEdges) - { - int modeIndex = (byte)upperLowerEdges * 2 + (byte)leftRightMode; - InitializeRootsAndAligns(modeIndex); - DoAlignment(modeIndex, leftRightMode, upperLowerEdges); - WriteOutAlignment(modeIndex); - InitializeSinksAndShifts(modeIndex); - DoHorizontalCompaction(modeIndex, leftRightMode, upperLowerEdges); - } - - private void WriteOutAlignment(int modeIndex) - { - Debug.WriteLine(string.Format("Alignment for {0}", modeIndex)); - foreach (var vertex in _graph.Vertices) - Debug.WriteLine(string.Format("{0},{1},{2}: Root {3},{4},{5}\tAlign {6},{7},{8}", - vertex.OriginalVertex, - vertex.LayerIndex, - vertex.Type, - vertex.Roots[modeIndex].OriginalVertex, - vertex.Roots[modeIndex].LayerIndex, - vertex.Roots[modeIndex].Type, - vertex.Aligns[modeIndex].OriginalVertex, - vertex.Aligns[modeIndex].LayerIndex, - vertex.Aligns[modeIndex].Type)); - } - - private void InitializeSinksAndShifts(int modeIndex) - { - foreach (var vertex in _graph.Vertices) - { - vertex.Sinks[modeIndex] = vertex; - vertex.Shifts[modeIndex] = float.PositiveInfinity; - vertex.HorizontalPositions[modeIndex] = float.NaN; - } - } - - private void PlaceBlock(int modeIndex, LeftRightMode leftRightMode, UpperLowerEdges upperLowerEdges, SugiVertex v) - { - if (!float.IsNaN(v.HorizontalPositions[modeIndex])) - return; - - float delta = Parameters.VertexDistance; - v.HorizontalPositions[modeIndex] = 0; - Data w = v; - do - { - SugiVertex wVertex = w as SugiVertex; - Segment wSegment = w as Segment; - if (_sparseCompactionGraph.ContainsVertex(w) && - ((leftRightMode == LeftRightMode.Left && _sparseCompactionGraph.InDegree(w) > 0) - || (leftRightMode == LeftRightMode.Right && _sparseCompactionGraph.OutDegree(w) > 0))) - { - var edges = leftRightMode == LeftRightMode.Left - ? _sparseCompactionGraph.InEdges(w) - : _sparseCompactionGraph.OutEdges(w); - foreach (var edge in edges) - { - SugiVertex u = null; - Data pred = leftRightMode == LeftRightMode.Left ? edge.Source : edge.Target; - if (pred is SugiVertex) - u = ((SugiVertex)pred).Roots[modeIndex]; - else - { - var segment = (Segment)pred; - u = upperLowerEdges == UpperLowerEdges.Upper ? segment.PVertex.Roots[modeIndex] : segment.QVertex.Roots[modeIndex]; - } - PlaceBlock(modeIndex, leftRightMode, upperLowerEdges, u); - if (v.Sinks[modeIndex] == v) - v.Sinks[modeIndex] = u.Sinks[modeIndex]; - //var xDelta = delta + (v.Roots[modeIndex].BlockWidths[modeIndex] + u.BlockWidths[modeIndex]) / 2.0; - var xDelta = delta + ((wVertex?.Size.x ?? 0.0f) + ((pred is SugiVertex vertex) ? vertex.Size.x : u.BlockWidths[modeIndex])) / 2.0f; - if (v.Sinks[modeIndex] != u.Sinks[modeIndex]) - { - var s = leftRightMode == LeftRightMode.Left - ? v.HorizontalPositions[modeIndex] - u.HorizontalPositions[modeIndex] - xDelta - : u.HorizontalPositions[modeIndex] - v.HorizontalPositions[modeIndex] - xDelta; - - u.Sinks[modeIndex].Shifts[modeIndex] = leftRightMode == LeftRightMode.Left - ? Math.Min(u.Sinks[modeIndex].Shifts[modeIndex], s) - : Math.Max(u.Sinks[modeIndex].Shifts[modeIndex], s); - } - else - { - v.HorizontalPositions[modeIndex] = - leftRightMode == LeftRightMode.Left - ? Math.Max(v.HorizontalPositions[modeIndex], u.HorizontalPositions[modeIndex] + xDelta) - : Math.Min(v.HorizontalPositions[modeIndex], u.HorizontalPositions[modeIndex] - xDelta); - } - } - } - if (wSegment != null) - w = (upperLowerEdges == UpperLowerEdges.Upper) ? wSegment.QVertex : wSegment.PVertex; - else if (wVertex.Type == VertexTypes.PVertex && upperLowerEdges == UpperLowerEdges.Upper) - w = wVertex.Segment; - else if (wVertex.Type == VertexTypes.QVertex && upperLowerEdges == UpperLowerEdges.Lower) - w = wVertex.Segment; - else - w = wVertex.Aligns[modeIndex]; - } while (w != v); - } - - private void DoHorizontalCompaction(int modeIndex, LeftRightMode leftRightMode, UpperLowerEdges upperLowerEdges) - { - foreach (var vertex in _graph.Vertices) - { - if (vertex.Roots[modeIndex] == vertex) - PlaceBlock(modeIndex, leftRightMode, upperLowerEdges, vertex); - } - - foreach (var vertex in _graph.Vertices) - { - vertex.HorizontalPositions[modeIndex] = vertex.Roots[modeIndex].HorizontalPositions[modeIndex]; - if (vertex.Roots[modeIndex].Sinks[modeIndex].Shifts[modeIndex] < float.PositiveInfinity && - vertex.Roots[modeIndex] == vertex) - vertex.HorizontalPositions[modeIndex] += vertex.Roots[modeIndex].Sinks[modeIndex].Shifts[modeIndex]; - } - } - - private void DoAlignment(int modeIndex, LeftRightMode leftRightMode, UpperLowerEdges upperLowerEdges) - { - int layerStart, layerEnd, layerStep; - if (upperLowerEdges == UpperLowerEdges.Upper) - { - layerStart = 0; - layerEnd = _layers.Count; - layerStep = 1; - } - else - { - layerStart = _layers.Count - 1; - layerEnd = -1; - layerStep = -1; - } - for (int i = layerStart; i != layerEnd; i += layerStep) - { - int r = leftRightMode == LeftRightMode.Left ? int.MinValue : int.MaxValue; - var layer = _layers[i]; - int vertexStart, vertexEnd, vertexStep; - if (leftRightMode == LeftRightMode.Left) - { - vertexStart = 0; - vertexEnd = layer.Count; - vertexStep = 1; - } - else - { - vertexStart = layer.Count - 1; - vertexEnd = -1; - vertexStep = -1; - } - for (int j = vertexStart; j != vertexEnd; j += vertexStep) - { - var vertex = layer[j]; - if (vertex.Type == VertexTypes.Original - || vertex.Type == VertexTypes.RVertex - || (vertex.Type == VertexTypes.PVertex && upperLowerEdges == UpperLowerEdges.Upper) - || (vertex.Type == VertexTypes.QVertex && upperLowerEdges == UpperLowerEdges.Lower)) - { - List neighbourEdges = null; - neighbourEdges = upperLowerEdges == UpperLowerEdges.Upper - ? _graph.InEdges(vertex).OrderBy(e => e.Source.Position).ToList() - : _graph.OutEdges(vertex).OrderBy(e => e.Target.Position).ToList(); - if (neighbourEdges.Count <= 0) - continue; - - int c1 = (int)Math.Floor((neighbourEdges.Count + 1) / 2.0) - 1; - int c2 = (int)Math.Ceiling((neighbourEdges.Count + 1) / 2.0) - 1; - int[] medians = null; - if (c1 == c2) - { - medians = new int[1] { c1 }; - } - else - { - medians = leftRightMode == LeftRightMode.Left - ? new int[2] { c1, c2 } - : new int[2] { c2, c1 }; - } - for (int m = 0; m < medians.Length; m++) - { - if (vertex.Aligns[modeIndex] != vertex) - continue; - var edge = neighbourEdges[medians[m]]; - if (edge.Marked) - Debug.WriteLine("Edge marked: " + edge.Source.OriginalVertex + ", " + edge.Target.OriginalVertex); - var neighbour = edge.OtherVertex(vertex); - if (!edge.Marked && - ((leftRightMode == LeftRightMode.Left && r < neighbour.Position) - || (leftRightMode == LeftRightMode.Right && r > neighbour.Position))) - { - neighbour.Aligns[modeIndex] = vertex; - neighbour.BlockWidths[modeIndex] = max(neighbour.BlockWidths[modeIndex], vertex.Size.x); - vertex.Roots[modeIndex] = neighbour.Roots[modeIndex]; - vertex.Aligns[modeIndex] = vertex.Roots[modeIndex]; - r = neighbour.Position; - } - } - } - else if (vertex.Type == VertexTypes.PVertex /*&& upperLowerEdges == UpperLowerEdges.Lower*/) - { - //align the segment of the PVertex - vertex.Roots[modeIndex] = vertex.Segment.QVertex.Roots[modeIndex]; - vertex.Aligns[modeIndex] = vertex.Roots[modeIndex]; - r = vertex.Segment.Position; - } - else if (vertex.Type == VertexTypes.QVertex /*&& upperLowerEdges == UpperLowerEdges.Upper*/) - { - //align the segment of the QVertex - vertex.Roots[modeIndex] = vertex.Segment.PVertex.Roots[modeIndex]; - vertex.Aligns[modeIndex] = vertex.Roots[modeIndex]; - r = vertex.Segment.Position; - } - } - } - } - - private void InitializeRootsAndAligns(int modeIndex) - { - foreach (var vertex in _graph.Vertices) - { - vertex.Roots[modeIndex] = vertex; - vertex.Aligns[modeIndex] = vertex; - vertex.BlockWidths[modeIndex] = vertex.Size.x; - } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs.meta deleted file mode 100644 index db0d09852..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.HorizontalAssignment.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9ef25fd5509b24a438badd922194e263 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs deleted file mode 100644 index 57236d607..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using System.Diagnostics.Contracts; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - protected interface ISegmentContainer : IEnumerable, IData, ICloneable - { - /// - /// Appends the segment to the end of the - /// container. - /// - /// The segment to append. - void Append(Segment s); - - /// - /// Appends all elements of the container to - /// this container. - /// - /// - void Join(ISegmentContainer sc); - - /// - /// Split this container at segment into two contsiners - /// and . - /// All elements less than s are stored in container and - /// those who are greated than in . - /// Element is neither in or - /// . - /// - /// The segment to split at. - /// The container which contains the elements before . - /// The container which contains the elements after . - void Split(Segment s, out ISegmentContainer sc1, out ISegmentContainer sc2); - - /// - /// Split the container at position . The first - /// elements of the container are stored in and the remainder - /// in . - /// - /// The index where the container should be splitted. - /// The container which contains the elements before . - /// The container which contains the elements after . - void Split(int k, out ISegmentContainer sc1, out ISegmentContainer sc2); - - int Count { get; } - } - - //TODO: implement it with a SplayTree - //info could be found at: - //http://en.wikipedia.org/wiki/Splay_tree - // - //Implementation that could be ported can be found at: - //http://www.link.cs.cmu.edu/link/ftp-site/splaying/SplayTree.java - protected class SegmentContainer : List, ISegmentContainer - { - - public SegmentContainer() { } - public SegmentContainer(int capacity) - : base(capacity) { } - - #region ISegmentContainer Members - - public void Append(Segment s) - { - Add(s); - } - - public void Join(ISegmentContainer sc) - { - AddRange(sc); - } - - public void Split(Segment s, out ISegmentContainer sc1, out ISegmentContainer sc2) - { - //Contract.Requires(Contains(s)); - //Contract.Ensures(sc1 != null); - //Contract.Ensures(sc2 != null); - - int index = IndexOf(s); - Split(index, out sc1, out sc2, false); - } - - public void Split(int k, out ISegmentContainer sc1, out ISegmentContainer sc2) - { - //Contract.Requires(k < Count); - //Contract.Ensures(sc1 != null); - //Contract.Ensures(sc2 != null); - - Split(k, out sc1, out sc2, true); - } - - protected void Split(int k, out ISegmentContainer sc1, out ISegmentContainer sc2, bool keep) - { - //Contract.Requires(k < Count); - //Contract.Ensures(sc1 != null); - //Contract.Ensures(sc2 != null); - - int sc1Count = k + (keep ? 1 : 0); - int sc2Count = Count - k - 1; - - sc1 = new SegmentContainer(sc1Count); - sc2 = new SegmentContainer(sc2Count); - - for (int i = 0; i < sc1Count; i++) - sc1.Append(this[i]); - - for (int i = k + 1; i < Count; i++) - sc2.Append(this[i]); - } - #endregion - - #region IData Members - - //TODO get them from the first element of the container, MAYBE! - public int Position { get; set; } - - #endregion - - #region ICloneable Members - - public object Clone() - { - return this.MemberwiseClone(); - } - - #endregion - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs.meta deleted file mode 100644 index 3d72239e8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.SegmentContainer.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 55c5993e5af765041bcfa6168fa0ee50 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs deleted file mode 100644 index ed5c89834..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; -using System.Diagnostics.Contracts; -using QuickGraph.Algorithms.Search; -using QuickGraph.Algorithms; -using System.Linq; -using System; -using GraphSharp.Algorithms.EdgeRouting; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class EfficientSugiyamaLayoutAlgorithm - : DefaultParameterizedLayoutAlgorithmBase, - IEdgeRoutingAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - /// - /// The copy of the VisitedGraph which should be laid out. - /// - private IMutableBidirectionalGraph _graph; - - /// - /// Routing points for the edges of the original graph. - /// - private readonly IDictionary _edgeRoutingPoints = - new Dictionary(); - - private readonly IDictionary> _dummyVerticesOfEdges = - new Dictionary>(); - - private readonly IDictionary _vertexSizes; - - private readonly IDictionary _vertexMap = - new Dictionary(); - - /// - /// Isolated vertices in the visited graph, which will be handled only in - /// the last step of the layout. - /// - private List _isolatedVertices; - - /// - /// Edges that has been involved in cycles in the original graph. (These has - /// been reverted during this layout algorithm). - /// - private readonly IList _cycleEdges = new List(); - - /// - /// It stores the vertices or segments which inside the layers. - /// - private readonly IList> _layers = - new List>(); - - public EfficientSugiyamaLayoutAlgorithm( - TGraph visitedGraph, - EfficientSugiyamaLayoutParameters parameters, - IDictionary vertexSizes) - : this(visitedGraph, parameters, null, vertexSizes) - { } - - public EfficientSugiyamaLayoutAlgorithm( - TGraph visitedGraph, - EfficientSugiyamaLayoutParameters parameters, - IDictionary vertexPositions, - IDictionary vertexSizes) - : base(visitedGraph, vertexPositions, parameters) - { - _vertexSizes = vertexSizes; - } - - /// - /// Initializes the private _graph field which stores the graph that - /// we operate on. - /// - private void InitTheGraph() - { - //make a copy of the original graph - _graph = new BidirectionalGraph(); - - //copy the vertices - foreach (var vertex in VisitedGraph.Vertices) - { - float2 size = new float2(); - if (_vertexSizes != null) - _vertexSizes.TryGetValue(vertex, out size); - - var vertexWrapper = new SugiVertex(vertex, size); - _graph.AddVertex(vertexWrapper); - _vertexMap[vertex] = vertexWrapper; - } - - //copy the edges - foreach (var edge in VisitedGraph.Edges) - { - var edgeWrapper = new SugiEdge(edge, _vertexMap[edge.Source], _vertexMap[edge.Target]); - _graph.AddEdge(edgeWrapper); - } - } - - protected override void InternalCompute() - { - InitTheGraph(); - - //first step - DoPreparing(); - - BuildSparseNormalizedGraph(); - DoCrossingMinimizations(); - CalculatePositions(); - } - - - - #region IEdgeRoutingAlgorithm Members - - public IDictionary EdgeRoutes - { - get { return _edgeRoutingPoints; } - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs.meta deleted file mode 100644 index d7ffdc1ec..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6a54600668450134fbbba0fb0f41a625 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs deleted file mode 100644 index 7e0929ad8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs +++ /dev/null @@ -1,120 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public class EfficientSugiyamaLayoutParameters : LayoutParametersBase - { - //private LayoutDirection _direction = LayoutDirection.TopToBottom; - private float _layerDistance = 15.0f; - private float _vertexDistance = 15.0f; - private int _positionMode = -1; - private bool _optimizeWidth = false; - private float _widthPerHeight = 1.0f; - private bool _minimizeEdgeLength = true; - internal const int MaxPermutations = 50; - private SugiyamaEdgeRoutings _edgeRouting = SugiyamaEdgeRoutings.Traditional; - - //it will be available on next releases - /*public LayoutDirection Direction - { - get { return _direction; } - set - { - if (value == _direction) - return; - - _direction = value; - NotifyPropertyChanged("Direction"); - } - }*/ - - public float LayerDistance - { - get { return _layerDistance; } - set - { - if (value == _layerDistance) - return; - - _layerDistance = value; - NotifyPropertyChanged("LayerDistance"); - } - } - - public float VertexDistance - { - get { return _vertexDistance; } - set - { - if (value == _vertexDistance) - return; - - _vertexDistance = value; - NotifyPropertyChanged("VertexDistance"); - } - } - - public int PositionMode - { - get { return _positionMode; } - set - { - if (value == _positionMode) - return; - - _positionMode = value; - NotifyPropertyChanged("PositionMode"); - } - } - - public float WidthPerHeight - { - get { return _widthPerHeight; } - set - { - if (value == _widthPerHeight) - return; - - _widthPerHeight = value; - NotifyPropertyChanged("WidthPerHeight"); - } - } - - public bool OptimizeWidth - { - get { return _optimizeWidth; } - set - { - if (value == _optimizeWidth) - return; - - _optimizeWidth = value; - NotifyPropertyChanged("OptimizeWidth"); - } - } - - public bool MinimizeEdgeLength - { - get { return _minimizeEdgeLength; } - set - { - if (value == _minimizeEdgeLength) - return; - - _minimizeEdgeLength = value; - NotifyPropertyChanged("MinimizeEdgeLength"); - } - } - - public SugiyamaEdgeRoutings EdgeRouting - { - get { return _edgeRouting; } - set - { - if (value == _edgeRouting) - return; - - _edgeRouting = value; - NotifyPropertyChanged("EdgeRouting"); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs.meta deleted file mode 100644 index d12fb527c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/EfficientSugiyamaLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 480cb29bbf29e4043ae1aa805b68ac88 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs deleted file mode 100644 index 6fc686dc5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public enum SugiyamaEdgeRoutings - { - Traditional, - Orthogonal - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs.meta deleted file mode 100644 index 676f14375..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaEdgeRoutings.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 53c03bff5ab59a149a140bf94319861e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs deleted file mode 100644 index 38cccb48f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - [Flags] - protected enum BaryCenter - { - Up = 1, - Down = 2, - Sub = 4 - } - - [Flags] - protected enum CrossCount - { - Up = 1, - Down = 2 - } - - protected enum SweepingDirection - { - Up = 1, - Down = 2 - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs.meta deleted file mode 100644 index acca3ba90..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.Enums.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3e19fc55eff036043acf352724065e9f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs deleted file mode 100644 index 6bae4f626..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private class SugiEdge : TypedEdge - { - public bool IsLongEdge - { - get { return DummyVertices != null; } - set - { - if ( IsLongEdge != value ) - { - DummyVertices = value ? new List() : null; - } - } - } - - public IList DummyVertices { get; private set; } - public TEdge Original { get; private set; } - public bool IsReverted - { - get - { - return !Original.Equals(default(TEdge)) && Original.Source == Target.Original && Original.Target == Source.Original; - } - } - - public SugiEdge( TEdge original, SugiVertex source, SugiVertex target, EdgeTypes type ) - : base( source, target, type ) - { - Original = original; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs.meta deleted file mode 100644 index 5afb773bc..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2be3292d0f80d754bb8621bbe9a3065e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs deleted file mode 100644 index 744d49bc5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs +++ /dev/null @@ -1,115 +0,0 @@ -using QuickGraph; -using System.Diagnostics; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - [DebuggerDisplay( "{Original} [{LayerIndex}] Pos={Position} Meas={Measure} RealPos={RealPosition}" )] - private class SugiVertex : WrappedVertex - { - //Constants - public const int UndefinedLayerIndex = -1; - public const int UndefinedPosition = -1; - - //Private fields - private int _layerIndex = UndefinedLayerIndex; - - //Public fields - /// - /// The position of the vertex inside the layer. - /// - public int Position; - - /// - /// The measure of the vertex (up/down-barycenter/median depends on the implementation). - /// - public float Measure; - - /// - /// The real position (x and y coordinates) of the vertex. - /// - public float2 RealPosition; - - /// - /// Used in the algorithms for temporary storage. - /// - public float Temp; - - /// - /// Size of the vertex. - /// - public float2 Size; - - /// - /// The index of the layer where this vertex belongs to. - /// - public int LayerIndex - { - get { return _layerIndex; } - set - { - if ( _layerIndex != value ) - { - //change the index - _layerIndex = value; - - //add to the new layer - if ( _layerIndex == UndefinedLayerIndex ) - Position = UndefinedPosition; - } - } - } - - /// - /// Gets that this vertex is a dummy vertex (a point of a replaced long edge) or not. - /// - public bool IsDummyVertex - { - get { return Original == null; } - } - - /// - /// The priority of the vertex. Used in the horizontal position assignment phase. - /// The dummy vertices has maximal priorities (because the dummy edge should be as vertical as possible). - /// The other vertices priority based on it's edge count. - /// - public int Priority; - - /// - /// Represents the subpriority of this vertex between the vertices with the same priority. - /// - public int SubPriority; - - public int PermutationIndex; - - #region Maybe not needed - - public int LeftGeneralEdgeCount; - public int RightGeneralEdgeCount; - - #endregion - - /// - /// Constructor of the vertex. - /// - /// The object which is wrapped by this ComplexVertex. - /// The size of the original vertex. - public SugiVertex( TVertex originalVertex, float2 size ) - : base( originalVertex ) - { - Size = size; - } - - public override string ToString() - { - return ( Original == null ? "Dummy" : Original.ToString() ) + " [" + LayerIndex + "]"; - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs.meta deleted file mode 100644 index f94902baa..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.SugiVertex.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a67bfacff6e3f2240a881dc6486ddfaa -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs deleted file mode 100644 index dd0405737..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs +++ /dev/null @@ -1,533 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using QuickGraph; -using System.Diagnostics; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - private class VertexLayer : List - { - #region Properties, fields - /// - /// Index of the layer. - /// - public int LayerIndex { get; set; } - - public readonly SoftMutableHierarchicalGraph Graph; - - /// - /// Height of the layer. (Equals with the height of the heightest vertex.) - /// - public float Height { get { return ComputeHeight(); } } - - /// - /// List of the hierarchical edges comes into this layer. - /// - public IEnumerable UpEdges - { - get - { - foreach ( SugiVertex v in this ) - { - foreach ( SugiEdge e in Graph.InHierarchicalEdges( v ) ) - { - yield return e; - } - } - } - } - - /// - /// List of the hierarhical edges goes out from this layer. - /// - public IEnumerable DownEdges - { - get - { - foreach ( SugiVertex v in this ) - { - foreach ( SugiEdge e in Graph.OutHierarchicalEdges( v ) ) - { - yield return e; - } - } - } - } - #endregion - - #region Constructors - - public VertexLayer( - SoftMutableHierarchicalGraph graph, - int layerIndex, - IEnumerable vertices ) - { - Graph = graph; - LayerIndex = layerIndex; - AddRange( vertices ); - } - - #endregion - - #region Crosscounting - public int CalculateCrossCount( CrossCount crossCountDirection ) - { - return CalculateCrossCount( crossCountDirection, false, false ); - } - - public int CalculateCrossCount( CrossCount crossCountDirection, bool sourcesByMeasure, bool targetsByMeasure ) - { - int crossCount = 0; - - bool calculateUpCrossings = ( crossCountDirection & CrossCount.Up ) == CrossCount.Up; - bool calculateDownCrossings = ( crossCountDirection & CrossCount.Down ) == CrossCount.Down; - - if ( calculateUpCrossings ) - crossCount += CalculateCrossings( UpEdges, sourcesByMeasure, targetsByMeasure ); - - if ( calculateDownCrossings ) - crossCount += CalculateCrossings( DownEdges, sourcesByMeasure, targetsByMeasure ); - - return crossCount; - } - - private static int CalculateCrossings( IEnumerable edges, bool sourcesByMeasure, bool targetsByMeasure ) - { - var edgeArray = edges.ToArray(); - int count = edgeArray.Length; - int crossings = 0; - SugiEdge edge1, edge2; - for ( int i = 0; i < count; i++ ) - { - edge1 = edgeArray[i]; - for ( int j = i + 1; j < count; j++ ) - { - edge2 = edgeArray[j]; - Debug.Assert( - ( edge1.Source.LayerIndex == edge2.Source.LayerIndex && - edge1.Target.LayerIndex == edge2.Target.LayerIndex ), - "Bad edge at crossing computing", edge1 + "\n" + edge2 ); - - //get the position of the sources - float source2pos; - float source1pos; - if ( sourcesByMeasure ) - { - source1pos = edge1.Source.Measure; - source2pos = edge2.Source.Measure; - } - else - { - source1pos = edge1.Source.Position; - source2pos = edge2.Source.Position; - } - - //get the position of the targets - float target1pos; - float target2pos; - if ( targetsByMeasure ) - { - target1pos = edge1.Target.Measure; - target2pos = edge2.Target.Measure; - } - else - { - target1pos = edge1.Target.Position; - target2pos = edge2.Target.Position; - } - - if ( ( source1pos - source2pos ) * ( target1pos - target2pos ) < 0 ) - crossings++; - } - } - return crossings; - } - #endregion - - #region Insert & Remove - - public new void Add( SugiVertex vertex ) - { - base.Add( vertex ); - vertex.LayerIndex = LayerIndex; - ReassignPositions(); - } - - public new void AddRange( IEnumerable vertices ) - { - base.AddRange( vertices ); - foreach ( var v in vertices ) - v.LayerIndex = LayerIndex; - ReassignPositions(); - } - - public new void Remove( SugiVertex vertex ) - { - base.Remove( vertex ); - vertex.LayerIndex = SugiVertex.UndefinedLayerIndex; - } - - #endregion - - #region Measuring - - /// - /// Computes the measures for every vertex in the layer by the given barycenters. - /// - /// The barycenters. - /// If true, the barycenters will be computed based on the RealPosition.x value of the vertices. Otherwise the barycenter will be computed based on the value of the Position field (which is basically the index of the vertex inside the layer). - public void Measure( BaryCenter baryCenters, bool byRealPosition ) - { - bool computeUpBaryCenter = ( baryCenters & BaryCenter.Up ) == BaryCenter.Up; - bool computeDownBaryCenter = ( baryCenters & BaryCenter.Down ) == BaryCenter.Down; - bool computeSubBaryCenter = ( baryCenters & BaryCenter.Sub ) == BaryCenter.Sub; - - int divCount = 0; - if ( computeUpBaryCenter ) - divCount++; - if ( computeDownBaryCenter ) - divCount++; - if ( computeSubBaryCenter ) - divCount++; - - //compute the measures for every vertex in the layer - foreach ( var vertex in this ) - Measure( vertex, computeUpBaryCenter, computeDownBaryCenter, computeSubBaryCenter, divCount, byRealPosition ); - } - - /// - /// Computes the measure for the given . - /// - /// - /// - /// - /// - /// - /// - private void Measure( SugiVertex vertex, bool computeUpBaryCenter, bool computeDownBaryCenter, bool computeSubBaryCenter, int divCount, bool byRealPosition ) - { - vertex.Measure = 0; - - if ( computeUpBaryCenter ) - vertex.Measure += ComputeBaryCenter( vertex, Graph.InHierarchicalEdges( vertex ), byRealPosition ); - if ( computeDownBaryCenter ) - vertex.Measure += ComputeBaryCenter( vertex, Graph.OutHierarchicalEdges( vertex ), byRealPosition ); - if ( computeSubBaryCenter ) - vertex.Measure += ComputeBaryCenter( vertex, Graph.GeneralEdgesFor( vertex ), byRealPosition ); - - vertex.Measure /= divCount; - } - - /// - /// Computes the barycenter of the given - /// based on positions of the vertices on other side of the given . - /// - /// The vertex which barycenter will be computed. - /// The edges used for the computation. - /// - /// The computed barycenter. - private static float ComputeBaryCenter( SugiVertex vertex, IEnumerable edges, bool byRealPosition ) - { - float baryCenter = 0; - int number = 0; - - foreach ( var edge in edges ) - { - if ( byRealPosition ) - baryCenter += edge.OtherVertex( vertex ).RealPosition.x; - else - baryCenter += edge.OtherVertex( vertex ).Position; - number++; - } - - if ( number != 0 ) - return baryCenter / number; - - return ( byRealPosition ? vertex.RealPosition.x : vertex.Position ); - } - - /// - /// Computes the height of the vertexlayer (which is the maximum height of the vertices - /// in this layer). - /// - /// Returns with the computed height of the layer. - private float ComputeHeight() - { - return this.Max( v => v.Size.y ); - } - #endregion - - #region Sort - /// - /// - /// - /// - /// - /// Returns with true if the vertices in this - /// layer ordered by the given . - public bool IsOrderedByBaryCenters( BaryCenter baryCenters, bool byRealPosition ) - { - if ( Count == 0 ) return true; - - //fill the measure by the given barycenters - Measure( baryCenters, byRealPosition ); - - //check that the ordering is valid - for ( int i = 1; i < Count; i++ ) - { - if ( this[i].Measure < this[i - 1].Measure ) - return false; //invalid ordering - } - - //the ordering is valid - return true; - } - - /// - /// Sort the vertices in the layer by it's measures. - /// - public void SortByMeasure() - { - //sort the vertices by the measure - Sort( MeasureComparer.Instance ); - - //reassing the positions of the vertices - ReassignPositions(); - } - - protected void SavePositionsToTemp() - { - foreach ( var v in this ) - v.Temp = v.Position; - } - - protected void LoadPositionsFromTemp() - { - foreach ( var v in this ) - v.Position = (int)v.Temp; - } - - /// - /// - /// - /// - /// Returns true if the vertices have permutated, - /// otherwise (no more permutation) returns with false. - protected bool Permutate( IList vertices ) - { - //do the initial ordering - int n = vertices.Count; - int i, j; - - //find place to start - for ( i = n - 1; - i > 0 && vertices[i - 1].PermutationIndex >= vertices[i].PermutationIndex; - i-- ) { } - - //all in reverse order - if ( i < 1 ) - return false; //no more permutation - - //do next permutation - for ( j = n; - j > 1 && vertices[j - 1].PermutationIndex <= vertices[i - 1].PermutationIndex; - j-- ) { } - - //swap values i-1, j-1 - int c = vertices[i - 1].PermutationIndex; - vertices[i - 1].PermutationIndex = vertices[j - 1].PermutationIndex; - vertices[j - 1].PermutationIndex = c; - - //need more swaps - for ( i++, j = n; i < j; i++, j-- ) - { - c = vertices[i - 1].PermutationIndex; - vertices[i - 1].PermutationIndex = vertices[j - 1].PermutationIndex; - vertices[j - 1].PermutationIndex = c; - } - - return true; //new permutation generated - } - - /// - /// Changes the order of the vertices with the same measure. - /// It does that in the brute-force way (every permutation will be analyzed). - /// Vertices should be sorted by it's measures. - /// - public void FindBestPermutation( CrossCount crossCounting ) - { - int bestKnownCrossCount = CalculateCrossCount( crossCounting ); - - //get the vertices with the same index - var verticesWithSameMeasure = new List(); - int startIndex, endIndex; - for ( startIndex = 0; startIndex < Count; startIndex = endIndex + 1 ) - { - for ( endIndex = startIndex + 1; - endIndex < Count && this[startIndex].Measure == this[endIndex].Measure; - endIndex++ ) { } - endIndex -= 1; - - if ( endIndex > startIndex ) - { - for ( int i = startIndex; i <= endIndex; i++ ) - verticesWithSameMeasure.Add( this[i] ); - } - } - - //save the original positions - SavePositionsToTemp(); - - //null PermutationIndex - foreach ( var v in this ) - v.PermutationIndex = 0; - - //create initial permutation - for ( int i = 0; i < verticesWithSameMeasure.Count; i++ ) - verticesWithSameMeasure[i].PermutationIndex = 0; - - while ( Permutate( verticesWithSameMeasure ) ) - { - //sort the vertices with the same measure by barycenter - Sort( MeasureAndPermutationIndexComparer.Instance ); - ReassignPositions(); - - int newCrossCount = CalculateCrossCount( crossCounting ); - if ( newCrossCount < bestKnownCrossCount ) - { - SavePositionsToTemp(); - bestKnownCrossCount = newCrossCount; - } - } - - //the best solution is in the temp - LoadPositionsFromTemp(); - - Sort( PositionComparer.Instance ); - ReassignPositions(); - } - - /// - /// Reassigns the position of vertices to it's indexes in the vertexlayer. - /// - public void ReassignPositions() - { - int index = 0; - foreach ( SugiVertex v in this ) - v.Position = index++; - } - #endregion - - class MeasureComparer : IComparer - { - private static MeasureComparer instance; - public static MeasureComparer Instance - { - get - { - if ( instance == null ) - instance = new MeasureComparer(); - return instance; - } - } - - private MeasureComparer() { } - - public int Compare( SugiVertex x, SugiVertex y ) - { - return Math.Sign( (sbyte)( x.Measure - y.Measure ) ); - } - } - - class PositionComparer : IComparer - { - private static PositionComparer instance; - public static PositionComparer Instance - { - get - { - if ( instance == null ) - instance = new PositionComparer(); - return instance; - } - } - - private PositionComparer() { } - - public int Compare( SugiVertex x, SugiVertex y ) - { - return Math.Sign( (sbyte)( x.Position - y.Position ) ); - } - } - - class MeasureAndPermutationIndexComparer : IComparer - { - private static MeasureAndPermutationIndexComparer instance; - public static MeasureAndPermutationIndexComparer Instance - { - get - { - if ( instance == null ) - instance = new MeasureAndPermutationIndexComparer(); - return instance; - } - } - - private MeasureAndPermutationIndexComparer() { } - - public int Compare( SugiVertex x, SugiVertex y ) - { - int sign = Math.Sign( (sbyte)( x.Measure - y.Measure ) ); - if ( sign == 0 ) - return Math.Sign( (sbyte)( x.PermutationIndex - y.PermutationIndex ) ); - - return sign; - } - } - - #region Priorities - public void CalculateSubPriorities() - { - var orderedVertices = ( from v in this - orderby v.Priority ascending, v.Measure ascending, v.Position ascending - select v ).ToArray(); - - //calculate subpriorities - int startIndex = 0; - while ( startIndex < orderedVertices.Length ) - { - int endIndex = startIndex + 1; - - //get the vertices with the same priorities and measure - while ( endIndex < orderedVertices.Length - && orderedVertices[startIndex].Priority == orderedVertices[endIndex].Priority - && orderedVertices[startIndex].Measure == orderedVertices[endIndex].Measure ) - endIndex++; - endIndex--; - - //set the subpriorities - int count = endIndex - startIndex + 1; - var border = (int)Math.Ceiling( count / (float)2.0 ); - int subPriority = count - border; - for ( int i = 0; i < count; i++ ) - { - orderedVertices[startIndex + i].SubPriority = count - Math.Abs( subPriority ); - subPriority--; - } - - //go to the next group of vertices with the same priorities - startIndex = endIndex + 1; - } - } - #endregion - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs.meta deleted file mode 100644 index 8ba587448..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayer.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 75c2515e41c449f4f88dac710d97c191 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs deleted file mode 100644 index 1e38d839b..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - /// - /// Collection of the layers of the vertices. - /// - private class VertexLayerCollection : List - { - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs.meta deleted file mode 100644 index 01cc635f5..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.VertexLayerCollection.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bc3166235aa94294e97886aef52e1622 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs deleted file mode 100644 index 880533f28..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs +++ /dev/null @@ -1,895 +0,0 @@ -using System; -using System.Collections.Generic; -using GraphSharp.Algorithms.EdgeRouting; -using QuickGraph; -using QuickGraph.Algorithms.Search; -using System.Diagnostics; -using System.Linq; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public partial class SugiyamaLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase, IEdgeRoutingAlgorithm - where TVertex : class - where TEdge : IEdge - where TGraph : IVertexAndEdgeListGraph - { - #region Private fields, constants - - SoftMutableHierarchicalGraph _graph; - - readonly Func _edgePredicate; - readonly VertexLayerCollection _layers = new VertexLayerCollection(); - private int _iteration; - float _statusInPercent; - - private const int percentOfPreparation = 5; - private const int percentOfSugiyama = 60; - private const int percentOfIncrementalExtension = 30; - - private const string ParallelEdgesTag = "ParallelEdges"; - /* - private const string CyclesTag = "Cycles"; - */ - private const string IsolatedVerticesTag = "IsolatedVertices"; - private const string LoopsTag = "Loops"; - private const string GeneralEdgesTag = "GeneralEdges"; - private const string GeneralEdgesBetweenDifferentLayersTag = "GeneralEdgesBetweenDifferentLayers"; - private const string LongEdgesTag = "LongEdges"; //long edges will be replaced with dummy vertices - #endregion - - public IDictionary EdgeRoutes { get; private set; } - - #region Constructors - public SugiyamaLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexSizes, - IDictionary vertexPositions, - SugiyamaLayoutParameters parameters, - Func edgePredicate ) - : base( visitedGraph, vertexPositions, parameters ) - { - _edgePredicate = edgePredicate; - EdgeRoutes = new Dictionary(); - - ConvertGraph( vertexSizes ); - } - - public SugiyamaLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexSizes, - SugiyamaLayoutParameters parameters, - Func edgePredicate ) - : this( visitedGraph, vertexSizes, null, parameters, edgePredicate ) - { - } - - /// - /// Converts the VisitedGraph to the inner type (which is a mutable graph representation). - /// Wraps the vertices, converts the edges. - /// - protected void ConvertGraph( IDictionary vertexSizes ) - { - //creating the graph with the new type - _graph = new SoftMutableHierarchicalGraph( true ); - - var vertexDict = new Dictionary(); - - //wrapping the vertices - foreach ( TVertex v in VisitedGraph.Vertices ) - { - var size = vertexSizes[v]; - size.y += Parameters.VerticalGap; - size.x += Parameters.HorizontalGap; - var wrapped = new SugiVertex( v, size ); - - _graph.AddVertex( wrapped ); - vertexDict[v] = wrapped; - } - - //creating the new edges - foreach ( TEdge e in VisitedGraph.Edges ) - { - var wrapped = new SugiEdge( e, vertexDict[e.Source], vertexDict[e.Target], _edgePredicate( e ) ); - _graph.AddEdge( wrapped ); - } - } - #endregion - - #region Filters - used in the preparation phase - /// - /// Removes the cycles from the given graph. - /// It reverts some edges, so the cycles disappeares. - /// - private void FilterCycles() - { - var cycleEdges = new List(); - var dfsAlgo = new DepthFirstSearchAlgorithm( _graph ); - dfsAlgo.BackEdge += cycleEdges.Add; - //non-tree edges selected - dfsAlgo.Compute(); - - //put back the reverted ones - foreach ( var edge in cycleEdges ) - { - _graph.RemoveEdge( edge ); - - var revertEdge = new SugiEdge( edge.Original, edge.Target, edge.Source, edge.Type ); - _graph.AddEdge( revertEdge ); - } - } - - protected static void FilterParallelEdges( ISoftMutableGraph graph ) - where TEdgeType : class, IEdge - { - foreach ( TVertexType v in graph.Vertices ) - { - var neighbours = new HashSet(); - foreach ( var e in graph.OutEdges( v ).ToList() ) - { - if ( !neighbours.Add( e.Target ) ) - //target already a neighbour, it is a parallel edge - graph.HideEdge( e, ParallelEdgesTag ); - } - foreach ( var e in graph.InEdges( v ).ToList() ) - { - if ( !neighbours.Add( e.Source ) ) - //source already a neighbour, it is a parallel edge - graph.HideEdge( e, ParallelEdgesTag ); - } - } - } - - protected static void FilterIsolatedVertices( ISoftMutableGraph graph ) - where TEdgeType : class, IEdge - { - graph.HideVerticesIf( v => graph.Degree( v ) == 0, IsolatedVerticesTag ); - } - - protected static void FilterLoops( ISoftMutableGraph graph ) - where TEdgeType : class, IEdge - where TVertexType : class - { - graph.HideEdgesIf( e => e.Source == e.Target, LoopsTag ); - } - - /// - /// First step of the algorithm. - /// Filters the unappropriate vertices and edges. - /// - protected void FiltersAndRemovals() - { - //hide every edge but hierarchical ones - _graph.HideEdges( _graph.GeneralEdges, GeneralEdgesTag ); - - //Remove the cycles from the graph - FilterCycles(); - - //remove parallel edges - //FilterParallelEdges( _graph ); - - //remove every isolated vertex - FilterIsolatedVertices( _graph ); - - //filter loops - edges with source = target - FilterLoops( _graph ); - } - #endregion - - /// - /// Creates the layering of the graph. (Assigns every vertex to a layer.) - /// - protected void AssignLayers() - { - var lts = new LayeredTopologicalSortAlgorithm( _graph ); - lts.Compute(); - - for ( int i = 0; i < lts.LayerCount; i++ ) - { - var vl = new VertexLayer( _graph, i, lts.Layers[i].ToList() ); - _layers.Add( vl ); - } - } - - #region Preparation for Sugiyama - /// - /// Minimizes the long of the hierarchical edges by - /// putting down the vertices to the layer above - /// its descendants. - /// - protected void MinimizeHierarchicalEdgeLong() - { - if ( !Parameters.MinimizeHierarchicalEdgeLong ) - return; - - for ( int i = _layers.Count - 1; i >= 0; i-- ) - { - var layer = _layers[i]; - foreach ( var v in layer.ToList() ) - { - if ( _graph.OutHierarchicalEdgeCount( v ) == 0 ) continue; - - //put the vertex above the descendant on the highest layer - int newLayerIndex = _graph.OutHierarchicalEdges( v ).Min( edge => edge.Target.LayerIndex - 1 ); - - if ( newLayerIndex != v.LayerIndex ) - { - //we're changing layer - layer.Remove( v ); - _layers[newLayerIndex].Add( v ); - } - } - } - } - - /// - /// Long edges ( span(e) > 1 ) will be replaced by - /// span(e) edges (1 edge between every 2 neighbor layer) - /// and span(e)-1 dummy vertices will be added to graph. - /// - protected void ReplaceLongEdges() - { - //if an edge goes through multiple layers, we split the edge at every layer and insert a dummy node - // (only for the hierarchical edges) - foreach ( var edge in _graph.HierarchicalEdges.ToArray() ) - { - int sourceLayerIndex = edge.Source.LayerIndex; - int targetLayerIndex = edge.Target.LayerIndex; - - if ( Math.Abs( sourceLayerIndex - targetLayerIndex ) <= 1 ) - continue; //span(e) <= 1, not long edge - - //the edge goes through multiple layers - edge.IsLongEdge = true; - _graph.HideEdge( edge, LongEdgesTag ); - - //sourcelayer must be above the targetlayer - if ( targetLayerIndex < sourceLayerIndex ) - { - int c = targetLayerIndex; - targetLayerIndex = sourceLayerIndex; - sourceLayerIndex = c; - } - - SugiVertex prev = edge.Source; - for ( int i = sourceLayerIndex + 1; i <= targetLayerIndex; i++ ) - { - //the last vertex is the Target, the other ones are dummy vertices - SugiVertex dummy; - if ( i == targetLayerIndex ) - dummy = edge.Target; - else - { - dummy = new SugiVertex( null, new float2( 0, 0 ) ); - _graph.AddVertex( dummy ); - _layers[i].Add( dummy ); - edge.DummyVertices.Add( dummy ); - } - _graph.AddEdge( new SugiEdge( edge.Original, prev, dummy, EdgeTypes.Hierarchical ) ); - prev = dummy; - } - } - } - - protected void ConstrainWidth() - { - //TODO implement - } - - protected void PrepareForSugiyama() - { - MinimizeHierarchicalEdgeLong(); - - #region 1) Unhide general edges between vertices participating in the hierarchy - var analyze = new HashSet(); - EdgeAction eeh = - edge => - { - analyze.Add( edge.Source ); - analyze.Add( edge.Target ); - }; - _graph.EdgeUnhidden += eeh; - _graph.UnhideEdgesIf( e => e.Type == EdgeTypes.General && _graph.ContainsVertex( e.Source ) && _graph.ContainsVertex( e.Target ) ); - _graph.EdgeUnhidden -= eeh; - #endregion - - #region 2) Move the vertices with general edges if possible - foreach ( var v in analyze ) - { - //csak lejjebb lehet rakni - //csak akkor, ha nincs hierarchikus kimeno el lefele - //a legkozelebbi lehetseges szintre - if ( _graph.OutHierarchicalEdgeCount( v ) == 0 ) - { - //az altalanos elek kozul az alattalevok kozul a legkozelebbibre kell rakni - int newLayerIndex = _layers.Count; - foreach ( var e in _graph.InGeneralEdges( v ) ) - { - //nem erdemes tovabb folytatni, lejebb nem kerulhet - if ( newLayerIndex == v.LayerIndex ) break; - if ( e.Source.LayerIndex >= v.LayerIndex && e.Source.LayerIndex < newLayerIndex ) - newLayerIndex = e.Source.LayerIndex; - } - foreach ( var e in _graph.OutGeneralEdges( v ) ) - { - //nem erdemes tovabb folytatni, lejebb nem kerulhet - if ( newLayerIndex == v.LayerIndex ) break; - if ( e.Target.LayerIndex >= v.LayerIndex && e.Target.LayerIndex < newLayerIndex ) - newLayerIndex = e.Target.LayerIndex; - } - if ( newLayerIndex < _layers.Count ) - { - _layers[v.LayerIndex].Remove( v ); - _layers[newLayerIndex].Add( v ); - } - } - } - #endregion - - // 3) Hide the general edges between different layers - _graph.HideEdgesIf( e => ( e.Type == EdgeTypes.General && e.Source.LayerIndex != e.Target.LayerIndex ), GeneralEdgesBetweenDifferentLayersTag ); - - //replace long edges with more segments and dummy vertices - ReplaceLongEdges(); - - ConstrainWidth(); - - CopyPositions(); - OnIterationEnded( "Preparation of the positions done." ); - } - #endregion - - #region Sugiyama Layout - /// - /// Sweeps in one direction in the 1st Phase of the Sugiyama's algorithm. - /// - /// The index of the layer where the sweeping starts. - /// The index of the layer where the sweeping ends. - /// Stepcount. - /// Kind of the barycentering (Up/Down-barycenter). - /// If this is a dirty sweep - /// - /// - protected bool SugiyamaPhase1Sweep( int start, int end, int step, BaryCenter baryCenter, bool dirty, bool byRealPosition ) - { - bool hasOptimization = false; - CrossCount crossCounting = baryCenter == BaryCenter.Up ? CrossCount.Up : CrossCount.Down; - bool sourceByMeasure = crossCounting == CrossCount.Down; - for ( int i = start; i != end; i += step ) - { - var layer = _layers[i]; - int modifiedCrossing = 0; - int originalCrossing = 0; - - if ( !dirty ) - //get the count of the edge crossings - originalCrossing = layer.CalculateCrossCount( crossCounting ); - - //measure the vertices by the given barycenter - layer.Measure( baryCenter, byRealPosition ); - - if ( !dirty ) - //get the modified crossing count - modifiedCrossing = layer.CalculateCrossCount( crossCounting, sourceByMeasure, !sourceByMeasure ); - - if ( modifiedCrossing < originalCrossing || dirty ) - { - layer.SortByMeasure(); - hasOptimization = true; - } - - if ( byRealPosition ) - { - HorizontalPositionAssignmentOnLayer( i, baryCenter ); - CopyPositionsSilent( false ); - } - else - { - CopyPositions(); - } - OnIterationEnded( " Phase 1 sweepstep finished [" + baryCenter + "-barycentering on layer " + i + "]" ); - } - return hasOptimization; - } - - /// - /// - /// - /// - /// - /// - /// - /// - /// The index of the layer which is not ordered by anymore. - /// If all of the layers ordered, and phase2 sweep done it returns with -1. - protected int SugiyamaPhase2Sweep( int start, int end, int step, BaryCenter baryCenter, bool byRealPosition ) - { - CrossCount crossCountDirection = baryCenter == BaryCenter.Up ? CrossCount.Up : CrossCount.Down; - for ( int i = start; i != end; i += step ) - { - var layer = _layers[i]; - - //switch the vertices with the same barycenters, if and only if there will be less barycenters - layer.Measure( baryCenter, byRealPosition ); - layer.FindBestPermutation( crossCountDirection ); - - if ( byRealPosition ) - { - HorizontalPositionAssignmentOnLayer( i, baryCenter ); - CopyPositionsSilent( false ); - } - else - { - CopyPositions(); - } - OnIterationEnded( " Phase 2 sweepstep finished [" + baryCenter + "-barycentering on layer " + i + "]" ); - if ( i + step != end ) - { - var nextLayer = _layers[i + step]; - if ( !nextLayer.IsOrderedByBaryCenters( baryCenter, byRealPosition ) ) - return ( i + step ); - } - } - return -1; - } - - protected void SugiyamaDirtyPhase( bool byRealPosition ) - { - if ( _layers.Count < 2 ) - return; - - const bool dirty = true; - SugiyamaPhase1Sweep( 1, _layers.Count, 1, BaryCenter.Up, dirty, byRealPosition ); - SugiyamaPhase1Sweep( _layers.Count - 2, -1, -1, BaryCenter.Down, dirty, byRealPosition ); - } - - protected bool SugiyamaPhase1( int startLayerIndex, BaryCenter startBaryCentering, bool ByRealPosition ) - { - if ( _layers.Count < 2 ) return false; - - const bool dirty = false; - bool sweepDownOptimized = false; - - if ( startBaryCentering == BaryCenter.Up ) - { - sweepDownOptimized = SugiyamaPhase1Sweep( startLayerIndex == -1 ? 1 : startLayerIndex, _layers.Count, 1, BaryCenter.Up, dirty, ByRealPosition ); - startLayerIndex = -1; - } - - bool sweepUpOptimized = SugiyamaPhase1Sweep( startLayerIndex == -1 ? _layers.Count - 2 : startLayerIndex, -1, -1, BaryCenter.Down, dirty, ByRealPosition ); - - return sweepUpOptimized || sweepDownOptimized; - } - - protected bool SugiyamaPhase1( bool byRealPosition ) - { - return SugiyamaPhase1( -1, BaryCenter.Up, byRealPosition ); - } - - protected bool SugiyamaPhase2( out int unorderedLayerIndex, out BaryCenter baryCentering, bool byRealPosition ) - { - //Sweeping up - unorderedLayerIndex = SugiyamaPhase2Sweep( 1, _layers.Count, 1, BaryCenter.Up, byRealPosition ); - if ( unorderedLayerIndex != -1 ) - { - baryCentering = BaryCenter.Up; - return false; - } - - //Sweeping down - unorderedLayerIndex = SugiyamaPhase2Sweep( _layers.Count - 2, -1, -1, BaryCenter.Down, byRealPosition ); - baryCentering = BaryCenter.Down; - if ( unorderedLayerIndex != -1 ) - return false; - - //Phase 2 done - return true; - } - - protected void SugiyamaLayout() - { - bool baryCenteringByRealPositions = Parameters.PositionCalculationMethod == PositionCalculationMethodTypes.PositionBased; - if ( Parameters.DirtyRound ) - //start with a dirty round (sort by barycenters, even if the number of the crossings will rise) - SugiyamaDirtyPhase( baryCenteringByRealPositions ); - - bool changed = true; - int iteration1Left = Parameters.Phase1IterationCount; - int iteration2Left = Parameters.Phase2IterationCount; - float maxIterations = iteration1Left * iteration2Left; - - int startLayerIndex = -1; - BaryCenter startBaryCentering = BaryCenter.Up; - - while ( changed && ( iteration1Left > 0 || iteration2Left > 0 ) ) - { - changed = false; - - // - // Phase 1 - while there's any optimization - // - while ( iteration1Left > 0 && SugiyamaPhase1( startLayerIndex, startBaryCentering, baryCenteringByRealPositions ) ) - { - iteration1Left--; - changed = true; - } - - startLayerIndex = -1; - startBaryCentering = BaryCenter.Up; - - // - // Phase 2 - // - if ( iteration2Left > 0 ) - { - SugiyamaPhase2( out startLayerIndex, out startBaryCentering, baryCenteringByRealPositions ); - iteration2Left--; - } - - // Phase fallback - if ( startLayerIndex != -1 ) - { - iteration1Left = Parameters.Phase1IterationCount; - changed = true; - } - - _statusInPercent += percentOfSugiyama / maxIterations; - } - - #region Mark the neighbour vertices connected with associative edges - foreach ( SugiEdge e in _graph.GeneralEdges ) - { - int sourceIndex = _layers[e.Source.LayerIndex].IndexOf( e.Source ); - int targetIndex = _layers[e.Target.LayerIndex].IndexOf( e.Target ); - bool shouldBeMarked = e.Source.LayerIndex == e.Target.LayerIndex && Math.Abs( sourceIndex - targetIndex ) == 1; - if ( shouldBeMarked ) - { - if ( sourceIndex < targetIndex ) - { - e.Source.RightGeneralEdgeCount += 1; - e.Target.LeftGeneralEdgeCount += 1; - } - else - { - e.Target.RightGeneralEdgeCount += 1; - e.Source.LeftGeneralEdgeCount += 1; - } - } - } - #endregion - } - #endregion - - #region Last phase - Horizontal Assignment, edge routing, copying of the positions - protected void AssignPriorities() - { - foreach ( var v in _graph.Vertices ) - v.Priority = ( v.IsDummyVertex ? int.MaxValue : _graph.HierarchicalEdgeCountFor( v ) ); - } - - private float CalculateOverlap( SugiVertex a, SugiVertex b ) - { - return CalculateOverlap( a, b, 0 ); - } - - private float CalculateOverlap( SugiVertex a, SugiVertex b, float plusGap ) - { - return Math.Max( 0, ( ( b.Size.x + a.Size.x ) * 0.5f + plusGap + Parameters.HorizontalGap ) - ( b.RealPosition.x - a.RealPosition.x ) ); - } - - protected void HorizontalPositionAssignmentOnLayer( int layerIndex, BaryCenter baryCenter ) - { - var layer = _layers[layerIndex]; - - //compute where the vertices should be placed - layer.Measure( baryCenter, true ); - layer.CalculateSubPriorities(); - - //set the RealPositions to NaN - foreach ( var v in layer ) - v.RealPosition.x = float.NaN; - - //set the positions in the order of the priorities, start with the lower priorities - foreach ( var v in from vertex in layer - orderby vertex.Priority ascending, vertex.SubPriority ascending - select vertex ) - { - //first set the new position - v.RealPosition.x = v.Measure; - - //check if there's any overlap between the actual vertex and the vertices which position has already been set - SugiVertex v1 = v; - var alreadySetVertices = layer.Where( vertex => ( !float.IsNaN( vertex.RealPosition.x ) && vertex != v1 ) ).ToArray(); - - if ( alreadySetVertices.Length == 0 ) - { - //there can't be any overlap - continue; - } - - //get the index of the 'v' vertex between the vertices which position has already been set - int indexOfV; - for ( indexOfV = 0; - indexOfV < alreadySetVertices.Length && alreadySetVertices[indexOfV].Position < v.Position; - indexOfV++ ) { } - - SugiVertex leftNeighbor = null, rightNeighbor = null; - float leftOverlap = 0, rightOverlap = 0; - - //check the overlap with vertex on the left - if ( indexOfV > 0 ) - { - leftNeighbor = alreadySetVertices[indexOfV - 1]; - leftOverlap = CalculateOverlap( leftNeighbor, v ); - } - if ( indexOfV < alreadySetVertices.Length ) - { - rightNeighbor = alreadySetVertices[indexOfV]; - rightOverlap = CalculateOverlap( v, rightNeighbor ); - } - - // ReSharper disable PossibleNullReferenceException - //only one neighbor overlaps - if ( leftOverlap > 0 && rightOverlap == 0 ) - { - if ( leftNeighbor.Priority == v.Priority ) - { - float leftMove = leftOverlap * 0.5f; - if ( rightNeighbor != null ) - rightOverlap = CalculateOverlap( v, rightNeighbor, leftMove ); - leftNeighbor.RealPosition.x -= leftMove; - v.RealPosition.x += leftMove; - if ( rightOverlap > 0 ) - { - if ( v.Priority == rightNeighbor.Priority ) - { - float rightMove = rightOverlap * 0.5f; - rightNeighbor.RealPosition.x += rightMove; - v.RealPosition.x -= rightMove; - leftNeighbor.RealPosition.x -= rightMove; - } - else - { - rightNeighbor.RealPosition.x += rightOverlap; - } - } - } - else - { - leftNeighbor.RealPosition.x -= leftOverlap; - } - } - else if ( leftOverlap == 0 && rightOverlap > 0 ) - { - if ( v.Priority == rightNeighbor.Priority ) - { - float rightMove = rightOverlap * 0.5f; - if ( leftNeighbor != null ) - leftOverlap = CalculateOverlap( leftNeighbor, v, rightMove ); - rightNeighbor.RealPosition.x += rightMove; - v.RealPosition.x -= rightMove; - if ( leftOverlap > 0 ) - { - if ( leftNeighbor.Priority == v.Priority ) - { - float leftMove = leftOverlap * 0.5f; - leftNeighbor.RealPosition.x -= leftMove; - v.RealPosition.x += leftMove; - rightNeighbor.RealPosition.x += leftMove; - } - else - { - leftNeighbor.RealPosition.x -= leftOverlap; - } - } - } - else - { - rightNeighbor.RealPosition.x += rightOverlap; - } - } - else if ( leftOverlap > 0 && rightOverlap > 0 ) - { - //if both neighbor overlapped - //priorities equals, 1 priority lower, 2 priority lower - if ( leftNeighbor.Priority < v.Priority && v.Priority == rightNeighbor.Priority ) - { - float rightMove = rightOverlap * 0.5f; - rightNeighbor.RealPosition.x += rightMove; - v.RealPosition.x -= rightMove; - leftNeighbor.RealPosition.x -= ( leftOverlap + rightMove ); - } - else if ( leftNeighbor.Priority == v.Priority && v.Priority > rightNeighbor.Priority ) - { - float leftMove = leftOverlap * 0.5f; - leftNeighbor.RealPosition.x -= leftMove; - v.RealPosition.x += leftMove; - rightNeighbor.RealPosition.x = ( rightOverlap + leftMove ); - } - else - { - //priorities of the neighbors are lower, or equal - leftNeighbor.RealPosition.x -= leftOverlap; - rightNeighbor.RealPosition.x += rightOverlap; - } - } - // ReSharper restore PossibleNullReferenceException - - //the vertices on the left side of the leftNeighbor will be moved, if they overlap - if ( leftOverlap > 0 ) - for ( int index = indexOfV - 1; - index > 0 - && ( leftOverlap = CalculateOverlap( alreadySetVertices[index - 1], alreadySetVertices[index] ) ) > 0; - index-- ) - { - alreadySetVertices[index - 1].RealPosition.x -= leftOverlap; - } - - //the vertices on the right side of the rightNeighbor will be moved, if they overlap - if ( rightOverlap > 0 ) - for ( int index = indexOfV; - index < alreadySetVertices.Length - 1 - && ( rightOverlap = CalculateOverlap( alreadySetVertices[index], alreadySetVertices[index + 1] ) ) > 0; - index++ ) - { - alreadySetVertices[index + 1].RealPosition.x += rightOverlap; - } - } - } - - protected void HorizontalPositionAssignmentSweep( int start, int end, int step, BaryCenter baryCenter ) - { - for ( int i = start; i != end; i += step ) - HorizontalPositionAssignmentOnLayer( i, baryCenter ); - } - - protected void HorizontalPositionAssignment() - { - //sweeping up & down, assigning the positions for the vertices in the order of the priorities - //positions computed with the barycenter method, based on the realpositions - AssignPriorities(); - - if ( _layers.Count > 1 ) - { - HorizontalPositionAssignmentSweep( 1, _layers.Count, 1, BaryCenter.Up ); - HorizontalPositionAssignmentSweep( _layers.Count - 2, -1, -1, BaryCenter.Down ); - } - } - - protected void AssignPositions() - { - //initialize positions - float verticalPos = 0; - for ( int i = 0; i < _layers.Count; i++ ) - { - float pos = 0; - float layerHeight = _layers[i].Height; - foreach ( var v in _layers[i] ) - { - v.RealPosition.x = pos; - v.RealPosition.y = - ( ( i == 0 ) - ? ( layerHeight - v.Size.y ) - : verticalPos + layerHeight * (float)0.5 ); - - pos += v.Size.x + Parameters.HorizontalGap; - } - verticalPos += layerHeight + Parameters.VerticalGap; - } - - //assign the horizontal positions - HorizontalPositionAssignment(); - } - - protected void CopyPositionsSilent() - { - CopyPositionsSilent( true ); - } - - protected void CopyPositionsSilent( bool shouldTranslate ) - { - //calculate the topLeft position - var translation = new float2( float.PositiveInfinity, float.PositiveInfinity ); - if ( shouldTranslate ) - { - foreach ( var v in _graph.Vertices ) - { - if ( float.IsNaN( v.RealPosition.x ) || float.IsNaN( v.RealPosition.y ) ) - continue; - - translation.x = Math.Min( v.RealPosition.x, translation.x ); - translation.y = Math.Min( v.RealPosition.y, translation.y ); - } - translation *= -1; - translation.x += Parameters.VerticalGap / 2; - translation.y += Parameters.HorizontalGap / 2; - - //translate with the topLeft position - foreach ( var v in _graph.Vertices ) - v.RealPosition += translation; - } - else - { - translation = new float2( 0, 0 ); - } - - //copy the positions of the vertices - VertexPositions.Clear(); - foreach ( var v in _graph.Vertices ) - { - if ( v.IsDummyVertex ) - continue; - - float2 pos = v.RealPosition; - if ( !shouldTranslate ) - { - pos.x += v.Size.x * 0.5f + translation.x; - pos.y += v.Size.y * 0.5f + translation.y; - } - VertexPositions[v.Original] = pos; - } - - //copy the edge routes - EdgeRoutes.Clear(); - foreach ( var e in _graph.HiddenEdges ) - { - if ( !e.IsLongEdge ) - continue; - - EdgeRoutes[e.Original] = - e.IsReverted - ? e.DummyVertices.Reverse().Select( dv => dv.RealPosition ).ToArray() - : e.DummyVertices.Select( dv => dv.RealPosition ).ToArray(); - } - } - - /// - /// Copies the coordinates of the vertices to the VertexPositions dictionary. - /// - protected void CopyPositions() - { - AssignPositions(); - - CopyPositionsSilent(); - } - #endregion - - protected override void InternalCompute() - { - // - //Phase 1 - Filters & Removals - // - FiltersAndRemovals(); - _statusInPercent = percentOfPreparation; - - // - //Phase 2 - Layer assignment - // - AssignLayers(); - - // - //Phase 3 - Crossing reduction - // - PrepareForSugiyama(); - SugiyamaLayout(); - _statusInPercent = percentOfPreparation + percentOfSugiyama; - - // - //Phase 4 - Horizontal position assignment - // - CopyPositions(); - OnIterationEnded( "Position adjusting finished" ); - - //Phase 5 - Incremental extension, add vertices connected with only general edges - //IncrementalExtensionImproved(); - _statusInPercent = percentOfPreparation + percentOfSugiyama + percentOfIncrementalExtension; - _statusInPercent = 100; - } - - protected void OnIterationEnded( string message ) - { - OnIterationEnded( _iteration, _statusInPercent, message, true ); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs.meta deleted file mode 100644 index fb6218811..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 42de5a98a5de2d347bbfdabe45b78c51 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs deleted file mode 100644 index 3242c5d45..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs +++ /dev/null @@ -1,212 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.Hierarchical -{ - public enum PositionCalculationMethodTypes - { - /// - /// Barycenters of the vertices computed based on the - /// indexes of the vertices. - /// - IndexBased, - - /// - /// Barycenters of the vertices computed based on - /// the vertex sizes and positions. - /// - PositionBased - } - - /// - /// Parameters of the Sugiyama layout. - /// - public class SugiyamaLayoutParameters : LayoutParametersBase - { - #region Helper Types - public enum PromptingConstraintType - { - Compulsory, - Recommendation, - Irrelevant - } - #endregion - - internal float _horizontalgap = 10; - internal float _verticalgap = 10; - private bool _dirty = true; - private int _phase1IterationCount = 8; - private int _phase2IterationCount = 5; - private bool _minimizeHierarchicalEdgeLong = true; - private PositionCalculationMethodTypes _positionCalculationMethod = PositionCalculationMethodTypes.PositionBased; - private bool _simplify = true; - private bool _baryCenteringByPosition; - private PromptingConstraintType _promptingConstraint = PromptingConstraintType.Recommendation; - private float _maxWidth = float.MaxValue; - - /// - /// Minimal horizontal gap between the vertices. - /// - public float HorizontalGap - { - get { return _horizontalgap; } - set - { - if ( _horizontalgap != value ) - { - _horizontalgap = value; - NotifyPropertyChanged( "HorizontalGap" ); - } - } - } - - public float MaxWidth - { - get { return _maxWidth; } - set - { - if ( _maxWidth != value ) - { - _maxWidth = value; - NotifyPropertyChanged( "MaxWidth" ); - } - } - } - - public bool BaryCenteringByPosition - { - get { return _baryCenteringByPosition; } - set - { - if ( _baryCenteringByPosition != value ) - { - _baryCenteringByPosition = value; - NotifyPropertyChanged( "BaryCenteringByPosition" ); - } - } - } - - /// - /// Minimal vertical gap between the vertices. - /// - public float VerticalGap - { - get { return _verticalgap; } - set - { - if ( _verticalgap != value ) - { - _verticalgap = value; - NotifyPropertyChanged( "VerticalGap" ); - } - } - } - - /// - /// Start with a dirty round (allow to increase the number of the edge-crossings, but - /// try to put the vertices to it's barycenter). - /// - public bool DirtyRound - { - get { return _dirty; } - set - { - if ( _dirty != value ) - { - _dirty = value; - NotifyPropertyChanged( "DirtyRound" ); - } - } - } - - /// - /// Maximum iteration count in the Phase 1 of the Sugiyama algo. - /// - public int Phase1IterationCount - { - get { return _phase1IterationCount; } - set - { - if ( _phase1IterationCount != value ) - { - _phase1IterationCount = value; - NotifyPropertyChanged( "Phase1IterationCount" ); - } - } - } - - /// - /// Maximum iteration count in the Phase 2 of the Sugiyama algo. - /// - public int Phase2IterationCount - { - get { return _phase2IterationCount; } - set - { - if ( _phase2IterationCount != value ) - { - _phase2IterationCount = value; - NotifyPropertyChanged( "Phase2IterationCount" ); - } - } - } - - public bool MinimizeHierarchicalEdgeLong - { - get { return _minimizeHierarchicalEdgeLong; } - set - { - if ( _minimizeHierarchicalEdgeLong != value ) - { - _minimizeHierarchicalEdgeLong = value; - NotifyPropertyChanged( "MinimizeHierarchicalEdgeLong" ); - } - } - } - - public PositionCalculationMethodTypes PositionCalculationMethod - { - get { return _positionCalculationMethod; } - set - { - if ( value != _positionCalculationMethod ) - { - _positionCalculationMethod = value; - NotifyPropertyChanged( "PositionCalculationMethod" ); - } - } - } - - /// - /// Gets or sets the 'Simplify' parameter. - /// If true than the edges which directly goes to a vertex which could - /// be reached on another path (which is not directly goes to that vertex, there's some plus vertices) - /// will not be count in the layout algorithm. - /// - public bool Simplify - { - get { return _simplify; } - set - { - if ( _simplify != value ) - { - _simplify = value; - NotifyPropertyChanged( "Simplify" ); - } - } - } - - /// - /// Prompting constraint type for the starting positions. - /// - public PromptingConstraintType Prompting - { - get { return _promptingConstraint; } - set - { - if ( _promptingConstraint != value ) - { - _promptingConstraint = value; - NotifyPropertyChanged( "Prompting" ); - } - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs.meta deleted file mode 100644 index fe3f4bf56..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Hierarchical/SugiyamaLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 12f4d0c826309ec4486f22db3ac8c0ae -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree.meta deleted file mode 100644 index 82ba5317a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 632bdd55b48fa934495a136401dbe695 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs deleted file mode 100644 index 84330e09d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public class BalloonTreeLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - protected readonly TVertex root; - private readonly IDictionary vertexSizes; - private readonly IDictionary datas = new Dictionary(); - private HashSet visitedVertices = new HashSet(); - - private class BalloonData - { - public int d; - public int r; - public float a; - public float c; - public float f; - } - - - public BalloonTreeLayoutAlgorithm( - TGraph visitedGraph, - IDictionary vertexPositions, - IDictionary vertexSizes, - BalloonTreeLayoutParameters oldParameters, - TVertex selectedVertex ) - : base( visitedGraph, vertexPositions, oldParameters ) - { - this.root = selectedVertex; - this.vertexSizes = vertexSizes; - } - - protected override void InternalCompute() - { - InitializeData(); - - FirstWalk( root ); - - visitedVertices.Clear(); - - SecondWalk( root, null, 0, 0, 1, 0 ); - - NormalizePositions(); - } - - private void FirstWalk( TVertex v ) - { - var data = datas[v]; - visitedVertices.Add( v ); - data.d = 0; - - float s = 0; - - foreach ( var edge in VisitedGraph.OutEdges( v ) ) - { - var otherVertex = edge.Target; - var otherData = datas[otherVertex]; - - if ( !visitedVertices.Contains( otherVertex ) ) - { - FirstWalk( otherVertex ); - data.d = Math.Max( data.d, otherData.r ); - otherData.a = (float)Math.Atan( ( (float)otherData.r ) / ( data.d + otherData.r ) ); - s += otherData.a; - } - } - - - AdjustChildren( v, data, s ); - SetRadius( v, data ); - } - - private void SecondWalk( TVertex v, TVertex r, float x, float y, float l, float t ) - { - float2 pos = new float2( x, y ); - VertexPositions[v] = pos; - visitedVertices.Add( v ); - BalloonData data = datas[v]; - - float dd = l * data.d; - float p = (float)( t + Math.PI ); - int degree = VisitedGraph.OutDegree( v ); - float fs = ( degree == 0 ? 0 : data.f / degree ); - float pr = 0; - - foreach ( var edge in VisitedGraph.OutEdges( v ) ) - { - var otherVertex = edge.Target; - if ( visitedVertices.Contains( otherVertex ) ) - continue; - - var otherData = datas[otherVertex]; - float aa = data.c * otherData.a; - float rr = (float)( data.d * Math.Tan( aa ) / ( 1 - Math.Tan( aa ) ) ); - p += pr + aa + fs; - - float xx = (float)( ( l * rr + dd ) * Math.Cos( p ) ); - float yy = (float)( ( l * rr + dd ) * Math.Sign( p ) ); - pr = aa; ; - SecondWalk( otherVertex, v, x + xx, y + yy, l * data.c, p ); - } - } - - private void SetRadius( TVertex v, BalloonData data ) - { - data.r = (int)Math.Max( data.d / 2, Parameters.minRadius ); - } - - private void AdjustChildren( TVertex v, BalloonData data, float s ) - { - if ( s > Math.PI ) - { - data.c = (float)Math.PI / s; - data.f = 0; - } - else - { - data.c = 1; - data.f = (float)Math.PI - s; - } - } - - private void InitializeData() - { - foreach ( var v in VisitedGraph.Vertices ) - datas[v] = new BalloonData(); - - visitedVertices.Clear(); - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs.meta deleted file mode 100644 index 9abaa996c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4806220c777e51946ade79e22d73a50e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs deleted file mode 100644 index f38634db9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public class BalloonTreeLayoutParameters : LayoutParametersBase - { - internal int minRadius = 2; - internal float border = 20.0f; - - public int MinRadius - { - get { return minRadius; } - set - { - if ( value != minRadius ) - { - minRadius = value; - NotifyPropertyChanged( "MinRadius" ); - } - } - } - - - public float Border - { - get { return border; } - set - { - if ( value != border ) - { - border = value; - NotifyPropertyChanged( "Border" ); - } - } - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs.meta deleted file mode 100644 index 16e0235f9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/BalloonTreeLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 50c1bd304db81734290a7a6a438f1ac9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs deleted file mode 100644 index 555b659a2..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public partial class SimpleTreeLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - class Layer - { - public float Size; - public float NextPosition; - public readonly IList Vertices = new List(); - public float LastTranslate; - - public Layer() - { - LastTranslate = 0; - } - - /* Width and Height Optimization */ - - } - - class VertexData - { - public TVertex parent; - public float translate; - public float position; - - /* Width and Height Optimization */ - - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs.meta deleted file mode 100644 index c3d8a6379..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.Data.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7ad6780784883bc4baf302855d15070e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs deleted file mode 100644 index 7ca2565cf..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using QuickGraph; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public partial class SimpleTreeLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - /*private void DoWidthAndHeightOptimization() - { - CreateVertexWHOptInfos(); - CreateLayerWHOptInfos(); - - if (_actualWidthPerHeight <= Parameters.WidthPerHeight) - return; - - bool optimized = false; - do - { - optimized = DoWHOptimizationStep(); - } while (optimized); - RewriteLayerIndexes(); - } - - private void CreateVertexWHOptInfos() - { - - } - private void CreateLayerWHOptInfos() - { - - } - private bool DoWHOptimizationStep() - { - - } - private void RewriteLayerIndexes() - { - - }*/ - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs.meta deleted file mode 100644 index 820eef6b8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.WidthAndHeightOpt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d5b68af29477ade4d8a4dc3960f7701a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs deleted file mode 100644 index 7a862157f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Linq; -using QuickGraph; -using System.Diagnostics; -using QuickGraph.Algorithms.Search; -using QuickGraph.Collections; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public partial class SimpleTreeLayoutAlgorithm : DefaultParameterizedLayoutAlgorithmBase - where TVertex : class - where TEdge : IEdge - where TGraph : IBidirectionalGraph - { - private BidirectionalGraph> spanningTree; - readonly IDictionary sizes; - readonly IDictionary data = new Dictionary(); - readonly IList layers = new List(); - int direction; - - public SimpleTreeLayoutAlgorithm( TGraph visitedGraph, IDictionary vertexPositions, IDictionary vertexSizes, SimpleTreeLayoutParameters parameters ) - : base( visitedGraph, vertexPositions, parameters ) - { - //Contract.Requires( vertexSizes != null ); - //Contract.Requires( visitedGraph.Vertices.All( v => vertexSizes.ContainsKey( v ) ) ); - - sizes = new Dictionary( vertexSizes ); - } - - protected override void InternalCompute() - { - if ( Parameters.Direction == LayoutDirection.LeftToRight || Parameters.Direction == LayoutDirection.RightToLeft ) - { - //change the sizes - foreach ( var sizePair in sizes.ToArray() ) - sizes[sizePair.Key] = new float2( sizePair.Value.y, sizePair.Value.x ); - } - - if ( Parameters.Direction == LayoutDirection.RightToLeft || Parameters.Direction == LayoutDirection.BottomToTop ) - direction = -1; - else - direction = 1; - - GenerateSpanningTree(); - //DoWidthAndHeightOptimization(); - - //first layout the vertices with 0 in-edge - foreach ( var source in spanningTree.Vertices.Where( v => spanningTree.InDegree( v ) == 0 ) ) - CalculatePosition( source, null, 0 ); - - //then the others - foreach ( var source in spanningTree.Vertices ) - CalculatePosition( source, null, 0 ); - - AssignPositions(); - } - - private void GenerateSpanningTree() - { - spanningTree = new BidirectionalGraph>( false ); - spanningTree.AddVertexRange( VisitedGraph.Vertices ); - IQueue vb = new QuickGraph.Collections.Queue(); - vb.Enqueue( VisitedGraph.Vertices.OrderBy( v => VisitedGraph.InDegree( v ) ).First() ); - switch ( Parameters.SpanningTreeGeneration ) - { - case SpanningTreeGeneration.BFS: - var bfsAlgo = new BreadthFirstSearchAlgorithm( VisitedGraph, vb, new Dictionary() ); - bfsAlgo.TreeEdge += e => spanningTree.AddEdge( new Edge( e.Source, e.Target ) ); - bfsAlgo.Compute(); - break; - case SpanningTreeGeneration.DFS: - var dfsAlgo = new DepthFirstSearchAlgorithm( VisitedGraph ); - dfsAlgo.TreeEdge += e => spanningTree.AddEdge( new Edge( e.Source, e.Target ) ); - dfsAlgo.Compute(); - break; - } - } - - protected float CalculatePosition( TVertex v, TVertex parent, int l ) - { - if ( data.ContainsKey( v ) ) - return -1; //this vertex is already layed out - - while ( l >= layers.Count ) - layers.Add( new Layer() ); - - var layer = layers[l]; - var size = sizes[v]; - var d = new VertexData { parent = parent }; - data[v] = d; - - layer.NextPosition += size.x / 2.0f; - if ( l > 0 ) - { - layer.NextPosition += layers[l - 1].LastTranslate; - layers[l - 1].LastTranslate = 0; - } - layer.Size = max( layer.Size, size.y + Parameters.LayerGap ); - layer.Vertices.Add( v ); - if ( spanningTree.OutDegree( v ) == 0 ) - { - d.position = layer.NextPosition; - } - else - { - float minPos = float.MaxValue; - float maxPos = -float.MaxValue; - //first put the children - foreach ( var child in spanningTree.OutEdges( v ).Select( e => e.Target ) ) - { - float childPos = CalculatePosition( child, v, l + 1 ); - if ( childPos >= 0 ) - { - minPos = min( minPos, childPos ); - maxPos = max( maxPos, childPos ); - } - } - if ( minPos != float.MaxValue ) - d.position = ( minPos + maxPos ) / 2.0f; - else - d.position = layer.NextPosition; - d.translate = Math.Max( layer.NextPosition - d.position, 0 ); - - layer.LastTranslate = d.translate; - d.position += d.translate; - layer.NextPosition = d.position; - } - layer.NextPosition += size.x / 2.0f + Parameters.VertexGap; - - return d.position; - } - - protected void AssignPositions() - { - float layerSize = 0; - bool changeCoordinates = ( Parameters.Direction == LayoutDirection.LeftToRight || Parameters.Direction == LayoutDirection.RightToLeft ); - - foreach ( var layer in layers ) - { - foreach ( var v in layer.Vertices ) - { - float2 size = sizes[v]; - var d = data[v]; - if ( d.parent != null ) - { - d.position += data[d.parent].translate; - d.translate += data[d.parent].translate; - } - - VertexPositions[v] = - changeCoordinates - ? new float2( direction * ( layerSize + size.y / 2.0f ), d.position ) - : new float2( d.position, direction * ( layerSize + size.y / 2.0f ) ); - } - layerSize += layer.Size; - } - - if ( direction < 0 ) - NormalizePositions(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs.meta deleted file mode 100644 index 623f18c98..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 095972a518ca89141b7de3f687b45574 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs deleted file mode 100644 index 1e729be8e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs +++ /dev/null @@ -1,103 +0,0 @@ -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public class SimpleTreeLayoutParameters : LayoutParametersBase - { - private float vertexGap = 10; - /// - /// Gets or sets the gap between the vertices. - /// - public float VertexGap - { - get { return vertexGap; } - set - { - if ( vertexGap != value ) - { - vertexGap = value; - NotifyPropertyChanged( "VertexGap" ); - } - } - } - - private float layerGap = 10; - /// - /// Gets or sets the gap between the layers. - /// - public float LayerGap - { - get { return layerGap; } - set - { - if ( layerGap != value ) - { - layerGap = value; - NotifyPropertyChanged( "LayerGap" ); - } - } - } - - private LayoutDirection direction = LayoutDirection.TopToBottom; - /// - /// Gets or sets the direction of the layout. - /// - public LayoutDirection Direction - { - get { return direction; } - set - { - if ( direction != value ) - { - direction = value; - NotifyPropertyChanged( "Direction" ); - } - } - } - - private SpanningTreeGeneration spanningTreeGeneration = SpanningTreeGeneration.DFS; - /// - /// Gets or sets the direction of the layout. - /// - public SpanningTreeGeneration SpanningTreeGeneration - { - get { return spanningTreeGeneration; } - set - { - if ( spanningTreeGeneration != value ) - { - spanningTreeGeneration = value; - NotifyPropertyChanged( "SpanningTreeGeneration" ); - } - } - } - - private bool optimizeWidthAndHeight = false; - - public bool OptimizeWidthAndHeight - { - get { return optimizeWidthAndHeight; } - set - { - if (value == optimizeWidthAndHeight) - return; - - optimizeWidthAndHeight = value; - NotifyPropertyChanged("OptimizeWidthAndHeight"); - } - } - - private float widthPerHeight = 1.0f; - - public float WidthPerHeight - { - get { return widthPerHeight; } - set - { - if (value == widthPerHeight) - return; - - widthPerHeight = value; - NotifyPropertyChanged("WidthPerHeight"); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs.meta deleted file mode 100644 index 2b8a496b7..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SimpleTreeLayoutParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3dd67edb0b042ac419adaf10522d7fa8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs deleted file mode 100644 index c97d4fb44..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace GraphSharp.Algorithms.Layout.Simple.Tree -{ - public enum SpanningTreeGeneration - { - BFS, - DFS - } -} diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs.meta deleted file mode 100644 index af266cedd..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/Simple/Tree/SpanningTreeGeneration.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1c511726669124942b7961dfe6606777 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs deleted file mode 100644 index 895f81dfc..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using QuickGraph; -using GraphSharp.Algorithms.Layout.Simple.Tree; -using GraphSharp.Algorithms.Layout.Simple.Circular; -using GraphSharp.Algorithms.Layout.Simple.FDP; -using GraphSharp.Algorithms.Layout.Simple.Hierarchical; -using GraphSharp.Algorithms.Layout.Compound; -using GraphSharp.Algorithms.Layout.Compound.FDP; -using System.Windows; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.Layout -{ - public class StandardLayoutAlgorithmFactory : ILayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - public IEnumerable AlgorithmTypes - { - get { return new[] { "Circular", "Tree", "FR", "BoundedFR", "KK", "ISOM", "LinLog", "EfficientSugiyama", /*"Sugiyama",*/ "CompoundFDP" }; } - } - - public ILayoutAlgorithm CreateAlgorithm(string newAlgorithmType, ILayoutContext context, ILayoutParameters parameters) - { - if (context == null || context.Graph == null) - return null; - - if (context.Mode == LayoutMode.Simple) - { - switch (newAlgorithmType) - { - case "Tree": - return new SimpleTreeLayoutAlgorithm(context.Graph, context.Positions, - context.Sizes, - parameters as SimpleTreeLayoutParameters); - case "Circular": - return new CircularLayoutAlgorithm(context.Graph, context.Positions, - context.Sizes, - parameters as CircularLayoutParameters); - case "FR": - return new FRLayoutAlgorithm(context.Graph, context.Positions, - parameters as FRLayoutParametersBase); - case "BoundedFR": - return new FRLayoutAlgorithm(context.Graph, context.Positions, - parameters as BoundedFRLayoutParameters); - case "KK": - return new KKLayoutAlgorithm(context.Graph, context.Positions, - parameters as KKLayoutParameters); - case "ISOM": - return new ISOMLayoutAlgorithm(context.Graph, context.Positions, - parameters as ISOMLayoutParameters); - case "LinLog": - return new LinLogLayoutAlgorithm(context.Graph, context.Positions, - parameters as LinLogLayoutParameters); - case "EfficientSugiyama": - return new EfficientSugiyamaLayoutAlgorithm(context.Graph, - parameters as EfficientSugiyamaLayoutParameters, - context.Positions, - context.Sizes); - - case "Sugiyama": - return new SugiyamaLayoutAlgorithm(context.Graph, context.Sizes, - context.Positions, - parameters as - SugiyamaLayoutParameters, - e => (e is TypedEdge - ? (e as TypedEdge).Type - : EdgeTypes.Hierarchical)); - case "CompoundFDP": - return new CompoundFDPLayoutAlgorithm( - context.Graph, - context.Sizes, - // new Dictionary(), - new Dictionary(), - context.Positions, - parameters as CompoundFDPLayoutParameters); - default: - return null; - } - } - else if (context.Mode == LayoutMode.Compound) - { - var compoundContext = context as ICompoundLayoutContext; - switch (newAlgorithmType) - { - case "CompoundFDP": - return new CompoundFDPLayoutAlgorithm( - compoundContext.Graph, - compoundContext.Sizes, - // compoundContext.VertexBorders, - compoundContext.LayoutTypes, - compoundContext.Positions, - parameters as CompoundFDPLayoutParameters); - default: - return null; - } - } - return null; - } - - public ILayoutParameters CreateParameters(string algorithmType, ILayoutParameters oldParameters) - { - switch (algorithmType) - { - case "Tree": - return oldParameters.CreateNewParameter(); - case "Circular": - return oldParameters.CreateNewParameter(); - case "FR": - return oldParameters.CreateNewParameter(); - case "BoundedFR": - return oldParameters.CreateNewParameter(); - case "KK": - return oldParameters.CreateNewParameter(); - case "ISOM": - return oldParameters.CreateNewParameter(); - case "LinLog": - return oldParameters.CreateNewParameter(); - case "EfficientSugiyama": - return oldParameters.CreateNewParameter(); - case "Sugiyama": - return oldParameters.CreateNewParameter(); - case "CompoundFDP": - return oldParameters.CreateNewParameter(); - default: - return null; - } - } - - - - public bool IsValidAlgorithm(string algorithmType) - { - return AlgorithmTypes.Contains(algorithmType); - } - - public string GetAlgorithmType(ILayoutAlgorithm algorithm) - { - if (algorithm == null) - return string.Empty; - - int index = algorithm.GetType().Name.IndexOf("LayoutAlgorithm"); - if (index == -1) - return string.Empty; - - string algoType = algorithm.GetType().Name; - return algoType.Substring(0, algoType.Length - index); - } - - public bool NeedEdgeRouting(string algorithmType) - { - return (algorithmType != "Sugiyama") && (algorithmType != "EfficientSugiyama"); - } - - public bool NeedOverlapRemoval(string algorithmType) - { - return (algorithmType != "Sugiyama" - && algorithmType != "EfficientSugiyama" - && algorithmType != "Circular" - && algorithmType != "Tree" - && algorithmType != "CompoundFDP"); - } - } -} - diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs.meta deleted file mode 100644 index db8d1e898..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/Layout/StandardLayoutAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 49a83157b23dcef46acdcb806bb7c842 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval.meta deleted file mode 100644 index ee1b71d3d..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9d8cc5579f687044080d181a5964970f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs deleted file mode 100644 index 687f150da..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs +++ /dev/null @@ -1,403 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows; -using System.Diagnostics; -using System.Diagnostics.Contracts; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public class FSAAlgorithm : FSAAlgorithm - where TObject : class - { - public FSAAlgorithm( IDictionary rectangles, IOverlapRemovalParameters parameters ) - : base( rectangles, parameters ) - { - } - } - - /// - /// Tim Dwyer �ltal JAVA-ban implement�lt FSA algoritmus portol�sa .NET al�. - /// - /// http://adaptagrams.svn.sourceforge.net/viewvc/adaptagrams/trunk/RectangleOverlapSolver/placement/FSA.java?view=markup - /// - public class FSAAlgorithm : OverlapRemovalAlgorithmBase - where TObject : class - where TParam : IOverlapRemovalParameters - { - public FSAAlgorithm( IDictionary rectangles, TParam parameters ) - : base( rectangles, parameters ) - { - } - - protected override void RemoveOverlap() - { - DateTime t0 = DateTime.Now; - float cost = HorizontalImproved(); - DateTime t1 = DateTime.Now; - - Debug.WriteLine( "PFS horizontal: cost=" + cost + " time=" + ( t1 - t0 ) ); - - t1 = DateTime.Now; - cost = VerticalImproved(); - DateTime t2 = DateTime.Now; - Debug.WriteLine( "PFS vertical: cost=" + cost + " time=" + ( t2 - t1 ) ); - Debug.WriteLine( "PFS total: time=" + ( t2 - t0 ) ); - } - - /// - /// Megadja a k�t t�glalap k�t�tt fell�p� er�t. - /// - /// Egyik t�glalap. - /// M�sik t�glalap. - /// - protected float2 force( Rect vi, Rect vj ) - { - var f = new float2( 0, 0 ); - float2 d = vj.GetCenter() - vi.GetCenter(); - float adx = Math.Abs( d.x ); - float ady = Math.Abs( d.y ); - float gij = d.y / d.x; - float Gij = ( vi.y + vj.y ) / ( vi.x + vj.x ); - if ( Gij >= gij && gij > 0 || -Gij <= gij && gij < 0 || gij == 0 ) - { - // vi and vj touch with y-direction boundaries - f.x = d.x / adx * ( ( vi.x + vj.x ) / 2.0f - adx ); - f.y = f.x * gij; - } - if ( Gij < gij && gij > 0 || -Gij > gij && gij < 0 ) - { - // vi and vj touch with x-direction boundaries - f.y = d.y / ady * ( ( vi.y + vj.y ) / 2.0f - ady ); - f.x = f.y / gij; - } - return f; - } - - protected float2 force2( Rect vi, Rect vj ) - { - var f = new float2( 0, 0 ); - float2 d = vj.GetCenter() - vi.GetCenter(); - float gij = d.y / d.x; - if ( vi.IntersectsWith( vj ) ) - { - f.x = ( vi.x + vj.x ) / 2.0f - d.x; - f.y = ( vi.y + vj.y ) / 2.0f - d.y; - // in the x dimension - if ( f.x > f.y && gij != 0 ) - { - f.x = f.y / gij; - } - f.x = Math.Max( f.x, 0 ); - f.y = Math.Max( f.y, 0 ); - } - return f; - } - - protected int XComparison( RectangleWrapper r1, RectangleWrapper r2 ) - { - float r1CenterX = r1.CenterX; - float r2CenterX = r2.CenterX; - - if ( r1CenterX < r2CenterX ) - { - return -1; - } - if ( r1CenterX > r2CenterX ) - { - return 1; - } - return 0; - } - - protected void Horizontal() - { - wrappedRectangles.Sort( XComparison ); - int i = 0, n = wrappedRectangles.Count; - while ( i < n ) - { - // x_i = x_{i+1} = ... = x_k - int k = i; - RectangleWrapper u = wrappedRectangles[i]; - //TODO plus 1 check - for ( int j = i + 1; j < n; j++ ) - { - RectangleWrapper v = wrappedRectangles[j]; - if ( u.CenterX == v.CenterX ) - { - u = v; - k = j; - } - else - { - break; - } - } - // delta = max(0, max{f.x(m,j)|i<=m<=k delta ) - { - delta = f.x; - } - } - } - for ( int j = k + 1; j < n; j++ ) - { - RectangleWrapper r = wrappedRectangles[j]; - r.Rectangle.x += delta; - } - i = k + 1; - } - - } - - protected float HorizontalImproved() - { - wrappedRectangles.Sort( XComparison ); - int i = 0, n = wrappedRectangles.Count; - - //bal szelso - RectangleWrapper lmin = wrappedRectangles[0]; - float sigma = 0, x0 = lmin.CenterX; - var gamma = new float[wrappedRectangles.Count]; - var x = new float[wrappedRectangles.Count]; - while ( i < n ) - { - RectangleWrapper u = wrappedRectangles[i]; - - //i-vel azonos k�z�pponttal rendelkez� t�glalapok meghat�roz�sa - int k = i; - for ( int j = i + 1; j < n; j++ ) - { - RectangleWrapper v = wrappedRectangles[j]; - if ( u.CenterX == v.CenterX ) - { - u = v; - k = j; - } - else - { - break; - } - } - float g = 0; - - //i-k intervallumban l�v� t�glalapokra er�sz�m�t�s a t�l�k balra l�v�kkel - if ( u.CenterX > x0 ) - { - for ( int m = i; m <= k; m++ ) - { - float ggg = 0; - for ( int j = 0; j < i; j++ ) - { - float2 f = force( wrappedRectangles[j].Rectangle, wrappedRectangles[m].Rectangle ); - ggg = Math.Max( f.x + gamma[j], ggg ); - } - RectangleWrapper v = wrappedRectangles[m]; - float gg = - v.Rectangle.x + ggg < lmin.Rectangle.x - ? sigma - : ggg; - g = Math.Max( g, gg ); - } - } - //megjegyezz�k az elemek eltol�s�st x t�mbbe - //bal sz�l� elemet �jra meghat�rozzuk - for ( int m = i; m <= k; m++ ) - { - gamma[m] = g; - RectangleWrapper r = wrappedRectangles[m]; - x[m] = r.Rectangle.x + g; - if ( r.Rectangle.x < lmin.Rectangle.x ) - { - lmin = r; - } - } - - //az i-k intervallum n�gyzeteit�l jobbra l�v�kkel er�sz�m�t�s, legnagyobb er� t�rol�sa - // delta = max(0, max{f.x(m,j)|i<=m<=k delta ) - { - delta = f.x; - } - } - } - sigma += delta; - i = k + 1; - } - float cost = 0; - for ( i = 0; i < n; i++ ) - { - RectangleWrapper r = wrappedRectangles[i]; - float oldPos = r.Rectangle.x; - float newPos = x[i]; - - r.Rectangle.x = newPos; - - float diff = oldPos - newPos; - cost += diff * diff; - } - return cost; - } - - protected int YComparison( RectangleWrapper r1, RectangleWrapper r2 ) - { - float r1CenterY = r1.CenterY; - float r2CenterY = r2.CenterY; - - if ( r1CenterY < r2CenterY ) - { - return -1; - } - if ( r1CenterY > r2CenterY ) - { - return 1; - } - return 0; - } - - protected void Vertical() - { - wrappedRectangles.Sort( YComparison ); - int i = 0, n = wrappedRectangles.Count; - while ( i < n ) - { - // y_i = y_{i+1} = ... = y_k - int k = i; - RectangleWrapper u = wrappedRectangles[i]; - for ( int j = i; j < n; j++ ) - { - RectangleWrapper v = wrappedRectangles[j]; - if ( u.CenterY == v.CenterY ) - { - u = v; - k = j; - } - else - { - break; - } - } - // delta = max(0, max{f.y(m,j)|i<=m<=k delta ) - { - delta = f.y; - } - } - } - for ( int j = k + 1; j < n; j++ ) - { - RectangleWrapper r = wrappedRectangles[j]; - r.Rectangle.y += delta; - } - i = k + 1; - } - - } - - protected float VerticalImproved() - { - wrappedRectangles.Sort( YComparison ); - int i = 0, n = wrappedRectangles.Count; - RectangleWrapper lmin = wrappedRectangles[0]; - float sigma = 0, y0 = lmin.CenterY; - var gamma = new float[wrappedRectangles.Count]; - var y = new float[wrappedRectangles.Count]; - while ( i < n ) - { - RectangleWrapper u = wrappedRectangles[i]; - int k = i; - for ( int j = i + 1; j < n; j++ ) - { - RectangleWrapper v = wrappedRectangles[j]; - if ( u.CenterY == v.CenterY ) - { - u = v; - k = j; - } - else - { - break; - } - } - float g = 0; - if ( u.CenterY > y0 ) - { - for ( int m = i; m <= k; m++ ) - { - float ggg = 0; - for ( int j = 0; j < i; j++ ) - { - float2 f = force2( wrappedRectangles[j].Rectangle, wrappedRectangles[m].Rectangle ); - ggg = Math.Max( f.y + gamma[j], ggg ); - } - RectangleWrapper v = wrappedRectangles[m]; - float gg = - v.Rectangle.y + ggg < lmin.Rectangle.y - ? sigma - : ggg; - g = Math.Max( g, gg ); - } - } - for ( int m = i; m <= k; m++ ) - { - gamma[m] = g; - RectangleWrapper r = wrappedRectangles[m]; - y[m] = r.Rectangle.y + g; - if ( r.Rectangle.y < lmin.Rectangle.y ) - { - lmin = r; - } - } - // delta = max(0, max{f.x(m,j)|i<=m<=k delta ) - { - delta = f.y; - } - } - } - sigma += delta; - i = k + 1; - } - - float cost = 0; - for ( i = 0; i < n; i++ ) - { - RectangleWrapper r = wrappedRectangles[i]; - float oldPos = r.Rectangle.y; - float newPos = y[i]; - - r.Rectangle.y = newPos; - - float diff = oldPos - newPos; - cost += diff * diff; - } - return cost; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs.meta deleted file mode 100644 index a410a6aa9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/FSAAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a76a622ecfc1e8140982de9abd03457a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs deleted file mode 100644 index a6fc73145..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using System.Windows; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public interface IOverlapRemovalAlgorithm : IAlgorithm - { - IDictionary Rectangles { get; } - - IOverlapRemovalParameters GetParameters(); - } - - public interface IOverlapRemovalAlgorithm : IOverlapRemovalAlgorithm - where TParam : IOverlapRemovalParameters - { - TParam Parameters { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs.meta deleted file mode 100644 index 13c37331e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3f4b5bec667d2014d9302ec043354935 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs deleted file mode 100644 index 9f3ccfc8a..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public interface IOverlapRemovalAlgorithmFactory - where TVertex : class - { - /// - /// List of the available algorithms. - /// - IEnumerable AlgorithmTypes { get; } - - IOverlapRemovalAlgorithm CreateAlgorithm( string newAlgorithmType, IOverlapRemovalContext context, IOverlapRemovalParameters parameters ); - - IOverlapRemovalParameters CreateParameters( string algorithmType, IOverlapRemovalParameters oldParameters ); - - bool IsValidAlgorithm( string algorithmType ); - - string GetAlgorithmType( IOverlapRemovalAlgorithm algorithm ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs.meta deleted file mode 100644 index 10603a3ed..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 332cd4d13f94d114996108bd46222790 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs deleted file mode 100644 index 1c549d1d8..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; -using System.Windows; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public interface IOverlapRemovalContext - { - IDictionary Rectangles { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs.meta deleted file mode 100644 index 2996bf99c..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4870dac2fa44ac941acb34e9c67a5330 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs deleted file mode 100644 index 60aa9a692..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public interface IOverlapRemovalParameters : IAlgorithmParameters - { - float VerticalGap { get; } - float HorizontalGap { get; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs.meta deleted file mode 100644 index 70b5d01b9..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/IOverlapRemovalParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f2f149b8b93984b439939b7f720810be -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs deleted file mode 100644 index 62c7402ff..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows; -using System.Diagnostics.Contracts; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public class OneWayFSAAlgorithm : FSAAlgorithm - where TObject : class - { - public OneWayFSAAlgorithm( IDictionary rectangles, OneWayFSAParameters parameters ) - : base( rectangles, parameters ) - { - } - - protected override void RemoveOverlap() - { - switch ( Parameters.Way ) - { - case OneWayFSAWayEnum.Horizontal: - HorizontalImproved(); - break; - case OneWayFSAWayEnum.Vertical: - VerticalImproved(); - break; - default: - break; - } - } - - protected new float HorizontalImproved() - { - wrappedRectangles.Sort( XComparison ); - int i = 0, n = wrappedRectangles.Count; - - //bal szelso - var lmin = wrappedRectangles[0]; - float sigma = 0, x0 = lmin.CenterX; - var gamma = new float[wrappedRectangles.Count]; - var x = new float[wrappedRectangles.Count]; - while ( i < n ) - { - var u = wrappedRectangles[i]; - - //i-vel azonos középponttal rendelkező téglalapok meghatározása - int k = i; - for ( int j = i + 1; j < n; j++ ) - { - var v = wrappedRectangles[j]; - if ( u.CenterX == v.CenterX ) - { - u = v; - k = j; - } - else - { - break; - } - } - float g = 0; - - //ne legyenek ugyanabban a pontban - for ( int z = i + 1; z <= k; z++ ) - { - var v = wrappedRectangles[z]; - v.Rectangle.x += ( z - i ) * 0.0001f; - } - - //i-k intervallumban lévő téglalapokra erőszámítás a tőlük balra lévőkkel - if ( u.CenterX > x0 ) - { - for ( int m = i; m <= k; m++ ) - { - float ggg = 0; - for ( int j = 0; j < i; j++ ) - { - var f = force( wrappedRectangles[j].Rectangle, wrappedRectangles[m].Rectangle ); - ggg = Math.Max( f.x + gamma[j], ggg ); - } - var v = wrappedRectangles[m]; - float gg = v.Rectangle.x + ggg < lmin.Rectangle.x ? sigma : ggg; - g = Math.Max( g, gg ); - } - } - //megjegyezzük az elemek eltolásást x tömbbe - //bal szélő elemet újra meghatározzuk - for ( int m = i; m <= k; m++ ) - { - gamma[m] = g; - var r = wrappedRectangles[m]; - x[m] = r.Rectangle.x + g; - if ( r.Rectangle.x < lmin.Rectangle.x ) - { - lmin = r; - } - } - - //az i-k intervallum négyzeteitől jobbra lévőkkel erőszámítás, legnagyobb erő tárolása - // delta = max(0, max{f.x(m,j)|i<=m<=k delta ) - { - delta = f.x; - } - } - } - sigma += delta; - i = k + 1; - } - float cost = 0; - for ( i = 0; i < n; i++ ) - { - var r = wrappedRectangles[i]; - float oldPos = r.Rectangle.x; - float newPos = x[i]; - - r.Rectangle.x = newPos; - - float diff = oldPos - newPos; - cost += diff * diff; - } - return cost; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs.meta deleted file mode 100644 index f6382d742..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAAlgorithm.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2c30f87ddfd0d24408a933c66fbdba2f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs deleted file mode 100644 index 96cad6eb6..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public enum OneWayFSAWayEnum { - Horizontal, - Vertical - } - - public class OneWayFSAParameters : OverlapRemovalParameters - { - private OneWayFSAWayEnum way; - public OneWayFSAWayEnum Way - { - get { return way; } - set - { - if ( way != value ) - { - way = value; - NotifyChanged( "Way" ); - } - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs.meta deleted file mode 100644 index 6f228229e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OneWayFSAParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f0b4f387a07b226478df70eeb8dceba9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs deleted file mode 100644 index ec984358f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Windows; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public abstract class OverlapRemovalAlgorithmBase : AlgorithmBase, IOverlapRemovalAlgorithm - where TObject : class - where TParam : IOverlapRemovalParameters - { - protected IDictionary originalRectangles; - public IDictionary Rectangles - { - get { return originalRectangles; } - } - - public TParam Parameters { get; private set; } - - public IOverlapRemovalParameters GetParameters() - { - return Parameters; - } - - protected List> wrappedRectangles; - - - public OverlapRemovalAlgorithmBase( IDictionary rectangles, TParam parameters ) - { - //eredeti t�glalapok list�ja - originalRectangles = rectangles; - - //wrapping the old rectangles, to remember which one belongs to which object - wrappedRectangles = new List>(); - int i = 0; - foreach ( var kvpRect in rectangles ) - { - wrappedRectangles.Insert( i, new RectangleWrapper( kvpRect.Value, kvpRect.Key ) ); - i++; - } - - Parameters = parameters; - } - - protected sealed override void InternalCompute() - { - AddGaps(); - - RemoveOverlap(); - - RemoveGaps(); - - foreach ( var r in wrappedRectangles ) - originalRectangles[r.Id] = r.Rectangle; - } - - protected virtual void AddGaps() - { - foreach ( var r in wrappedRectangles ) - { - r.Rectangle.width += Parameters.HorizontalGap; - r.Rectangle.height += Parameters.VerticalGap; - r.Rectangle.x -= Parameters.HorizontalGap / 2; - r.Rectangle.y -= Parameters.VerticalGap / 2; - } - } - - protected virtual void RemoveGaps() - { - foreach ( var r in wrappedRectangles ) - { - r.Rectangle.width -= Parameters.HorizontalGap; - r.Rectangle.height -= Parameters.VerticalGap; - r.Rectangle.x += Parameters.HorizontalGap / 2; - r.Rectangle.y += Parameters.VerticalGap / 2; - } - } - - protected abstract void RemoveOverlap(); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs.meta deleted file mode 100644 index 4edc717ab..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalAlgorithmBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 22e255da707cf7140b6c3ee0e5a7f8e5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs deleted file mode 100644 index c605e1f2e..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Windows; -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public class OverlapRemovalContext : IOverlapRemovalContext - { - public IDictionary Rectangles { get; private set; } - - public OverlapRemovalContext( IDictionary rectangles ) - { - Rectangles = rectangles; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs.meta deleted file mode 100644 index 098db4d65..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalContext.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9c6c56fbf921aa240ba81c9f283fd215 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs deleted file mode 100644 index 29a195036..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public static class OverlapRemovalHelper - { - public static float2 GetCenter( this Rect r ) - { - return new float2( r.x + r.width / 2, r.y + r.height / 2 ); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs.meta deleted file mode 100644 index 988f753af..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8f6dea1aafb7b334aa5b9c37d0685395 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs deleted file mode 100644 index f3030d2d3..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public class OverlapRemovalParameters : IOverlapRemovalParameters - { - private float verticalGap = 10; - private float horizontalGap = 10; - - public float VerticalGap - { - get { return verticalGap; } - set - { - if ( verticalGap != value ) - { - verticalGap = value; - NotifyChanged( "VerticalGap" ); - } - } - } - - public float HorizontalGap - { - get { return horizontalGap; } - set - { - if ( horizontalGap != value ) - { - horizontalGap = value; - NotifyChanged( "HorizontalGap" ); - } - } - } - - public object Clone() - { - return MemberwiseClone(); - } - - protected void NotifyChanged( string propertyName ) - { - if ( PropertyChanged != null ) - PropertyChanged( this, new System.ComponentModel.PropertyChangedEventArgs( propertyName ) ); - } - - public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs.meta deleted file mode 100644 index 6be8de086..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/OverlapRemovalParameters.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: df845e26e779d8c4c9378a0bd6897552 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs deleted file mode 100644 index 60c4b8dea..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs +++ /dev/null @@ -1,51 +0,0 @@ - -using Unity.Mathematics; -using Unity.Tiny; -using static Unity.Mathematics.math; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - /// - /// A System.Windows.Rect egy strukt�ra, ez�rt a heap-en t�rol�dik. Bizonyos esetekben ez nem - /// szerencs�s, �gy sz�ks�g van erre a wrapper oszt�lyra. Mivel ez class, ez�rt nem - /// �rt�k szerinti �tad�s van. - /// - public class RectangleWrapper - where TObject : class - { - private readonly TObject id; - public TObject Id - { - get { return id; } - } - - public Rect Rectangle; - - /// - /// - /// - /// - /// Az adott t�glalap azonos�t�ja (az overlap-removal v�g�n tudnunk kell, hogy - /// melyik t�glalap melyik objektumhoz tartozik. Az azonos�t�s megoldhat� lesz id alapj�n. - public RectangleWrapper( Rect rectangle, TObject id ) - { - Rectangle = rectangle; - this.id = id; - } - - public float CenterX - { - get { return Rectangle.x + Rectangle.width / 2; } - } - - public float CenterY - { - get { return Rectangle.y + Rectangle.height / 2; } - } - - public float2 Center - { - get { return new float2( CenterX, CenterY ); } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs.meta deleted file mode 100644 index fe13be899..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/RectangleWrapper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c550fcad2040b774788dc4aa2ef6b20a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs deleted file mode 100644 index 30474871f..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace GraphSharp.Algorithms.OverlapRemoval -{ - public class StandardOverlapRemovalAlgorithmFactory : IOverlapRemovalAlgorithmFactory - where TVertex : class - { - protected static readonly string[] algorithmTypes = new string[] { "FSA", "OneWayFSA" }; - public IEnumerable AlgorithmTypes - { - get { return algorithmTypes; } - } - - public IOverlapRemovalAlgorithm CreateAlgorithm( string newAlgorithmType, IOverlapRemovalContext context, IOverlapRemovalParameters parameters ) - { - if ( context == null || context.Rectangles == null ) - return null; - - switch ( newAlgorithmType ) - { - case "FSA": - return new FSAAlgorithm( context.Rectangles, parameters ); - case "OneWayFSA": - return new OneWayFSAAlgorithm( context.Rectangles, parameters as OneWayFSAParameters ); - default: - return null; - } - } - - public IOverlapRemovalParameters CreateParameters( string algorithmType, IOverlapRemovalParameters oldParameters ) - { - switch ( algorithmType ) - { - case "FSA": - return oldParameters as OverlapRemovalParameters == null - ? new OverlapRemovalParameters() - : (IOverlapRemovalParameters)(oldParameters as OverlapRemovalParameters).Clone(); - case "OneWayFSA": - return ( oldParameters as OneWayFSAParameters ) == null - ? new OneWayFSAParameters() - : (IOverlapRemovalParameters)oldParameters.Clone(); - default: - return null; - } - } - - public string GetAlgorithmType( IOverlapRemovalAlgorithm algorithm ) - { - if ( algorithm is FSAAlgorithm ) - return "FSA"; - else if ( algorithm is OneWayFSAAlgorithm ) - return "OneWayFSA"; - else - return string.Empty; - } - - public bool IsValidAlgorithm( string algorithmType ) - { - return AlgorithmTypes.Contains( algorithmType ); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs.meta b/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs.meta deleted file mode 100644 index 76f081b37..000000000 --- a/Assets/Scripts/NIH/Graph#/Algorithms/OverlapRemoval/StandardOverlapRemovalAlgorithmFactory.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2e1d078bdccd5fb47a5178ffc4e51528 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/ClassDiagrams.meta b/Assets/Scripts/NIH/Graph#/ClassDiagrams.meta deleted file mode 100644 index 4e59a5d14..000000000 --- a/Assets/Scripts/NIH/Graph#/ClassDiagrams.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 48af3e986e1d8d34b8d4a261facb1af6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd b/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd deleted file mode 100644 index 59cbd8a1e..000000000 --- a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - AAAAgAAAAAEAAAAAAAAAAAAAAAAAQBAAAAAAAAEAAAA= - Algorithms\Layout\ILayoutAlgorithm.cs - - - - - - - - - - - - - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA= - Algorithms\EdgeRouting\IEdgeRoutingAlgorithm.cs - - - - - - AEAAAAAAAAAAACAAAAQAEAAAAAIAAAAAAAAABAAAAiA= - Algorithms\IAlgorithm.cs - - - - - - - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAA= - Algorithms\OverlapRemoval\IOverlapRemovalAlgorithm.cs - - - - - - - - - - - - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAEAAAA= - Algorithms\Layout\ILayoutAlgorithm.cs - - - - \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd.meta b/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd.meta deleted file mode 100644 index 2edcb2036..000000000 --- a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Algorithm Interfaces.cd.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ca46944ebd7f7a946b1a6e8112969f02 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd b/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd deleted file mode 100644 index 3b16f433e..000000000 --- a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - AAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAA= - Algorithms\Layout\Simple\Circular\CircularLayoutAlgorithm.cs - - - - - - AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= - Algorithms\Layout\ParameterizedLayoutAlgorithmBase.cs - - - - - - IAAUoACAFBEAAAQEAAABAAAgAAVgCBQCIAQCAAEAUCQ= - Algorithms\Layout\Compound\FDP\CompoundFDPLayoutAlgorithm.cs - - - - - - - - - - - - - - - - - QAAIAAAADgAAAAkAEAAAAAAAAAAACAQAAAACAAAAAAA= - Algorithms\Layout\Simple\FDP\ISOMLayoutAlgorithm.cs - - - - - - AAIAAACAAAABAAAAAAAAKAAAAEAQAA0AAAEAAAAABAA= - Algorithms\Layout\Simple\FDP\KKLayoutAlgorithm.cs - - - - - - AAAAAAAAIAQIAAAAAAAAhABAAEhQAAUAhBAEAABABAA= - Algorithms\Layout\Simple\FDP\LinLogLayoutAlgorithm.cs - - - - - - AQAIAGABQBAAEDTCFAgIlCGZAQAQChUgxQBEAAbEkEA= - Algorithms\Layout\Simple\Hierarchical\EfficientSugiyamaAlgorithm.BuildSparseNormalizedGraph.cs - - - - - - - AAAAAAAABAAAIABAAAAAAAAIAIAAAAQAAAAQBAAAAgA= - Algorithms\Layout\Simple\Tree\SimpleTreeLayoutAlgorithm.cs - - - - - - AAAAAAAAAAABAAAABAAAAgAAAAAAAAQACAQAAAAAAAA= - Algorithms\Layout\Simple\FDP\FRLayoutAlgorithm.cs - - - - - - AAAAAAAQAAABAAAAAAIAAQAgQAAAAAAAAIAAgABAAAA= - Algorithms\Layout\ParameterizedLayoutAlgorithmBase.cs - - - - - \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd.meta b/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd.meta deleted file mode 100644 index 34e951f45..000000000 --- a/Assets/Scripts/NIH/Graph#/ClassDiagrams/Implemented Algorithms.cd.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 863738212e129c7428b450b0381ee2c3 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/CompoundGraph.cs b/Assets/Scripts/NIH/Graph#/CompoundGraph.cs deleted file mode 100644 index 90dede749..000000000 --- a/Assets/Scripts/NIH/Graph#/CompoundGraph.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Linq; -using System.Diagnostics.Contracts; - -namespace GraphSharp -{ - public class CompoundGraph : BidirectionalGraph, IMutableCompoundGraph - where TEdge : IEdge - { - public CompoundGraph() - { - - } - - public CompoundGraph(bool allowParallelEdges) - : base(allowParallelEdges) - { - - } - - public CompoundGraph(bool allowParallelEdges, int vertexCapacity) - : base(allowParallelEdges, vertexCapacity) - { - - } - - public CompoundGraph(IBidirectionalGraph graph) - : base(graph.AllowParallelEdges, graph.VertexCount) - { - //copy the vertices - AddVertexRange(graph.Vertices); - - //copy the edges - AddEdgeRange(graph.Edges); - } - - public CompoundGraph(ICompoundGraph graph) - : base(graph.AllowParallelEdges, graph.VertexCount) - { - //copy the vertices - AddVertexRange(graph.Vertices); - - //copy the containment information - foreach (var vertex in graph.Vertices) - { - if (!graph.IsChildVertex(vertex)) - continue; - - var parent = graph.GetParent(vertex); - AddChildVertex(parent, vertex); - } - - //copy the edges - AddEdgeRange(graph.Edges); - } - - private readonly IDictionary _parentRegistry = - new Dictionary(); - - private readonly IDictionary> _childrenRegistry = - new Dictionary>(); - - public IEnumerable CompoundVertices - { - get - { - return _childrenRegistry.Keys; - } - } - - public IEnumerable SimpleVertices - { - get { return Vertices.Where(v => !_childrenRegistry.ContainsKey(v)); } - } - - private IList GetChildrenList(TVertex vertex, bool createIfNotExists) - { - IList childrenList; - if (_childrenRegistry.TryGetValue(vertex, out childrenList) || !createIfNotExists) - return childrenList; - - childrenList = new List(); - _childrenRegistry[vertex] = childrenList; - return childrenList; - } - - #region ICompoundGraph Members - - public bool AddChildVertex(TVertex parent, TVertex child) - { - if (!ContainsVertex(child)) - AddVertex(child); - _parentRegistry[child] = parent; - GetChildrenList(parent, true).Add(child); - return true; - } - - public int AddChildVertexRange(TVertex parent, IEnumerable children) - { - int ret = AddVertexRange(children); - IList childrenList = GetChildrenList(parent, true); - foreach (var v in children) - { - _parentRegistry[v] = parent; - childrenList.Add(v); - } - return ret; - } - - public TVertex GetParent(TVertex vertex) - { - TVertex parent; - if (_parentRegistry.TryGetValue(vertex, out parent)) - return parent; - - return default(TVertex); - } - - public bool IsChildVertex(TVertex vertex) - { - return _parentRegistry.ContainsKey(vertex); - } - - public IEnumerable GetChildrenVertices(TVertex vertex) - { - return GetChildrenList(vertex, false); - } - - public int GetChildrenCount(TVertex vertex) - { - IList childrenList = GetChildrenList(vertex, false); - if (childrenList == null) - return 0; - - return childrenList.Count; - } - - public bool IsCompoundVertex(TVertex vertex) - { - return GetChildrenList(vertex, false) != null; - } - - #endregion - - public override bool RemoveVertex(TVertex v) - { - bool removed = base.RemoveVertex(v); - if (removed) - { - _parentRegistry.Remove(v); - _childrenRegistry.Remove(v); - } - return removed; - } - } -} diff --git a/Assets/Scripts/NIH/Graph#/CompoundGraph.cs.meta b/Assets/Scripts/NIH/Graph#/CompoundGraph.cs.meta deleted file mode 100644 index c82284882..000000000 --- a/Assets/Scripts/NIH/Graph#/CompoundGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4c19d7ca4eaee6f448f28fabc158996b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Contracts.meta b/Assets/Scripts/NIH/Graph#/Contracts.meta deleted file mode 100644 index a6ccdee5b..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 96f613ba99d241b4497dfd84b1c181d4 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs b/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs deleted file mode 100644 index 34d7d8605..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using QuickGraph; - -namespace GraphSharp.Contracts -{ - /// - /// Contract class for the ICompoundGraph interface. - /// - /// - /// Type of the vertex. - /// - /// - /// Type of the edge. - /// - [ContractClassFor( typeof( ICompoundGraph<,> ) )] - internal sealed class ICompoundGraphContract - : BidirectionalGraph, ICompoundGraph - where TEdge : IEdge - { - #region ICompoundGraph Members - - [Pure] - bool ICompoundGraph.AddChildVertex( TVertex parent, TVertex child ) - { - ICompoundGraph ithis = this; - Contract.Requires( !parent.Equals( default( TVertex ) ) ); - Contract.Requires( ithis.ContainsVertex( parent ) ); - - return default( bool ); - } - - [Pure] - int ICompoundGraph.AddChildVertexRange( TVertex parent, IEnumerable children ) - { - ICompoundGraph ithis = this; - Contract.Requires( !parent.Equals( default( TVertex ) ) ); - Contract.Requires( ithis.ContainsVertex( parent ) ); - Contract.Ensures( Contract.Result() >= 0 ); - - return default( int ); - } - - [Pure] - TVertex ICompoundGraph.GetParent( TVertex vertex ) - { - ICompoundGraph ithis = this; - Contract.Requires( !vertex.Equals( default( TVertex ) ) ); - Contract.Requires( ithis.ContainsVertex( vertex ) ); - //TODO this is a bug in the MS Contract, i think -- solve it - //Contract.Ensures( Contract.Result().Equals( default( TVertex ) ) || ithis.ContainsVertex( Contract.Result() ) ); - - return default( TVertex ); - } - - [Pure] - bool ICompoundGraph.IsChildVertex( TVertex vertex ) - { - ICompoundGraph ithis = this; - Contract.Requires( !vertex.Equals( default( TVertex ) ) ); - Contract.Requires( ithis.ContainsVertex( vertex ) ); - - return default( bool ); - } - - [Pure] - IEnumerable ICompoundGraph.GetChildrenVertices( TVertex vertex ) - { - ICompoundGraph ithis = this; - Contract.Requires( !vertex.Equals( default( TVertex ) ) ); - Contract.Requires( ithis.ContainsVertex( vertex ) ); - - return new List(); - } - - [Pure] - int ICompoundGraph.GetChildrenCount( TVertex vertex ) - { - ICompoundGraph ithis = this; - Contract.Requires( ithis.ContainsVertex( vertex ) ); - Contract.Ensures( Contract.Result() >= 0 ); - - return default( int ); - } - - [Pure] - bool ICompoundGraph.IsCompoundVertex( TVertex vertex ) - { - Contract.Requires( vertex != null ); - Contract.Requires( ContainsVertex( vertex ) ); - - return default( bool ); - } - - IEnumerable ICompoundGraph.CompoundVertices - { - get - { - return null; - } - } - - IEnumerable ICompoundGraph.SimpleVertices - { - get - { - return null; - } - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs.meta b/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs.meta deleted file mode 100644 index 20ff2f5f9..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ICompoundGraphContract.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 570e5ae4b7a8ab441ab17a992af8f7ab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs b/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs deleted file mode 100644 index dabae046d..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Diagnostics.Contracts; -using System.Linq; -using QuickGraph; -using GraphSharp.Algorithms.Layout; -using GraphSharp.Algorithms.Layout.Contextual; - -namespace GraphSharp.Contracts -{ - [ContractClassFor( typeof( IContextualLayoutAlgorithmFactory<,,> ) )] - public class IContextualLayoutAlgorithmFactoryContract : ILayoutAlgorithmFactoryContract, IContextualLayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - - #region ILayoutAlgorithmFactory Members - - ILayoutAlgorithm ILayoutAlgorithmFactory.CreateAlgorithm( string newAlgorithmType, ILayoutContext context, ILayoutParameters parameters ) - { - Contract.Requires( newAlgorithmType != null ); - Contract.Requires( context as ContextualLayoutContext != null ); - - var laf = (ILayoutAlgorithmFactory)this; - Contract.Requires( laf.AlgorithmTypes.Contains( newAlgorithmType ) ); - - return default( ILayoutAlgorithm ); - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs.meta b/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs.meta deleted file mode 100644 index 61563311b..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/IContextualLayoutAlgorithmFactoryContract.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 495f549cb261f5a488962696d937028b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs b/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs deleted file mode 100644 index 2fed9e7b9..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using GraphSharp.Algorithms.Layout; -using QuickGraph; -using System.Linq; - -namespace GraphSharp.Contracts -{ - [ContractClassFor( typeof( ILayoutAlgorithmFactory<,,> ) )] - public class ILayoutAlgorithmFactoryContract : ILayoutAlgorithmFactory - where TVertex : class - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - #region ILayoutAlgorithmFactory Members - - IEnumerable ILayoutAlgorithmFactory.AlgorithmTypes - { - get - { - Contract.Ensures( Contract.Result>() != null ); - - return default( IEnumerable ); - } - } - - ILayoutAlgorithm ILayoutAlgorithmFactory.CreateAlgorithm( string newAlgorithmType, ILayoutContext context, ILayoutParameters parameters ) - { - Contract.Requires( newAlgorithmType != null ); - var laf = (ILayoutAlgorithmFactory)this; - Contract.Requires( laf.AlgorithmTypes.Contains( newAlgorithmType ) ); - Contract.Requires( context.Sizes != null ); - - return default( ILayoutAlgorithm ); - } - - ILayoutParameters ILayoutAlgorithmFactory.CreateParameters( string algorithmType, ILayoutParameters oldParameters ) - { - Contract.Requires( algorithmType != null ); - var laf = (ILayoutAlgorithmFactory)this; - Contract.Requires( laf.AlgorithmTypes.Contains( algorithmType ) ); - - return default( ILayoutParameters ); - } - - bool ILayoutAlgorithmFactory.IsValidAlgorithm( string algorithmType ) - { - Contract.Requires( algorithmType != null ); - var laf = (ILayoutAlgorithmFactory)this; - Contract.Ensures( Contract.Result() == laf.AlgorithmTypes.Contains( algorithmType ) ); - - return false; - } - - string ILayoutAlgorithmFactory.GetAlgorithmType( ILayoutAlgorithm algorithm ) - { - Contract.Requires( algorithm != null ); - var laf = (ILayoutAlgorithmFactory)this; - Contract.Ensures( Contract.Result() == null || laf.AlgorithmTypes.Contains( Contract.Result() ) ); - - return default( string ); - } - - bool ILayoutAlgorithmFactory.NeedEdgeRouting( string algorithmType ) - { - return default( bool ); - } - - bool ILayoutAlgorithmFactory.NeedOverlapRemoval( string algorithmType ) - { - return default( bool ); - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs.meta b/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs.meta deleted file mode 100644 index 46f357ae1..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutAlgorithmFactoryContract.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5ab398bf93b66ac4d9136c816ee82f5f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs b/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs deleted file mode 100644 index 02210a15f..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using GraphSharp.Algorithms.Layout; -using QuickGraph; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -namespace GraphSharp.Contracts -{ - [ContractClassFor( typeof( ILayoutContext<,,> ) )] - public class ILayoutContextContract : ILayoutContext - where TEdge : IEdge - where TGraph : class, IBidirectionalGraph - { - [ContractInvariantMethod] - protected void Invariants() - { - var lc = (ILayoutContext)this; - Contract.Invariant( lc.Positions != null ); - Contract.Invariant( lc.Graph != null ); - Contract.Invariant( lc.Sizes != null ); - } - - #region ILayoutContext Members - - IDictionary ILayoutContext.Positions - { - get { return default( IDictionary ); } - } - - IDictionary ILayoutContext.Sizes - { - get { return default( IDictionary ); } - } - - TGraph ILayoutContext.Graph - { - get { return default( TGraph ); } - } - - LayoutMode ILayoutContext.Mode - { - get { return default( LayoutMode ); } - } - - #endregion - } -} diff --git a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs.meta b/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs.meta deleted file mode 100644 index dd769ec6e..000000000 --- a/Assets/Scripts/NIH/Graph#/Contracts/ILayoutContextContract.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4f3071b790eb3ad4a8dd2839ebfb6007 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/GraphHelper.cs b/Assets/Scripts/NIH/Graph#/GraphHelper.cs deleted file mode 100644 index ba516e9a5..000000000 --- a/Assets/Scripts/NIH/Graph#/GraphHelper.cs +++ /dev/null @@ -1,349 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.Contracts; -using System.Linq; -using QuickGraph; -using QuickGraph.Algorithms.ShortestPath; -using System.Diagnostics; - -namespace GraphSharp -{ - public static class GraphHelper - { - /// - /// Returns with the adjacent vertices of the vertex. - /// - /// The graph. - /// The vertex which neighbours' we want to get. - /// List of the adjacent vertices of the vertex. - public static IEnumerable GetNeighbours( this IBidirectionalGraph g, TVertex vertex ) - where TEdge : IEdge - { - return ( ( from e in g.InEdges( vertex ) select e.Source ) - .Concat( - ( from e in g.OutEdges( vertex ) select e.Target ) ) ).Distinct(); - } - - - public static IEnumerable GetOutNeighbours( this IVertexAndEdgeListGraph g, TVertex vertex ) - where TEdge : IEdge - { - return ( from e in g.OutEdges( vertex ) - select e.Target ).Distinct(); - } - - - /// - /// If the graph g is directed, then returns every edges which source is one of the vertices in the set1 - /// and the target is one of the vertices in set2. - /// - /// Type of the vertex. - /// Type of the edge. - /// The graph. - /// - /// - /// Return the list of the selected edges. - public static IEnumerable GetEdgesBetween( this IVertexAndEdgeListGraph g, List set1, List set2 ) - where TEdge : IEdge - { - var edgesBetween = new List(); - - //vegig kell menni az osszes vertex minden elen, es megnezni, hogy a target hol van - foreach ( TVertex v in set1 ) - { - foreach ( TEdge edge in g.OutEdges( v ) ) - { - if ( set2.Contains( edge.Target ) ) - edgesBetween.Add( edge ); - } - } - - return edgesBetween; - } - - - /// - /// Returns with the sources in the graph. - /// - /// - /// - /// The graph. - /// Returns with the sources in the graph. - public static IEnumerable GetSources( this IBidirectionalGraph g ) - where TEdge : IEdge - { - return from v in g.Vertices - where g.InDegree( v ) == 0 - select v; - } - - /// - /// Gets the diameter of a graph. - /// The diameter is the greatest distance between two vertices. - /// - /// The graph. - /// The diameter of the Graph g. - public static float GetDiameter( this Graph g ) - where Edge : IEdge - where Graph : IBidirectionalGraph - { - float[,] distances; - return g.GetDiameter( out distances ); - } - - /// - /// Gets the diameter of a graph. - /// The diameter is the greatest distance between two vertices. - /// - /// The graph. - /// This is an out parameter. It gives the distances between every vertex-pair. - /// The diameter of the Graph g. - public static float GetDiameter( this Graph g, out float[,] distances ) - where Edge : IEdge - where Graph : IBidirectionalGraph - { - distances = GetDistances( g ); - - int n = g.VertexCount; - float distance = float.NegativeInfinity; - for ( int i = 0; i < n - 1; i++ ) - { - for ( int j = i + 1; j < n; j++ ) - { - if ( float.MaxValue == distances[i, j] ) - continue; - - distance = Math.Max( distance, distances[i, j] ); - } - } - return distance; - } - - /// The graph. - /// Returns with the distance between the vertices (distance: number of the edges). - public static float[,] GetDistances( Graph g ) - where Edge : IEdge - where Graph : IBidirectionalGraph - { - var distances = new float[g.VertexCount, g.VertexCount]; - for ( int k = 0; k < g.VertexCount; k++ ) - { - for ( int j = 0; j < g.VertexCount; j++ ) - { - distances[k, j] = float.PositiveInfinity; - } - } - - var undirected = new UndirectedBidirectionalGraph( g ); - //minden élet egy hosszal veszünk figyelembe - unweighted - var weights = new Dictionary(); - foreach ( Edge edge in undirected.Edges ) - { - weights[edge] = 1; - } - - //compute the distances from every vertex: O(n(n^2 + e)) complexity - int i = 0; - foreach ( Vertex source in g.Vertices ) - { - //compute the distances from the 'source' - var spaDijkstra = - new UndirectedDijkstraShortestPathAlgorithm( undirected, edge => weights[edge], ShortestDistanceRelaxer.Instance ); - spaDijkstra.Compute( source ); - - int j = 0; - foreach ( Vertex v in undirected.Vertices ) - { - float d = (float) spaDijkstra.Distances[v]; - distances[i, j] = Math.Min( distances[i, j], d ); - distances[i, j] = Math.Min( distances[i, j], distances[j, i] ); - distances[j, i] = Math.Min( distances[i, j], distances[j, i] ); - j++; - } - i++; - } - - return distances; - } - - public static BidirectionalGraph> CreateGraph( - IEnumerable vertices, - IEnumerable edges, - string sourcePropertyName, - string targetPropertyName ) - where TVertex : class - { - var graph = new BidirectionalGraph>(); - - graph.AddVertexRange( vertices ); - - //get the property infos - System.Reflection.PropertyInfo spi = typeof( TOtherEdge ).GetProperty( sourcePropertyName ); - System.Reflection.PropertyInfo tpi = typeof( TOtherEdge ).GetProperty( targetPropertyName ); - - //creating the new edges - foreach ( TOtherEdge oe in edges ) - { - var edge = new Edge( - spi.GetValue( oe, null ) as TVertex, - tpi.GetValue( oe, null ) as TVertex ); - graph.AddEdge( edge ); - } - - return graph; - } - - - - /// - /// Creates a new BidirectionalGraph with the given types from the - /// list of vertices, and the list of edges. - /// - /// The type of the vertices. - /// The type of the edges in the new graph. - /// The type of the items in the list of the edges. - /// The list of the vertices. - /// The list of the edges. - /// Delegate which converts an edge from the type TOtherEdge - /// to the type TEdge. - /// Parallel edges are allowed or not?. - /// The new BidirectionalGraph - public static BidirectionalGraph CreateGraph( - IEnumerable vertices, - IEnumerable edges, - Func factoryMethod, - bool allowParallelEdges ) - where TEdge : IEdge - { - var graph = new BidirectionalGraph( allowParallelEdges ); - - //add the vertices to the graph - graph.AddVertexRange( vertices ); - - //create the edges - foreach ( TOtherEdge oe in edges ) - { - TEdge e = factoryMethod( oe ); - graph.AddEdge( e ); - } - - return graph; - } - - - - public static BidirectionalGraph CreateGraph( - IEnumerable vertices, - IEnumerable edges, - Func factoryMethod ) - where TEdge : IEdge - { - return CreateGraph( vertices, edges, factoryMethod, true ); - } - - - - public static TVertex OtherVertex( this IEdge edge, TVertex thisVertex ) - { - return edge.Source.Equals( thisVertex ) ? edge.Target : edge.Source; - } - - - - public static void AddEdgeRange( this IMutableEdgeListGraph graph, IEnumerable edges ) - where TEdge : IEdge - { - foreach ( var edge in edges ) - graph.AddEdge( edge ); - } - - - - public static BidirectionalGraph Convert( - this IVertexAndEdgeListGraph oldGraph, - Func vertexMapperFunc, - Func edgeMapperFunc ) - where TOldEdge : IEdge - where TNewEdge : IEdge - { - return oldGraph.Convert( - new BidirectionalGraph( oldGraph.AllowParallelEdges, oldGraph.VertexCount ), - vertexMapperFunc, - edgeMapperFunc ); - } - - - - public static BidirectionalGraph Convert( - this IVertexAndEdgeListGraph oldGraph, - Func edgeMapperFunc ) - where TOldEdge : IEdge - where TNewEdge : IEdge - { - return oldGraph.Convert( null, edgeMapperFunc ); - } - - - - public static TNewGraph Convert( - this IVertexAndEdgeListGraph oldGraph, - TNewGraph newGraph, - Func vertexMapperFunc, - Func edgeMapperFunc ) - where TOldEdge : IEdge - where TNewEdge : IEdge - where TNewGraph : IMutableVertexAndEdgeListGraph - { - //VERTICES - if ( vertexMapperFunc != null ) - newGraph.AddVertexRange( oldGraph.Vertices.Select( vertexMapperFunc ) ); - else - newGraph.AddVertexRange( oldGraph.Vertices.Cast() ); - - //EDGES - if ( edgeMapperFunc != null ) - newGraph.AddEdgeRange( oldGraph.Edges.Select( edgeMapperFunc ) ); - else - newGraph.AddEdgeRange( oldGraph.Edges.Cast() ); - - return newGraph; - } - - - - public static TNewGraph Convert( - this IVertexAndEdgeListGraph oldGraph, - TNewGraph newGraph, - Func edgeMapperFunc ) - where TOldEdge : IEdge - where TNewEdge : IEdge - where TNewGraph : IMutableVertexAndEdgeListGraph - { - return oldGraph.Convert( newGraph, null, edgeMapperFunc ); - } - - - - public static TNewGraph Convert( - this IVertexAndEdgeListGraph oldGraph, - TNewGraph newGraph ) - where TOldEdge : IEdge - where TNewGraph : IMutableVertexAndEdgeListGraph - { - return oldGraph.Convert( newGraph, null, null ); - } - - - public static BidirectionalGraph CopyToBidirectionalGraph( - this IVertexAndEdgeListGraph graph) - where TEdge : IEdge - { - var newGraph = new BidirectionalGraph(); - - //copy the vertices - newGraph.AddVerticesAndEdgeRange(graph.Edges); - - return newGraph; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/GraphHelper.cs.meta b/Assets/Scripts/NIH/Graph#/GraphHelper.cs.meta deleted file mode 100644 index 20210e0d3..000000000 --- a/Assets/Scripts/NIH/Graph#/GraphHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e24ac10ead5cf7043ba81eacdada8af7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs b/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs deleted file mode 100644 index 8996b4335..000000000 --- a/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs +++ /dev/null @@ -1,492 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using QuickGraph; - -namespace GraphSharp -{ - internal class GraphHideHelper : ISoftMutableGraph - where TEdge : IEdge - { - private readonly IMutableBidirectionalGraph graph; - - #region Helper Types - protected class HiddenCollection - { - public List hiddenVertices = new List(); - public List hiddenEdges = new List(); - } - #endregion - - #region Properties, fields, events - private readonly List hiddenVertices = new List(); - private readonly List hiddenEdges = new List(); - private readonly IDictionary hiddenCollections = new Dictionary(); - private readonly IDictionary> hiddenEdgesOf = new Dictionary>(); - - public event EdgeAction EdgeHidden; - public event EdgeAction EdgeUnhidden; - - public event VertexAction VertexHidden; - public event VertexAction VertexUnhidden; - #endregion - - public GraphHideHelper( IMutableBidirectionalGraph managedGraph ) - { - graph = managedGraph; - } - - #region Event handlers, helper methods - - /// - /// Returns every edge connected with the vertex v. - /// - /// The vertex. - /// Edges, adjacent to the vertex v. - protected IEnumerable EdgesFor( TVertex v ) - { - return graph.InEdges( v ).Concat( graph.OutEdges( v ) ); - } - - protected HiddenCollection GetHiddenCollection( string tag ) - { - HiddenCollection h; - if ( !hiddenCollections.TryGetValue( tag, out h ) ) - { - h = new HiddenCollection(); - hiddenCollections[tag] = h; - } - return h; - } - - protected void OnEdgeHidden( TEdge e ) - { - if ( EdgeHidden != null ) - EdgeHidden( e ); - } - - protected void OnEdgeUnhidden( TEdge e ) - { - if ( EdgeUnhidden != null ) - EdgeUnhidden( e ); - } - - protected void OnVertexHidden( TVertex v ) - { - if ( VertexHidden != null ) - VertexHidden( v ); - } - - protected void OnVertexUnhidden( TVertex v ) - { - if ( VertexUnhidden != null ) - VertexUnhidden( v ); - } - #endregion - - #region ISoftMutableGraph Members - - public IEnumerable HiddenVertices - { - get { return hiddenVertices; } - } - - public IEnumerable HiddenEdges - { - get { return hiddenEdges; } - } - - /// - /// Hides the vertex v. - /// - /// The vertex to hide. - public bool HideVertex( TVertex v ) - { - if ( graph.ContainsVertex( v ) && !hiddenVertices.Contains( v ) ) - { - HideEdges( EdgesFor( v ) ); - - //hide the vertex - graph.RemoveVertex( v ); - hiddenVertices.Add( v ); - OnVertexHidden( v ); - return true; - } - - return false; - } - - /// - /// Hides a lot of vertices. - /// - /// The vertices to hide. - public void HideVertices( IEnumerable vertices ) - { - var verticesToHide = new List( vertices ); - foreach ( TVertex v in verticesToHide ) - { - HideVertex( v ); - } - } - - public bool HideVertex( TVertex v, string tag ) - { - HiddenCollection h = GetHiddenCollection( tag ); - var eeh = new EdgeAction( e => h.hiddenEdges.Add( e ) ); - var veh = new VertexAction( vertex => h.hiddenVertices.Add( vertex ) ); - EdgeHidden += eeh; - VertexHidden += veh; - bool ret = HideVertex( v ); - EdgeHidden -= eeh; - VertexHidden -= veh; - return ret; - } - - public void HideVertices( IEnumerable vertices, string tag ) - { - foreach ( TVertex v in vertices ) - { - HideVertex( v, tag ); - } - } - - public void HideVerticesIf( Func predicate, string tag ) - { - var verticesToHide = new List(); - foreach ( var v in graph.Vertices ) - { - if ( predicate( v ) ) - verticesToHide.Add( v ); - } - HideVertices( verticesToHide, tag ); - } - - public bool IsHiddenVertex( TVertex v ) - { - return ( !graph.ContainsVertex( v ) && hiddenVertices.Contains( v ) ); - } - - public bool UnhideVertex( TVertex v ) - { - //if v not hidden, it's an error - if ( !IsHiddenVertex( v ) ) - return false; - - //unhide the vertex - graph.AddVertex( v ); - hiddenVertices.Remove( v ); - OnVertexUnhidden( v ); - return true; - } - - public void UnhideVertexAndEdges( TVertex v ) - { - UnhideVertex( v ); - List hiddenEdgesList; - hiddenEdgesOf.TryGetValue( v, out hiddenEdgesList ); - if ( hiddenEdgesList != null ) - UnhideEdges( hiddenEdgesList ); - } - - public bool HideEdge( TEdge e ) - { - if ( graph.ContainsEdge( e ) && !hiddenEdges.Contains( e ) ) - { - graph.RemoveEdge( e ); - hiddenEdges.Add( e ); - - GetHiddenEdgeListOf( e.Source ).Add( e ); - GetHiddenEdgeListOf( e.Target ).Add( e ); - - OnEdgeHidden( e ); - return true; - } - - return false; - } - - private List GetHiddenEdgeListOf( TVertex v ) - { - List hiddenEdgeList; - hiddenEdgesOf.TryGetValue( v, out hiddenEdgeList ); - if ( hiddenEdgeList == null ) - { - hiddenEdgeList = new List(); - hiddenEdgesOf[v] = hiddenEdgeList; - } - return hiddenEdgeList; - } - - public IEnumerable HiddenEdgesOf( TVertex v ) - { - return GetHiddenEdgeListOf( v ); - } - - public int HiddenEdgeCountOf( TVertex v ) - { - return GetHiddenEdgeListOf( v ).Count; - } - - public bool HideEdge( TEdge e, string tag ) - { - var h = GetHiddenCollection( tag ); - var eeh = new EdgeAction( edge => h.hiddenEdges.Add( edge ) ); - EdgeHidden += eeh; - bool ret = HideEdge( e ); - EdgeHidden -= eeh; - return ret; - } - - public void HideEdges( IEnumerable edges ) - { - var edgesToHide = new List( edges ); - foreach ( var e in edgesToHide ) - { - HideEdge( e ); - } - } - - public void HideEdges( IEnumerable edges, string tag ) - { - var edgesToHide = new List( edges ); - foreach ( var e in edgesToHide ) - { - HideEdge( e, tag ); - } - } - - public void HideEdgesIf( Func predicate, string tag ) - { - var edgesToHide = new List(); - foreach ( var e in graph.Edges ) - { - if ( predicate( e ) ) - edgesToHide.Add( e ); - } - HideEdges( edgesToHide, tag ); - } - - public bool IsHiddenEdge( TEdge e ) - { - return ( !graph.ContainsEdge( e ) && hiddenEdges.Contains( e ) ); - } - - public bool UnhideEdge( TEdge e ) - { - if ( IsHiddenVertex( e.Source ) || IsHiddenVertex( e.Target ) || !IsHiddenEdge( e ) ) - return false; - - //unhide the edge - graph.AddEdge( e ); - hiddenEdges.Remove( e ); - - GetHiddenEdgeListOf( e.Source ).Remove( e ); - GetHiddenEdgeListOf( e.Target ).Remove( e ); - - OnEdgeUnhidden( e ); - return true; - } - - public void UnhideEdgesIf( Func predicate ) - { - var edgesToUnhide = new List(); - foreach ( var e in hiddenEdges ) - { - if ( predicate( e ) ) - edgesToUnhide.Add( e ); - } - UnhideEdges( edgesToUnhide ); - } - - public void UnhideEdges( IEnumerable edges ) - { - var edgesToUnhide = new List( edges ); - foreach ( var e in edgesToUnhide ) - { - UnhideEdge( e ); - } - } - - public bool Unhide( string tag ) - { - HiddenCollection h = GetHiddenCollection( tag ); - foreach ( TVertex v in h.hiddenVertices ) - { - UnhideVertex( v ); - } - foreach ( TEdge e in h.hiddenEdges ) - { - UnhideEdge( e ); - } - return hiddenCollections.Remove( tag ); - } - - public bool UnhideAll() - { - while ( hiddenVertices.Count > 0 ) - { - UnhideVertex( hiddenVertices[0] ); - } - while ( hiddenEdges.Count > 0 ) - { - UnhideEdge( hiddenEdges[0] ); - } - return true; - } - - public int HiddenVertexCount - { - get { return hiddenVertices.Count; } - } - - public int HiddenEdgeCount - { - get { return hiddenEdges.Count; } - } - #endregion - - #region IBidirectionalGraph Members - - public int Degree( TVertex v ) - { - throw new NotImplementedException(); - } - - public int InDegree( TVertex v ) - { - throw new NotImplementedException(); - } - - public TEdge InEdge( TVertex v, int index ) - { - throw new NotImplementedException(); - } - - public IEnumerable InEdges( TVertex v ) - { - throw new NotImplementedException(); - } - - public bool IsInEdgesEmpty( TVertex v ) - { - throw new NotImplementedException(); - } - - #endregion - - #region IIncidenceGraph Members - - public bool ContainsEdge( TVertex source, TVertex target ) - { - throw new NotImplementedException(); - } - - public bool TryGetEdge( TVertex source, TVertex target, out TEdge edge ) - { - throw new NotImplementedException(); - } - - public bool TryGetEdges( TVertex source, TVertex target, out IEnumerable edges ) - { - throw new NotImplementedException(); - } - - #endregion - - #region IImplicitGraph Members - - public bool IsOutEdgesEmpty( TVertex v ) - { - throw new NotImplementedException(); - } - - public int OutDegree( TVertex v ) - { - throw new NotImplementedException(); - } - - public TEdge OutEdge( TVertex v, int index ) - { - throw new NotImplementedException(); - } - - public IEnumerable OutEdges( TVertex v ) - { - throw new NotImplementedException(); - } - - #endregion - - #region IGraph Members - - public bool AllowParallelEdges - { - get { throw new NotImplementedException(); } - } - - public bool IsDirected - { - get { throw new NotImplementedException(); } - } - - #endregion - - #region IVertexSet Members - - public bool ContainsVertex( TVertex vertex ) - { - throw new NotImplementedException(); - } - - public bool IsVerticesEmpty - { - get { throw new NotImplementedException(); } - } - - public int VertexCount - { - get { throw new NotImplementedException(); } - } - - public IEnumerable Vertices - { - get { throw new NotImplementedException(); } - } - - #endregion - - #region IEdgeListGraph Members - - public bool ContainsEdge( TEdge edge ) - { - throw new NotImplementedException(); - } - - public int EdgeCount - { - get { throw new NotImplementedException(); } - } - - public IEnumerable Edges - { - get { throw new NotImplementedException(); } - } - - public bool IsEdgesEmpty - { - get { throw new NotImplementedException(); } - } - - #endregion - - public bool TryGetInEdges( TVertex v, out IEnumerable edges ) - { - throw new NotImplementedException(); - } - - public bool TryGetOutEdges( TVertex v, out IEnumerable edges ) - { - throw new NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs.meta b/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs.meta deleted file mode 100644 index b34c8830a..000000000 --- a/Assets/Scripts/NIH/Graph#/GraphHideHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 21e8e1a61b7368041b99e8f9364ce7ea -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs b/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs deleted file mode 100644 index e22694d63..000000000 --- a/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs +++ /dev/null @@ -1,266 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Linq; - -namespace GraphSharp -{ - public class HierarchicalGraph : - BidirectionalGraph, IHierarchicalBidirectionalGraph - where TEdge : TypedEdge - { - #region Properties, fields - private class TypedEdgeCollectionWrapper - { - public readonly List InHierarchicalEdges = new List(); - public readonly List OutHierarchicalEdges = new List(); - public readonly List InGeneralEdges = new List(); - public readonly List OutGeneralEdges = new List(); - } - private readonly Dictionary typedEdgeCollections = new Dictionary(); - #endregion - - #region Constructors - public HierarchicalGraph() - { } - - public HierarchicalGraph(bool allowParallelEdges) - : base(allowParallelEdges) { } - - public HierarchicalGraph(bool allowParallelEdges, int vertexCapacity) - : base(allowParallelEdges, vertexCapacity) { } - #endregion - - #region Add/Remove Vertex - public override bool AddVertex(TVertex v) - { - base.AddVertex(v); - if (!typedEdgeCollections.ContainsKey(v)) - { - typedEdgeCollections[v] = new TypedEdgeCollectionWrapper(); - } - return true; - } - - public override bool RemoveVertex(TVertex v) - { - bool ret = base.RemoveVertex(v); - if (ret) - { - //remove the edges from the typedEdgeCollections - TypedEdgeCollectionWrapper edgeCollection = typedEdgeCollections[v]; - foreach (TEdge e in edgeCollection.InGeneralEdges) - typedEdgeCollections[e.Source].OutGeneralEdges.Remove(e); - foreach (TEdge e in edgeCollection.OutGeneralEdges) - typedEdgeCollections[e.Target].InGeneralEdges.Remove(e); - - foreach (TEdge e in edgeCollection.InHierarchicalEdges) - typedEdgeCollections[e.Source].OutHierarchicalEdges.Remove(e); - foreach (TEdge e in edgeCollection.OutHierarchicalEdges) - typedEdgeCollections[e.Target].InHierarchicalEdges.Remove(e); - - typedEdgeCollections.Remove(v); - return true; - } - - return false; - } - #endregion - - #region Add/Remove Edge - public override bool AddEdge(TEdge e) - { - if (base.AddEdge(e)) - { - //add edge to the source collections - TypedEdgeCollectionWrapper sourceEdgeCollection = typedEdgeCollections[e.Source]; - switch (e.Type) - { - case EdgeTypes.General: - sourceEdgeCollection.OutGeneralEdges.Add(e); - break; - case EdgeTypes.Hierarchical: - sourceEdgeCollection.OutHierarchicalEdges.Add(e); - break; - default: - break; - } - - //add edge to the target collections - TypedEdgeCollectionWrapper targetEdgeCollection = typedEdgeCollections[e.Target]; - switch (e.Type) - { - case EdgeTypes.General: - targetEdgeCollection.InGeneralEdges.Add(e); - break; - case EdgeTypes.Hierarchical: - targetEdgeCollection.InHierarchicalEdges.Add(e); - break; - default: - break; - } - return true; - } - return false; - } - - public override bool RemoveEdge(TEdge e) - { - if (base.RemoveEdge(e)) - { - //remove edge from the source collections - TypedEdgeCollectionWrapper sourceEdgeCollection = typedEdgeCollections[e.Source]; - switch (e.Type) - { - case EdgeTypes.General: - sourceEdgeCollection.OutGeneralEdges.Remove(e); - break; - case EdgeTypes.Hierarchical: - sourceEdgeCollection.OutHierarchicalEdges.Remove(e); - break; - default: - break; - } - - //remove edge from the target collections - TypedEdgeCollectionWrapper targetEdgeCollection = typedEdgeCollections[e.Target]; - switch (e.Type) - { - case EdgeTypes.General: - targetEdgeCollection.InGeneralEdges.Remove(e); - break; - case EdgeTypes.Hierarchical: - targetEdgeCollection.InHierarchicalEdges.Remove(e); - break; - default: - break; - } - return true; - } - return false; - } - - #endregion - - #region Hierarchical Edges - public IEnumerable HierarchicalEdgesFor(TVertex v) - { - TypedEdgeCollectionWrapper collections = typedEdgeCollections[v]; - return collections.InHierarchicalEdges.Concat(collections.OutHierarchicalEdges); - } - - public int HierarchicalEdgeCountFor(TVertex v) - { - return typedEdgeCollections[v].InHierarchicalEdges.Count + typedEdgeCollections[v].OutHierarchicalEdges.Count; - } - - public IEnumerable InHierarchicalEdges(TVertex v) - { - return typedEdgeCollections[v].InHierarchicalEdges; - } - - public int InHierarchicalEdgeCount(TVertex v) - { - return typedEdgeCollections[v].InHierarchicalEdges.Count; - } - - public IEnumerable OutHierarchicalEdges(TVertex v) - { - return typedEdgeCollections[v].OutHierarchicalEdges; - } - - public int OutHierarchicalEdgeCount(TVertex v) - { - return typedEdgeCollections[v].OutHierarchicalEdges.Count; - } - #endregion - - #region General Edges - public IEnumerable GeneralEdgesFor(TVertex v) - { - TypedEdgeCollectionWrapper collections = typedEdgeCollections[v]; - foreach (TEdge e in collections.InGeneralEdges) - { - yield return e; - } - foreach (TEdge e in collections.OutGeneralEdges) - { - yield return e; - } - } - - public int GeneralEdgeCountFor(TVertex v) - { - return typedEdgeCollections[v].InGeneralEdges.Count + typedEdgeCollections[v].OutGeneralEdges.Count; - } - - public IEnumerable InGeneralEdges(TVertex v) - { - return typedEdgeCollections[v].InGeneralEdges; - } - - public int InGeneralEdgeCount(TVertex v) - { - return typedEdgeCollections[v].InGeneralEdges.Count; - } - - public IEnumerable OutGeneralEdges(TVertex v) - { - return typedEdgeCollections[v].OutGeneralEdges; - } - - public int OutGeneralEdgeCount(TVertex v) - { - return typedEdgeCollections[v].OutGeneralEdges.Count; - } - #endregion - - #region IHierarchicalBidirectionalGraph Members - - - public IEnumerable HierarchicalEdges - { - get - { - foreach (TVertex v in Vertices) - { - foreach (TEdge e in OutHierarchicalEdges(v)) - { - yield return e; - } - } - } - } - - public int HierarchicalEdgeCount - { - get - { - return Vertices.Sum(v => InHierarchicalEdgeCount(v)); - } - } - - public IEnumerable GeneralEdges - { - get - { - foreach (TVertex v in Vertices) - { - foreach (TEdge e in OutGeneralEdges(v)) - { - yield return e; - } - } - } - } - - public int GeneralEdgeCount - { - get - { - return Vertices.Sum(v => InGeneralEdgeCount(v)); - } - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs.meta b/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs.meta deleted file mode 100644 index 7708bba4a..000000000 --- a/Assets/Scripts/NIH/Graph#/HierarchicalGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4123f2f761a164c4ea806b5c369f8dd8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs b/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs deleted file mode 100644 index 9de6f3d09..000000000 --- a/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; -using System.Diagnostics.Contracts; - -namespace GraphSharp -{ - public interface ICompoundGraph : IBidirectionalGraph - where TEdge : IEdge - { - bool AddChildVertex( TVertex parent, TVertex child ); - int AddChildVertexRange( TVertex parent, IEnumerable children ); - TVertex GetParent( TVertex vertex ); - bool IsChildVertex( TVertex vertex ); - IEnumerable GetChildrenVertices( TVertex vertex ); - int GetChildrenCount( TVertex vertex ); - bool IsCompoundVertex( TVertex vertex ); - - IEnumerable CompoundVertices { get; } - IEnumerable SimpleVertices { get; } - } -} diff --git a/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs.meta b/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs.meta deleted file mode 100644 index 7e643fad7..000000000 --- a/Assets/Scripts/NIH/Graph#/ICompoundGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6500a67283e7e654986e3466e21ad4fb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs b/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs deleted file mode 100644 index c37049929..000000000 --- a/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp -{ - public interface IHierarchicalBidirectionalGraph : IBidirectionalGraph - where TEdge : TypedEdge - { - IEnumerable HierarchicalEdgesFor(TVertex v); - int HierarchicalEdgeCountFor(TVertex v); - IEnumerable HierarchicalEdges { get; } - int HierarchicalEdgeCount { get; } - - IEnumerable InHierarchicalEdges(TVertex v); - int InHierarchicalEdgeCount(TVertex v); - - IEnumerable OutHierarchicalEdges(TVertex v); - int OutHierarchicalEdgeCount(TVertex v); - - IEnumerable GeneralEdgesFor(TVertex v); - int GeneralEdgeCountFor(TVertex v); - IEnumerable GeneralEdges { get; } - int GeneralEdgeCount { get; } - - IEnumerable InGeneralEdges(TVertex v); - int InGeneralEdgeCount(TVertex v); - - IEnumerable OutGeneralEdges(TVertex v); - int OutGeneralEdgeCount(TVertex v); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs.meta b/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs.meta deleted file mode 100644 index 2384634f4..000000000 --- a/Assets/Scripts/NIH/Graph#/IHierarchicalBidirectionalGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e8f873ae1a6705343b02dd97b7902c10 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs b/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs deleted file mode 100644 index df9d1a774..000000000 --- a/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs +++ /dev/null @@ -1,11 +0,0 @@ -using QuickGraph; - -namespace GraphSharp -{ - public interface IMutableCompoundGraph - : ICompoundGraph, - IMutableBidirectionalGraph - where TEdge : IEdge - { - } -} diff --git a/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs.meta b/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs.meta deleted file mode 100644 index 6a8df2fb7..000000000 --- a/Assets/Scripts/NIH/Graph#/IMutableCompoundGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bfe90cbd7c8a7ac45ba5b2bf17a369ca -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs b/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs deleted file mode 100644 index a6582f436..000000000 --- a/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp -{ - /// - /// Soft mutation means: We can hide the vertices or the edges. - /// - /// - /// - public interface ISoftMutableGraph : IBidirectionalGraph - where TEdge : IEdge - { - bool HideVertex( TVertex v ); - bool HideVertex( TVertex v, string tag ); - void HideVertices( IEnumerable vertices ); - void HideVertices( IEnumerable vertices, string tag ); - void HideVerticesIf( Func predicate, string tag ); - bool IsHiddenVertex( TVertex v ); - bool UnhideVertex( TVertex v ); - void UnhideVertexAndEdges( TVertex v ); - IEnumerable HiddenVertices { get; } - int HiddenVertexCount { get; } - - bool HideEdge( TEdge e ); - bool HideEdge( TEdge e, string tag ); - void HideEdges( IEnumerable edges ); - void HideEdges( IEnumerable edges, string tag ); - void HideEdgesIf( Func predicate, string tag ); - bool IsHiddenEdge( TEdge e ); - bool UnhideEdge( TEdge e ); - void UnhideEdges( IEnumerable edges ); - void UnhideEdgesIf( Func predicate ); - IEnumerable HiddenEdgesOf( TVertex v ); - int HiddenEdgeCountOf( TVertex v ); - IEnumerable HiddenEdges { get; } - int HiddenEdgeCount { get; } - - bool Unhide( string tag ); - bool UnhideAll( ); - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs.meta b/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs.meta deleted file mode 100644 index 5d2a3fb90..000000000 --- a/Assets/Scripts/NIH/Graph#/ISoftMutableGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 88a1857ff07a73d45b7f00d6e28db6ec -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Properties.meta b/Assets/Scripts/NIH/Graph#/Properties.meta deleted file mode 100644 index f24514c41..000000000 --- a/Assets/Scripts/NIH/Graph#/Properties.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d43637d6fad44b34caee0a95c4ed37d3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs b/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs deleted file mode 100644 index 8265759f9..000000000 --- a/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle( "GraphSharp" )] -[assembly: AssemblyDescription( "" )] -[assembly: AssemblyConfiguration( "" )] -[assembly: AssemblyCompany( "" )] -[assembly: AssemblyProduct( "GraphSharp" )] -[assembly: AssemblyCopyright( "Copyright © 2007" )] -[assembly: AssemblyTrademark( "" )] -[assembly: AssemblyCulture( "" )] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible( false )] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid( "c2f5a67f-bbc1-42cd-b204-3163e65b0a4e" )] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: -[assembly: AssemblyVersion( "1.0.0.0" )] -[assembly: AssemblyFileVersion( "1.0.0.0" )] diff --git a/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs.meta b/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs.meta deleted file mode 100644 index c77b73f51..000000000 --- a/Assets/Scripts/NIH/Graph#/Properties/AssemblyInfo.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 32a5f1a8daea27546bc2f015f9ac6362 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs b/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs deleted file mode 100644 index a02d69594..000000000 --- a/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System; -using System.Collections.Generic; -using GraphSharp; -using QuickGraph; - -namespace GraphSharp -{ - public class SoftMutableBidirectionalGraph : BidirectionalGraph, ISoftMutableGraph - where TEdge : IEdge - { - private GraphHideHelper hideHelper; - - #region Events - public event EdgeAction EdgeHidden - { - add { hideHelper.EdgeHidden += value;} - remove { hideHelper.EdgeHidden -= value;} - } - public event EdgeAction EdgeUnhidden - { - add { hideHelper.EdgeUnhidden += value;} - remove { hideHelper.EdgeUnhidden -= value;} - } - - public event VertexAction VertexHidden - { - add { hideHelper.VertexHidden += value;} - remove { hideHelper.VertexHidden -= value;} - } - public event VertexAction VertexUnhidden - { - add { hideHelper.VertexUnhidden += value;} - remove { hideHelper.VertexUnhidden -= value;} - } - #endregion - - protected void Init() - { - this.hideHelper = new GraphHideHelper( this ); - } - - public SoftMutableBidirectionalGraph() - { - Init(); - } - - public SoftMutableBidirectionalGraph( bool allowParallelEdges ) - : base( allowParallelEdges ) - { - Init(); - } - - public SoftMutableBidirectionalGraph( bool allowParallelEdges, int vertexCapacity) - : base( allowParallelEdges, vertexCapacity ) - { - Init(); - } - - //Delegating the calls to the GraphHideHelper helper class - - #region ISoftMutableGraph Members - - public bool HideVertex( TVertex v ) - { - return hideHelper.HideVertex( v ); - } - - public bool HideVertex( TVertex v, string tag ) - { - return hideHelper.HideVertex( v, tag ); - } - - public void HideVertices( IEnumerable vertices ) - { - hideHelper.HideVertices( vertices ); - } - - public void HideVertices( IEnumerable vertices, string tag ) - { - hideHelper.HideVertices( vertices, tag ); - } - - public void HideVerticesIf( Func predicate, string tag ) - { - hideHelper.HideVerticesIf( predicate, tag ); - } - - public bool IsHiddenVertex( TVertex v ) - { - return hideHelper.IsHiddenVertex( v ); - } - - public bool UnhideVertex( TVertex v ) - { - return hideHelper.UnhideVertex( v ); - } - - public void UnhideVertexAndEdges( TVertex v ) - { - hideHelper.UnhideVertexAndEdges( v ); - } - - public IEnumerable HiddenVertices - { - get { return hideHelper.HiddenVertices; } - } - - public int HiddenVertexCount - { - get { return hideHelper.HiddenVertexCount; } - } - - public bool HideEdge( TEdge e ) - { - return hideHelper.HideEdge( e ); - } - - public bool HideEdge( TEdge e, string tag ) - { - return hideHelper.HideEdge( e, tag ); - } - - public void HideEdges( IEnumerable edges ) - { - hideHelper.HideEdges( edges ); - } - - public void HideEdges( IEnumerable edges, string tag ) - { - hideHelper.HideEdges( edges, tag ); - } - - public void HideEdgesIf( Func predicate, string tag ) - { - hideHelper.HideEdgesIf( predicate, tag ); - } - - public bool IsHiddenEdge( TEdge e ) - { - return hideHelper.IsHiddenEdge( e ); - } - - public bool UnhideEdge( TEdge e ) - { - return hideHelper.UnhideEdge( e ); - } - - public void UnhideEdges( IEnumerable edges ) - { - hideHelper.UnhideEdges( edges ); - } - - public void UnhideEdgesIf( Func predicate ) - { - hideHelper.UnhideEdgesIf( predicate ); - } - - public IEnumerable HiddenEdgesOf( TVertex v ) - { - return hideHelper.HiddenEdgesOf( v ); - } - - public int HiddenEdgeCountOf( TVertex v ) - { - return hideHelper.HiddenEdgeCountOf( v ); - } - - public IEnumerable HiddenEdges - { - get { return hideHelper.HiddenEdges; } - } - - public int HiddenEdgeCount - { - get { return hideHelper.HiddenEdgeCount; } - } - - public bool Unhide( string tag ) - { - return hideHelper.Unhide( tag ); - } - - public bool UnhideAll() - { - return hideHelper.UnhideAll(); - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs.meta b/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs.meta deleted file mode 100644 index 353ff20d9..000000000 --- a/Assets/Scripts/NIH/Graph#/SoftMutableBidirectionalGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 18f38bd2a31f40c40bf80c84297fb8b1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs b/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs deleted file mode 100644 index 3a2040388..000000000 --- a/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs +++ /dev/null @@ -1,195 +0,0 @@ -using System; -using System.Collections.Generic; -using QuickGraph; - -namespace GraphSharp -{ - public class SoftMutableHierarchicalGraph : HierarchicalGraph, ISoftMutableGraph - where TEdge : TypedEdge - { - private GraphHideHelper hideHelper; - - #region Events - public event EdgeAction EdgeHidden - { - add { hideHelper.EdgeHidden += value; } - remove { hideHelper.EdgeHidden -= value; } - } - public event EdgeAction EdgeUnhidden - { - add { hideHelper.EdgeUnhidden += value; } - remove { hideHelper.EdgeUnhidden -= value; } - } - - public event VertexAction VertexHidden - { - add { hideHelper.VertexHidden += value; } - remove { hideHelper.VertexHidden -= value; } - } - public event VertexAction VertexUnhidden - { - add { hideHelper.VertexUnhidden += value; } - remove { hideHelper.VertexUnhidden -= value; } - } - #endregion - - #region Constructors - - /// - /// Called from inside the constructor. - /// - protected void Init() - { - hideHelper = new GraphHideHelper( this ); - } - - public SoftMutableHierarchicalGraph() - { - Init(); - } - - public SoftMutableHierarchicalGraph( bool allowParallelEdges ) - : base( allowParallelEdges ) - { - Init(); - } - - public SoftMutableHierarchicalGraph( bool allowParallelEdges, int vertexCapacity ) - : base( allowParallelEdges, vertexCapacity ) - { - Init(); - } - #endregion - - //Delegating the calls to the GraphHideHelper helper class - - #region ISoftMutableGraph Members - - public bool HideVertex( TVertex v ) - { - return hideHelper.HideVertex( v ); - } - - public bool HideVertex( TVertex v, string tag ) - { - return hideHelper.HideVertex( v, tag ); - } - - public void HideVertices( IEnumerable vertices ) - { - hideHelper.HideVertices( vertices ); - } - - public void HideVertices( IEnumerable vertices, string tag ) - { - hideHelper.HideVertices( vertices, tag ); - } - - public void HideVerticesIf( Func predicate, string tag ) - { - hideHelper.HideVerticesIf( predicate, tag ); - } - - public bool IsHiddenVertex( TVertex v ) - { - return hideHelper.IsHiddenVertex( v ); - } - - public bool UnhideVertex( TVertex v ) - { - return hideHelper.UnhideVertex( v ); - } - - public void UnhideVertexAndEdges( TVertex v ) - { - hideHelper.UnhideVertexAndEdges( v ); - } - - public IEnumerable HiddenVertices - { - get { return hideHelper.HiddenVertices; } - } - - public int HiddenVertexCount - { - get { return hideHelper.HiddenVertexCount; } - } - - public bool HideEdge( TEdge e ) - { - return hideHelper.HideEdge( e ); - } - - public bool HideEdge( TEdge e, string tag ) - { - return hideHelper.HideEdge( e, tag ); - } - - public void HideEdges( IEnumerable edges ) - { - hideHelper.HideEdges( edges ); - } - - public void HideEdges( IEnumerable edges, string tag ) - { - hideHelper.HideEdges( edges, tag ); - } - - public void HideEdgesIf( Func predicate, string tag ) - { - hideHelper.HideEdgesIf( predicate, tag ); - } - - public bool IsHiddenEdge( TEdge e ) - { - return hideHelper.IsHiddenEdge( e ); - } - - public bool UnhideEdge( TEdge e ) - { - return hideHelper.UnhideEdge( e ); - } - - public void UnhideEdges( IEnumerable edges ) - { - hideHelper.UnhideEdges( edges ); - } - - public void UnhideEdgesIf( Func predicate ) - { - hideHelper.UnhideEdgesIf( predicate ); - } - - public IEnumerable HiddenEdgesOf( TVertex v ) - { - return hideHelper.HiddenEdgesOf( v ); - } - - public int HiddenEdgeCountOf( TVertex v ) - { - return hideHelper.HiddenEdgeCountOf( v ); - } - - public IEnumerable HiddenEdges - { - get { return hideHelper.HiddenEdges; } - } - - public int HiddenEdgeCount - { - get { return hideHelper.HiddenEdgeCount; } - } - - public bool Unhide( string tag ) - { - return hideHelper.Unhide(tag); - } - - public bool UnhideAll() - { - return hideHelper.UnhideAll(); - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs.meta b/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs.meta deleted file mode 100644 index ffb7a42ce..000000000 --- a/Assets/Scripts/NIH/Graph#/SoftMutableHierarchicalGraph.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4586213a2eee2ae45b03df753f004df2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/TypedEdge.cs b/Assets/Scripts/NIH/Graph#/TypedEdge.cs deleted file mode 100644 index 1a1dfb91c..000000000 --- a/Assets/Scripts/NIH/Graph#/TypedEdge.cs +++ /dev/null @@ -1,35 +0,0 @@ -using QuickGraph; - -namespace GraphSharp -{ - public enum EdgeTypes - { - General, - Hierarchical - } - - public interface ITypedEdge - { - EdgeTypes Type { get; } - } - - public class TypedEdge : Edge, ITypedEdge - { - private EdgeTypes type; - public EdgeTypes Type - { - get { return this.type; } - } - - public TypedEdge(TVertex source, TVertex target, EdgeTypes type) - : base(source, target) - { - this.type = type; - } - - public override string ToString() - { - return string.Format("{0}: {1}-->{2}", type, this.Source, this.Target); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/TypedEdge.cs.meta b/Assets/Scripts/NIH/Graph#/TypedEdge.cs.meta deleted file mode 100644 index f4763e252..000000000 --- a/Assets/Scripts/NIH/Graph#/TypedEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b8cbd1f6d4609ff459bd55bc7d2e2c58 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/WeightedEdge.cs b/Assets/Scripts/NIH/Graph#/WeightedEdge.cs deleted file mode 100644 index 9c8b19dfd..000000000 --- a/Assets/Scripts/NIH/Graph#/WeightedEdge.cs +++ /dev/null @@ -1,18 +0,0 @@ -using QuickGraph; - -namespace GraphSharp -{ - public class WeightedEdge : Edge - { - public float Weight { get; private set; } - - public WeightedEdge(Vertex source, Vertex target) - : this(source, target, 1) {} - - public WeightedEdge(Vertex source, Vertex target, float weight) - : base(source, target) - { - this.Weight = weight; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/WeightedEdge.cs.meta b/Assets/Scripts/NIH/Graph#/WeightedEdge.cs.meta deleted file mode 100644 index 1e09e807b..000000000 --- a/Assets/Scripts/NIH/Graph#/WeightedEdge.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e7be2bb1eb310194aa355567bf4f9e4c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/Graph#/WrappedVertex.cs b/Assets/Scripts/NIH/Graph#/WrappedVertex.cs deleted file mode 100644 index 49fe17ef4..000000000 --- a/Assets/Scripts/NIH/Graph#/WrappedVertex.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace GraphSharp -{ - public class WrappedVertex - { - private TVertex originalVertex; - public TVertex Original - { - get { return originalVertex; } - } - - public WrappedVertex(TVertex original) - { - this.originalVertex = original; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/WrappedVertex.cs.meta b/Assets/Scripts/NIH/Graph#/WrappedVertex.cs.meta deleted file mode 100644 index aceedbebb..000000000 --- a/Assets/Scripts/NIH/Graph#/WrappedVertex.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b07ec0015ea663a4bbb462d062df0c8b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/RethinkConnection.cs b/Assets/Scripts/RethinkConnection.cs index 14f6c73cd..6744ab65e 100644 --- a/Assets/Scripts/RethinkConnection.cs +++ b/Assets/Scripts/RethinkConnection.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Threading.Tasks; using Newtonsoft.Json; using RethinkDb.Driver; +using RethinkDb.Driver.Ast; using RethinkDb.Driver.Net; using UniRx; using UnityEngine; @@ -13,7 +14,7 @@ public static class RethinkConnection { public static RethinkDB R = RethinkDB.R; - public static Connection RethinkConnect(DatabaseCache cache, string connectionString, bool syncLocalChanges = true) + public static Connection RethinkConnect(DatabaseCache cache, string connectionString, bool syncLocalChanges = true, bool filterGalaxyData = true) { // Add Unity.Mathematics serialization support to RethinkDB Driver //Converter.Serializer.Converters.Add(new MathJsonConverter()); @@ -89,10 +90,13 @@ public static class RethinkConnection // Get globaldata and all galaxy map layer data from RethinkDB Task.Run(async () => { - var result = await R + ReqlAst operation = R .Db("Aetheria") - .Table("Galaxy") - //.Filter(o => o["$type"]==typeof(GalaxyMapLayerData).Name || o["$type"]==typeof(GlobalData).Name) + .Table("Galaxy"); + if (filterGalaxyData) + operation = ((Table)operation).Filter(o => + o["$type"] == typeof(GalaxyMapLayerData).Name || o["$type"] == typeof(GlobalData).Name); + var result = await operation .RunCursorAsync(connection); while (await result.MoveNextAsync()) { diff --git a/Assets/Scripts/ServerShared/Agents/AgentController.cs b/Assets/Scripts/ServerShared/Agents/AgentController.cs index 336096686..50efb2a6d 100644 --- a/Assets/Scripts/ServerShared/Agents/AgentController.cs +++ b/Assets/Scripts/ServerShared/Agents/AgentController.cs @@ -15,14 +15,7 @@ public class AgentController private Locomotion _locomotion; private VelocityMatch _velocityMatch; private Random _random = new Random((uint) (DateTime.Now.Ticks%uint.MaxValue)); - private float _stoppingTime; - private float _stoppingDistance; - private float _turnaroundDistance; - private float _turnaroundTime; - private IAnalogBehavior _thrust; - private IAnalogBehavior _turning; private KeyValuePair _objective; - private float _velocityLimit; public AgentController(GameContext context, ZoneData zone, Entity entity) { @@ -39,41 +32,31 @@ public class AgentController }; EntityAgent.CurrentBehavior = _locomotion; RandomTarget(); - _thrust = entity.Axes.Keys.FirstOrDefault(x => x is Thruster); - _turning = entity.Axes.Keys.FirstOrDefault(x => x is Turning); - var velocityLimitData = entity.GetBehaviorData().FirstOrDefault(); - _velocityLimit = Context.Evaluate(velocityLimitData.TopSpeed, entity.Hull, entity); - _stoppingTime = _velocityLimit / Context.Evaluate((_thrust.Data as ThrusterData).Thrust, _thrust.Item, Entity) * Entity.Mass; - _stoppingDistance = _stoppingTime * _velocityLimit / 2; - _turnaroundTime = PI / Context.Evaluate((_turning.Data as TurningData).Torque, _turning.Item, entity) * entity.Mass; - _turnaroundDistance = _turnaroundTime * _velocityLimit; - _locomotion.LeadTime = _stoppingTime; } public void Update(float delta) { EntityAgent.Update(delta); var distance = length(_locomotion.Objective.Position - Entity.Position); - Context.Log( - $"Agent Mode: {EntityAgent.CurrentBehavior.GetType()} " + - $"Agent Distance: {distance} " + - $"Turnaround Distance: {_stoppingDistance + _turnaroundDistance} " + - $"Objective: {_objective.Key.ID.ToString().Substring(0, 8)}"); + // Context.Log( + // $"Agent Mode: {EntityAgent.CurrentBehavior.GetType()} " + + // $"Agent Distance: {distance} " + + // $"Turnaround Distance: {_stoppingDistance + _turnaroundDistance} " + + // $"Objective: {_objective.Key.ID.ToString().Substring(0, 8)}"); if (EntityAgent.CurrentBehavior == _locomotion) { - var velocity = length(Entity.Velocity); - _stoppingTime = velocity / Context.Evaluate((_thrust.Data as ThrusterData).Thrust, _thrust.Item, Entity) * Entity.Mass; - _stoppingDistance = _stoppingTime * velocity / 2; - if (distance < _stoppingDistance + _turnaroundDistance) - EntityAgent.CurrentBehavior = _velocityMatch; _velocityMatch.Objective = _locomotion.Objective; + var matchDistanceTime = _velocityMatch.MatchDistanceTime; + _locomotion.LeadTime = matchDistanceTime.y; + if (distance < matchDistanceTime.x) + EntityAgent.CurrentBehavior = _velocityMatch; } } private void RandomTarget() { - var entities = Context.ZoneContents[Zone].ToArray(); + var entities = Context.ZoneContents[Zone].Where(kvp=>!(kvp.Key is ShipData)).ToArray(); _objective = entities[_random.NextInt(entities.Length)]; _locomotion.Objective = _objective.Value; } diff --git a/Assets/Scripts/ServerShared/Agents/VelocityMatch.cs b/Assets/Scripts/ServerShared/Agents/VelocityMatch.cs index 9b3a44e98..a948c10a5 100644 --- a/Assets/Scripts/ServerShared/Agents/VelocityMatch.cs +++ b/Assets/Scripts/ServerShared/Agents/VelocityMatch.cs @@ -35,4 +35,22 @@ public class VelocityMatch : AgentBehavior _entity.Axes[_thrust] = saturate(length(pow(saturate(dot(normalize(_entity.Direction),normalize(deltaV))), 8)*length(deltaV))*ThrustSensitivity); } } + + public float2 MatchDistanceTime + { + get + { + var velocity = length(_entity.Velocity); + var deltaV = Objective.Velocity - _entity.Velocity; + + var stoppingTime = length(deltaV) / _entity.Context.Evaluate((_thrust.Data as ThrusterData).Thrust, _thrust.Item, _entity) * _entity.Mass; + var stoppingDistance = stoppingTime * velocity / 2; + + var angleDiff = _entity.Direction.AngleDiff(deltaV); + var turnaroundTime = angleDiff / _entity.Context.Evaluate((_turning.Data as TurningData).Torque, _turning.Item, _entity) * _entity.Mass; + var turnaroundDistance = turnaroundTime * velocity; + + return float2(stoppingDistance + turnaroundDistance, stoppingTime + turnaroundTime); + } + } } diff --git a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs index ad05255fb..e6cd4892e 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs @@ -30,6 +30,12 @@ public interface IAnalogBehavior : IBehavior void SetAxis(float value); } +public interface IPersistentBehavior// where T : IBehavior +{ + object Store(); + IBehavior Restore(GameContext context, Entity entity, Gear item, Guid data); +} + [InspectableField, Union(0, typeof(ProjectileWeaponData)), Union(1, typeof(LauncherData)), @@ -43,6 +49,7 @@ public interface IAnalogBehavior : IBehavior Union(9, typeof(TurningData)), Union(10, typeof(VelocityConversionData)), Union(11, typeof(VelocityLimitData)), + Union(12, typeof(FactoryData)), JsonConverter(typeof(JsonKnownTypesConverter)), JsonObject(MemberSerialization.OptIn)] public interface IBehaviorData { diff --git a/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs new file mode 100644 index 000000000..61154c85a --- /dev/null +++ b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs @@ -0,0 +1,191 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MessagePack; +using Newtonsoft.Json; +using Unity.Mathematics; +using static Unity.Mathematics.math; + +[MessagePackObject, JsonObject(MemberSerialization.OptIn)] +public class FactoryData : IBehaviorData +{ + [InspectableField, JsonProperty("toolingTime"), Key(0)] + public PerformanceStat ToolingTime = new PerformanceStat(); + + [InspectableField, JsonProperty("automation"), Key(1)] + public int AutomationPoints; + + public IBehavior CreateInstance(GameContext context, Entity entity, Gear item) + { + return new Factory(context, this, entity, item); + } +} + +public class Factory : IBehavior, IPersistentBehavior// +{ + public Entity Entity { get; } + public Gear Item { get; } + public GameContext Context { get; } + + public IBehaviorData Data => _data; + + private FactoryData _data; + + private BlueprintData _blueprint; + private float _remainingManHours; + private bool _retooling; + private List _reservedStock = new List(); + private int _assignedPopulation; + private int _productionQuality; + + public Factory(GameContext context, FactoryData data, Entity entity, Gear item) + { + Context = context; + _data = data; + Entity = entity; + Item = item; + } + + public void Initialize() + { + } + + public void Update(float delta) + { + if (_retooling || _reservedStock.Count > 0) + { + _remainingManHours -= delta / 3600 * (_assignedPopulation + _data.AutomationPoints) / _productionQuality; + } + + if (_remainingManHours < 0) + { + if (_retooling) + _retooling = false; + else if (_reservedStock.Count > 0) + { + var blueprintItemData = Context.Cache.Get(_blueprint.Item); + + for (int i = 0; i < _blueprint.Quantity; i++) + { + CraftedItemInstance newItem; + + if (blueprintItemData is EquippableItemData equippableItemData) + { + var newGear = new Gear + { + Context = Context, + Data = blueprintItemData.ID, + ID = Guid.NewGuid(), + Ingredients = _reservedStock.Select(ii=>ii.ID).ToList(), + Quality = _productionQuality * _blueprint.Quality, + Blueprint = _blueprint + }; + newGear.Durability = Context.Evaluate(equippableItemData.Durability, newGear); + newItem = newGear; + } + else + { + newItem = new CompoundCommodity + { + Context = Context, + Data = blueprintItemData.ID, + ID = Guid.NewGuid(), + Ingredients = _reservedStock.Select(ii=>ii.ID).ToList(), + Quality = _productionQuality * _blueprint.Quality, + Blueprint = _blueprint + }; + } + Context.Cache.Add(newItem); + Entity.Cargo.Add(newItem); + } + Entity.RecalculateMass(); + + var simpleIngredients = new List(); + var compoundIngredients = new List(); + var hasAllIngredients = true; + foreach (var kvp in _blueprint.Ingredients) + { + var itemData = Context.Cache.Get(kvp.Key); + if (itemData is SimpleCommodityData) + { + var matchingItem = Entity.Cargo.FirstOrDefault(ii => + { + var simpleCommodity = ii as SimpleCommodity; + if (simpleCommodity == null) return false; + return simpleCommodity.Data == itemData.ID && simpleCommodity.Quantity >= kvp.Value; + }) as SimpleCommodity; + hasAllIngredients = hasAllIngredients && matchingItem != null; + if(matchingItem != null) + simpleIngredients.Add(matchingItem); + } + else + { + var matchingItems = + Entity.Cargo.Where(ii => (ii as CompoundCommodity)?.Data == itemData.ID).Cast().ToArray(); + hasAllIngredients = hasAllIngredients && matchingItems.Length >= kvp.Value; + if(matchingItems.Length >= kvp.Value) + compoundIngredients.AddRange(matchingItems); + } + } + + if (hasAllIngredients) + { + _reservedStock.AddRange(compoundIngredients); + foreach (var compoundCommodity in compoundIngredients) + { + Entity.Cargo.Remove(compoundCommodity); + } + foreach (var simpleCommodity in simpleIngredients) + { + var blueprintQuantity = _blueprint.Ingredients + .First(ingredient => ingredient.Key == simpleCommodity.ID).Value; + if (simpleCommodity.Quantity == blueprintQuantity) + { + _reservedStock.Add(simpleCommodity); + Entity.Cargo.Remove(simpleCommodity); + } + else + { + var newSimpleCommodity = new SimpleCommodity + { + Context = Context, + Data = simpleCommodity.Data, + ID = Guid.NewGuid(), + Quantity = blueprintQuantity + }; + simpleCommodity.Quantity -= blueprintQuantity; + _reservedStock.Add(newSimpleCommodity); + } + } + } + } + } + } + + public object Store() + { + return new FactoryPersistence + { + Blueprint = _blueprint.ID, + RemainingManHours = _remainingManHours, + Retooling = _retooling, + ReservedStock = _reservedStock.Select(i=>i.ID).ToArray() + }; + } + + public IBehavior Restore(GameContext context, Entity entity, Gear item, Guid data) + { + var equippable = item.ItemData; + var behaviorData = (FactoryData) equippable.Behaviors.First(b => b is FactoryData); + return new Factory(context, behaviorData, entity, item); + } +} + +[MessagePackObject, JsonObject(MemberSerialization.OptIn)] +public class FactoryPersistence +{ + public Guid Blueprint; + public float RemainingManHours; + public bool Retooling; + public Guid[] ReservedStock; +} \ No newline at end of file diff --git a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs.meta b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs.meta similarity index 83% rename from Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs.meta rename to Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs.meta index 36ed0befb..5ad3748b6 100644 --- a/Assets/Scripts/NIH/Graph#/Algorithms/EdgeRouting/IEdgeRoutingAlgorithm.cs.meta +++ b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 68d74f36ae422ac4081f5e347d001a87 +guid: 7f6378c7d7a9be24c9830679aabe55ba MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/ServerShared/BlueprintData.cs b/Assets/Scripts/ServerShared/BlueprintData.cs index 37736296d..7b20f873c 100644 --- a/Assets/Scripts/ServerShared/BlueprintData.cs +++ b/Assets/Scripts/ServerShared/BlueprintData.cs @@ -35,6 +35,9 @@ public class BlueprintData : DatabaseEntry, INamedEntry [InspectableDatabaseLink(typeof(BlueprintData)), JsonProperty("researchDependencies"), Key(9)] public List Dependencies = new List(); + + [InspectableDatabaseLink(typeof(CraftedItemData)), JsonProperty("factoryItem"), Key(11)] + public Guid FactoryItem; [IgnoreMember] public string EntryName { diff --git a/Assets/Scripts/ServerShared/Entity.cs b/Assets/Scripts/ServerShared/Entity.cs index 7d1e0b391..cb610b272 100644 --- a/Assets/Scripts/ServerShared/Entity.cs +++ b/Assets/Scripts/ServerShared/Entity.cs @@ -17,11 +17,11 @@ public class Entity public float2 Velocity; public Dictionary> Bindings; public Dictionary Axes; + public readonly GameContext Context; + public readonly List Cargo; + public readonly List EquippedItems; - protected readonly GameContext Context; protected readonly List Behaviors; - protected readonly List Items; - protected readonly List Cargo; public Gear Hull { get; } @@ -33,19 +33,13 @@ public class Entity { Context = context; - Items = items.ToList(); + EquippedItems = items.ToList(); Cargo = cargo.ToList(); Hull = hull; - - Mass = hull?.Mass ?? 0 + - Items.Sum(i => i.Mass) + - Cargo.Sum(ii => ii.Mass); - - SpecificHeat = (hull?.HeatCapacity ?? 0) + - Items.Sum(i => i.HeatCapacity) + - Cargo.Sum(ii => ii.HeatCapacity); - var activeItems = hull == null ? Items : Items.Append(hull); + RecalculateMass(); + + var activeItems = Hull == null ? EquippedItems : EquippedItems.Append(Hull); Behaviors = activeItems .Where(i=>i.ItemData.Behaviors?.Any()??false) @@ -61,6 +55,22 @@ public class Entity Axes = Behaviors .Where(b => b is IAnalogBehavior) .ToDictionary(b => b as IAnalogBehavior, b => 0f); + + foreach (var behavior in Behaviors) + { + behavior.Initialize(); + } + } + + public void RecalculateMass() + { + Mass = Hull?.Mass ?? 0 + + EquippedItems.Sum(i => i.Mass) + + Cargo.Sum(ii => ii.Mass); + + SpecificHeat = (Hull?.HeatCapacity ?? 0) + + EquippedItems.Sum(i => i.HeatCapacity) + + Cargo.Sum(ii => ii.HeatCapacity); } public IEnumerable GetBehaviors() where T : class, IBehavior @@ -90,7 +100,7 @@ public class Entity foreach(var behavior in Behaviors) behavior.Update(delta); - foreach (var item in Items.Where(item => item.ItemData.Performance(Temperature) < .01f)) + foreach (var item in EquippedItems.Where(item => item.ItemData.Performance(Temperature) < .01f)) item.Durability -= delta; } } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Enums.cs b/Assets/Scripts/ServerShared/Enums.cs index 6af8a3904..934998fbf 100644 --- a/Assets/Scripts/ServerShared/Enums.cs +++ b/Assets/Scripts/ServerShared/Enums.cs @@ -20,7 +20,8 @@ public enum HardpointType Tool, Energy, Ballistic, - Launcher + Launcher, + Infrastructure } public enum DamageType diff --git a/Assets/Scripts/ServerShared/Extensions.cs b/Assets/Scripts/ServerShared/Extensions.cs index f1202857e..4d3594e2c 100644 --- a/Assets/Scripts/ServerShared/Extensions.cs +++ b/Assets/Scripts/ServerShared/Extensions.cs @@ -223,11 +223,11 @@ public static class Extensions public static float AngleDiff(this float2 a, float2 b) { - var directionAngle = atan2(b.y, b.x) / PI; - var currentAngle = atan2(a.y, a.x) / PI; + var directionAngle = atan2(b.y, b.x); + var currentAngle = atan2(a.y, a.x); var d1 = directionAngle - currentAngle; - var d2 = directionAngle - 2 - currentAngle; - var d3 = directionAngle + 2 - currentAngle; + var d2 = directionAngle - 2 * PI - currentAngle; + var d3 = directionAngle + 2 * PI - currentAngle; return abs(d1) < abs(d2) ? abs(d1) < abs(d3) ? d1 : d3 : abs(d2) < abs(d3) ? d2 : d3; } } diff --git a/Assets/Scripts/ServerShared/GameContext.cs b/Assets/Scripts/ServerShared/GameContext.cs index 53b1b76cd..f3e8a2053 100644 --- a/Assets/Scripts/ServerShared/GameContext.cs +++ b/Assets/Scripts/ServerShared/GameContext.cs @@ -204,7 +204,8 @@ public class GameContext quality = item.CompoundQuality(); else { - var ingredients = item.Ingredients.Where(i => activeEffects.Any(e => e.Ingredient == i.Data)).ToArray(); + var ingredientInstances = item.Ingredients.Select(i => Cache.Get(i)).ToArray(); + var ingredients = ingredientInstances.Where(i => activeEffects.Any(e => e.Ingredient == i.Data)).ToArray(); if(ingredients.Length != activeEffects.Length) { _logger($"Item {item.ID} does not have the ingredients specified by the stat effects of its blueprint!"); @@ -297,6 +298,8 @@ public class GameContext }) .ToList(); + Cache.AddAll(ingredients); + if (item is EquippableItemData equippableItemData) { var newGear = new Gear @@ -304,22 +307,25 @@ public class GameContext Context = this, Data = data, ID = Guid.NewGuid(), - Ingredients = ingredients, + Ingredients = ingredients.Select(i=>i.ID).ToList(), Quality = quality, Blueprint = blueprint }; newGear.Durability = Evaluate(equippableItemData.Durability, newGear); + Cache.Add(newGear); return newGear; } - return new CompoundCommodity + var newCommodity = new CompoundCommodity { Context = this, Data = data, ID = Guid.NewGuid(), - Ingredients = ingredients, + Ingredients = ingredients.Select(i=>i.ID).ToList(), Quality = quality, Blueprint = blueprint }; + Cache.Add(newCommodity); + return newCommodity; } } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/GlobalData.cs b/Assets/Scripts/ServerShared/GlobalData.cs index b56174121..be33dea74 100644 --- a/Assets/Scripts/ServerShared/GlobalData.cs +++ b/Assets/Scripts/ServerShared/GlobalData.cs @@ -97,6 +97,9 @@ public class GlobalData : DatabaseEntry [InspectableField, JsonProperty("planetMass"), Key(28)] public float PlanetMass = 100f; + + [InspectableField, JsonProperty("orbitSpeedMultiplier"), Key(29)] + public float OrbitSpeedMultiplier = .25f; public float PlanetRadius(float mass) { diff --git a/Assets/Scripts/ServerShared/ItemInstance.cs b/Assets/Scripts/ServerShared/ItemInstance.cs index 7db244faf..dce5754c9 100644 --- a/Assets/Scripts/ServerShared/ItemInstance.cs +++ b/Assets/Scripts/ServerShared/ItemInstance.cs @@ -33,7 +33,7 @@ public abstract class CraftedItemInstance : ItemInstance { [JsonProperty("quality"), Key(2)] public float Quality; - [JsonProperty("ingredients"), Key(3)] public List Ingredients = new List(); + [JsonProperty("ingredients"), Key(3)] public List Ingredients = new List(); [JsonProperty("blueprint"), Key(4)] public BlueprintData Blueprint; } diff --git a/Assets/Scripts/ServerShared/OrbitalEntity.cs b/Assets/Scripts/ServerShared/OrbitalEntity.cs index 58466b932..5c83131a5 100644 --- a/Assets/Scripts/ServerShared/OrbitalEntity.cs +++ b/Assets/Scripts/ServerShared/OrbitalEntity.cs @@ -31,7 +31,7 @@ public class OrbitalEntity : Entity { var orbitData = Context.Cache.Get(orbit); _orbitPositions[orbit] = GetOrbitPosition(orbitData.Parent) + (orbitData.Period < .01f ? float2.zero : - OrbitData.Evaluate((float) (Context.Time / -orbitData.Period + orbitData.Phase)) * + OrbitData.Evaluate((float) (Context.Time / -orbitData.Period * Context.GlobalData.OrbitSpeedMultiplier + orbitData.Phase)) * orbitData.Distance); } diff --git a/Assets/Scripts/StrategyGameManager.cs b/Assets/Scripts/StrategyGameManager.cs index 855b2d668..5d63a45e8 100644 --- a/Assets/Scripts/StrategyGameManager.cs +++ b/Assets/Scripts/StrategyGameManager.cs @@ -146,29 +146,64 @@ public class StrategyGameManager : MonoBehaviour _backgroundMaterial = ZoneBackground.material; } + void spawn(string[] args) + { + var zoneData = _cache.Get(_populatedZone); + + // Parse first argument as hull name, default to Fighter if argument missing + HullData hullData; + if (args.Length > 0) + { + hullData = _cache.GetAll().FirstOrDefault(h => h.Name == args[0]); + if (hullData == null) + { + Debug.Log($"Hull with name \"{args[0]}\" not found!"); + return; + } + } + else + { + hullData = _cache.GetAll().FirstOrDefault(h => h.Name == "Fighter"); + } + var hull = _context.CreateInstance(hullData.ID, .9f) as Gear; + + List gear = new List(); + if (args.Length > 1) + { + foreach (string arg in args.Skip(1)) + { + var gearData = _cache.GetAll().FirstOrDefault(h => h.Name == arg); + if (gearData == null) + { + Debug.Log($"Gear with name \"{arg}\" not found!"); + return; + } + gear.Add(_context.CreateInstance(gearData.ID, .9f) as Gear); + } + } + else + { + var thrusterData = _cache.GetAll().FirstOrDefault(g => g.Behaviors.Any(b => b is ThrusterData)); + var thruster = _context.CreateInstance(thrusterData.ID, .9f) as Gear; + gear.Add(thruster); + } + var entity = new Ship(_context, hull, gear, Enumerable.Empty()); + var shipData = new ShipData // TODO: Better database entry for ships? + { + ID = Guid.NewGuid() + }; + _cache.Add(shipData); + _context.ZoneContents[zoneData][shipData] = entity; + _context.Agents.Add(new AgentController(_context, zoneData, entity)); + var zoneShip = Instantiate(ZoneShipPrefab, ZoneRoot); + zoneShip.Label.text = $"Ship {_zoneShips.Count}"; + _zoneShips[entity] = zoneShip; + } + private void Update() { if (TestMode) { - if (Input.GetKeyDown(KeyCode.S)) - { - var zoneData = _cache.Get(_populatedZone); - var thrusterData = _cache.GetAll().FirstOrDefault(g => g.Behaviors.Any(b => b is ThrusterData)); - var thruster = _context.CreateInstance(thrusterData.ID, .9f) as Gear; - var hullData = _cache.GetAll().FirstOrDefault(h => h.Name == "Fighter"); - var hull = _context.CreateInstance(hullData.ID, .9f) as Gear; - var entity = new Ship(_context, hull, new []{thruster}, Enumerable.Empty()); - var shipData = new ShipData // TODO: Better database entry for ships? - { - ID = Guid.NewGuid() - }; - _context.ZoneContents[zoneData][shipData] = entity; - _context.Agents.Add(new AgentController(_context, zoneData, entity)); - var zoneShip = Instantiate(ZoneShipPrefab, ZoneRoot); - zoneShip.Label.text = $"Ship {_zoneShips.Count}"; - _zoneShips[entity] = zoneShip; - } - if (Input.GetKeyDown(KeyCode.Space) && _currentTab == ZoneTabButton) { PopulateZone(); @@ -348,7 +383,7 @@ public class StrategyGameManager : MonoBehaviour beltShape.radius = orbit.Distance * ZoneSizeScale; beltShape.donutRadius = orbit.Distance * ZoneSizeScale / 2; var beltVelocity = beltObject.velocityOverLifetime; - beltVelocity.orbitalZ = orbit.Distance * ZoneSizeScale / orbit.Period; + beltVelocity.orbitalZ = _context.GlobalData.OrbitSpeedMultiplier * orbit.Distance * ZoneSizeScale / orbit.Period; beltObject.Simulate(60); beltObject.Play(); } diff --git a/Assets/Scripts/TechTreeTest.cs b/Assets/Scripts/TechTreeTest.cs deleted file mode 100644 index a8406b7f7..000000000 --- a/Assets/Scripts/TechTreeTest.cs +++ /dev/null @@ -1,465 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using GraphSharp.Algorithms.Layout; -using GraphSharp.Algorithms.Layout.Simple.FDP; -using GraphSharp.Algorithms.Layout.Simple.Hierarchical; -using Microsoft.Msagl.Core.Geometry; -using Microsoft.Msagl.Core.Geometry.Curves; -using Microsoft.Msagl.Core.Layout; -using Microsoft.Msagl.Layout.Incremental; -using Microsoft.Msagl.Layout.Layered; -using NaughtyAttributes; -using QuickGraph; -using QuickGraph.Algorithms; -using UnityEngine; -using Random = UnityEngine.Random; -using Unity.Mathematics; -using static Unity.Mathematics.math; - -public enum LayoutAlgorithm -{ - KamadaKawai, - Sugiyama, - MSAGL -} - -public enum EliminateIslandMode -{ - None, - Random, - JoinLeaves, - RandomLeaf -} - -public class TechTreeTest : MonoBehaviour -{ - public string IconsPath; - public Prototype Ring; - public Prototype Tech; - public Prototype Link; - public Prototype RadialLink; - public Prototype Arrow; - public LayoutAlgorithm Algorithm; - public int TechCount = 50; - public int SeedTechs = 5; - public int RollingWindowSize = 50; - public EliminateIslandMode EliminateIslands = EliminateIslandMode.None; - public bool MultipleDependencies; - public float MultipleDependencyProbability = .25f; - public int MaxDependencyDistance = 4; - public int MaxDependencyTierDifference = 2; - - [Section("Kamada-Kawai")] - public float DisconnectedMultiplier; - public float K; - public float LengthFactor; - public int Iterations; - - [Section("Sugiyama")] - public float LayerDistance; - public float VertexDistance; - public float WidthPerHeight; - public int PositionMode; - public bool Radial; - public bool MinimizeEdgeLength; - public bool OptimizeWidth; - - //[Section("MSAGL")] - - [Section("Radial")] - public int Sections; - public float PaddingRadians; - public int StartTier = 3; - public float Scale = 1; - public int LinkPoints = 16; - public int LinkDepth = 5; - public float LinkTargetDistance = .75f; - public int RingDepth = 6; - public float ArrowDepth = 3; - - [Section("Colors")] - public float Saturation = .95f; - public float HueMin = 0; - public float HueMax = 1; - public float Brightness = 1; - public float RingInnerSaturation; - public float RingOuterSaturation; - public float RingInnerBrightness; - public float RingOuterBrightness; - public int RingColorKeys; - public float FillOpacity = .25f; - public float GlowOpacity = .5f; - public Material TechFillMaterial; - public Material TechGlowMaterial; - public Material TechArrowMaterial; - public Material TechLinkMaterial; - - private List _ringInstances = new List(); - private List _techInstances = new List(); - private List _linkInstances = new List(); - private List _arrowInstances = new List(); - private Texture2D[] _icons; - - void Start() - { - _icons = Resources.LoadAll(IconsPath); - } - - void Update() - { - if(Input.GetKeyDown(KeyCode.Space)) - GenerateTechs(); - } - - void GenerateTechs() - { - foreach (var instance in _ringInstances) instance.ReturnToPool(); - _ringInstances.Clear(); - - foreach (var instance in _techInstances) instance.ReturnToPool(); - _techInstances.Clear(); - - foreach (var instance in _linkInstances) instance.ReturnToPool(); - _linkInstances.Clear(); - - foreach (var instance in _arrowInstances) instance.ReturnToPool(); - _arrowInstances.Clear(); - - var vertices = new List(); - var edges = new List>(); - var loose = SeedTechs; - var count = TechCount; - for (int i = 0; i < count; i++) - { - var vertex = new IntVertex(i); - vertices.Add(vertex); - if(i>loose) edges.Add(new Edge(vertices[Random.Range(max(0,i-RollingWindowSize),i-1)], vertex)); - } - foreach (var vertex in vertices.Where(v=>!edges.Any(e=>e.Source!=v&&e.Target!=v))) - { - edges.Add(new Edge(vertices[Random.Range(0,count-1)], vertex)); - } - var graph = edges.ToBidirectionalGraph>(); - // var roots = graph.Roots().ToArray(); - // var rootChildren = graph. - // foreach (var vertex in roots.Skip(1)) - // { - // graph.AddEdge(new Edge(vertex,)) - // } - var islands = new Dictionary(); - var islandCount = graph.WeaklyConnectedComponents(islands); - var islandsInverse = islands - .GroupBy(i => i.Value) - .ToDictionary( - i => i.Key, - i => i.Select(g => g.Key).ToArray()); - - // if (MultipleDependencies) - // { - // var vertexTiers = new Dictionary(); - // foreach (var island in islandsInverse.Values) - // { - // vertexTiers[island[0]] = 0; - // foreach (var vertex in island.Skip(1)) - // { - // vertexTiers[vertex] = edges.FindPath(vertex, island[0], (v1, v2) => 1).Count(); - // // var tryGetPath = graph.ShortestPathsDijkstra(edge => 1, vertex); - // // if (tryGetPath(island[0], out var path)) - // // { - // // vertexTiers[vertex] = path.Count(); - // // } - // // else Debug.Log("Path to root not found?"); - // } - // } - // - // foreach (var island in islandsInverse.Values) - // { - // foreach (var vertex in island.Skip(1)) - // { - // //var tryGetPath = graph.ShortestPathsDijkstra(edge => 1, vertex); - // //var ancestors = island.Take(Array.IndexOf(island, vertex) - 1); - // var possibleDependencies = island.Where(v => - // { - // var dist = edges.FindPath(vertex, v, (v1, v2) => 1).Count(); - // return v != vertex && - // vertexTiers[v] < vertexTiers[vertex] && - // abs(vertexTiers[v] - vertexTiers[vertex]) < MaxDependencyTierDifference && - // dist < MaxDependencyDistance && dist > 2; - // // if (v != vertex && tryGetPath(v, out var path)) - // // { - // // return path.Count() > 1 && path.Count() < MaxDependencyDistance; - // // } - // // - // // return false; - // }).ToArray(); - // var dependencies = new List(); - // while (dependencies.Count < possibleDependencies.Length && Random.value < MultipleDependencyProbability) - // { - // var depIndex = Random.Range(0, possibleDependencies.Length); - // dependencies.Add(depIndex); - // edges.Add(new Edge(possibleDependencies[depIndex], vertex)); - // } - // // while (Random.value < MultipleDependencyProbability) - // // { - // // var index = Array.IndexOf(island, vertex); - // // int depIndex; - // // int tries = 0; - // // do - // // { - // // depIndex = Random.Range(max(0, index - MultipleDependencyRollingWindow), index); - // // } while (tries < 10 && dependencies.Contains(depIndex)); - // // - // // if (tries < 10) - // // edges.Add(new Edge(island[depIndex], vertex)); - // // else break; - // // } - // } - // } - // } - - if (EliminateIslands!=EliminateIslandMode.None) - { - if(islandCount>1) - for (int i = 1; i < islandCount; i++) - { - var i1 = islands.Where(x => x.Value == i - 1).Select(x=>x.Key).ToArray(); - var i2 = islands.Where(x => x.Value == i).Select(x=>x.Key).ToArray(); - if(EliminateIslands==EliminateIslandMode.JoinLeaves) - edges.Add(new Edge(i1.Last(), i2.Last())); - else if(EliminateIslands==EliminateIslandMode.Random) - edges.Add(new Edge(i1[Random.Range(0,i1.Length-1)],i2[Random.Range(0,i2.Length-1)])); - else if(EliminateIslands==EliminateIslandMode.RandomLeaf) - edges.Add(new Edge(i1.Last(),i2[Random.Range(0,i2.Length-1)])); - } - graph = edges.ToBidirectionalGraph>(); - } - - - LayoutAlgorithmBase, BidirectionalGraph>> layout = - (Algorithm == LayoutAlgorithm.Sugiyama) ? - (LayoutAlgorithmBase, BidirectionalGraph>>) new EfficientSugiyamaLayoutAlgorithm< - IntVertex, - Edge, - BidirectionalGraph>>( - graph, - new EfficientSugiyamaLayoutParameters() - { - EdgeRouting = SugiyamaEdgeRoutings.Traditional, - LayerDistance = LayerDistance, - MinimizeEdgeLength = MinimizeEdgeLength, - OptimizeWidth = OptimizeWidth, - VertexDistance = VertexDistance, - PositionMode = PositionMode, - WidthPerHeight = WidthPerHeight - }, - vertices.ToDictionary(x => x, x => float2(1, 1)) - ) : - (LayoutAlgorithmBase, BidirectionalGraph>>) new KKLayoutAlgorithm< - IntVertex, - Edge, - BidirectionalGraph>>( - graph, - new KKLayoutParameters - { - AdjustForGravity = true, - DisconnectedMultiplier = DisconnectedMultiplier, - ExchangeVertices = false, - Height = 50, - Width = 50, - K = K, - LengthFactor = LengthFactor, - MaxIterations = Iterations - }); - layout.Compute(); - IDictionary positions = layout.VertexPositions; - var islandCenters = islandsInverse.ToDictionary(i => i.Key, - i => i.Value.Aggregate(float2(0, 0), (total, v) => total + positions[v]) / i.Value.Length); - - Rect bounds = Rect.MinMaxRect( - layout.VertexPositions.Values.Min(v=>v.x), - layout.VertexPositions.Values.Min(v=>v.y), - layout.VertexPositions.Values.Max(v=>v.x), - layout.VertexPositions.Values.Max(v=>v.y)); - - var islandColors = islandCenters.ToDictionary( - i=>i.Key, - i=>Color.HSVToRGB(lerp(HueMin, HueMax, Algorithm == LayoutAlgorithm.Sugiyama ? Rect.PointToNormalized(bounds, i.Value).x : Random.value), Saturation, Brightness)); - - var islandFillMaterials = islandColors.ToDictionary(i => i.Key, i => - { - var mat = new Material(TechFillMaterial); - var col = i.Value; - col.a = FillOpacity; - mat.SetColor("_TintColor", col); - return mat; - }); - - var islandGlowMaterials = islandColors.ToDictionary(i => i.Key, i => - { - var mat = new Material(TechGlowMaterial); - var col = i.Value; - col.a = GlowOpacity; - mat.SetColor("_TintColor", col); - return mat; - }); - - var islandArrowMaterials = islandColors.ToDictionary(i => i.Key, i => - { - var mat = new Material(TechArrowMaterial); - var col = i.Value; - col.a = 1; - mat.SetColor("_TintColor", col); - return mat; - }); - - var islandLinkMaterials = islandColors.ToDictionary(i => i.Key, i => - { - var mat = new Material(TechLinkMaterial); - var col = i.Value; - col.a = 1; - mat.SetColor("_TintColor", col); - return mat; - }); - - if (Algorithm == LayoutAlgorithm.Sugiyama && Radial) - { - int tiers = Mathf.RoundToInt(bounds.height / LayerDistance); - positions = layout.VertexPositions.ToDictionary( - kvp => kvp.Key, - kvp => - { - var normalized = Rect.PointToNormalized(bounds, kvp.Value); - var rads = normalized.x * (PI * 2 - PaddingRadians) + PaddingRadians / 2; - return float2(sin(rads), -cos(rads)) * ((normalized.y * tiers / 2 + StartTier + .5f) * LayerDistance) * Scale; - }); - for (int i = 1; i <= tiers / 2; i++) - { - var ring = Ring.Instantiate(); - var ringPositions = new Vector3[Sections]; - for (int s = 0; s < Sections; s++) - { - var rads = ((float) s / (Sections-1)) * (PI * 2 - PaddingRadians) + PaddingRadians / 2; - ringPositions[s] = new Vector3(sin(rads), -cos(rads), 0) * ((i + StartTier) * LayerDistance * Scale); - ringPositions[s].z = RingDepth; - } - - ring.positionCount = Sections; - ring.SetPositions(ringPositions); - var tierLerp = (float) i / (tiers / 2 - 1); - ring.colorGradient = new Gradient - { - alphaKeys = new []{new GradientAlphaKey(1,0), new GradientAlphaKey(1,1)}, - colorKeys = Enumerable.Range(0,RingColorKeys).Select(x=> - { - var ringLerp = (float) x / (RingColorKeys - 1); - return new GradientColorKey( - Color.HSVToRGB(HueMin + (HueMax - HueMin) * ringLerp, - lerp(RingInnerSaturation, RingOuterSaturation, tierLerp), - lerp(RingInnerBrightness, RingOuterBrightness, tierLerp)), ringLerp); - }).ToArray() - }; - - _ringInstances.Add(ring.GetComponent()); - } - } - else if (Algorithm == LayoutAlgorithm.KamadaKawai) - { - positions = layout.VertexPositions.ToDictionary( - kvp => kvp.Key, - kvp => kvp.Value - (float2) bounds.center); - } - - foreach (var vertex in vertices.Where(positions.ContainsKey)) - { - var tech = Tech.Instantiate(); - tech.transform.position = (Vector2) positions[vertex]; - tech.Label.text = $"{vertex.N}"; - var gradient = tech.Label.colorGradient; - gradient.bottomLeft = gradient.bottomRight = islandColors[islands[vertex]]; - tech.Label.colorGradient = gradient; - tech.Icon.material.SetTexture("_MainTex", _icons[Random.Range(0,_icons.Length-1)]); - tech.Fill.material = islandFillMaterials[islands[vertex]]; - tech.Glow.material = islandGlowMaterials[islands[vertex]]; - _techInstances.Add(tech.GetComponent()); - } - - if (Algorithm == LayoutAlgorithm.Sugiyama && Radial) - { - foreach (var edge in edges) - { - var link = RadialLink.Instantiate(); - link.material = islandLinkMaterials[islands[edge.Source]]; - link.positionCount = LinkPoints; - var p1r = length(positions[edge.Source]); - var p2r = length(positions[edge.Target]); - var p1a = (atan2(positions[edge.Source].y, positions[edge.Source].x) + PI * 2.5f) % (PI * 2); - var p2a = (atan2(positions[edge.Target].y, positions[edge.Target].x) + PI * 2.5f) % (PI * 2); - var p1 = float2(sin(p1a) * p1r, -cos(p1a) * p1r); - var p2 = float2(sin(p2a) * p2r, -cos(p2a) * p2r); - var dist = length(p2 - p1); - var distProp = (dist - LinkTargetDistance) / dist; - var dir = new float2(); - var lastPos = new float2(); - link.SetPositions(Enumerable.Range(0,LinkPoints).Select(i=> - { - var lerp = (float) i / (LinkPoints-1) * distProp; - var angle = math.lerp(p1a, p2a, (lerp)); - var radius = math.lerp(p1r, p2r, lerp); - var pos = float2(sin(angle) * radius, -cos(angle) * radius); - dir = normalize(pos - lastPos); - lastPos = pos; - return (Vector3) float3(lastPos, LinkDepth); - }).ToArray()); - _linkInstances.Add(link.GetComponent()); - - var arrow = Arrow.Instantiate(); - arrow.transform.position = new Vector3(lastPos.x, lastPos.y, ArrowDepth); - arrow.transform.rotation = Quaternion.Euler(0,0,atan2(dir.y, dir.x) * Mathf.Rad2Deg); - arrow.Icon.material = islandArrowMaterials[islands[edge.Source]]; - _arrowInstances.Add(arrow.GetComponent()); - } - } - else - { - foreach (var edge in edges) - { - var link = Link.Instantiate(); - link.Icon.material = islandLinkMaterials[islands[edge.Source]]; - link.transform.position = float3(positions[edge.Source], LinkDepth); - var diff = positions[edge.Target] - positions[edge.Source]; - link.transform.rotation = Quaternion.Euler(0,0,atan2(diff.y, diff.x) * Mathf.Rad2Deg); - link.transform.localScale = new Vector3(length(diff) - LinkTargetDistance, 1, 1); - _linkInstances.Add(link.GetComponent()); - - var arrow = Arrow.Instantiate(); - arrow.transform.position = float3(positions[edge.Source] + normalize(positions[edge.Target] - positions[edge.Source]) * (length(diff) - LinkTargetDistance), ArrowDepth); - arrow.transform.rotation = Quaternion.Euler(0,0,atan2(diff.y, diff.x) * Mathf.Rad2Deg); - arrow.Icon.material = islandArrowMaterials[islands[edge.Source]]; - _arrowInstances.Add(arrow.GetComponent()); - } - } - - } - - float ease_in_quad(float x) { - float t = x; float b = 0; float c = 1; float d = 1; - return c*(t/=d)*t + b; - } - - float ease_out_quad(float x) { - float t = x; float b = 0; float c = 1; float d = 1; - return -c *(t/=d)*(t-2) + b; - } - - class IntVertex - { - public int N; - - public IntVertex(int n) - { - N = n; - } - } -} diff --git a/Assets/Scripts/TechTreeTest.cs.meta b/Assets/Scripts/TechTreeTest.cs.meta deleted file mode 100644 index a35b3ad80..000000000 --- a/Assets/Scripts/TechTreeTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6270ad993ac7b944786c936b7b058263 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/UI/ClickCatcher.cs b/Assets/Scripts/UI/ClickCatcher.cs index 3859d535a..6d8e4b0ac 100644 --- a/Assets/Scripts/UI/ClickCatcher.cs +++ b/Assets/Scripts/UI/ClickCatcher.cs @@ -31,14 +31,14 @@ public class ClickCatcher : MonoBehaviour, IPointerEnterHandler, IPointerExitHan public void OnPointerEnter(PointerEventData eventData) { - //Debug.Log("Pointer Entered"); + Debug.Log("Pointer Entered"); OnEnter?.Invoke(eventData); PointerIsInside = true; } public void OnPointerExit(PointerEventData eventData) { - //Debug.Log("Pointer Exited"); + Debug.Log("Pointer Exited"); OnExit?.Invoke(eventData); PointerIsInside = false; } diff --git a/Assets/Scripts/UI/DragHandler.cs b/Assets/Scripts/UI/DragHandler.cs index fccc9ad1f..c8dba27e6 100644 --- a/Assets/Scripts/UI/DragHandler.cs +++ b/Assets/Scripts/UI/DragHandler.cs @@ -7,23 +7,27 @@ public class DragHandler : MonoBehaviour { public Camera Camera; public float Scaling; + public ClickCatcher Background; private Vector2 _previousPosition; void Update() { - var newPosition = Camera.ScreenToWorldPoint(Input.mousePosition); - if(Input.GetMouseButtonDown(0)) - _previousPosition = newPosition; - if (Input.GetMouseButton(0)) + if (Background.PointerIsInside) { - Camera.transform.position -= (Vector3)((Vector2) newPosition - _previousPosition); - } + var newPosition = Camera.ScreenToWorldPoint(Input.mousePosition); + if(Input.GetMouseButtonDown(0)) + _previousPosition = newPosition; + if (Input.GetMouseButton(0)) + { + Camera.transform.position -= (Vector3)((Vector2) newPosition - _previousPosition); + } - if (abs(Input.mouseScrollDelta.y) > .01f) - { - var previousPosition = Camera.ScreenToWorldPoint(Input.mousePosition); - Camera.orthographicSize *= 1 + Input.mouseScrollDelta.y * Scaling; - Camera.transform.position -= Camera.ScreenToWorldPoint(Input.mousePosition) - previousPosition; + if (abs(Input.mouseScrollDelta.y) > .01f) + { + var previousPosition = Camera.ScreenToWorldPoint(Input.mousePosition); + Camera.orthographicSize *= 1 + Input.mouseScrollDelta.y * Scaling; + Camera.transform.position -= Camera.ScreenToWorldPoint(Input.mousePosition) - previousPosition; + } } } } diff --git a/Assets/Scripts/UnityExtensions.cs b/Assets/Scripts/UnityExtensions.cs index cd4268fb5..d6d2f80cd 100644 --- a/Assets/Scripts/UnityExtensions.cs +++ b/Assets/Scripts/UnityExtensions.cs @@ -28,7 +28,8 @@ public static class UnityExtensions BindingFlags.Public | BindingFlags.Static); - method.Invoke(component, new[] { value }); + if(method!=null) + method.Invoke(component, new[] { value }); } catch (Exception e) { diff --git a/Economy.Shared.Unity.csproj b/Economy.Shared.Unity.csproj index d81092cf0..d174682ea 100644 --- a/Economy.Shared.Unity.csproj +++ b/Economy.Shared.Unity.csproj @@ -26,7 +26,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_17;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_22;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -50,13 +50,13 @@ - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEditor.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEditor.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll @@ -69,6 +69,7 @@ + @@ -461,235 +462,235 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Library/ScriptAssemblies/Unity.Mathematics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/Unity.Locator.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/Unity.Locator.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEditor.Graphs.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEditor.Graphs.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Microsoft.Extensions.Logging.Abstractions.dll @@ -731,358 +732,358 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll diff --git a/MessagePack.csproj b/MessagePack.csproj index 93867e1ae..eecc961d4 100644 --- a/MessagePack.csproj +++ b/MessagePack.csproj @@ -26,7 +26,7 @@ full false Temp\bin\Debug\ - DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_17;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_4_OR_NEWER;UNITY_2018_4_22;UNITY_2018_4;UNITY_2018;PLATFORM_ARCH_64;UNITY_64;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_STANDALONE_WIN;PLATFORM_STANDALONE;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_OUT_OF_PROCESS_CRASH_HANDLER;ENABLE_EVENT_QUEUE;ENABLE_CLUSTER_SYNC;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE;UNITY_POST_PROCESSING_STACK_V2;TEST_MSAGL;REPORTING;PERSISTENCE;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER prompt 4 0169 @@ -50,13 +50,13 @@ - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEngine/UnityEngine.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\Managed/UnityEditor.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\Managed/UnityEditor.dll - C:\Program Files\Unity\Hub\Editor\2018.4.17f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll + C:\Program Files\Unity\Hub\Editor\2018.4.22f1\Editor\Data\MonoBleedingEdge\lib\mono\4.7.1-api\Microsoft.CSharp.dll @@ -157,235 +157,235 @@ - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/Unity.Locator.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/Unity.Locator.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/Managed/UnityEditor.Graphs.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/Managed/UnityEditor.Graphs.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/WebGLSupport/UnityEditor.WebGL.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Microsoft.Extensions.Logging.Abstractions.dll @@ -427,358 +427,358 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll - C:/Program Files/Unity/Hub/Editor/2018.4.17f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + C:/Program Files/Unity/Hub/Editor/2018.4.22f1/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index aac939d2a..15bf7b1ba 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1 +1 @@ -m_EditorVersion: 2018.4.17f1 +m_EditorVersion: 2018.4.22f1 diff --git a/README.md b/README.md index ce92e8e02..3d63bc9a4 100644 --- a/README.md +++ b/README.md @@ -81,9 +81,9 @@ In order to make an item craftable in-game, that item needs to be associated wit ### Getting the Files -In order to checkout the project, you need a git client (Github's zip download will not work!). You also need to have installed [Git LFS (Large File Storage)](https://git-lfs.github.com/). This is necessary because assets in gamedev projects can get rather large, and Git is essentially a text versioning system that does not by itself support that use case well. +In order to checkout the project, you need a git client (Github's zip download will not work!). You also need to have installed [Git LFS (Large File Storage)](https://git-lfs.github.com/). This is necessary because assets in gamedev projects can get rather large, and Git is essentially a text versioning system that does not by itself support that use case well. After installing LFS you'll need a Git client. I recommend [Github Desktop](https://desktop.github.com/), which has a nice simplified workflow and integrates with the site. For more advanced users, there's nothing wrong with using the command line or a more comprehensive client like [GitKraken](https://www.gitkraken.com/), but beginners beware that it's easy to shoot yourself in the foot that way. -When you have synced with the repository, you can open the project using Unity. The project was created with Unity 2018.4.17f1 LTS, and while it may work with newer or older versions, that cannot be guaranteed. You can open the project by opening the root of this repository either directly with the Unity Editor, or using [Unity Hub](https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe), which will also take care of downloading the correct version of the Editor. +When you have synced with the repository, you can open the project using Unity. The project uses Unity 2018 LTS, and while it may work with newer or older versions, that cannot be guaranteed. You can open the project by opening the root of this repository either directly with the Unity Editor, or using [Unity Hub](https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe), which will also take care of downloading the correct version of the Editor. ### Choosing a Task