├── .gitignore ├── LICENSE ├── README.md ├── UnityCore ├── Properties │ └── AssemblyInfo.cs ├── UnityCore.csproj ├── UnityCore │ ├── SelfInstantiatingSingletonBehaviour.cs │ ├── SelfInstantiatingSingletonBehaviour.cs.meta │ ├── Singleton.cs │ ├── Singleton.cs.meta │ ├── SingletonBehaviour.cs │ ├── SingletonBehaviour.cs.meta │ ├── SmartBehaviour.cs │ ├── SmartBehaviour.cs.meta │ ├── Threading.meta │ └── Threading │ │ ├── EnvironmentCheck.cs.meta │ │ ├── IUnityMainThreadDispatcher.cs │ │ ├── IUnityMainThreadDispatcher.cs.meta │ │ ├── TaskExtensions.cs │ │ ├── TaskExtensions.cs.meta │ │ ├── ThreadHelper.cs │ │ ├── ThreadHelper.cs.meta │ │ ├── UnityEditorThreadDispatcher.cs │ │ ├── UnityEditorThreadDispatcher.cs.meta │ │ ├── UnityGameThreadDispatcher.cs │ │ ├── UnityGameThreadDispatcher.cs.meta │ │ ├── UnityMainThreadDispatcher.cs │ │ └── UnityMainThreadDispatcher.cs.meta └── packages.config ├── UnityCorePackages └── unitycore.unitypackage └── UnityCoreProject ├── Assets ├── Demos.meta ├── Demos │ ├── ContainerInstaller.cs │ ├── ContainerInstaller.cs.meta │ ├── Editor.meta │ ├── Editor │ │ ├── ThreadTestEditorWindow.cs │ │ └── ThreadTestEditorWindow.cs.meta │ ├── Tasks.unity │ ├── Tasks.unity.meta │ ├── Tester.cs │ ├── Tester.cs.meta │ ├── ThreadTestBehaviour.cs │ └── ThreadTestBehaviour.cs.meta ├── Scripts.meta ├── Scripts │ ├── UnityCore.meta │ └── UnityCore │ │ ├── SelfInstantiatingSingletonBehaviour.cs │ │ ├── SelfInstantiatingSingletonBehaviour.cs.meta │ │ ├── Singleton.cs │ │ ├── Singleton.cs.meta │ │ ├── SingletonBehaviour.cs │ │ ├── SingletonBehaviour.cs.meta │ │ ├── SmartBehaviour.cs │ │ ├── SmartBehaviour.cs.meta │ │ ├── Threading.meta │ │ └── Threading │ │ ├── IUnityMainThreadDispatcher.cs │ │ ├── IUnityMainThreadDispatcher.cs.meta │ │ ├── TaskExtensions.cs │ │ ├── TaskExtensions.cs.meta │ │ ├── ThreadHelper.cs │ │ ├── ThreadHelper.cs.meta │ │ ├── UnityEditorThreadDispatcher.cs │ │ ├── UnityEditorThreadDispatcher.cs.meta │ │ ├── UnityGameThreadDispatcher.cs │ │ ├── UnityGameThreadDispatcher.cs.meta │ │ ├── UnityMainThreadDispatcher.cs │ │ └── UnityMainThreadDispatcher.cs.meta ├── packages.meta └── packages │ ├── Castle.Core.2.5.2.meta │ ├── Castle.Core.2.5.2 │ ├── Castle.Core.2.5.2.nupkg │ ├── Castle.Core.2.5.2.nupkg.meta │ ├── lib.meta │ └── lib │ │ ├── ASL - Apache Software Foundation License.txt │ │ ├── ASL - Apache Software Foundation License.txt.meta │ │ ├── BreakingChanges.txt │ │ ├── BreakingChanges.txt.meta │ │ ├── Changes.txt │ │ ├── Changes.txt.meta │ │ ├── Committers.txt │ │ ├── Committers.txt.meta │ │ ├── NET35.meta │ │ ├── NET35 │ │ ├── Castle.Core.dll │ │ ├── Castle.Core.dll.meta │ │ ├── Castle.Core.xml │ │ └── Castle.Core.xml.meta │ │ ├── releaseNotes.txt │ │ └── releaseNotes.txt.meta │ ├── Castle.Windsor.2.5.4.meta │ ├── Castle.Windsor.2.5.4 │ ├── Castle.Windsor.2.5.4.nupkg │ ├── Castle.Windsor.2.5.4.nupkg.meta │ ├── lib.meta │ └── lib │ │ ├── ASL - Apache Software Foundation License.txt │ │ ├── ASL - Apache Software Foundation License.txt.meta │ │ ├── BreakingChanges.txt │ │ ├── BreakingChanges.txt.meta │ │ ├── Changes.txt │ │ ├── Changes.txt.meta │ │ ├── Committers.txt │ │ ├── Committers.txt.meta │ │ ├── net35.meta │ │ ├── net35 │ │ ├── Castle.Windsor.dll │ │ ├── Castle.Windsor.dll.mdb │ │ ├── Castle.Windsor.dll.mdb.meta │ │ ├── Castle.Windsor.dll.meta │ │ ├── Castle.Windsor.pdb.meta │ │ ├── Castle.Windsor.xml │ │ └── Castle.Windsor.xml.meta │ │ ├── releaseNotes.txt │ │ └── releaseNotes.txt.meta │ ├── TaskParallelLibrary.1.0.2856.0.meta │ └── TaskParallelLibrary.1.0.2856.0 │ ├── TaskParallelLibrary.1.0.2856.0.nupkg │ ├── TaskParallelLibrary.1.0.2856.0.nupkg.meta │ ├── lib.meta │ └── lib │ ├── Net35.meta │ └── Net35 │ ├── System.Threading.chm │ ├── System.Threading.chm.meta │ ├── System.Threading.dll │ ├── System.Threading.dll.meta │ ├── System.Threading.xml │ ├── System.Threading.xml.meta │ ├── redist.txt │ └── redist.txt.meta ├── Nuget.Config ├── NugetForUnity ├── NugetForUnity.csproj ├── NugetForUnity.csproj.user ├── app.config └── packages.config ├── UnityCoreProject.Editor.csproj ├── UnityCoreProject.Editor.csproj.user ├── UnityCoreProject.csproj ├── UnityCoreProject.csproj.user └── UnityCoreProject.sln /.gitignore: -------------------------------------------------------------------------------- 1 | .vs 2 | .vs/* 3 | UnityCoreProject/Build 4 | UnityCoreProject/obj 5 | UnityCoreProject/Temp 6 | UnityCoreProject/packages 7 | UnityCoreProject/Library 8 | UnityCoreProject/Library/** 9 | UnityCoreProject/ProjectSettings 10 | project.lock.json 11 | obj 12 | obj/** 13 | bin 14 | bin/** 15 | *.pdb -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Vaughan Knight 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UnityCore 2 | Core boilerplate code I use in Unity, including singletons, smart behaviours etc. Most people come here for the threading bits so keeping this short. 3 | 4 | # UnityCore.Threading 5 | Do away with coroutines, and start using Tasks in Unity. Coroutines are not threading, and give a way to do asynchronous tasks in chunks, but don't hand off to different CPU's to do computational heavy and thread locking execution. This task library builds on the Task Parallel Library and gives the flexibilty to run tasks back on the main Unity3D thread with ease. 6 | * Use Tasks to manage async code 7 | * Same code for async in **Editor** and in the **Unity Player** 8 | * Async in plain classes 9 | * Batch async in Parallel 10 | * Weave back and forth between the main thread 11 | * Return values on async! 12 | * No more 13 | * Writing one set of code for the editor another for the player 14 | * Passing around a MonoBehaviour for coroutines 15 | * Iterators through your code for Coroutines 16 | * Writing classes just to handle async logic 17 | * Callbacks just to get return values 18 | 19 | ```csharp 20 | public class Tester 21 | { 22 | public static void Test() 23 | { 24 | // First Task runs off the main thread 25 | Task.Factory.StartNew(() => 26 | { 27 | Debug.Log("This isn't on the main thread"); 28 | }). 29 | ContinueWith(task => 30 | { 31 | // Still off the main thread for some async 32 | // i.e. imagine we retrieved some json 33 | Debug.Log("Neither is this"); 34 | return "{answer: 42}"; 35 | }). 36 | ContinueWithOnMainThread(task => 37 | { 38 | // Now jumping onto the main thread 39 | // and we have the result from the previous thread! 40 | Debug.Log(task.Result); 41 | 42 | // And we can do main thread only tasks 43 | Debug.Log(Application.isEditor); 44 | 45 | // And we can also pass values off the main thread 46 | return new Vector2(200,200); 47 | }). 48 | ContinueWith(task => 49 | { 50 | // And voila, we now have the result from the main thread, 51 | // back off and can work async 52 | Debug.Log(task.Result); 53 | }); 54 | } 55 | } 56 | ``` 57 | 58 | ## UnityCore.Threading Guide 59 | ### Creating an Async Task 60 | It's pretty easy to create an async Task, you simply just use `Task.Factory.StartNew(Action)` like below. 61 | ```csharp 62 | Task.Factory.StartNew(() => 63 | { 64 | Debug.Log("This isn't on the main thread"); 65 | }); 66 | ``` 67 | This simply runs the debug statement off the main thread. This might be more complex, like loading a file, or initialisation. 68 | 69 | ### Continuing 70 | Often you will want to do something once that async Task is complete. You can follow up easily with `ContinueWith`. 71 | ```csharp 72 | // First Task runs off the main thread 73 | Task.Factory.StartNew(() => 74 | { 75 | Debug.Log("This isn't on the main thread"); 76 | }). 77 | ContinueWith(task => 78 | { 79 | // Still off the main thread for some async 80 | // i.e. imagine we retrieved some json 81 | Debug.Log("Neither is this"); 82 | return "{answer: 42}"; 83 | }). 84 | ``` 85 | `ContinueWith` just runs the next Action or Func off the main thread. In the example above, it logs to debug, and returns some simple JSON. This `ContinueWith` could have, for example, performed a web request and retrieved the JSON from a live source, causing a long running thread, perfect for running asycn. 86 | ### Passing Data Between Threads 87 | Now that we have a returned result, imagine you need to do something on the main thread. It may be PNG data that you want to load into a `Texture2D`, very common for player avatar icons. Let's look at the code below where we use `ContinueWithOnMainThread`. 88 | ```csharp 89 | // First Task runs off the main thread 90 | Task.Factory.StartNew(() => 91 | { 92 | Debug.Log("This isn't on the main thread"); 93 | }). 94 | ContinueWith(task => 95 | { 96 | // Still off the main thread for some async 97 | // i.e. imagine we retrieved some json 98 | Debug.Log("Neither is this"); 99 | return "{answer: 42}"; 100 | }). 101 | ContinueWithOnMainThread(task => 102 | { 103 | // Now jumping onto the main thread 104 | // and we have the result from the previous thread! 105 | Debug.Log(task.Result); 106 | 107 | // And we can do main thread only tasks 108 | Debug.Log(Application.isEditor); 109 | 110 | // And we can also pass values off the main thread 111 | return new Vector2(200, 200); 112 | }). 113 | ``` 114 | Here we can get access to the JSON returned in the previous task via task.Result. And to prove we are on the main thread, the cdoe aboce does a call to `Application.isEditor` which throws and exception if not on the main thread. 115 | ### Passing Data Back From The Main Thread 116 | And now, let's look at the flow back off the main thread 117 | 118 | ```csharp 119 | // First Task runs off the main thread 120 | Task.Factory.StartNew(() => 121 | { 122 | Debug.Log("This isn't on the main thread"); 123 | }). 124 | ContinueWith(task => 125 | { 126 | // Still off the main thread for some async 127 | // i.e. imagine we retrieved some json 128 | Debug.Log("Neither is this"); 129 | return "{answer: 42}"; 130 | }). 131 | ContinueWithOnMainThread(task => 132 | { 133 | // Now jumping onto the main thread 134 | // and we have the result from the previous thread! 135 | Debug.Log(task.Result); 136 | 137 | // And we can do main thread only tasks 138 | Debug.Log(Application.isEditor); 139 | 140 | // And we can also pass values off the main thread 141 | return new Vector2(200,200); 142 | }). 143 | ContinueWith(task => 144 | { 145 | // And voila, we now have the result from the main thread, 146 | // back off and can work async 147 | Debug.Log(task.Result); 148 | }); 149 | ``` 150 | Here you can see that we just go `ContinueWith` and voila, you're back off the main thread, with the data obtained in the main thread. This could be for example, the dimensions of the `Texture2D` downloaded, as `Texture2D.width` can only be called on the main thread. 151 | 152 | ## Why Not Use TaskScheduler.FromCurrentSynchronizationContext() ? 153 | There are a few issues with this, including implied contexts, and the varying Engine loop. 154 | ### Implied Context 155 | Let's say you are capturing device input from an external source, or possibly listening for a message bus, when this event fires, you may want to do something on the main thread. In this case `TaskScheduler.FromCurrentSynchronizationContext` is not on the main game thread, so it simply won't work. 156 | ### The Engine Loop 157 | Implied context aside, even if you just gave it the main game thread to run the `Task` on, the `Task` itself needs to run inside the `Update()` phase on the game loop. While some calls may work when throwing back to the thread, other things will not. In addition, you can profile these calls in the profiler if you put them in the update loop, ensuring your threading is predictable, and knowing the overhead per frame. 158 | ### How Can I Run The Callback on FixedUpdate()? 159 | Good point. Add it to the list for now. For now you could trigger this from your Update call, however that is just more thread / state weaving which this libary is meant to remove from your coding. 160 | 161 | ## Multiple Tasks 162 | Let's say you create a few tasks, you can wait for them all to complete by using `Task.Factory.ContinueWhenAll`. 163 | ```csharp 164 | var t1 = Task.Factory.StartNew( () => ... ); 165 | var t2 = Task.Factory.StartNew( () => ... ); 166 | var tasks = new Task[]{t1, t2}; 167 | Task.Factory.ContinueWhenAll(tasks, allTasks => 168 | { 169 | foreach(var task in allTasks) 170 | { 171 | //... do something 172 | } 173 | }); 174 | ``` 175 | This is the base functionality out of the Task library. 176 | 177 | **NOTE** - There is no `ContinueWhenAllOnMainThread` implementation yet. 178 | 179 | ## Parallel 180 | Parallel is very straight forward, and it just uses the base Task Parallel Library 3.5 implementation. Most of the guidance can be found there, however to give you an idea of what you can do, an example is provided below. 181 | 182 | ```csharp 183 | Parallel.For(0, 100, index => 184 | { 185 | Debug.Log(index); 186 | }); 187 | ``` 188 | The call to `Parallel.For(int low, int high, Action)` will run the Debug.Log(index) 101 times. This can be handy when downloading a collection of online resources. For me it's usually when prefetching detailed information for a set of results. -------------------------------------------------------------------------------- /UnityCore/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UnityCore")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UnityCore")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("1efa9b78-8323-451e-ba76-8d0a2d52483c")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /UnityCore/UnityCore.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1EFA9B78-8323-451E-BA76-8D0A2D52483C} 8 | Library 9 | Properties 10 | UnityCore 11 | UnityCore 12 | v3.5 13 | 512 14 | 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | 36 | 37 | ..\UnityCoreProject\Assets\packages\TaskParallelLibrary.1.0.2856.0\lib\Net35\System.Threading.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | ..\..\..\..\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | copy $(TargetPath) $(SolutionDir)\Assets\Plugins\$(TargetFileName) 66 | 67 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/SelfInstantiatingSingletonBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using UnityEngine; 6 | namespace UnityCore 7 | { 8 | public class SelfInstantiatingSingletonBehaviour : SingletonBehaviour where T : SmartBehaviour 9 | { 10 | public new static T Instance 11 | { 12 | get 13 | { 14 | if (_instance == null) 15 | { 16 | // This is the first instance of the 17 | var obj = new GameObject(typeof(T).Name); 18 | //_instance = 19 | obj.AddComponent(); 20 | } 21 | return (T)_instance; 22 | } 23 | } 24 | 25 | public void Awake() 26 | { 27 | if (_instance == null) 28 | { 29 | _instance = this; 30 | } 31 | else 32 | { 33 | // Log an error so developers can clean up their code 34 | Debug.LogFormat(TEXT_SINGLETON_EXISTS_ERROR, this.GetType().Name); 35 | 36 | // Destroy the entire game object this behaviour is attached to 37 | GameObject.Destroy(this.gameObject); 38 | } 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /UnityCore/UnityCore/SelfInstantiatingSingletonBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f9a4aa22c815ac4fa323f9ee82bb5fc 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Singleton.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | namespace UnityCore 5 | { 6 | public class Singleton where T : new() 7 | { 8 | private static T _instance; 9 | 10 | public static T Instance 11 | { 12 | get 13 | { 14 | if (_instance == null) 15 | { 16 | _instance = new T(); 17 | } 18 | return _instance; 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Singleton.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2724a18e15376b34d9dccc0b45173825 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/SingletonBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace UnityCore 6 | { 7 | /// 8 | /// The SingletonBehaviour ensures that 9 | /// there is only ever a single copy of an inheriting behaviour, that in turn allows Singleton like 10 | /// interactions i.e Singleton.Instance. It will dstroy any GameObject with subsequent behaviours of 11 | /// the same type. Note this is not just deleting the singleton behaviour to stop GameObject leaks. 12 | /// 13 | /// It will also log an error when a duplicate Singleton Behaviour is created 14 | /// so you can clean up your project. 15 | /// 16 | /// Inherits from SmartBehaviour because everything should, even singletons. 17 | /// 18 | public class SingletonBehaviour : SmartBehaviour where T : SmartBehaviour 19 | { 20 | protected const string TEXT_SINGLETON_EXISTS_ERROR = "Singleton '{0}' is already created. Destroying the object."; 21 | protected static SmartBehaviour _instance; 22 | 23 | public static T Instance 24 | { 25 | get 26 | { 27 | return (T)_instance; 28 | } 29 | } 30 | 31 | void Awake() 32 | { 33 | if (_instance == null) 34 | { 35 | // This is the first instance of the behaviour 36 | _instance = this; 37 | } 38 | else 39 | { 40 | // Log an error so developers can clean up their code 41 | Debug.LogFormat(TEXT_SINGLETON_EXISTS_ERROR, this.GetType().Name); 42 | 43 | // Destroy the entire game object this behaviour is attached to 44 | GameObject.Destroy(this.gameObject); 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /UnityCore/UnityCore/SingletonBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d94f832c8e5db494bac69b928508f507 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/SmartBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace UnityCore 6 | { 7 | /// 8 | /// Behaviour that wraps all the bits that have heavy 9 | /// performace overhead with common 'getComponent' calls. 10 | /// 11 | /// Why 'Smart'behaviour? Because seriously. 12 | /// 13 | /// NOTE: Feel free to add common accessors, generally which relate 14 | /// to those that have been deprecated for .GetComponent which assumed 15 | /// a single instance i.e transform, renderer, rigidbody etc 16 | /// 17 | public class SmartBehaviour : MonoBehaviour 18 | { 19 | 20 | private Transform _transform; 21 | 22 | public Transform _Transform 23 | { 24 | get 25 | { 26 | if (_transform == null) 27 | { 28 | _transform = this.transform; 29 | } 30 | return _transform; 31 | } 32 | } 33 | 34 | private Renderer _renderer; 35 | 36 | public Renderer _Renderer 37 | { 38 | get 39 | { 40 | if (_renderer == null) 41 | { 42 | _renderer = this.GetComponent(); 43 | } 44 | return _renderer; 45 | } 46 | } 47 | 48 | private Rigidbody _rigidBody; 49 | 50 | public Rigidbody _RigidBody 51 | { 52 | get 53 | { 54 | if (_rigidBody == null) 55 | { 56 | _rigidBody = this.GetComponent(); 57 | } 58 | return _rigidBody; 59 | } 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /UnityCore/UnityCore/SmartBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12dd1a69874dbe740b48b1da6295b9d7 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdae7b423a3ee204d9fe60496e69a902 3 | folderAsset: yes 4 | timeCreated: 1499679471 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/EnvironmentCheck.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 92f90723cdf925c41b0a8e88c51d3e8a 3 | timeCreated: 1499743070 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/IUnityMainThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace UnityCore.Threading 5 | { 6 | public interface IUnityMainThreadDispatcher 7 | { 8 | /// 9 | /// Locks the queue and adds the Action to the queue 10 | /// 11 | /// function that will be executed from the main thread. 12 | Task Enqueue(Action action); 13 | Task Enqueue(Func func); 14 | 15 | //Func, TResult> Enqueue(Func func); 16 | } 17 | } -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/IUnityMainThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96cf7403554d89649b61b5ca246c7318 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/TaskExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | /// 11 | /// These extensions are for the Task.Parallel library for .Net 3.5. It adds main thread 12 | /// support independent of running in the editor or in the player. 13 | /// 14 | public static class TaskExtensions 15 | { 16 | // Input void, output void 17 | public static Task ContinueWithOnMainThread(this Task task, Action action) 18 | { 19 | return task.ContinueWith(t => 20 | { 21 | HandToMainThreadAndWait(task, action); 22 | }); 23 | } 24 | 25 | // Input void, output result 26 | public static Task ContinueWithOnMainThread(this Task task, Func continuationFunction) 27 | { 28 | return task.ContinueWith(t => 29 | { 30 | return HandToMainThreadAndWait(task, continuationFunction); 31 | }); 32 | } 33 | 34 | // Input value, output result 35 | public static Task ContinueWithOnMainThread(this Task task, Func, TResult> continuationFunction) 36 | { 37 | return task.ContinueWith( t=> 38 | { 39 | return HandToMainThreadAndWait(task, continuationFunction); 40 | }); 41 | } 42 | 43 | // Has result, takes nothing 44 | private static TResult HandToMainThreadAndWait(Task task, Func func) 45 | { 46 | return HandToThreadAndWait(task, func, UnityMainThreadDispatcher.Instance); 47 | } 48 | 49 | private static TResult HandToMainThreadAndWait(Task task, Func, TResult> func) 50 | { 51 | return HandToThreadAndWait(task, func, UnityMainThreadDispatcher.Instance); 52 | } 53 | 54 | private static void HandToMainThreadAndWait(Task task, Action> action) 55 | { 56 | HandToThreadAndWait(task, action, UnityMainThreadDispatcher.Instance); 57 | } 58 | 59 | private static void HandToMainThreadAndWait(Task task, Action action) 60 | { 61 | HandToThreadAndWait(task, action, UnityMainThreadDispatcher.Instance); 62 | } 63 | 64 | private static TResult HandToThreadAndWait(Task task, Func func, IUnityMainThreadDispatcher dispatcher) 65 | { 66 | var t = dispatcher.Enqueue(() => func.Invoke(task)); 67 | t.Wait(); 68 | return t.Result; 69 | } 70 | 71 | private static TResult HandToThreadAndWait(Task task, Func, TResult> func, IUnityMainThreadDispatcher dispatcher) 72 | { 73 | var t = dispatcher.Enqueue(() => func.Invoke(task)); 74 | t.Wait(); 75 | return t.Result; 76 | } 77 | 78 | /// 79 | /// General methods 80 | /// 81 | /// The previous task 82 | /// The action to perform 83 | /// The Unity Dispatcher to run with 84 | public static void HandToThreadAndWait(Task task, Action action, IUnityMainThreadDispatcher dispatcher) 85 | { 86 | var t = dispatcher.Enqueue(() => action(task)); 87 | t.Wait(); 88 | } 89 | 90 | public static void HandToThreadAndWait(Task task, Action> action, IUnityMainThreadDispatcher dispatcher) 91 | { 92 | var t = dispatcher.Enqueue(() => action(task)); 93 | t.Wait(); 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/TaskExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ae2dcfbc63d3c841998ebdf81d93db6 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/ThreadHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | public static class UnityThreadHelper 11 | { 12 | public static void Update(Queue _executionQueue) 13 | { 14 | lock (_executionQueue) 15 | { 16 | while (_executionQueue.Count > 0) 17 | { 18 | _executionQueue.Dequeue().Invoke(); 19 | } 20 | } 21 | } 22 | 23 | public static Task Enqueue(Queue _executionQueue, Action action) 24 | { 25 | lock (_executionQueue) 26 | { 27 | var task = new Task(action); 28 | _executionQueue.Enqueue(() => 29 | { 30 | task.RunSynchronously(); 31 | }); 32 | return task; 33 | } 34 | } 35 | 36 | public static Task Enqueue(Queue _executionQueue, Func func) 37 | { 38 | lock (_executionQueue) 39 | { 40 | var task = new Task(func); 41 | _executionQueue.Enqueue(() => 42 | { 43 | task.RunSynchronously(); 44 | }); 45 | return task; 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/ThreadHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 794764c0f52de4e4681cd26a4c7fbec9 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityEditorThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using UnityEditor; 9 | using UnityEngine; 10 | 11 | namespace UnityCore.Threading 12 | { 13 | public class UnityEditorThreadDispatcher : Singleton, IUnityMainThreadDispatcher 14 | { 15 | private static readonly Queue _executionQueue = new Queue(); 16 | 17 | public UnityEditorThreadDispatcher() 18 | { 19 | EditorApplication.update += Update; 20 | } 21 | public void Update() 22 | { 23 | UnityThreadHelper.Update(_executionQueue); 24 | } 25 | public Task Enqueue(Action action) 26 | { 27 | return UnityThreadHelper.Enqueue(_executionQueue, action); 28 | } 29 | 30 | public Task Enqueue(Func func) 31 | { 32 | return UnityThreadHelper.Enqueue(_executionQueue, func); 33 | } 34 | } 35 | } 36 | 37 | #endif -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityEditorThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b5a6e6b4e994274bad2e75b9b01eb5a 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityGameThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | /// 11 | /// This thread dispatcher is for the main thread in game. 12 | /// 13 | public class UnityGameThreadDispatcher : SelfInstantiatingSingletonBehaviour, IUnityMainThreadDispatcher 14 | { 15 | private static readonly Queue _executionQueue = new Queue(); 16 | 17 | public void Update() 18 | { 19 | UnityThreadHelper.Update(_executionQueue); 20 | } 21 | public Task Enqueue(Action action) 22 | { 23 | return UnityThreadHelper.Enqueue(_executionQueue, action); 24 | } 25 | public Task Enqueue(Func func) 26 | { 27 | return UnityThreadHelper.Enqueue(_executionQueue, func); 28 | } 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityGameThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e3cdf8c4ff5ab64cac1e3e95428cb02 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityMainThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2015 Pim de Witte All Rights Reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | using UnityEngine; 18 | using System.Collections; 19 | using System.Collections.Generic; 20 | using System; 21 | using UnityEditor; 22 | using System.Threading.Tasks; 23 | using System.Threading; 24 | 25 | namespace UnityCore.Threading 26 | { 27 | public class UnityMainThreadDispatcher 28 | { 29 | private static IUnityMainThreadDispatcher _instance; 30 | 31 | public static void Initialise() 32 | { 33 | if (_instance == null) 34 | { 35 | _instance = Current(); 36 | } 37 | } 38 | 39 | public static void ForceInitialise() 40 | { 41 | _instance = Current(); 42 | } 43 | public static IUnityMainThreadDispatcher Current() 44 | { 45 | IUnityMainThreadDispatcher dispatcher = null; 46 | try 47 | { 48 | // NOTE: This causes strange behaviour when you do async from the editor while the 49 | // game is playing. What happens is the editor async calls end up hooking 50 | // the main game loop. Any ideas, let me know how you can find out if you are on 51 | // the Game thread, or the Editor thread. 52 | //if (!Application.isEditor || Application.isPlaying) 53 | //{ 54 | #if UNITY_CORE_EDITOR 55 | dispatcher = UnityEditorThreadDispatcher.Instance; 56 | #else 57 | dispatcher = UnityGameThreadDispatcher.Instance; 58 | #endif 59 | } 60 | catch (Exception e) 61 | { 62 | Debug.LogError("UnityMainThreadDispatcher.Initialise() must be called from the main thread prior to dispatching back to the main thread."); 63 | } 64 | return dispatcher; 65 | } 66 | 67 | public static IUnityMainThreadDispatcher Instance 68 | { 69 | get 70 | { 71 | if (_instance == null) 72 | { 73 | Initialise(); 74 | } 75 | return _instance; 76 | } 77 | } 78 | } 79 | } -------------------------------------------------------------------------------- /UnityCore/UnityCore/Threading/UnityMainThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a7c8a11b4915ab4ea3e26843fac0e98 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCore/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /UnityCorePackages/unitycore.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCorePackages/unitycore.unitypackage -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d40d33be77ba1946afc54e5fb79b2ab 3 | folderAsset: yes 4 | timeCreated: 1499780645 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/ContainerInstaller.cs: -------------------------------------------------------------------------------- 1 | using Castle.MicroKernel.Registration; 2 | using Castle.MicroKernel.SubSystems.Configuration; 3 | using Castle.Windsor; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | 9 | namespace UnityCore.Demos 10 | { 11 | public class ContainerInstaller : IWindsorInstaller 12 | { 13 | public void Install(IWindsorContainer container, IConfigurationStore store) 14 | { 15 | container.Register(Component.For().ImplementedBy()); 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/ContainerInstaller.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 91f3a307630485748a29caf0ec3ef240 3 | timeCreated: 1505768421 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5d3086b841c4f94f89981a7f8a141f5 3 | folderAsset: yes 4 | timeCreated: 1499781272 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Editor/ThreadTestEditorWindow.cs: -------------------------------------------------------------------------------- 1 | using Castle.Windsor; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityCore.Demos; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | public class ThreadTestEditorWindow : EditorWindow 9 | { 10 | private static IWindsorContainer _container; 11 | private static ITester _tester; 12 | 13 | [MenuItem("Window/Editor Thread Test")] 14 | public static void Menu() 15 | { 16 | Initialise(); 17 | 18 | var window = EditorWindow.GetWindow(); 19 | window.Show(); 20 | } 21 | 22 | private static void Initialise() 23 | { 24 | if (_container == null) 25 | { 26 | _container = new WindsorContainer().Install(new ContainerInstaller()); 27 | _tester = _container.Resolve(); 28 | } 29 | } 30 | 31 | public void OnGUI() 32 | { 33 | if (GUILayout.Button("Run Thread Test")) 34 | { 35 | // Once again, no thread weaving done with the UI, 36 | // no hidden coroutines, just 'do this please 37 | // NOTE: Same code as the player runtime, for editor runtime! 38 | _tester.Test(); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Editor/ThreadTestEditorWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f12526c24352cbb42b1407c4e9891a93 3 | timeCreated: 1499781281 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Tasks.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &46229379 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_PrefabParentObject: {fileID: 0} 119 | m_PrefabInternal: {fileID: 0} 120 | serializedVersion: 5 121 | m_Component: 122 | - component: {fileID: 46229384} 123 | - component: {fileID: 46229383} 124 | - component: {fileID: 46229382} 125 | - component: {fileID: 46229381} 126 | - component: {fileID: 46229380} 127 | - component: {fileID: 46229385} 128 | m_Layer: 0 129 | m_Name: Main Camera 130 | m_TagString: MainCamera 131 | m_Icon: {fileID: 0} 132 | m_NavMeshLayer: 0 133 | m_StaticEditorFlags: 0 134 | m_IsActive: 1 135 | --- !u!81 &46229380 136 | AudioListener: 137 | m_ObjectHideFlags: 0 138 | m_PrefabParentObject: {fileID: 0} 139 | m_PrefabInternal: {fileID: 0} 140 | m_GameObject: {fileID: 46229379} 141 | m_Enabled: 1 142 | m_ExtensionPropertyValues: [] 143 | --- !u!124 &46229381 144 | Behaviour: 145 | m_ObjectHideFlags: 0 146 | m_PrefabParentObject: {fileID: 0} 147 | m_PrefabInternal: {fileID: 0} 148 | m_GameObject: {fileID: 46229379} 149 | m_Enabled: 1 150 | --- !u!92 &46229382 151 | Behaviour: 152 | m_ObjectHideFlags: 0 153 | m_PrefabParentObject: {fileID: 0} 154 | m_PrefabInternal: {fileID: 0} 155 | m_GameObject: {fileID: 46229379} 156 | m_Enabled: 1 157 | --- !u!20 &46229383 158 | Camera: 159 | m_ObjectHideFlags: 0 160 | m_PrefabParentObject: {fileID: 0} 161 | m_PrefabInternal: {fileID: 0} 162 | m_GameObject: {fileID: 46229379} 163 | m_Enabled: 1 164 | serializedVersion: 2 165 | m_ClearFlags: 1 166 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 167 | m_NormalizedViewPortRect: 168 | serializedVersion: 2 169 | x: 0 170 | y: 0 171 | width: 1 172 | height: 1 173 | near clip plane: 0.3 174 | far clip plane: 1000 175 | field of view: 60 176 | orthographic: 0 177 | orthographic size: 5 178 | m_Depth: -1 179 | m_CullingMask: 180 | serializedVersion: 2 181 | m_Bits: 4294967295 182 | m_RenderingPath: -1 183 | m_TargetTexture: {fileID: 0} 184 | m_TargetDisplay: 0 185 | m_TargetEye: 3 186 | m_HDR: 1 187 | m_AllowMSAA: 1 188 | m_ForceIntoRT: 0 189 | m_OcclusionCulling: 1 190 | m_StereoConvergence: 10 191 | m_StereoSeparation: 0.022 192 | m_StereoMirrorMode: 0 193 | --- !u!4 &46229384 194 | Transform: 195 | m_ObjectHideFlags: 0 196 | m_PrefabParentObject: {fileID: 0} 197 | m_PrefabInternal: {fileID: 0} 198 | m_GameObject: {fileID: 46229379} 199 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 200 | m_LocalPosition: {x: 0, y: 1, z: -10} 201 | m_LocalScale: {x: 1, y: 1, z: 1} 202 | m_Children: [] 203 | m_Father: {fileID: 0} 204 | m_RootOrder: 0 205 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 206 | --- !u!114 &46229385 207 | MonoBehaviour: 208 | m_ObjectHideFlags: 0 209 | m_PrefabParentObject: {fileID: 0} 210 | m_PrefabInternal: {fileID: 0} 211 | m_GameObject: {fileID: 46229379} 212 | m_Enabled: 1 213 | m_EditorHideFlags: 0 214 | m_Script: {fileID: 11500000, guid: d28f0e43015fd7d4e81f38c8566e6569, type: 3} 215 | m_Name: 216 | m_EditorClassIdentifier: 217 | --- !u!1 &166538124 218 | GameObject: 219 | m_ObjectHideFlags: 0 220 | m_PrefabParentObject: {fileID: 0} 221 | m_PrefabInternal: {fileID: 0} 222 | serializedVersion: 5 223 | m_Component: 224 | - component: {fileID: 166538126} 225 | - component: {fileID: 166538125} 226 | m_Layer: 0 227 | m_Name: Directional Light 228 | m_TagString: Untagged 229 | m_Icon: {fileID: 0} 230 | m_NavMeshLayer: 0 231 | m_StaticEditorFlags: 0 232 | m_IsActive: 1 233 | --- !u!108 &166538125 234 | Light: 235 | m_ObjectHideFlags: 0 236 | m_PrefabParentObject: {fileID: 0} 237 | m_PrefabInternal: {fileID: 0} 238 | m_GameObject: {fileID: 166538124} 239 | m_Enabled: 1 240 | serializedVersion: 8 241 | m_Type: 1 242 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 243 | m_Intensity: 1 244 | m_Range: 10 245 | m_SpotAngle: 30 246 | m_CookieSize: 10 247 | m_Shadows: 248 | m_Type: 2 249 | m_Resolution: -1 250 | m_CustomResolution: -1 251 | m_Strength: 1 252 | m_Bias: 0.05 253 | m_NormalBias: 0.4 254 | m_NearPlane: 0.2 255 | m_Cookie: {fileID: 0} 256 | m_DrawHalo: 0 257 | m_Flare: {fileID: 0} 258 | m_RenderMode: 0 259 | m_CullingMask: 260 | serializedVersion: 2 261 | m_Bits: 4294967295 262 | m_Lightmapping: 4 263 | m_AreaSize: {x: 1, y: 1} 264 | m_BounceIntensity: 1 265 | m_ColorTemperature: 6570 266 | m_UseColorTemperature: 0 267 | m_ShadowRadius: 0 268 | m_ShadowAngle: 0 269 | --- !u!4 &166538126 270 | Transform: 271 | m_ObjectHideFlags: 0 272 | m_PrefabParentObject: {fileID: 0} 273 | m_PrefabInternal: {fileID: 0} 274 | m_GameObject: {fileID: 166538124} 275 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 276 | m_LocalPosition: {x: 0, y: 3, z: 0} 277 | m_LocalScale: {x: 1, y: 1, z: 1} 278 | m_Children: [] 279 | m_Father: {fileID: 0} 280 | m_RootOrder: 1 281 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 282 | --- !u!1 &480104699 283 | GameObject: 284 | m_ObjectHideFlags: 0 285 | m_PrefabParentObject: {fileID: 0} 286 | m_PrefabInternal: {fileID: 0} 287 | serializedVersion: 5 288 | m_Component: 289 | - component: {fileID: 480104700} 290 | - component: {fileID: 480104701} 291 | m_Layer: 0 292 | m_Name: ThreadTest 293 | m_TagString: Untagged 294 | m_Icon: {fileID: 0} 295 | m_NavMeshLayer: 0 296 | m_StaticEditorFlags: 0 297 | m_IsActive: 1 298 | --- !u!4 &480104700 299 | Transform: 300 | m_ObjectHideFlags: 0 301 | m_PrefabParentObject: {fileID: 0} 302 | m_PrefabInternal: {fileID: 0} 303 | m_GameObject: {fileID: 480104699} 304 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 305 | m_LocalPosition: {x: 0, y: 0, z: 0} 306 | m_LocalScale: {x: 1, y: 1, z: 1} 307 | m_Children: [] 308 | m_Father: {fileID: 0} 309 | m_RootOrder: 2 310 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 311 | --- !u!114 &480104701 312 | MonoBehaviour: 313 | m_ObjectHideFlags: 0 314 | m_PrefabParentObject: {fileID: 0} 315 | m_PrefabInternal: {fileID: 0} 316 | m_GameObject: {fileID: 480104699} 317 | m_Enabled: 1 318 | m_EditorHideFlags: 0 319 | m_Script: {fileID: 11500000, guid: e3bb30cd00ff45842b78dd4f45e5e826, type: 3} 320 | m_Name: 321 | m_EditorClassIdentifier: 322 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Tasks.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 690ad4ceb594df74f9d03f5d3e9bd7aa 3 | timeCreated: 1494569082 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Tester.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityCore.Threading; 7 | using UnityEngine; 8 | 9 | 10 | namespace UnityCore.Demos 11 | { 12 | public interface ITester 13 | { 14 | void Test(); 15 | } 16 | /// 17 | /// This is a plain class, that doesn't have to know about coroutines, have 18 | /// iterators as return types of methods, and weaves back and forth between 19 | /// the main thread, and off again passive values. 20 | /// 21 | public class Tester : ITester 22 | { 23 | public void Test() 24 | { 25 | Debug.Log("NOTE: Check the source code of ThreadTestBehaviour in the Demo's folder for more information"); 26 | 27 | // We force initialise on classes that can be called from either the 28 | // editor or the player due to strange behaviours with threads in 29 | // the Unity Editor. 30 | 31 | // However, if this code is just for the player, call Initialise once in your 32 | // entire game lifecycle up front which ensures it knows the main thread context. 33 | UnityMainThreadDispatcher.ForceInitialise(); 34 | 35 | // First Task runs off the main thread 36 | Task.Factory.StartNew(() => 37 | { 38 | Debug.Log("Action off main thread."); 39 | }). 40 | ContinueWithOnMainThread(task => 41 | { 42 | Debug.Log("Action on main thread."); 43 | }). 44 | ContinueWith(task => 45 | { 46 | // Still off the main thread for some async 47 | // i.e. imagine we retrieved some json 48 | Debug.Log("Func off the main thread."); 49 | return "{answer: 42}"; 50 | }). 51 | ContinueWithOnMainThread(task => 52 | { 53 | 54 | // Now jumping with data back onto the main thread 55 | Debug.Log("Func, bool> on the main thread argument: " + task.Result); 56 | 57 | // And we can do main thread only tasks 58 | return Application.isEditor; 59 | 60 | }). 61 | ContinueWith(task => 62 | { 63 | // And voila, we now have the result from the main thread, 64 | // back off and can work async 65 | Debug.Log("Action> off the main thread with argument: " + task.Result); 66 | }); 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/Tester.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54f246b2c351efc47a21bb3cbc13b1e4 3 | timeCreated: 1505768420 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/ThreadTestBehaviour.cs: -------------------------------------------------------------------------------- 1 | using Castle.MicroKernel.Registration; 2 | using Castle.MicroKernel.SubSystems.Configuration; 3 | using Castle.Windsor; 4 | using System; 5 | using System.Collections; 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using System.Net; 9 | using System.Threading; 10 | using System.Threading.Tasks; 11 | using UnityCore.Threading; 12 | using UnityEditor; 13 | using UnityEngine; 14 | 15 | namespace UnityCore.Demos 16 | { 17 | public class ThreadTestBehaviour : MonoBehaviour { 18 | private IWindsorContainer _container; 19 | private ITester _tester; 20 | // Use this for initialization 21 | void Start() 22 | { 23 | _container = new WindsorContainer().Install(new ContainerInstaller()); 24 | 25 | _tester = _container.Resolve(); 26 | 27 | _tester.Test(); 28 | } 29 | 30 | // Update is called once per frame 31 | void Update() { 32 | 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Demos/ThreadTestBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3bb30cd00ff45842b78dd4f45e5e826 3 | timeCreated: 1499649024 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 141015b6a2600594e82905cdc693fea8 3 | folderAsset: yes 4 | timeCreated: 1494122920 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e34de1f16de025d43bd441ef1ec50a5f 3 | folderAsset: yes 4 | timeCreated: 1499877343 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SelfInstantiatingSingletonBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using UnityEngine; 6 | namespace UnityCore 7 | { 8 | public class SelfInstantiatingSingletonBehaviour : SingletonBehaviour where T : SmartBehaviour 9 | { 10 | public new static T Instance 11 | { 12 | get 13 | { 14 | if (_instance == null) 15 | { 16 | // This is the first instance 17 | var obj = new GameObject(typeof(T).Name); 18 | obj.AddComponent(); 19 | } 20 | return (T)_instance; 21 | } 22 | } 23 | 24 | public new void Awake() 25 | { 26 | if (_instance == null) 27 | { 28 | _instance = this; 29 | } 30 | else 31 | { 32 | // Log an error so developers can clean up their code 33 | Debug.LogFormat(TEXT_SINGLETON_EXISTS_ERROR, this.GetType().Name); 34 | 35 | // Destroy the entire game object this behaviour is attached to 36 | GameObject.Destroy(this.gameObject); 37 | } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SelfInstantiatingSingletonBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f9a4aa22c815ac4fa323f9ee82bb5fc 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Singleton.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | namespace UnityCore 5 | { 6 | public class Singleton where T : new() 7 | { 8 | private static T _instance; 9 | 10 | public static T Instance 11 | { 12 | get 13 | { 14 | if (_instance == null) 15 | { 16 | _instance = new T(); 17 | } 18 | return _instance; 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Singleton.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2724a18e15376b34d9dccc0b45173825 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SingletonBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace UnityCore 6 | { 7 | /// 8 | /// The SingletonBehaviour ensures that 9 | /// there is only ever a single copy of an inheriting behaviour, that in turn allows Singleton like 10 | /// interactions i.e Singleton.Instance. It will dstroy any GameObject with subsequent behaviours of 11 | /// the same type. Note this is not just deleting the singleton behaviour to stop GameObject leaks. 12 | /// 13 | /// It will also log an error when a duplicate Singleton Behaviour is created 14 | /// so you can clean up your project. 15 | /// 16 | /// Inherits from SmartBehaviour because everything should, even singletons. 17 | /// 18 | public class SingletonBehaviour : SmartBehaviour where T : SmartBehaviour 19 | { 20 | protected const string TEXT_SINGLETON_EXISTS_ERROR = "Singleton '{0}' is already created. Destroying the object."; 21 | protected static SmartBehaviour _instance; 22 | 23 | public static T Instance 24 | { 25 | get 26 | { 27 | return (T)_instance; 28 | } 29 | } 30 | 31 | public void Awake() 32 | { 33 | if (_instance == null) 34 | { 35 | // This is the first instance of the behaviour 36 | _instance = this; 37 | } 38 | else 39 | { 40 | // Log an error so developers can clean up their code 41 | Debug.LogFormat(TEXT_SINGLETON_EXISTS_ERROR, this.GetType().Name); 42 | 43 | // Destroy the entire game object this behaviour is attached to 44 | GameObject.Destroy(this.gameObject); 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SingletonBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d94f832c8e5db494bac69b928508f507 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SmartBehaviour.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace UnityCore 6 | { 7 | /// 8 | /// Behaviour that wraps all the bits that have heavy 9 | /// performace overhead with common 'getComponent' calls. 10 | /// 11 | /// Why 'Smart'behaviour? Because seriously. 12 | /// 13 | /// NOTE: Feel free to add common accessors, generally which relate 14 | /// to those that have been deprecated for .GetComponent which assumed 15 | /// a single instance i.e transform, renderer, rigidbody etc 16 | /// 17 | public class SmartBehaviour : MonoBehaviour 18 | { 19 | 20 | private Transform _transform; 21 | 22 | public Transform _Transform 23 | { 24 | get 25 | { 26 | if (_transform == null) 27 | { 28 | _transform = this.transform; 29 | } 30 | return _transform; 31 | } 32 | } 33 | 34 | private Renderer _renderer; 35 | 36 | public Renderer _Renderer 37 | { 38 | get 39 | { 40 | if (_renderer == null) 41 | { 42 | _renderer = this.GetComponent(); 43 | } 44 | return _renderer; 45 | } 46 | } 47 | 48 | private Rigidbody _rigidBody; 49 | 50 | public Rigidbody _RigidBody 51 | { 52 | get 53 | { 54 | if (_rigidBody == null) 55 | { 56 | _rigidBody = this.GetComponent(); 57 | } 58 | return _rigidBody; 59 | } 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/SmartBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12dd1a69874dbe740b48b1da6295b9d7 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdae7b423a3ee204d9fe60496e69a902 3 | folderAsset: yes 4 | timeCreated: 1499679471 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/IUnityMainThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace UnityCore.Threading 5 | { 6 | public interface IUnityMainThreadDispatcher 7 | { 8 | /// 9 | /// Locks the queue and adds the Action to the queue 10 | /// 11 | /// function that will be executed from the main thread. 12 | Task Enqueue(Action action); 13 | Task Enqueue(Func func); 14 | 15 | //Func, TResult> Enqueue(Func func); 16 | } 17 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/IUnityMainThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96cf7403554d89649b61b5ca246c7318 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/TaskExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | /// 11 | /// These extensions are for the Task.Parallel library for .Net 3.5. It adds main thread 12 | /// support independent of running in the editor or in the player. 13 | /// 14 | public static class TaskExtensions 15 | { 16 | // Input void, output void 17 | public static Task ContinueWithOnMainThread(this Task task, Action action) 18 | { 19 | return task.ContinueWith(t => 20 | { 21 | HandToMainThreadAndWait(task, action); 22 | }); 23 | } 24 | 25 | // Input void, output result 26 | public static Task ContinueWithOnMainThread(this Task task, Func continuationFunction) 27 | { 28 | return task.ContinueWith(t => 29 | { 30 | return HandToMainThreadAndWait(task, continuationFunction); 31 | }); 32 | } 33 | 34 | // Input value, output result 35 | public static Task ContinueWithOnMainThread(this Task task, Func, TResult> continuationFunction) 36 | { 37 | return task.ContinueWith( t=> 38 | { 39 | return HandToMainThreadAndWait(task, continuationFunction); 40 | }); 41 | } 42 | 43 | // Has result, takes nothing 44 | private static TResult HandToMainThreadAndWait(Task task, Func func) 45 | { 46 | return HandToThreadAndWait(task, func, UnityMainThreadDispatcher.Instance); 47 | } 48 | 49 | private static TResult HandToMainThreadAndWait(Task task, Func, TResult> func) 50 | { 51 | return HandToThreadAndWait(task, func, UnityMainThreadDispatcher.Instance); 52 | } 53 | 54 | private static void HandToMainThreadAndWait(Task task, Action> action) 55 | { 56 | HandToThreadAndWait(task, action, UnityMainThreadDispatcher.Instance); 57 | } 58 | 59 | private static void HandToMainThreadAndWait(Task task, Action action) 60 | { 61 | HandToThreadAndWait(task, action, UnityMainThreadDispatcher.Instance); 62 | } 63 | 64 | private static TResult HandToThreadAndWait(Task task, Func func, IUnityMainThreadDispatcher dispatcher) 65 | { 66 | var t = dispatcher.Enqueue(() => func.Invoke(task)); 67 | t.Wait(); 68 | return t.Result; 69 | } 70 | 71 | private static TResult HandToThreadAndWait(Task task, Func, TResult> func, IUnityMainThreadDispatcher dispatcher) 72 | { 73 | var t = dispatcher.Enqueue(() => func.Invoke(task)); 74 | t.Wait(); 75 | return t.Result; 76 | } 77 | 78 | /// 79 | /// General methods 80 | /// 81 | /// The previous task 82 | /// The action to perform 83 | /// The Unity Dispatcher to run with 84 | public static void HandToThreadAndWait(Task task, Action action, IUnityMainThreadDispatcher dispatcher) 85 | { 86 | var t = dispatcher.Enqueue(() => action(task)); 87 | t.Wait(); 88 | } 89 | 90 | public static void HandToThreadAndWait(Task task, Action> action, IUnityMainThreadDispatcher dispatcher) 91 | { 92 | var t = dispatcher.Enqueue(() => action(task)); 93 | t.Wait(); 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/TaskExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ae2dcfbc63d3c841998ebdf81d93db6 3 | timeCreated: 1499679472 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/ThreadHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | public static class UnityThreadHelper 11 | { 12 | public static void Update(Queue _executionQueue) 13 | { 14 | lock (_executionQueue) 15 | { 16 | while (_executionQueue.Count > 0) 17 | { 18 | _executionQueue.Dequeue().Invoke(); 19 | } 20 | } 21 | } 22 | 23 | public static Task Enqueue(Queue _executionQueue, Action action) 24 | { 25 | lock (_executionQueue) 26 | { 27 | var task = new Task(action); 28 | _executionQueue.Enqueue(() => 29 | { 30 | task.RunSynchronously(); 31 | }); 32 | return task; 33 | } 34 | } 35 | 36 | public static Task Enqueue(Queue _executionQueue, Func func) 37 | { 38 | lock (_executionQueue) 39 | { 40 | var task = new Task(func); 41 | _executionQueue.Enqueue(() => 42 | { 43 | task.RunSynchronously(); 44 | }); 45 | return task; 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/ThreadHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 794764c0f52de4e4681cd26a4c7fbec9 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityEditorThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using UnityEditor; 9 | using UnityEngine; 10 | 11 | namespace UnityCore.Threading 12 | { 13 | public class UnityEditorThreadDispatcher : Singleton, IUnityMainThreadDispatcher 14 | { 15 | private static readonly Queue _executionQueue = new Queue(); 16 | 17 | public UnityEditorThreadDispatcher() 18 | { 19 | EditorApplication.update += Update; 20 | } 21 | public void Update() 22 | { 23 | UnityThreadHelper.Update(_executionQueue); 24 | } 25 | public Task Enqueue(Action action) 26 | { 27 | return UnityThreadHelper.Enqueue(_executionQueue, action); 28 | } 29 | 30 | public Task Enqueue(Func func) 31 | { 32 | return UnityThreadHelper.Enqueue(_executionQueue, func); 33 | } 34 | } 35 | } 36 | 37 | #endif -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityEditorThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b5a6e6b4e994274bad2e75b9b01eb5a 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityGameThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using UnityEngine; 7 | 8 | namespace UnityCore.Threading 9 | { 10 | /// 11 | /// This thread dispatcher is for the main thread in game. 12 | /// 13 | public class UnityGameThreadDispatcher : SelfInstantiatingSingletonBehaviour, IUnityMainThreadDispatcher 14 | { 15 | private static readonly Queue _executionQueue = new Queue(); 16 | 17 | public void Update() 18 | { 19 | UnityThreadHelper.Update(_executionQueue); 20 | } 21 | public Task Enqueue(Action action) 22 | { 23 | return UnityThreadHelper.Enqueue(_executionQueue, action); 24 | } 25 | public Task Enqueue(Func func) 26 | { 27 | return UnityThreadHelper.Enqueue(_executionQueue, func); 28 | } 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityGameThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e3cdf8c4ff5ab64cac1e3e95428cb02 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityMainThreadDispatcher.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2015 Pim de Witte All Rights Reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | using UnityEngine; 18 | using System.Collections; 19 | using System.Collections.Generic; 20 | using System; 21 | using UnityEditor; 22 | using System.Threading.Tasks; 23 | using System.Threading; 24 | 25 | namespace UnityCore.Threading 26 | { 27 | public class UnityMainThreadDispatcher 28 | { 29 | private static IUnityMainThreadDispatcher _instance; 30 | 31 | public static void Initialise() 32 | { 33 | if (_instance == null) 34 | { 35 | _instance = Current(); 36 | } 37 | } 38 | 39 | public static void ForceInitialise() 40 | { 41 | _instance = Current(); 42 | } 43 | public static IUnityMainThreadDispatcher Current() 44 | { 45 | IUnityMainThreadDispatcher dispatcher = null; 46 | try 47 | { 48 | // NOTE: This causes strange behaviour when you do async from the editor while the 49 | // game is playing. What happens is the editor async calls end up hooking 50 | // the main game loop. Any ideas, let me know how you can find out if you are on 51 | // the Game thread, or the Editor thread. 52 | 53 | #if UNITY_EDITOR 54 | // There is an issue here, that being if code is being ran 55 | // in the editor UI and in the player, you can end up with editor UI 56 | // code running on the player thread. It's backwards. 57 | // Not sure how to avoid this for now. 58 | if (!Application.isEditor || Application.isPlaying) 59 | { 60 | dispatcher = UnityGameThreadDispatcher.Instance; 61 | } 62 | else 63 | { 64 | dispatcher = UnityEditorThreadDispatcher.Instance; 65 | } 66 | #else 67 | dispatcher = UnityGameThreadDispatcher.Instance; 68 | #endif 69 | } 70 | catch (Exception e) 71 | { 72 | Debug.LogError("UnityMainThreadDispatcher.Initialise() must be called from the main thread prior to dispatching back to the main thread."); 73 | Debug.LogError(e.StackTrace); 74 | } 75 | return dispatcher; 76 | } 77 | 78 | public static IUnityMainThreadDispatcher Instance 79 | { 80 | get 81 | { 82 | if (_instance == null) 83 | { 84 | Initialise(); 85 | } 86 | return _instance; 87 | } 88 | } 89 | } 90 | } -------------------------------------------------------------------------------- /UnityCoreProject/Assets/Scripts/UnityCore/Threading/UnityMainThreadDispatcher.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a7c8a11b4915ab4ea3e26843fac0e98 3 | timeCreated: 1499679471 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bbd7102fe8f772b4d90d5a4baeec77da 3 | folderAsset: yes 4 | timeCreated: 1499155579 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e94808e866ac3cf4a9a322bd00c53abe 3 | folderAsset: yes 4 | timeCreated: 1505770327 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/Castle.Core.2.5.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Core.2.5.2/Castle.Core.2.5.2.nupkg -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/Castle.Core.2.5.2.nupkg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 442433f4ee1e36d43bab381fedee8ff7 3 | timeCreated: 1505770327 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0f5554f75578d14eb86c2d172a8b1fe 3 | folderAsset: yes 4 | timeCreated: 1505770328 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/ASL - Apache Software Foundation License.txt: -------------------------------------------------------------------------------- 1 | Apache License, Version 2.0 2 | 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 7 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 8 | 9 | 1. Definitions. 10 | 11 | "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 16 | 17 | "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. 18 | 19 | "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. 20 | 21 | "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. 22 | 23 | "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). 24 | 25 | "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. 26 | 27 | "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." 28 | 29 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 30 | 31 | 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 32 | 33 | 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 34 | 35 | 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 36 | 37 | 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 38 | 39 | 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 40 | 41 | 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 42 | 43 | 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 44 | 45 | You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 46 | 47 | 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 48 | 49 | 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 50 | 51 | 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 52 | 53 | 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 54 | 55 | 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. 56 | 57 | END OF TERMS AND CONDITIONS 58 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/ASL - Apache Software Foundation License.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 234d5429cfea87c4ab37a9c5e05f4fd4 3 | timeCreated: 1505770333 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/BreakingChanges.txt: -------------------------------------------------------------------------------- 1 | ================================================================================================ 2 | change - Removed WebLogger and WebLoggerFactory 3 | 4 | impact - low 5 | fixability - medium 6 | revision - 7 | 8 | description - To minimize management overhead the classes were removed so that only single 9 | Client Profile version of Castle.Core can be distributed. 10 | 11 | fix - You can use NLog or Log4Net web logger integration, or reuse implementation of existing 12 | web logger and use it as a custom logger. 13 | 14 | ================================================================================================ 15 | change - Removed obsolete overload of ProxyGenerator.CreateClassProxy 16 | 17 | impact - low 18 | fixability - trivial 19 | revision - 20 | 21 | description - Deprecated overload of ProxyGenerator.CreateClassProxy was removed to keep the 22 | method consistent with other methods and to remove confusion 23 | 24 | fix - whenever removed overload was used, use one of the other overloads. 25 | 26 | ================================================================================================ 27 | change - IProxyGenerationHook.NonVirtualMemberNotification method was renamed 28 | 29 | impact - high 30 | fixability - easy 31 | revision - 32 | 33 | description - to accommodate class proxies with target method NonVirtualMemberNotification on 34 | IProxyGenerationHook type was renamed to more accurate NonProxyableMemberNotification 35 | since for class proxies with target not just methods but also fields and other member that 36 | break the abstraction will be passed to this method. 37 | 38 | fix - whenever NonVirtualMemberNotification is used/implemented change the method name to 39 | NonProxyableMemberNotification. Implementors should also accommodate possibility that not 40 | only MethodInfos will be passed as method's second parameter. 41 | 42 | ================================================================================================ 43 | change - DynamicProxy will now allow to intercept members of System.Object 44 | 45 | impact - very low 46 | fixability - easy 47 | revision - 48 | 49 | description - to allow scenarios like mocking of System.Object members, DynamicProxy will not 50 | disallow proxying of these methods anymore. AllMethodsHook (default IProxyGenerationHook) 51 | will still filter them out though. 52 | 53 | fix - whenever custom IProxyGenerationHook is used, user should account for System.Object's 54 | members being now passed to ShouldInterceptMethod and NonVirtualMemberNotification methods 55 | and if neccessary update the code to handle them appropriately. -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/BreakingChanges.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34190c44b8e644748907bfc2d0d151f4 3 | timeCreated: 1505770333 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Changes.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Changes.txt -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Changes.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5684d12e333e0534f8b7d3cdface3c32 3 | timeCreated: 1505770333 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Committers.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Committers.txt -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/Committers.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1b2161bc774abd48bdd8250b3802af0 3 | timeCreated: 1505770334 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/NET35.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 075bbe53f90aba3409ce9dcf23aa84cb 3 | folderAsset: yes 4 | timeCreated: 1505770328 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/NET35/Castle.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/NET35/Castle.Core.dll -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/NET35/Castle.Core.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75855eabe4817f34da6d116838e4480e 3 | timeCreated: 1505770330 4 | licenseType: Free 5 | PluginImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | iconMap: {} 9 | executionOrder: {} 10 | isPreloaded: 0 11 | isOverridable: 0 12 | platformData: 13 | - first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | - first: 19 | Editor: Editor 20 | second: 21 | enabled: 0 22 | settings: 23 | DefaultValueInitialized: true 24 | - first: 25 | Windows Store Apps: WindowsStoreApps 26 | second: 27 | enabled: 0 28 | settings: 29 | CPU: AnyCPU 30 | userData: 31 | assetBundleName: 32 | assetBundleVariant: 33 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/NET35/Castle.Core.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9dce42e8534a4c4e95bec3ecae49591 3 | timeCreated: 1505770334 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/releaseNotes.txt: -------------------------------------------------------------------------------- 1 | You can find full list of changes in changes.txt, list of breaking changes in breakingchanges.txt (there are no known breaking changes between 2.5.1 and 2.5.2 release). 2 | 3 | Issue tracker: - http://issues.castleproject.org/dashboard 4 | Documentation (work in progress): 5 | Dictionary Adapter - http://stw.castleproject.org/Tools.Castle-DictionaryAdapter.ashx 6 | DynamicProxy - http://stw.castleproject.org/Tools.DynamicProxy.ashx 7 | Discusssion group: - http://groups.google.com/group/castle-project-users 8 | StackOverflow tags: - castle-dynamicproxy, castle-dictionaryadapter, castle -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Core.2.5.2/lib/releaseNotes.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a5f9df39f253d03408adae3e0915ff4f 3 | timeCreated: 1505770334 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ca5e15dc16e8a345b173812878a093d 3 | folderAsset: yes 4 | timeCreated: 1500581525 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/Castle.Windsor.2.5.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/Castle.Windsor.2.5.4.nupkg -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/Castle.Windsor.2.5.4.nupkg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f5dbc3883cacc9a4a8c62af5ec6cb8b6 3 | timeCreated: 1500581525 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f88d3b53f8dd24845aed8f011622387e 3 | folderAsset: yes 4 | timeCreated: 1500581525 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/ASL - Apache Software Foundation License.txt: -------------------------------------------------------------------------------- 1 | Apache License, Version 2.0 2 | 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 7 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 8 | 9 | 1. Definitions. 10 | 11 | "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 16 | 17 | "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. 18 | 19 | "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. 20 | 21 | "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. 22 | 23 | "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). 24 | 25 | "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. 26 | 27 | "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." 28 | 29 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 30 | 31 | 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 32 | 33 | 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 34 | 35 | 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: 36 | 37 | 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and 38 | 39 | 2. You must cause any modified files to carry prominent notices stating that You changed the files; and 40 | 41 | 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 42 | 43 | 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 44 | 45 | You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 46 | 47 | 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 48 | 49 | 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 50 | 51 | 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 52 | 53 | 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 54 | 55 | 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. 56 | 57 | END OF TERMS AND CONDITIONS 58 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/ASL - Apache Software Foundation License.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f61a42ee68d6c194eabd65374eb60b6c 3 | timeCreated: 1500581532 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/BreakingChanges.txt: -------------------------------------------------------------------------------- 1 | ================================================================================================ 2 | release 2.5.2 ================================================================================== 3 | ================================================================================================ 4 | change - One of CreationContext constructors has now additional argument; parent CreationContext 5 | Method public IDisposable ParentResolutionContext(...) on CreationContext was removed 6 | Method protected CreationContext CreateCreationContext(...) has now additional argument; 7 | parent CreationContext 8 | 9 | impact - low 10 | fixability - medium 11 | revision - 12 | 13 | description - To fix issue with false positive cycle detection (see issue IOC-238) changes had 14 | to be made to how parent creation context gets propagated in certain situation (when call 15 | to kernel.Resolve/ResolveAll is performed as part of resolution process, for example when 16 | CollectionResolver is being used). 17 | 18 | fix - If you override CreateCreationContext method on DefaultKernel pass the additional argument 19 | as new constructor parameter to CreationContext. 20 | If you were using ParentResolutionContext method it should be fairly safe to remove the call 21 | if it was preceded by call to updated CreationContext constructor and the CreationContext is 22 | not used outside of local scope. In other cases it's best to consult Castle users group for 23 | advice on how to proceed. 24 | ================================================================================================ 25 | change - IReference<> interface has two new methods 26 | 27 | impact - low 28 | fixability - easy 29 | revision - 30 | 31 | description - To make it possible to statically analyze dynamic dependencies provided by 32 | the IReference interface two new methods were added: 33 | void Attach(DependencyModelCollection dependencies); 34 | void Detach(DependencyModelCollection dependencies); 35 | 36 | fix - if you're providing dependencies on a component from the container call Attach so that 37 | reference gets a chance to create and add DependencyModel for that dependency so that 38 | it can be statically analyzed by the container. 39 | ================================================================================================ 40 | change - Method IDependencyResolver.Initialize change signature 41 | 42 | impact - low 43 | fixability - easy 44 | revision - 45 | 46 | description - To make it possible to use custom DependencyResolver inheriting from 47 | DefaultDependencyResolver initialization of DefaultDependencyResolver was moved out of its 48 | constructor and to IDependencyResolver.Initialize method which now takes IKernel as its 49 | additional parameter 50 | 51 | fix - if you're implementing the interface adjust signature of the overriding method to 52 | public void Initialize(IKernel kernel, DependencyDelegate dependencyDelegate) 53 | The method is called by the kernel at the end of its constructor. 54 | ================================================================================================ 55 | change - Changed visibility of members on AbstractFacility to protected and implementation of 56 | interface members to explicit. 57 | 58 | impact - low 59 | fixability - easy 60 | revision - 61 | 62 | description - To make it less confusing to users when fluently configuring facilities (via 63 | AddFacility(f => f.ConfigureSomething()) method) visibility of certain members 64 | of AbstractFacility class was changed. Public properties FacilityConfig and Kernel are now 65 | protected, and all methods from IFacility interface are implemented explicitly. Additionally 66 | protected Dispose method was introduced to allow inheriting classes to still be disposed. 67 | 68 | fix - If you were using FacilityConfig and/or Kernel properties outside of inherited classes 69 | refactor your code accordingly not to do so. If you were overriding Dispose method change 70 | its signature from 71 | public override void Dispose() to 72 | protected override void Dispose() 73 | ================================================================================================ 74 | release 2.5.1 ================================================================================== 75 | ================================================================================================ 76 | change - ILazyComponentLoader.Load now accepts a third argument for additional arguments. 77 | 78 | impact - medium 79 | fixability - easy 80 | revision - 81 | 82 | description - To allow maximum flexibility and usage with Resolve, any additional arguments 83 | are now passed to the lazy loader. 84 | ================================================================================================ 85 | change - LifecycleStepCollection class was removed. Instaed LifecycleConcernsCollection class 86 | was introduced. ILifecycleConcern has now two innerited interfaces for commission and 87 | decommission. LifecycleSteps property of ComponentModel was renamed to Lifecycle. 88 | LifecycleStepType type was removed. 89 | 90 | impact - medium 91 | fixability - easy 92 | revision - 93 | 94 | description - To improve strongly typed nature and decrease probability of mistake and improve 95 | general usability of the type LifecycleStepCollection was removed. In it place similar type 96 | was introduced - LifecycleConcernsCollection. Instead of using untyped Objects and enums 97 | it works with two new interfaces : ICommissionConcern and IDecommissionConcern. 98 | 99 | fix - have your lifecycle steps implement one of the new lifecycle interfaces. Use appropriate 100 | overload of Add/AddFirst to add them. 101 | ================================================================================================ 102 | change - Typed Factories will not implicitly pick default ITypedFactoryComponentSelector 103 | registered in the container anymore 104 | 105 | impact - low 106 | fixability - easy 107 | revision - 108 | 109 | description - In version 2.1 where ITypedFactoryComponentSelectors were introduced, when you had 110 | a selector registered in the container that selector would be implicitly picked for every 111 | factory you had. Since the behavior of a selector tends to be fine grained and targetet for 112 | a specific factories, this behavior was removed. You have to explicitly associate the selector 113 | with a factory (using .AsFactory(f => f.SelectUsing("MySelector")); or via xml configuration) 114 | to override selection behavior. 115 | 116 | fix - using either fluent API .AsFactory(f => f.SelectUsing("MySelector")), or XML configuration 117 | selector="${MySelector}" specify the selector explicitly for each of your factories. 118 | ================================================================================================ 119 | change - ServiceSelector delegate (used in WithService.Select calls) changed signature 120 | 121 | impact - low 122 | fixability - easy 123 | revision - 124 | 125 | description - To fix a bug which would occur if type implemented multiple closed version of base 126 | open generic interface the signature of the delegate was changed from 127 | public delegate IEnumerable ServiceSelector(Type type, Type baseType); 128 | to 129 | public delegate IEnumerable ServiceSelector(Type type, Type[] baseTypes); 130 | so that multiple base types are possible (they would be closed versions of the same open 131 | generic interface) 132 | 133 | fix - depending on the scenario. You would either ignore it, or wrap your current method's body 134 | in foreach(var baseType in baseTypes) 135 | ================================================================================================ 136 | change - moved IWindsorInstaller to Castle.MicroKernel.Registration namespace 137 | 138 | impact - very low 139 | fixability - easy 140 | revision - 141 | 142 | description -In order to improve developer experience when writing installers the interface 143 | was moved so that Component and AllTypes entry types for registration are already in scope. 144 | 145 | fix - add using Castle.MicroKernel.Registration directive. 146 | ================================================================================================ 147 | change - Added two new overloads to ITypeConverter.PerformConversion 148 | 149 | impact - very low 150 | fixability - easy 151 | revision - 152 | 153 | description - To reduce casting in the most common scenario where converted value is casted to 154 | the type it's been converted to, ITypeConverter.PerformConversion has now generic overloads 155 | for handling this case. 156 | 157 | fix - If you're implementing ITypeConverter via AbstractTypeConverter you don't have to do 158 | anything as the base class will handle the conversion for you. Otherwise implement it like 159 | in AbstractTypeConverter. 160 | 161 | ================================================================================================ 162 | change - AddCustomComponent method were moved from IKernel to IKernelInternal interface 163 | 164 | impact - very low 165 | fixability - easy 166 | revision - 167 | 168 | description - This method constitute internally used contract of kernel and is not intended 169 | for external usage. As such it was moved to internal interface to declutter public 170 | interface of IKernel. 171 | 172 | fix - You should not have been using this method so it should not affect you in any way. If 173 | you did, cast the IKernel to IKernelInternal to invoke the method. 174 | 175 | ================================================================================================ 176 | change - IModelInterceptorsSelector.SelectInterceptors method changed its signature and how it 177 | is used. 178 | 179 | impact - medium 180 | fixability - medium 181 | revision - 182 | 183 | description - To accomodate additional scenarios that were impossible (or hard to achieve 184 | with previous design the method now has additional parameter, an array of references to 185 | interceptors, which contains either default interceptors for the component, or interceptors 186 | selected by previous interceptors in line). Also, Windsor will now never call 187 | IModelInterceptorsSelector.SelectInterceptors without calling 188 | IModelInterceptorsSelector.HasInterceptors before it, or when the latter returns false. 189 | 190 | fix - When adjusting your implementation remember that model's interceptors are the default value 191 | passed as methods second parameter, so you don't need to merge them again manually (otherwise 192 | they'll be invoked twice). 193 | 194 | ================================================================================================ 195 | change - CreateComponentActivator, RaiseHandlerRegistered, RaiseHandlersChanged and 196 | RegisterHandlerForwarding methods were moved from IKernel to IKernelInternal interface 197 | 198 | impact - very low 199 | fixability - easy 200 | revision - 201 | 202 | description - These methods constitute internally used contract of kernel and are not intended 203 | for external usage. As such they were moved to internal interface to declutter public 204 | interface of IKernel. 205 | 206 | fix - You should not have been using these methods so it should not affect you in any way. If 207 | you did, cast the IKernel to IKernelInternal to invoke the methods. 208 | 209 | ================================================================================================ 210 | change - IProxyHook interface was removed 211 | 212 | impact - very low 213 | fixability - easy 214 | revision - 215 | 216 | description - Since MicroKernel was merged with Windsor and now depends on DynamicProxy directly 217 | there's no need to provide additional abstraction on top of IProxyGenerationHook. 218 | 219 | fix - Make types that were implementing IProxyHook to implement IProxyGenerationHook. Change all 220 | usages of IProxyHook to IProxyGenerationHook. 221 | 222 | ================================================================================================ 223 | change - AddInstallerConfiguration and GetComponents methods were added to IConfigurationStore. 224 | 225 | impact - very low 226 | fixability - easy 227 | revision - 3bf716cc6fc218601dab92a6dd75fe269bcb63d0 228 | 229 | description - To enable installers to be exposed via configuration the interface has been 230 | extended by addition of the two methods. 231 | 232 | fix - Implement the methods accordingly to your situation. 233 | 234 | ================================================================================================ 235 | change - Multiple types were moved between namespaces 236 | 237 | impact - low 238 | fixability - trivial 239 | revision - 3bf716cc6fc218601dab92a6dd75fe269bcb63d0 240 | 241 | description - To improve the internal structure several types were moved to other namespaces. 242 | 243 | fix - When compilation error occurs adjust namespace imports as suggested by Visual Studio 244 | 245 | ================================================================================================ 246 | change - Assembly Castle.MicroKernel.dll was merged into Castle.Windsor.dll 247 | 248 | impact - high 249 | fixability - easy 250 | revision - 730b202b0ed23a6b42258a6ffd6a3e63f89501fc 251 | 252 | description - Since vast majority of users used Windsor, as opposed to bare MicroKernel it was 253 | decided it didn't make sense to maintain two containers. As result of that their assemblies 254 | were merged, as first step of integration between Windsor and MicroKernel. 255 | 256 | fix - In your projects remove reference to Castle.MicroKernel.dll. If you weren't using Windsor 257 | add reference to Castle.Windsor.dll 258 | In all places where your were referencing types from Castle.MicroKernel.dll via string 259 | (like xml configuration when registering facilities, or section on your 260 | web.config) update references from Castle.MicroKernel to Castle.Windsor. 261 | 262 | ================================================================================================ 263 | change - ComponentRegistration.Startable public method has been removed. 264 | ComponentRegistration.StartUsingMethod public method was moved to extension method. 265 | ComponentRegistration.StopUsingMethod public method was moved to extension method. 266 | 267 | impact - low 268 | fixability - trivial 269 | revision - 6710 270 | 271 | description - StartUsingMethod/StopUsingMethod belong to StartableFacility and do not make sense 272 | as part of generic API. Startable method was superfluous. 273 | 274 | fix - Remove calls to Startable(). Import namespace Castle.Facilities.Startable to use 275 | StartUsingMethod and StopUsingMethod as extension methods. 276 | 277 | ================================================================================================ 278 | change - DefaultProxyFactory.CreateProxyGenerationOptionsFrom protected method and 279 | DefaultProxyFactory.CustomizeProxy protected virtual method have changed signature 280 | 281 | impact - very low 282 | fixability - easy 283 | revision - 6691 284 | 285 | description - the methods now also takes IKernel and CreationContext, to be used by IReferences 286 | to do resolution of components they reference 287 | 288 | fix - pass required parameters to the methods. 289 | 290 | ================================================================================================ 291 | change - ProxyOption's properties changed types: 292 | Selector, from IInterceptorSelector to IReference 293 | Hook from IProxyHook to IReference 294 | MixIns from object[] to IEnumerable> 295 | 296 | impact - very low 297 | fixability - easy 298 | revision - 6691 299 | 300 | description - the properties now use IReferences instead of live objects to allow for 301 | resolution of their values from the container, as required in case of usage from xml. 302 | 303 | fix - wherever used, adjust types appropriately. To obtain actual objects, use Resolve method. 304 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/BreakingChanges.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ad520e19e0720d479ecd59f8c70bdee 3 | timeCreated: 1500581531 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Changes.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Changes.txt -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Changes.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d780d75d32c613f458a7067c8d37e30c 3 | timeCreated: 1500581531 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Committers.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Committers.txt -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/Committers.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4dd2b6eb89fa97c4caa4c500e6fca3c3 3 | timeCreated: 1500581531 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d87e43a86dbb6564c8257430caf9dcc8 3 | folderAsset: yes 4 | timeCreated: 1500581526 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll.mdb -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll.mdb.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ce69a6b54ca76140b090cb8ace69487 3 | timeCreated: 1500581535 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2ddc77731e14dc42a6eaee5b53f60de 3 | timeCreated: 1500581528 4 | licenseType: Free 5 | PluginImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | iconMap: {} 9 | executionOrder: {} 10 | isPreloaded: 0 11 | isOverridable: 0 12 | platformData: 13 | - first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | - first: 19 | Editor: Editor 20 | second: 21 | enabled: 0 22 | settings: 23 | DefaultValueInitialized: true 24 | - first: 25 | Windows Store Apps: WindowsStoreApps 26 | second: 27 | enabled: 0 28 | settings: 29 | CPU: AnyCPU 30 | userData: 31 | assetBundleName: 32 | assetBundleVariant: 33 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.pdb.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ec986297c42166459ee5b0896553765 3 | timeCreated: 1500581526 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/net35/Castle.Windsor.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dea8bb23e0ea2f84f9568e51990805d0 3 | timeCreated: 1500581532 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/releaseNotes.txt: -------------------------------------------------------------------------------- 1 | You can find full list of changes in changes.txt, list of breaking changes in breakingchanges.txt. 2 | 3 | Online release notes: http://stw.castleproject.org/Windsor.Windsor_25_release_notes.ashx 4 | Documentation: http://stw.castleproject.org/Windsor.MainPage.ashx 5 | Samples: http://stw.castleproject.org/Windsor.MainPage.ashx?#Samples_8 6 | Issue tracker: http://issues.castleproject.org/dashboard 7 | Discusssion group: http://groups.google.com/group/castle-project-users 8 | StackOverflow tags: castle-windsor, castle -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/Castle.Windsor.2.5.4/lib/releaseNotes.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a3755fcb7bfbf14b920dbe70f40c86e 3 | timeCreated: 1500581531 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 536689dabd1a9f94295cfabd5c6eb681 3 | folderAsset: yes 4 | timeCreated: 1499676328 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/TaskParallelLibrary.1.0.2856.0.nupkg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01fa4dab2ebc79f4d80f106f000963e0 3 | timeCreated: 1499676328 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8a0e3dd260fa644b8d186fdaad03410 3 | folderAsset: yes 4 | timeCreated: 1499676329 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f6633fbc59835244a0e64383fc8557b 3 | folderAsset: yes 4 | timeCreated: 1499676329 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.chm.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71ff3eeb4a8f1504ab3449bcac6fd262 3 | timeCreated: 1499676329 4 | licenseType: Free 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vaughanknight/UnityCore/64af4c1ced1ad58039dede8c410c44bdf306e00f/UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26a6161f1a2a7f544894f4570fb7e633 3 | timeCreated: 1499676331 4 | licenseType: Free 5 | PluginImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | iconMap: {} 9 | executionOrder: {} 10 | isPreloaded: 0 11 | isOverridable: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Editor: 1 19 | Exclude Linux: 1 20 | Exclude Linux64: 1 21 | Exclude LinuxUniversal: 1 22 | Exclude OSXIntel: 1 23 | Exclude OSXIntel64: 1 24 | Exclude OSXUniversal: 1 25 | Exclude Win: 1 26 | Exclude Win64: 1 27 | Exclude WindowsStoreApps: 1 28 | - first: 29 | Any: 30 | second: 31 | enabled: 0 32 | settings: {} 33 | - first: 34 | Editor: Editor 35 | second: 36 | enabled: 0 37 | settings: 38 | CPU: AnyCPU 39 | DefaultValueInitialized: true 40 | OS: AnyOS 41 | - first: 42 | Facebook: Win 43 | second: 44 | enabled: 0 45 | settings: 46 | CPU: AnyCPU 47 | - first: 48 | Facebook: Win64 49 | second: 50 | enabled: 0 51 | settings: 52 | CPU: AnyCPU 53 | - first: 54 | Standalone: Linux 55 | second: 56 | enabled: 0 57 | settings: 58 | CPU: x86 59 | - first: 60 | Standalone: Linux64 61 | second: 62 | enabled: 0 63 | settings: 64 | CPU: x86_64 65 | - first: 66 | Standalone: LinuxUniversal 67 | second: 68 | enabled: 0 69 | settings: 70 | CPU: None 71 | - first: 72 | Standalone: OSXIntel 73 | second: 74 | enabled: 0 75 | settings: 76 | CPU: AnyCPU 77 | - first: 78 | Standalone: OSXIntel64 79 | second: 80 | enabled: 0 81 | settings: 82 | CPU: AnyCPU 83 | - first: 84 | Standalone: OSXUniversal 85 | second: 86 | enabled: 0 87 | settings: 88 | CPU: None 89 | - first: 90 | Standalone: Win 91 | second: 92 | enabled: 0 93 | settings: 94 | CPU: AnyCPU 95 | - first: 96 | Standalone: Win64 97 | second: 98 | enabled: 0 99 | settings: 100 | CPU: AnyCPU 101 | - first: 102 | Windows Store Apps: WindowsStoreApps 103 | second: 104 | enabled: 0 105 | settings: 106 | CPU: AnyCPU 107 | DontProcess: False 108 | PlaceholderPath: 109 | SDK: AnySDK 110 | ScriptingBackend: AnyScriptingBackend 111 | userData: 112 | assetBundleName: 113 | assetBundleVariant: 114 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/System.Threading.xml.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd5ebd62fea07a5469f45fbdb1e17d7d 3 | timeCreated: 1499676331 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/redist.txt: -------------------------------------------------------------------------------- 1 | The files below can be distributed as described in the MICROSOFT REACTIVE EXTENSTIONS FOR JAVASCRIPT AND .NET LIBRARIES License. 2 | 3 | System.Observable.dll 4 | System.CoreEx.dll 5 | System.Reactive.dll 6 | System.Interactive.dll 7 | System.Threading.dll 8 | System.Linq.Async.dll 9 | System.Reactive.Testing.dll 10 | System.Reactive.ClientProfile.dll 11 | System.Reactive.ExtendedProfile.dll 12 | -------------------------------------------------------------------------------- /UnityCoreProject/Assets/packages/TaskParallelLibrary.1.0.2856.0/lib/Net35/redist.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 373c389f88e10064ca6fd516b289ffa7 3 | timeCreated: 1499676331 4 | licenseType: Free 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnityCoreProject/Nuget.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /UnityCoreProject/NugetForUnity/NugetForUnity.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AE311746-D117-431D-A1A2-8FD737C5369C} 8 | Library 9 | Properties 10 | NugetHelper 11 | NugetHelper 12 | v3.5 13 | 512 14 | 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | 33 | 34 | 35 | ..\Assets\packages\Castle.Core.2.5.2\lib\NET35\Castle.Core.dll 36 | 37 | 38 | ..\Assets\packages\Castle.Windsor.2.5.4\lib\net35\Castle.Windsor.dll 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /UnityCoreProject/NugetForUnity/NugetForUnity.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectFiles 5 | 6 | -------------------------------------------------------------------------------- /UnityCoreProject/NugetForUnity/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /UnityCoreProject/NugetForUnity/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /UnityCoreProject/UnityCoreProject.Editor.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {798A176B-13AE-CB36-5950-CBC6A08964DD} 9 | Library 10 | Assembly-CSharp-Editor 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v4.6 15 | 16 | 17 | 18 | 19 | Editor:5 20 | StandaloneWindows64:19 21 | 2017.2.0b11 22 | 23 | 24 | 6 25 | 26 | 27 | pdbonly 28 | false 29 | Temp\UnityVS_bin\Debug\ 30 | Temp\UnityVS_obj\Debug\ 31 | prompt 32 | 4 33 | 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_2_0;UNITY_2017_2;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;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_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;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_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_SPATIALTRACKING;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU 34 | true 35 | 36 | 37 | pdbonly 38 | false 39 | Temp\UnityVS_bin\Release\ 40 | Temp\UnityVS_obj\Release\ 41 | prompt 42 | 4 43 | 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_2_0;UNITY_2017_2;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;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_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;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_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_SPATIALTRACKING;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU 44 | true 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Library\UnityAssemblies\UnityEditor.dll 55 | 56 | 57 | Library\UnityAssemblies\UnityEngine.dll 58 | 59 | 60 | Library\UnityAssemblies\UnityEngine.CoreModule.dll 61 | 62 | 63 | Library\UnityAssemblies\UnityEngine.AccessibilityModule.dll 64 | 65 | 66 | Library\UnityAssemblies\UnityEngine.ParticleSystemModule.dll 67 | 68 | 69 | Library\UnityAssemblies\UnityEngine.PhysicsModule.dll 70 | 71 | 72 | Library\UnityAssemblies\UnityEngine.VehiclesModule.dll 73 | 74 | 75 | Library\UnityAssemblies\UnityEngine.ClothModule.dll 76 | 77 | 78 | Library\UnityAssemblies\UnityEngine.AIModule.dll 79 | 80 | 81 | Library\UnityAssemblies\UnityEngine.AnimationModule.dll 82 | 83 | 84 | Library\UnityAssemblies\UnityEngine.TextRenderingModule.dll 85 | 86 | 87 | Library\UnityAssemblies\UnityEngine.UIModule.dll 88 | 89 | 90 | Library\UnityAssemblies\UnityEngine.TerrainPhysicsModule.dll 91 | 92 | 93 | Library\UnityAssemblies\UnityEngine.IMGUIModule.dll 94 | 95 | 96 | Library\UnityAssemblies\UnityEngine.UnityWebRequestModule.dll 97 | 98 | 99 | Library\UnityAssemblies\UnityEngine.UnityWebRequestAudioModule.dll 100 | 101 | 102 | Library\UnityAssemblies\UnityEngine.UnityWebRequestTextureModule.dll 103 | 104 | 105 | Library\UnityAssemblies\UnityEngine.UnityWebRequestWWWModule.dll 106 | 107 | 108 | Library\UnityAssemblies\UnityEngine.ClusterInputModule.dll 109 | 110 | 111 | Library\UnityAssemblies\UnityEngine.ClusterRendererModule.dll 112 | 113 | 114 | Library\UnityAssemblies\UnityEngine.UNETModule.dll 115 | 116 | 117 | Library\UnityAssemblies\UnityEngine.DirectorModule.dll 118 | 119 | 120 | Library\UnityAssemblies\UnityEngine.UnityAnalyticsModule.dll 121 | 122 | 123 | Library\UnityAssemblies\UnityEngine.CrashReportingModule.dll 124 | 125 | 126 | Library\UnityAssemblies\UnityEngine.PerformanceReportingModule.dll 127 | 128 | 129 | Library\UnityAssemblies\UnityEngine.UnityConnectModule.dll 130 | 131 | 132 | Library\UnityAssemblies\UnityEngine.WebModule.dll 133 | 134 | 135 | Library\UnityAssemblies\UnityEngine.ARModule.dll 136 | 137 | 138 | Library\UnityAssemblies\UnityEngine.VRModule.dll 139 | 140 | 141 | Library\UnityAssemblies\UnityEngine.UIElementsModule.dll 142 | 143 | 144 | Library\UnityAssemblies\UnityEngine.StyleSheetsModule.dll 145 | 146 | 147 | Library\UnityAssemblies\UnityEngine.AudioModule.dll 148 | 149 | 150 | Library\UnityAssemblies\UnityEngine.GameCenterModule.dll 151 | 152 | 153 | Library\UnityAssemblies\UnityEngine.GridModule.dll 154 | 155 | 156 | Library\UnityAssemblies\UnityEngine.ImageConversionModule.dll 157 | 158 | 159 | Library\UnityAssemblies\UnityEngine.InputModule.dll 160 | 161 | 162 | Library\UnityAssemblies\UnityEngine.JSONSerializeModule.dll 163 | 164 | 165 | Library\UnityAssemblies\UnityEngine.ParticlesLegacyModule.dll 166 | 167 | 168 | Library\UnityAssemblies\UnityEngine.Physics2DModule.dll 169 | 170 | 171 | Library\UnityAssemblies\UnityEngine.ScreenCaptureModule.dll 172 | 173 | 174 | Library\UnityAssemblies\UnityEngine.SpriteMaskModule.dll 175 | 176 | 177 | Library\UnityAssemblies\UnityEngine.TerrainModule.dll 178 | 179 | 180 | Library\UnityAssemblies\UnityEngine.TilemapModule.dll 181 | 182 | 183 | Library\UnityAssemblies\UnityEngine.VideoModule.dll 184 | 185 | 186 | Library\UnityAssemblies\UnityEngine.WindModule.dll 187 | 188 | 189 | Library\UnityAssemblies\UnityEngine.UI.dll 190 | 191 | 192 | Library\UnityAssemblies\UnityEditor.UI.dll 193 | 194 | 195 | Library\UnityAssemblies\UnityEngine.Networking.dll 196 | 197 | 198 | Library\UnityAssemblies\UnityEditor.Networking.dll 199 | 200 | 201 | Library\UnityAssemblies\UnityEditor.TestRunner.dll 202 | 203 | 204 | Library\UnityAssemblies\UnityEngine.TestRunner.dll 205 | 206 | 207 | Library\UnityAssemblies\nunit.framework.dll 208 | 209 | 210 | Library\UnityAssemblies\UnityEngine.Timeline.dll 211 | 212 | 213 | Library\UnityAssemblies\UnityEditor.Timeline.dll 214 | 215 | 216 | Library\UnityAssemblies\UnityEditor.TreeEditor.dll 217 | 218 | 219 | Library\UnityAssemblies\UnityEngine.UIAutomation.dll 220 | 221 | 222 | Library\UnityAssemblies\UnityEditor.UIAutomation.dll 223 | 224 | 225 | Library\UnityAssemblies\UnityEditor.GoogleAudioSpatializer.dll 226 | 227 | 228 | Library\UnityAssemblies\UnityEngine.GoogleAudioSpatializer.dll 229 | 230 | 231 | Library\UnityAssemblies\UnityEditor.HoloLens.dll 232 | 233 | 234 | Library\UnityAssemblies\UnityEngine.HoloLens.dll 235 | 236 | 237 | Library\UnityAssemblies\UnityEditor.SpatialTracking.dll 238 | 239 | 240 | Library\UnityAssemblies\UnityEngine.SpatialTracking.dll 241 | 242 | 243 | Library\UnityAssemblies\UnityEditor.VR.dll 244 | 245 | 246 | Library\UnityAssemblies\UnityEditor.Graphs.dll 247 | 248 | 249 | Library\UnityAssemblies\UnityEditor.WSA.Extensions.dll 250 | 251 | 252 | Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll 253 | 254 | 255 | Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll 256 | 257 | 258 | Library\UnityAssemblies\UnityEngine.Advertisements.dll 259 | 260 | 261 | Library\UnityAssemblies\UnityEditor.Advertisements.dll 262 | 263 | 264 | Library\UnityAssemblies\UnityEngine.Analytics.dll 265 | 266 | 267 | Library\UnityAssemblies\UnityEditor.Analytics.dll 268 | 269 | 270 | Library\UnityAssemblies\UnityEngine.Purchasing.dll 271 | 272 | 273 | Library\UnityAssemblies\UnityEditor.Purchasing.dll 274 | 275 | 276 | Assets\packages\Castle.Core.2.5.2\lib\NET35\Castle.Core.dll 277 | 278 | 279 | Assets\packages\Castle.Windsor.2.5.4\lib\net35\Castle.Windsor.dll 280 | 281 | 282 | 283 | 284 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5} 285 | UnityCoreProject 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | -------------------------------------------------------------------------------- /UnityCoreProject/UnityCoreProject.Editor.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectFiles 5 | 6 | -------------------------------------------------------------------------------- /UnityCoreProject/UnityCoreProject.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5} 9 | Library 10 | Assembly-CSharp 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v4.6 15 | 16 | 17 | 18 | 19 | Game:1 20 | StandaloneWindows64:19 21 | 2017.2.0b11 22 | 23 | 24 | 6 25 | 26 | 27 | pdbonly 28 | false 29 | Temp\UnityVS_bin\Debug\ 30 | Temp\UnityVS_obj\Debug\ 31 | prompt 32 | 4 33 | 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_2_0;UNITY_2017_2;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;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_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;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_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_SPATIALTRACKING;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU 34 | true 35 | 36 | 37 | pdbonly 38 | false 39 | Temp\UnityVS_bin\Release\ 40 | Temp\UnityVS_obj\Release\ 41 | prompt 42 | 4 43 | 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_2_0;UNITY_2017_2;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_RAKNET;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_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_PACKMAN;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;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_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_AR;ENABLE_SPATIALTRACKING;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU 44 | true 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Library\UnityAssemblies\UnityEditor.dll 55 | 56 | 57 | Library\UnityAssemblies\UnityEngine.dll 58 | 59 | 60 | Library\UnityAssemblies\UnityEngine.CoreModule.dll 61 | 62 | 63 | Library\UnityAssemblies\UnityEngine.AccessibilityModule.dll 64 | 65 | 66 | Library\UnityAssemblies\UnityEngine.ParticleSystemModule.dll 67 | 68 | 69 | Library\UnityAssemblies\UnityEngine.PhysicsModule.dll 70 | 71 | 72 | Library\UnityAssemblies\UnityEngine.VehiclesModule.dll 73 | 74 | 75 | Library\UnityAssemblies\UnityEngine.ClothModule.dll 76 | 77 | 78 | Library\UnityAssemblies\UnityEngine.AIModule.dll 79 | 80 | 81 | Library\UnityAssemblies\UnityEngine.AnimationModule.dll 82 | 83 | 84 | Library\UnityAssemblies\UnityEngine.TextRenderingModule.dll 85 | 86 | 87 | Library\UnityAssemblies\UnityEngine.UIModule.dll 88 | 89 | 90 | Library\UnityAssemblies\UnityEngine.TerrainPhysicsModule.dll 91 | 92 | 93 | Library\UnityAssemblies\UnityEngine.IMGUIModule.dll 94 | 95 | 96 | Library\UnityAssemblies\UnityEngine.UnityWebRequestModule.dll 97 | 98 | 99 | Library\UnityAssemblies\UnityEngine.UnityWebRequestAudioModule.dll 100 | 101 | 102 | Library\UnityAssemblies\UnityEngine.UnityWebRequestTextureModule.dll 103 | 104 | 105 | Library\UnityAssemblies\UnityEngine.UnityWebRequestWWWModule.dll 106 | 107 | 108 | Library\UnityAssemblies\UnityEngine.ClusterInputModule.dll 109 | 110 | 111 | Library\UnityAssemblies\UnityEngine.ClusterRendererModule.dll 112 | 113 | 114 | Library\UnityAssemblies\UnityEngine.UNETModule.dll 115 | 116 | 117 | Library\UnityAssemblies\UnityEngine.DirectorModule.dll 118 | 119 | 120 | Library\UnityAssemblies\UnityEngine.UnityAnalyticsModule.dll 121 | 122 | 123 | Library\UnityAssemblies\UnityEngine.CrashReportingModule.dll 124 | 125 | 126 | Library\UnityAssemblies\UnityEngine.PerformanceReportingModule.dll 127 | 128 | 129 | Library\UnityAssemblies\UnityEngine.UnityConnectModule.dll 130 | 131 | 132 | Library\UnityAssemblies\UnityEngine.WebModule.dll 133 | 134 | 135 | Library\UnityAssemblies\UnityEngine.ARModule.dll 136 | 137 | 138 | Library\UnityAssemblies\UnityEngine.VRModule.dll 139 | 140 | 141 | Library\UnityAssemblies\UnityEngine.UIElementsModule.dll 142 | 143 | 144 | Library\UnityAssemblies\UnityEngine.StyleSheetsModule.dll 145 | 146 | 147 | Library\UnityAssemblies\UnityEngine.AudioModule.dll 148 | 149 | 150 | Library\UnityAssemblies\UnityEngine.GameCenterModule.dll 151 | 152 | 153 | Library\UnityAssemblies\UnityEngine.GridModule.dll 154 | 155 | 156 | Library\UnityAssemblies\UnityEngine.ImageConversionModule.dll 157 | 158 | 159 | Library\UnityAssemblies\UnityEngine.InputModule.dll 160 | 161 | 162 | Library\UnityAssemblies\UnityEngine.JSONSerializeModule.dll 163 | 164 | 165 | Library\UnityAssemblies\UnityEngine.ParticlesLegacyModule.dll 166 | 167 | 168 | Library\UnityAssemblies\UnityEngine.Physics2DModule.dll 169 | 170 | 171 | Library\UnityAssemblies\UnityEngine.ScreenCaptureModule.dll 172 | 173 | 174 | Library\UnityAssemblies\UnityEngine.SpriteMaskModule.dll 175 | 176 | 177 | Library\UnityAssemblies\UnityEngine.TerrainModule.dll 178 | 179 | 180 | Library\UnityAssemblies\UnityEngine.TilemapModule.dll 181 | 182 | 183 | Library\UnityAssemblies\UnityEngine.VideoModule.dll 184 | 185 | 186 | Library\UnityAssemblies\UnityEngine.WindModule.dll 187 | 188 | 189 | Library\UnityAssemblies\UnityEngine.UI.dll 190 | 191 | 192 | Library\UnityAssemblies\UnityEngine.Networking.dll 193 | 194 | 195 | Library\UnityAssemblies\UnityEngine.TestRunner.dll 196 | 197 | 198 | Library\UnityAssemblies\nunit.framework.dll 199 | 200 | 201 | Library\UnityAssemblies\UnityEngine.Timeline.dll 202 | 203 | 204 | Library\UnityAssemblies\UnityEngine.UIAutomation.dll 205 | 206 | 207 | Library\UnityAssemblies\UnityEngine.GoogleAudioSpatializer.dll 208 | 209 | 210 | Library\UnityAssemblies\UnityEngine.HoloLens.dll 211 | 212 | 213 | Library\UnityAssemblies\UnityEngine.SpatialTracking.dll 214 | 215 | 216 | Library\UnityAssemblies\UnityEngine.Advertisements.dll 217 | 218 | 219 | Library\UnityAssemblies\UnityEngine.Analytics.dll 220 | 221 | 222 | Library\UnityAssemblies\UnityEngine.Purchasing.dll 223 | 224 | 225 | Assets\packages\Castle.Core.2.5.2\lib\NET35\Castle.Core.dll 226 | 227 | 228 | Assets\packages\Castle.Windsor.2.5.4\lib\net35\Castle.Windsor.dll 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /UnityCoreProject/UnityCoreProject.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectFiles 5 | 6 | -------------------------------------------------------------------------------- /UnityCoreProject/UnityCoreProject.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2017 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityCoreProject", "UnityCoreProject.csproj", "{CFB2CD3F-6E19-5855-805C-CEB069FB04D5}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityCoreProject.Editor", "UnityCoreProject.Editor.csproj", "{798A176B-13AE-CB36-5950-CBC6A08964DD}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NugetForUnity", "NugetForUnity\NugetForUnity.csproj", "{AE311746-D117-431D-A1A2-8FD737C5369C}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {CFB2CD3F-6E19-5855-805C-CEB069FB04D5}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {798A176B-13AE-CB36-5950-CBC6A08964DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {798A176B-13AE-CB36-5950-CBC6A08964DD}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {798A176B-13AE-CB36-5950-CBC6A08964DD}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {798A176B-13AE-CB36-5950-CBC6A08964DD}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {AE311746-D117-431D-A1A2-8FD737C5369C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {AE311746-D117-431D-A1A2-8FD737C5369C}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {AE311746-D117-431D-A1A2-8FD737C5369C}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {AE311746-D117-431D-A1A2-8FD737C5369C}.Release|Any CPU.Build.0 = Release|Any CPU 28 | EndGlobalSection 29 | GlobalSection(SolutionProperties) = preSolution 30 | HideSolutionNode = FALSE 31 | EndGlobalSection 32 | EndGlobal 33 | --------------------------------------------------------------------------------