├── Assets ├── ExtraTools │ ├── Scripts │ │ ├── ExtraTools.asmdef │ │ ├── Editor │ │ │ ├── EditorUtils.cs.meta │ │ │ ├── ExtraTools.Editor.asmdef.meta │ │ │ ├── ReadOnlyDrawer.cs.meta │ │ │ ├── RequiredFieldDrawer.cs.meta │ │ │ ├── ExtraTools.Editor.asmdef │ │ │ ├── ReadOnlyDrawer.cs │ │ │ ├── RequiredFieldDrawer.cs │ │ │ └── EditorUtils.cs │ │ ├── Editor.meta │ │ ├── ExtraTools.asmdef.meta │ │ ├── PopUp.cs.meta │ │ ├── Utils.cs.meta │ │ ├── Singleton.cs.meta │ │ ├── AudioPlayer.cs.meta │ │ ├── RequiredField.cs.meta │ │ ├── ResourceManager.cs.meta │ │ ├── CoroutineStarter.cs.meta │ │ ├── ReadOnlyAttribute.cs.meta │ │ ├── ReadOnlyAttribute.cs │ │ ├── CoroutineStarter.cs │ │ ├── RequiredField.cs │ │ ├── Singleton.cs │ │ ├── PopUp.cs │ │ ├── ResourceManager.cs │ │ ├── Utils.cs │ │ └── AudioPlayer.cs │ ├── Prefabs │ │ ├── PopUp.prefab.meta │ │ ├── PopUpButton.prefab.meta │ │ └── PopUpButton.prefab │ ├── Prefabs.meta │ ├── Resources.meta │ ├── Scripts.meta │ └── Resources │ │ ├── ExtraTools.meta │ │ └── ExtraTools │ │ ├── Mixer.mixer.meta │ │ └── Mixer.mixer ├── Demo │ ├── ExtraTools.Demo.asmdef.meta │ ├── Scripts │ │ ├── StringDemo.cs.meta │ │ ├── DemoRandomListItem.cs.meta │ │ ├── UI.meta │ │ ├── DemoGetComponent.cs │ │ ├── UI │ │ │ ├── InGame.cs.meta │ │ │ ├── MainMenu.cs.meta │ │ │ ├── Pause.cs.meta │ │ │ ├── UIManager.cs.meta │ │ │ ├── InGame.cs │ │ │ ├── Pause.cs │ │ │ ├── UIManager.cs │ │ │ └── MainMenu.cs │ │ ├── DemoAudioPlayer.cs.meta │ │ ├── DemoGetComponent.cs.meta │ │ ├── DemoResource.cs.meta │ │ ├── ReadOnlyDemo.cs.meta │ │ ├── DemoPropertyBlocks.cs.meta │ │ ├── DemoResourceManager.cs.meta │ │ ├── RequiredFieldDemo.cs.meta │ │ ├── ReadOnlyDemo.cs │ │ ├── RequiredFieldDemo.cs │ │ ├── DemoResource.cs │ │ ├── DemoRandomListItem.cs │ │ ├── StringDemo.cs │ │ ├── DemoResourceManager.cs │ │ ├── DemoPropertyBlocks.cs │ │ └── DemoAudioPlayer.cs │ ├── Audio │ │ ├── click1.ogg │ │ ├── click2.ogg │ │ ├── click3.ogg │ │ ├── click4.ogg │ │ ├── click5.ogg │ │ ├── game_over.ogg │ │ ├── final_round.ogg │ │ ├── AgainAndAgain.mp3 │ │ ├── Alchemist's Castle - Bossfight Theme.ogg │ │ ├── Credits.txt │ │ ├── Credits.txt.meta │ │ ├── click1.ogg.meta │ │ ├── click2.ogg.meta │ │ ├── click3.ogg.meta │ │ ├── click4.ogg.meta │ │ ├── click5.ogg.meta │ │ ├── final_round.ogg.meta │ │ ├── game_over.ogg.meta │ │ ├── AgainAndAgain.mp3.meta │ │ └── Alchemist's Castle - Bossfight Theme.ogg.meta │ ├── Prefabs │ │ ├── TestCube.prefab.meta │ │ └── TestCube.prefab │ ├── Scenes │ │ ├── DemoUI.unity.meta │ │ ├── DemoAudioPlayer.unity.meta │ │ ├── DemoRandomItem.unity.meta │ │ ├── DemoStrings.unity.meta │ │ ├── DemoGetComponent.unity.meta │ │ ├── DemoPropertyBlocks.unity.meta │ │ ├── DemoResourceManager.unity.meta │ │ ├── DemoInspectorHighlight.unity.meta │ │ ├── DemoReadOnlyAttribute.unity.meta │ │ ├── DemoStrings.unity │ │ ├── DemoRandomItem.unity │ │ ├── DemoInspectorHighlight.unity │ │ ├── DemoReadOnlyAttribute.unity │ │ ├── DemoGetComponent.unity │ │ └── DemoResourceManager.unity │ ├── Audio.meta │ ├── Prefabs.meta │ ├── Scenes.meta │ ├── Scripts.meta │ ├── Materials.meta │ ├── Materials │ │ ├── TestingPropertyBlocks.mat.meta │ │ └── TestingPropertyBlocks.mat │ └── ExtraTools.Demo.asmdef ├── Demo.meta └── ExtraTools.meta ├── Utils.unitypackage ├── AudioPlayer.unitypackage ├── PopUpWindow.unitypackage ├── .gitattributes ├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── NetworkManager.asset ├── XRSettings.asset ├── VersionControlSettings.asset ├── TimeManager.asset ├── VFXManager.asset ├── EditorBuildSettings.asset ├── AudioManager.asset ├── RiderScriptEditorPersistedState.asset ├── TagManager.asset ├── PresetManager.asset ├── UnityConnectSettings.asset ├── DynamicsManager.asset ├── PackageManagerSettings.asset ├── MemorySettings.asset ├── EditorSettings.asset ├── Physics2DSettings.asset ├── NavMeshAreas.asset ├── GraphicsSettings.asset ├── QualitySettings.asset ├── SceneTemplateSettings.json └── InputManager.asset ├── README.md ├── .idea └── .idea.ExtraTools │ └── .idea │ ├── encodings.xml │ ├── vcs.xml │ └── projectSettingsUpdater.xml ├── ExtraTools.sln.DotSettings ├── .gitignore ├── LICENSE ├── Packages ├── manifest.json └── packages-lock.json ├── UserSettings └── EditorUserSettings.asset └── Logs └── Packages-Update.log /Assets/ExtraTools/Scripts/ExtraTools.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ExtraTools" 3 | } 4 | -------------------------------------------------------------------------------- /Utils.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/antonsem/ExtraTools/HEAD/Utils.unitypackage -------------------------------------------------------------------------------- /AudioPlayer.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/antonsem/ExtraTools/HEAD/AudioPlayer.unitypackage -------------------------------------------------------------------------------- /PopUpWindow.unitypackage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/antonsem/ExtraTools/HEAD/PopUpWindow.unitypackage -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.ogg filter=lfs diff=lfs merge=lfs -text 2 | *.mp3 filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.1f1 2 | m_EditorVersionWithRevision: 2022.3.1f1 (f18e0c1b5784) 3 | -------------------------------------------------------------------------------- /Assets/Demo/ExtraTools.Demo.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78c49e88e05041968784ec73f8d1a5bf 3 | timeCreated: 1687098696 -------------------------------------------------------------------------------- /Assets/Demo/Scripts/StringDemo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7d76bddd8e044c4a924186dffff5053 3 | timeCreated: 1657021000 -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoRandomListItem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adbc53c381f043efa8bccf592a3ce46c 3 | timeCreated: 1630834168 -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/EditorUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3ca61f1ba3974a92a08347426201dfbb 3 | timeCreated: 1687102800 -------------------------------------------------------------------------------- /Assets/Demo/Audio/click1.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:59175ac17cd49a68dd736285738441287636112a84a6f7ce0d89921bda5a5360 3 | size 4983 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click2.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c394b46bc6737f7f7edfbfa3031ce621b7a43d498d456d6198364eee9cd3e306 3 | size 4656 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click3.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e3e7fc7ccd9c5cfdf77bffa05aee10d4973812076c76dc889ba2b16ea434127f 3 | size 4880 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click4.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9c02bbfc872b50eb8750adf4b7c343120f19f5d2f04ab06a7a8948368a77b872 3 | size 4558 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click5.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:52d41e0bb012731bf2a391d53ffb52265ef21589c7701e66b391d5e36a65b293 3 | size 4532 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/game_over.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d9fe4a9817c5ebb740f0be3dc0ff63d9acaae064e4b11dd6d0aa3daa05c38e47 3 | size 13610 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/final_round.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0aad0d7abd1f12d52173da2267e2b4e671da3f33c0dbb78f0ba1c727dbcd9d86 3 | size 12026 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/AgainAndAgain.mp3: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e5b463a024b44e00680359500f978faa7e69141f9f22380395ce510cd5ff3216 3 | size 5716096 4 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ExtraTools 2 | Some extra tools and shortcuts I use in Unity. 3 | I'm keeping a blog the stuff I'm adding here. 4 | Check it out if you are confused: https://www.anton.website/blog/ 5 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/Alchemist's Castle - Bossfight Theme.ogg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f84097f90ff20e47e555372038a37024eaef0932b6de459143ac2b4852e76251 3 | size 5508129 4 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/Credits.txt: -------------------------------------------------------------------------------- 1 | Again and Again 2 | Downloaded from freesfx.co.uk 3 | 4 | Alchemist's Castle - Bossfight Theme 5 | Alchemist's Castle OST 6 | 7 | Sounds and voice over 8 | Downloaded from Kenney.nl -------------------------------------------------------------------------------- /.idea/.idea.ExtraTools/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Assets/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 626519b1addb4304f93b14f7d2df43f6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/Credits.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c08d94147db5d3541a865f4caef52ad5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Prefabs/TestCube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab6556399aebed84e903e82f3cea6cfb 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoUI.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6fea12341c94c3b4bbdc19c6ab91ab24 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /Assets/Demo/Audio.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40c6fd2d35216004e8fe432861547c59 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demo/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 780123de46860c740bd2ae87b881a738 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ccdd8489ec59fb545a7835dafdf44827 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoAudioPlayer.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd76a09e31f44be45bb5d032230b42de 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoRandomItem.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 965596d15976ae542a9db668c77adaff 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoStrings.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b071845fc2e7a84ca83593f4ef3907e 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 011e2dc06ff04134e9bee11582aab451 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb8a4a33a2a7790428dd7d0ee9032d88 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Prefabs/PopUp.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bddeb75bbfea8cb458b2c4573cdefe54 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1670571e8a347b04abaa6c1420453486 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoGetComponent.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99c9720ab356a0642a771bea13969a05 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoPropertyBlocks.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 66d2816e306f4a64ea71318be4b93b7a 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoResourceManager.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ecdf6e0f2c59fee46be7f642621e0f89 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cd3d6731d52cb2498f61d5c2b2bb650 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Prefabs/PopUpButton.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b36acdb245d8c3e4a907a2ad8e263fd1 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /.idea/.idea.ExtraTools/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoInspectorHighlight.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 243b583b9e2955749b865ab48329aaa9 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoReadOnlyAttribute.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a53e26378520e3845a00094309642da7 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 188b2baa8614e8744b9d381b6984f94f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec57f392d4f1f7942b1821daf60cab99 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eccbe5dd12f0e6e4d9754d722f90d4a4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 04ceebf7a96ae2340ae293a2ef8cffbb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/ExtraTools.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55acc4e34e3ae1d43bde89a2d1bd22ef 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Resources/ExtraTools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a16ec3f01466c947b7103876bfdd206 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/ExtraTools.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b55930dca592c904685b0bc9efbf80aa 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /.idea/.idea.ExtraTools/.idea/projectSettingsUpdater.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /Assets/Demo/Materials/TestingPropertyBlocks.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb309f5a9f1095c47b46e8f13fbf9db9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Resources/ExtraTools/Mixer.mixer.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12d34a883644fef4396f29d08e17333d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 24100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoGetComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test.Scripts 4 | { 5 | public class DemoGetComponent : MonoBehaviour 6 | { 7 | public BoxCollider col; 8 | 9 | private void Start() 10 | { 11 | transform.EnsureComponent(out col, true, true); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/InGame.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f0f03490bd232d4bbb00b5f01850189 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/MainMenu.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d170bebd4df988745a5d6b2320fe9996 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/Pause.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 160914077819dd6438d31d25d4c95b3f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/PopUp.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36180d7d080e93c4eb0c096fd12f8f2b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Utils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38afa79d1fb7a67499db1723ceb28e6a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoAudioPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fe12fcedce7dd74d8ecf64158f0dc6e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoGetComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7646fd2ddbccbb04ea1da91275ddbe12 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoResource.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85f2943ed2a2d904c8c2c80eeeb49213 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/ReadOnlyDemo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2eaf82143acb90a40bac95abd8daf470 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/UIManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d60cc85b073eb9448f771e19a6e1ed3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Singleton.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a4e8e9c1daa2a04fb8042de23599157 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoPropertyBlocks.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fda104e228c53934b9c663f39904f1ac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoResourceManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef6d2fdf416e0f94bb715b0b5c6b1df7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/RequiredFieldDemo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2db754354dfc564cb86f537246b2899 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/AudioPlayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d10510bcfd0cf9447a95511dc5f5aa4f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/RequiredField.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f008c4fb989b8f9409b057b71daf93d6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/ResourceManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 765be3ab999899a46b24e0a4aa780fdd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/CoroutineStarter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64fd585fe44763f4397dc82a7f09421d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/ReadOnlyAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 587ec238b8b570248ad10b4e2b2af15d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/ReadOnlyDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4e1d33c5f8944c149b5eac641e9b7340 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/RequiredFieldDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90d9dd78279bc0b48917519538096099 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/ExtraTools/Demo/Scenes/TestGetComponent.unity 10 | guid: 99c9720ab356a0642a771bea13969a05 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/ReadOnlyDemo.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test.Scripts 4 | { 5 | public class ReadOnlyDemo : MonoBehaviour 6 | { 7 | #pragma warning disable 0414 8 | [ReadOnly(true)] public Rigidbody rigid; 9 | [SerializeField, ReadOnly] private float testFloatValue = 123; 10 | #pragma warning restore 0414 11 | } 12 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/RequiredFieldDemo.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test.Scripts 4 | { 5 | public class RequiredFieldDemo : MonoBehaviour 6 | { 7 | [RequiredField] public GameObject shouldBeAssigned; 8 | [RequiredField(FieldColor.Yellow)] public GameObject yellowField; 9 | [SerializeField, RequiredField(FieldColor.Blue)] private GameObject serializedHighlight; 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/InGame.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace ExtraTools.Test 5 | { 6 | public class InGame : MonoBehaviour 7 | { 8 | [SerializeField] private Button pause; 9 | 10 | private void Start() 11 | { 12 | pause.onClick.AddListener(OnPause); 13 | } 14 | 15 | private static void OnPause() 16 | { 17 | UIManager.Instance.SetWindow(Window.Pause); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoResource.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test.Scripts 4 | { 5 | public class DemoResource : MonoBehaviour 6 | { 7 | private void Awake() 8 | { 9 | Debug.Log($"Awake invoked on {this}", this); 10 | } 11 | 12 | private void Start() 13 | { 14 | Debug.Log($"Start invoked on {this}", this); 15 | } 16 | 17 | private void OnEnable() 18 | { 19 | Debug.Log($"OnEnable invoked on {this}", this); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /ExtraTools.sln.DotSettings: -------------------------------------------------------------------------------- 1 | 2 | True 3 | True -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/ReadOnlyAttribute.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools 4 | { 5 | public class ReadOnlyAttribute : PropertyAttribute 6 | { 7 | /// 8 | /// Writes a warning if the value of this field is null 9 | /// 10 | public readonly bool errorIfNull; 11 | 12 | public ReadOnlyAttribute() 13 | { 14 | errorIfNull = true; 15 | } 16 | 17 | public ReadOnlyAttribute(bool errorIfNull) 18 | { 19 | this.errorIfNull = errorIfNull; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Assets/Demo/ExtraTools.Demo.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ExtraTools.Tests", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:55acc4e34e3ae1d43bde89a2d1bd22ef", 6 | "GUID:b55930dca592c904685b0bc9efbf80aa" 7 | ], 8 | "includePlatforms": [], 9 | "excludePlatforms": [], 10 | "allowUnsafeCode": false, 11 | "overrideReferences": false, 12 | "precompiledReferences": [], 13 | "autoReferenced": true, 14 | "defineConstraints": [], 15 | "versionDefines": [], 16 | "noEngineReferences": false 17 | } -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/ExtraTools.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ExtraTools.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:55acc4e34e3ae1d43bde89a2d1bd22ef" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /ProjectSettings/RiderScriptEditorPersistedState.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: Unity.Rider.Editor:Packages.Rider.Editor:RiderScriptEditorPersistedState 15 | lastWriteTicks: -8585502892089615493 16 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click1.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 040721904f9850442b8fd1392531e90b 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click2.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc720806c5d813843aba203ee1823205 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click3.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a87e5104af772cd43aedb43c2e882c7c 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click4.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3d8c2e43052d514fa4d11666be9a36d 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/click5.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53decd8e55a6d54409d07d985ec72bab 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/final_round.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbfacb1d7eadc2149afa327355158cc9 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/game_over.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e0a5e867629ae7b4083a252cfd1e30ea 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 0 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/AgainAndAgain.mp3.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 89c8902b5852b2b499b2ee52f091a677 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 1 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Demo/Audio/Alchemist's Castle - Bossfight Theme.ogg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d67884b91056444408a7d3b1d29e9d99 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 1 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.opendb 26 | 27 | # Unity3D generated meta files 28 | *.pidb.meta 29 | *.pdb.meta 30 | 31 | # Unity3D Generated File On Crash Reports 32 | sysinfo.txt 33 | 34 | # Builds 35 | *.apk 36 | *.unitypackage 37 | .idea/ 38 | Logs/ 39 | UserSettings/ 40 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/Pause.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace ExtraTools.Test 5 | { 6 | public class Pause : MonoBehaviour 7 | { 8 | [SerializeField] private Button resume; 9 | [SerializeField] private Button mainMenu; 10 | 11 | private void Start() 12 | { 13 | resume.onClick.AddListener(OnResume); 14 | mainMenu.onClick.AddListener(OnMainMenu); 15 | } 16 | 17 | private static void OnResume() 18 | { 19 | UIManager.Instance.SetWindow(Window.InGame); 20 | } 21 | 22 | private static void OnMainMenu() 23 | { 24 | UIManager.Instance.SetWindow(Window.MainMenu); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoRandomListItem.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace ExtraTools.Test.Scripts 5 | { 6 | public class DemoRandomListItem : MonoBehaviour 7 | { 8 | [SerializeField] private string[] strings; 9 | [SerializeField] private List floats; 10 | [SerializeField] private List transforms; 11 | 12 | private void Update() 13 | { 14 | if (Input.GetKeyDown(KeyCode.Alpha1)) 15 | { 16 | Debug.Log(strings.GetRandom()); 17 | } 18 | 19 | if (Input.GetKeyDown(KeyCode.Alpha2)) 20 | { 21 | Debug.Log(floats.GetRandom()); 22 | } 23 | 24 | if (Input.GetKeyDown(KeyCode.Alpha3)) 25 | { 26 | Debug.Log(transforms.GetRandom()); 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/StringDemo.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools 4 | { 5 | public class StringDemo : MonoBehaviour 6 | { 7 | [Header("Empty string")] 8 | [SerializeField] private string testString; 9 | 10 | [Header("String formatting")] 11 | [SerializeField, ReadOnly] private string stringToFormat = "First parameter: {0}, second parameter: {1}"; 12 | [Space, SerializeField] private string[] parameters; 13 | 14 | private void Update() 15 | { 16 | if (Input.GetKeyDown(KeyCode.Alpha1)) 17 | { 18 | Debug.Log($"testString is not null or empty: {testString.IsValid()}"); 19 | } 20 | 21 | if (Input.GetKeyDown(KeyCode.Alpha2)) 22 | { 23 | Debug.Log($"Formatted string: {stringToFormat.Format(parameters)}"); 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoResourceManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test.Scripts 4 | { 5 | public class DemoResourceManager : MonoBehaviour 6 | { 7 | private void Update() 8 | { 9 | if (Input.GetKeyDown(KeyCode.G)) 10 | { 11 | ResourceManager.Instance.testPrefab.Get(); 12 | } 13 | 14 | if (Input.GetKeyDown(KeyCode.U)) 15 | { 16 | ResourceManager.Instance.testPrefab.DestroyUnused(); 17 | } 18 | 19 | if (Input.GetKeyDown(KeyCode.A)) 20 | { 21 | ResourceManager.Instance.testPrefab.RemoveAll(); 22 | } 23 | 24 | if (Input.GetKeyDown(KeyCode.D)) 25 | { 26 | ResourceManager.Instance.testPrefab.DestroyAll(); 27 | } 28 | 29 | if (Input.GetKeyDown(KeyCode.P)) 30 | { 31 | ResourceManager.Instance.testPrefab.Prepare(10); 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/CoroutineStarter.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools 4 | { 5 | /// 6 | /// This is an empty MonoBehaviour. Its only purpose is to run coroutines 7 | /// 8 | public class CoroutineStarter : MonoBehaviour 9 | { 10 | private static CoroutineStarter _instance; 11 | 12 | public static CoroutineStarter Get 13 | { 14 | get 15 | { 16 | // Instance required for the first time, we look for it 17 | if (_instance) return _instance; 18 | 19 | _instance = FindObjectOfType(); 20 | 21 | // Object not found, we create a temporary one 22 | if (_instance) return _instance; 23 | 24 | _instance = new GameObject($"Temp Instance of {typeof(CoroutineStarter)}", typeof(CoroutineStarter)) 25 | .GetComponent(); 26 | 27 | return _instance; 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/ReadOnlyDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace ExtraTools.Editor 5 | { 6 | [CustomPropertyDrawer(typeof(ReadOnlyAttribute))] 7 | public class ReadOnlyDrawer : PropertyDrawer 8 | { 9 | private const string NULL_ERROR = 10 | "Read Only field {0} is not assigned on {1}!"; 11 | 12 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 13 | { 14 | var att = attribute as ReadOnlyAttribute; 15 | 16 | if (att.errorIfNull && property.GetValue().Equals(null)) 17 | { 18 | Debug.LogErrorFormat(property.serializedObject.targetObject, NULL_ERROR, label.text, 19 | property.serializedObject.targetObject); 20 | } 21 | 22 | var previousGUIState = GUI.enabled; 23 | GUI.enabled = false; 24 | EditorGUI.PropertyField(position, property, label); 25 | GUI.enabled = previousGUIState; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/UIManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools.Test 4 | { 5 | public enum Window 6 | { 7 | None, 8 | MainMenu, 9 | InGame, 10 | Pause 11 | } 12 | 13 | public class UIManager : Singleton 14 | { 15 | [SerializeField] private MainMenu mainMenu; 16 | [SerializeField] private InGame inGame; 17 | [SerializeField] private Pause pause; 18 | [SerializeField] private PopUp popUp; 19 | 20 | /// 21 | /// Set a specific UI window 22 | /// 23 | /// Type of the window to be set 24 | public void SetWindow(Window window) 25 | { 26 | mainMenu.gameObject.SetActive(window == Window.MainMenu); 27 | inGame.gameObject.SetActive(window == Window.InGame); 28 | pause.gameObject.SetActive(window == Window.Pause); 29 | } 30 | 31 | public void PopUpMessage(string msg, Sprite img = null, params MessageButton[] buttons) 32 | { 33 | popUp.Register(msg, img, buttons); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Anton Semchenko 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 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/RequiredFieldDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace ExtraTools.Editor 5 | { 6 | /// 7 | /// Credit for this tip goes to Rodrigo Devora 8 | /// Got it from the twitter: https://twitter.com/Rodrigo_Devora/status/1204031607583264769 9 | /// 10 | [CustomPropertyDrawer(typeof(RequiredField))] 11 | public class RequiredFieldDrawer : PropertyDrawer 12 | { 13 | private const string ERROR = 14 | "Required field {0} is not assigned on {1}!"; 15 | 16 | public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 17 | { 18 | var field = attribute as RequiredField; 19 | 20 | if (!property.GetValue().Equals(null)) 21 | { 22 | EditorGUI.PropertyField(position, property, label); 23 | return; 24 | } 25 | 26 | if (field.debugError) 27 | { 28 | Debug.LogErrorFormat(property.serializedObject.targetObject, ERROR, label.text, 29 | property.serializedObject.targetObject); 30 | } 31 | 32 | var previousGUIColor = GUI.color; 33 | GUI.color = field.color; 34 | EditorGUI.PropertyField(position, property, label); 35 | GUI.color = previousGUIColor; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/UI/MainMenu.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace ExtraTools.Test 5 | { 6 | public class MainMenu : MonoBehaviour 7 | { 8 | [SerializeField] private Button newGame; 9 | [SerializeField] private Button sendMessage; 10 | [SerializeField] private Button sendFiveMessages; 11 | [SerializeField] private Sprite messageSprite; 12 | 13 | private void Start() 14 | { 15 | newGame.onClick.AddListener(OnStartGame); 16 | sendMessage.onClick.AddListener(SendMessage); 17 | sendFiveMessages.onClick.AddListener(SendFiveMessages); 18 | } 19 | 20 | private static void OnStartGame() 21 | { 22 | UIManager.Instance.SetWindow(Window.InGame); 23 | } 24 | 25 | private void SendMessage() 26 | { 27 | MessageButton[] buttons = 28 | { 29 | new("Yes", () => Debug.Log("Yes")), 30 | new("No", () => Debug.Log("No")), 31 | new("Cancel", () => Debug.Log("Cancel")) 32 | }; 33 | 34 | UIManager.Instance.PopUpMessage("This is a generic warning message. You can click on any button...", 35 | messageSprite, buttons); 36 | } 37 | 38 | private static void SendFiveMessages() 39 | { 40 | for (int i = 0; i < 5; i++) 41 | { 42 | UIManager.Instance.PopUpMessage($"message {i.ToString()}"); 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 2 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerPaddingPower: 1 14 | m_EtcTextureCompressorBehavior: 1 15 | m_EtcTextureFastCompressor: 1 16 | m_EtcTextureNormalCompressor: 2 17 | m_EtcTextureBestCompressor: 4 18 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref 19 | m_ProjectGenerationRootNamespace: 20 | m_EnableTextureStreamingInEditMode: 1 21 | m_EnableTextureStreamingInPlayMode: 1 22 | m_AsyncShaderCompilation: 1 23 | m_CachingShaderPreprocessor: 1 24 | m_PrefabModeAllowAutoSave: 1 25 | m_EnterPlayModeOptionsEnabled: 0 26 | m_EnterPlayModeOptions: 3 27 | m_GameObjectNamingDigits: 1 28 | m_GameObjectNamingScheme: 2 29 | m_AssetNamingUsesSpace: 1 30 | m_UseLegacyProbeSampleCount: 1 31 | m_SerializeInlineMappingsOnOneLine: 0 32 | m_DisableCookiesInLightmapper: 1 33 | m_AssetPipelineMode: 1 34 | m_CacheServerMode: 0 35 | m_CacheServerEndpoint: 36 | m_CacheServerNamespacePrefix: default 37 | m_CacheServerEnableDownload: 1 38 | m_CacheServerEnableUpload: 1 39 | m_CacheServerEnableAuth: 0 40 | m_CacheServerEnableTls: 0 41 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/RequiredField.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools 4 | { 5 | public enum FieldColor 6 | { 7 | Red, 8 | Green, 9 | Blue, 10 | Yellow 11 | } 12 | 13 | /// 14 | /// Credit for this tip goes to Rodrigo Devora 15 | /// Got it from the twitter: https://twitter.com/Rodrigo_Devora/status/1204031607583264769 16 | /// 17 | public class RequiredField : PropertyAttribute 18 | { 19 | public readonly Color color; 20 | public readonly bool debugError; 21 | 22 | public RequiredField() 23 | { 24 | debugError = true; 25 | color = Color.red; 26 | } 27 | 28 | public RequiredField(FieldColor color) 29 | { 30 | debugError = true; 31 | this.color = color switch 32 | { 33 | FieldColor.Red => Color.red, 34 | FieldColor.Green => Color.green, 35 | FieldColor.Blue => Color.blue, 36 | FieldColor.Yellow => Color.yellow, 37 | _ => Color.red 38 | }; 39 | } 40 | 41 | public RequiredField(Color color) 42 | { 43 | debugError = true; 44 | this.color = color; 45 | } 46 | 47 | public RequiredField(bool debugError = true, FieldColor color = FieldColor.Red) 48 | { 49 | this.debugError = debugError; 50 | this.color = color switch 51 | { 52 | FieldColor.Red => Color.red, 53 | FieldColor.Green => Color.green, 54 | FieldColor.Blue => Color.blue, 55 | FieldColor.Yellow => Color.yellow, 56 | _ => Color.red 57 | }; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": "1.0.0", 4 | "com.unity.2d.tilemap": "1.0.0", 5 | "com.unity.ide.rider": "3.0.24", 6 | "com.unity.ide.visualstudio": "2.0.18", 7 | "com.unity.ugui": "1.0.0", 8 | "com.unity.modules.ai": "1.0.0", 9 | "com.unity.modules.androidjni": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.assetbundle": "1.0.0", 12 | "com.unity.modules.audio": "1.0.0", 13 | "com.unity.modules.cloth": "1.0.0", 14 | "com.unity.modules.director": "1.0.0", 15 | "com.unity.modules.imageconversion": "1.0.0", 16 | "com.unity.modules.imgui": "1.0.0", 17 | "com.unity.modules.jsonserialize": "1.0.0", 18 | "com.unity.modules.particlesystem": "1.0.0", 19 | "com.unity.modules.physics": "1.0.0", 20 | "com.unity.modules.physics2d": "1.0.0", 21 | "com.unity.modules.screencapture": "1.0.0", 22 | "com.unity.modules.terrain": "1.0.0", 23 | "com.unity.modules.terrainphysics": "1.0.0", 24 | "com.unity.modules.tilemap": "1.0.0", 25 | "com.unity.modules.ui": "1.0.0", 26 | "com.unity.modules.uielements": "1.0.0", 27 | "com.unity.modules.umbra": "1.0.0", 28 | "com.unity.modules.unityanalytics": "1.0.0", 29 | "com.unity.modules.unitywebrequest": "1.0.0", 30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 31 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 32 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 33 | "com.unity.modules.unitywebrequestwww": "1.0.0", 34 | "com.unity.modules.vehicles": "1.0.0", 35 | "com.unity.modules.video": "1.0.0", 36 | "com.unity.modules.vr": "1.0.0", 37 | "com.unity.modules.wind": "1.0.0", 38 | "com.unity.modules.xr": "1.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Singleton.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ExtraTools 4 | { 5 | public abstract class Singleton : MonoBehaviour where T : Singleton 6 | { 7 | private bool _isQuitting = false; 8 | private static T _instance = null; 9 | public static T Instance 10 | { 11 | get 12 | { 13 | // Instance required for the first time, we look for it 14 | if (_instance != null) return _instance; 15 | _instance = FindObjectOfType(typeof(T)) as T; 16 | 17 | // Object not found, we create a temporary one 18 | if (_instance != null) return _instance; 19 | Debug.LogWarning($"No instance of {typeof(T)}, a temporary one is created."); 20 | _instance = new GameObject($"Temp Instance of {typeof(T)}", typeof(T)).GetComponent(); 21 | 22 | // Problem during the creation, this should not happen 23 | if (_instance == null) 24 | Debug.LogError($"Problem during the creation of {typeof(T)}"); 25 | return _instance; 26 | } 27 | } 28 | 29 | // If no other monobehaviour request the instance in an awake function 30 | // executing before this one, no need to search the object. 31 | private void Awake() 32 | { 33 | if (_instance) return; 34 | _instance = this as T; 35 | _instance.Init(); 36 | } 37 | 38 | // This function is called when the instance is used the first time 39 | // Put all the initializations you need here, as you would do in Awake 40 | public virtual void Init() {} 41 | 42 | private void OnApplicationQuit() 43 | { 44 | _isQuitting = true; 45 | } 46 | 47 | // Make sure the instance isn't referenced anymore when the object is destroyed 48 | protected virtual void OnDestroy() 49 | { 50 | if (!_isQuitting && _instance == this) 51 | _instance = null; 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | RecentlyUsedSceneGuid-0: 9 | value: 56530451540d5d0e0b0d5e27472207441516407979717536792c1b60bbb0633d 10 | flags: 0 11 | RecentlyUsedSceneGuid-1: 12 | value: 0204070357035a0c555b5e72157007444316487a7c7172637d704b67b0e4356f 13 | flags: 0 14 | RecentlyUsedSceneGuid-2: 15 | value: 5557510754075a0f5c0d557613705d4414151c297d7125662c2b4462e3e2666c 16 | flags: 0 17 | RecentlyUsedScenePath-0: 18 | value: 224247031146466f081d186d23205a1e1304571e293b32050467083debf42d 19 | flags: 0 20 | RecentlyUsedScenePath-1: 21 | value: 224247031146466f081d186d23205a1e1304571e293b3211382d143cd2ec3521e7f578fce9332b25 22 | flags: 0 23 | RecentlyUsedScenePath-2: 24 | value: 224247031146467e151a1e23242c501c05582c2f3f3c69032e2c1336f1af003df1f303c0a92f31352d1b 25 | flags: 0 26 | RecentlyUsedScenePath-3: 27 | value: 224247031146467e151a1e23242c501c05582c2f3f3c69032e2c1336f1af003df1f317fce333300c3503f63916701431fb1e10 28 | flags: 0 29 | RecentlyUsedScenePath-4: 30 | value: 224247031146467e151a1e23242c501c05582c2f3f3c69032e2c1336f1af003df1f304ecf4352a2e3a07c23d0a3f063ae0441c05ff1f13 31 | flags: 0 32 | vcSharedLogLevel: 33 | value: 0d5e400f0650 34 | flags: 0 35 | m_VCAutomaticAdd: 1 36 | m_VCDebugCom: 0 37 | m_VCDebugCmd: 0 38 | m_VCDebugOut: 0 39 | m_SemanticMergeMode: 2 40 | m_DesiredImportWorkerCount: 2 41 | m_StandbyImportWorkerCount: 2 42 | m_IdleImportWorkerShutdownDelay: 60000 43 | m_VCShowFailedCheckout: 1 44 | m_VCOverwriteFailedCheckoutAssets: 1 45 | m_VCProjectOverlayIcons: 1 46 | m_VCHierarchyOverlayIcons: 1 47 | m_VCOtherOverlayIcons: 1 48 | m_VCAllowAsyncUpdate: 1 49 | m_ArtifactGarbageCollection: 1 50 | -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoPropertyBlocks.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using UnityEngine; 3 | using Debug = UnityEngine.Debug; 4 | 5 | namespace ExtraTools.Test.Scripts 6 | { 7 | public class DemoPropertyBlocks : MonoBehaviour 8 | { 9 | [SerializeField] private Renderer[] renderers; 10 | 11 | private static readonly int colorHash = Shader.PropertyToID("_Color"); 12 | private const string colorName = "_Color"; 13 | 14 | private void Update() 15 | { 16 | if (Input.GetKeyDown(KeyCode.Space)) 17 | { 18 | ChangeColor(); 19 | } 20 | 21 | if (Input.GetKeyDown(KeyCode.Alpha1)) 22 | { 23 | Stopwatch stopwatch = new Stopwatch(); 24 | stopwatch.Start(); 25 | 26 | for (var i = 0; i < 100000; i++) 27 | { 28 | ChangeColorsHash(); 29 | } 30 | 31 | stopwatch.Stop(); 32 | Debug.Log( 33 | $"It took {stopwatch.Elapsed.Milliseconds.ToString()}ms to change color of {renderers.Length.ToString()} 100000 times using hash."); 34 | } 35 | 36 | if (Input.GetKeyDown(KeyCode.Alpha2)) 37 | { 38 | Stopwatch stopwatch = new Stopwatch(); 39 | stopwatch.Start(); 40 | 41 | for (var i = 0; i < 100000; i++) 42 | { 43 | ChangeColorsString(); 44 | } 45 | 46 | stopwatch.Stop(); 47 | Debug.Log( 48 | $"It took {stopwatch.Elapsed.Milliseconds.ToString()}ms to change color of {renderers.Length.ToString()} 100000 times using string."); 49 | } 50 | } 51 | 52 | private void ChangeColor() 53 | { 54 | foreach (Renderer rend in renderers) 55 | { 56 | rend.SetProperty(colorHash, Random.ColorHSV()); 57 | } 58 | } 59 | 60 | private void ChangeColorsHash() 61 | { 62 | foreach (Renderer rend in renderers) 63 | { 64 | rend.SetProperty(colorHash, Color.grey); 65 | } 66 | } 67 | 68 | private void ChangeColorsString() 69 | { 70 | foreach (Renderer rend in renderers) 71 | { 72 | rend.SetProperty(colorName, Color.grey); 73 | } 74 | } 75 | } 76 | } -------------------------------------------------------------------------------- /Assets/Demo/Scripts/DemoAudioPlayer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace ExtraTools.Test.Scripts 5 | { 6 | public class DemoAudioPlayer : MonoBehaviour 7 | { 8 | [SerializeField] private AudioClip[] clips; 9 | [SerializeField] private AudioClip[] music; 10 | [SerializeField] private Button playRandomSound; 11 | [SerializeField] private Button changeMusic; 12 | [SerializeField] private Toggle playPauseMusic; 13 | [SerializeField] private Slider masterSound; 14 | [SerializeField] private Slider musicSound; 15 | [SerializeField] private Slider sfxSound; 16 | 17 | [SerializeField] private string masterLabel = "MasterVolume"; 18 | [SerializeField] private string musicLabel = "MusicVolume"; 19 | [SerializeField] private string sfxLabel = "SFXVolume"; 20 | 21 | private void Awake() 22 | { 23 | playRandomSound.onClick.AddListener(OnPlayRandom); 24 | playPauseMusic.onValueChanged.AddListener(OnPlayMusic); 25 | changeMusic.onClick.AddListener(OnChangeMusic); 26 | masterSound.onValueChanged.AddListener(OnSetMaster); 27 | musicSound.onValueChanged.AddListener(OnSetMusic); 28 | sfxSound.onValueChanged.AddListener(OnSetSFX); 29 | } 30 | 31 | private void OnSetMaster(float val) 32 | { 33 | AudioPlayer.SetVolume(masterLabel, val, true); 34 | } 35 | 36 | private void OnSetMusic(float val) 37 | { 38 | AudioPlayer.SetVolume(musicLabel, val, true); 39 | } 40 | 41 | private void OnSetSFX(float val) 42 | { 43 | AudioPlayer.SetVolume(sfxLabel, val, true); 44 | } 45 | 46 | private void OnChangeMusic() 47 | { 48 | AudioPlayer.PlayMusic(music[Random.Range(0, music.Length)], musicLabel); 49 | } 50 | 51 | private void OnPlayMusic(bool val) 52 | { 53 | if (val) 54 | { 55 | AudioPlayer.PlayMusic(music[0], musicLabel, 1); 56 | return; 57 | } 58 | 59 | AudioPlayer.StopMusic(musicLabel); 60 | } 61 | 62 | private void OnPlayRandom() 63 | { 64 | AudioPlayer.PlayOneShot(clips[Random.Range(0, clips.Length)]); 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /Assets/Demo/Materials/TestingPropertyBlocks.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: TestingPropertyBlocks 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/Editor/EditorUtils.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.IO; 3 | using System.Reflection; 4 | using UnityEditor; 5 | 6 | namespace ExtraTools.Editor 7 | { 8 | public static class EditorUtils 9 | { 10 | /// 11 | /// Credit goes to FreCre (https://assetstore.unity.com/publishers/7617). 12 | /// Stumbled across this shortcut on twitter and decided to add 13 | /// to the Extra Tools. The original free asset package created by FreCre can be 14 | /// downloaded from the Asset Store: https://assetstore.unity.com/packages/tools/easyshortcutlockinspector-23579 15 | /// 16 | [MenuItem("Extra Tools/Toggle Inspector Lock %l")] 17 | private static void ToggleInspectorLock() 18 | { 19 | ActiveEditorTracker.sharedTracker.isLocked = !ActiveEditorTracker.sharedTracker.isLocked; 20 | ActiveEditorTracker.sharedTracker.ForceRebuild(); 21 | } 22 | 23 | /// 24 | /// Credit goes to KirillKuzyk from answers.unity.com. 25 | /// Got this from here: https://answers.unity.com/questions/707636/clear-console-window.html 26 | /// For more information about MenuItem see documentation: https://docs.unity3d.com/ScriptReference/MenuItem.html 27 | /// 28 | [MenuItem("Extra Tools/Clear Console %q")] // CTRL + Q 29 | private static void ClearConsole() 30 | { 31 | var assembly = Assembly.GetAssembly(typeof(SceneView)); 32 | var type = assembly.GetType("UnityEditor.LogEntries"); 33 | var method = type.GetMethod("Clear"); 34 | method?.Invoke(new object(), null); 35 | } 36 | 37 | /// 38 | /// Credit goes to coeing from answers.unity.com 39 | /// Got this from here: https://answers.unity.com/questions/43422/how-to-implement-show-in-explorer.html 40 | /// PS: A similar function was added to the Shortcut editor in the 2019.1. Still, this 41 | /// can be used to open a specific folder (or an asset), not the one you clicked on in the Projects tab 42 | /// 43 | [MenuItem("Extra Tools/Open Project Folder %e")] // CTRL + E 44 | public static void ShowExplorer() 45 | { 46 | var path = Directory.GetParent(Application.dataPath).FullName; 47 | EditorUtility.RevealInFinder(path); 48 | } 49 | 50 | public static object GetValue(this SerializedProperty property) 51 | { 52 | object obj = property.serializedObject.targetObject; 53 | var type = obj.GetType(); 54 | var field = type.GetField(property.propertyPath, 55 | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); 56 | return field?.GetValue(obj); 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Logs/Packages-Update.log: -------------------------------------------------------------------------------- 1 | 2 | === Sun Feb 24 14:22:15 2019 3 | 4 | Packages were changed. 5 | Update Mode: updateDependencies 6 | 7 | The following packages were added: 8 | com.unity.collab-proxy@1.2.15 9 | com.unity.timeline@1.0.0 10 | com.unity.xr.legacyinputhelpers@1.0.0 11 | The following packages were updated: 12 | com.unity.analytics from version 2.0.16 to 3.3.2 13 | com.unity.package-manager-ui from version 1.9.11 to 2.1.1 14 | com.unity.textmeshpro from version 1.2.4 to 1.3.0 15 | 16 | === Wed Apr 17 08:06:59 2019 17 | 18 | Packages were changed. 19 | Update Mode: updateDependencies 20 | 21 | The following packages were updated: 22 | com.unity.package-manager-ui from version 2.1.1 to 2.1.2 23 | 24 | === Mon Jun 24 18:28:58 2019 25 | 26 | Packages were changed. 27 | Update Mode: updateDependencies 28 | 29 | The following packages were added: 30 | com.unity.2d.tilemap@1.0.0 31 | com.unity.ext.nunit@1.0.0 32 | com.unity.test-framework@1.0.13 33 | com.unity.2d.sprite@1.0.0 34 | com.unity.ide.vscode@1.0.7 35 | com.unity.ide.visualstudio@1.0.11 36 | com.unity.ide.rider@1.0.8 37 | com.unity.ugui@1.0.0 38 | com.unity.modules.androidjni@1.0.0 39 | The following packages were removed: 40 | com.unity.package-manager-ui@2.1.2 41 | 42 | === Sat May 23 20:52:30 2020 43 | 44 | Packages were changed. 45 | Update Mode: updateDependencies 46 | 47 | The following packages were updated: 48 | com.unity.ide.rider from version 1.0.8 to 2.0.2 49 | com.unity.ide.visualstudio from version 1.0.11 to 2.0.1 50 | com.unity.ide.vscode from version 1.0.7 to 1.2.0 51 | com.unity.test-framework from version 1.0.13 to 1.1.14 52 | 53 | === Fri Aug 27 21:11:33 2021 54 | 55 | Packages were changed. 56 | Update Mode: updateDependencies 57 | 58 | The following packages were updated: 59 | com.unity.ext.nunit from version 1.0.0 to 1.0.6 60 | com.unity.ide.rider from version 2.0.2 to 2.0.7 61 | com.unity.ide.visualstudio from version 2.0.1 to 2.0.11 62 | com.unity.ide.vscode from version 1.2.0 to 1.2.3 63 | com.unity.test-framework from version 1.1.14 to 1.1.27 64 | 65 | === Sat Apr 30 13:20:09 2022 66 | 67 | Packages were changed. 68 | Update Mode: updateDependencies 69 | 70 | The following packages were updated: 71 | com.unity.ide.rider from version 2.0.7 to 3.0.13 72 | com.unity.ide.visualstudio from version 2.0.11 to 2.0.14 73 | 74 | === Sun Jun 18 16:12:02 2023 75 | 76 | Packages were changed. 77 | Update Mode: updateDependencies 78 | 79 | The following packages were added: 80 | com.unity.ai.navigation@1.1.3 81 | The following packages were updated: 82 | com.unity.ide.rider from version 3.0.14 to 3.0.21 83 | com.unity.ide.visualstudio from version 2.0.15 to 2.0.18 84 | -------------------------------------------------------------------------------- /Assets/Demo/Prefabs/TestCube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4353797899273688399 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 337319846980575628} 12 | - component: {fileID: 8367226835295291672} 13 | - component: {fileID: 6848083973933869435} 14 | - component: {fileID: 8405070257433273816} 15 | - component: {fileID: -6712226621883921198} 16 | m_Layer: 0 17 | m_Name: TestCube 18 | m_TagString: Untagged 19 | m_Icon: {fileID: 0} 20 | m_NavMeshLayer: 0 21 | m_StaticEditorFlags: 0 22 | m_IsActive: 1 23 | --- !u!4 &337319846980575628 24 | Transform: 25 | m_ObjectHideFlags: 0 26 | m_CorrespondingSourceObject: {fileID: 0} 27 | m_PrefabInstance: {fileID: 0} 28 | m_PrefabAsset: {fileID: 0} 29 | m_GameObject: {fileID: 4353797899273688399} 30 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 31 | m_LocalPosition: {x: 0, y: 0, z: 0} 32 | m_LocalScale: {x: 1, y: 1, z: 1} 33 | m_Children: [] 34 | m_Father: {fileID: 0} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!33 &8367226835295291672 38 | MeshFilter: 39 | m_ObjectHideFlags: 0 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 4353797899273688399} 44 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 45 | --- !u!23 &6848083973933869435 46 | MeshRenderer: 47 | m_ObjectHideFlags: 0 48 | m_CorrespondingSourceObject: {fileID: 0} 49 | m_PrefabInstance: {fileID: 0} 50 | m_PrefabAsset: {fileID: 0} 51 | m_GameObject: {fileID: 4353797899273688399} 52 | m_Enabled: 1 53 | m_CastShadows: 1 54 | m_ReceiveShadows: 1 55 | m_DynamicOccludee: 1 56 | m_MotionVectors: 1 57 | m_LightProbeUsage: 1 58 | m_ReflectionProbeUsage: 1 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_PreserveUVs: 0 71 | m_IgnoreNormalsForChartDetection: 0 72 | m_ImportantGI: 0 73 | m_StitchLightmapSeams: 1 74 | m_SelectedEditorRenderState: 3 75 | m_MinimumChartSize: 4 76 | m_AutoUVMaxDistance: 0.5 77 | m_AutoUVMaxAngle: 89 78 | m_LightmapParameters: {fileID: 0} 79 | m_SortingLayerID: 0 80 | m_SortingLayer: 0 81 | m_SortingOrder: 0 82 | --- !u!65 &8405070257433273816 83 | BoxCollider: 84 | m_ObjectHideFlags: 0 85 | m_CorrespondingSourceObject: {fileID: 0} 86 | m_PrefabInstance: {fileID: 0} 87 | m_PrefabAsset: {fileID: 0} 88 | m_GameObject: {fileID: 4353797899273688399} 89 | m_Material: {fileID: 0} 90 | m_IsTrigger: 0 91 | m_Enabled: 1 92 | serializedVersion: 2 93 | m_Size: {x: 1, y: 1, z: 1} 94 | m_Center: {x: 0, y: 0, z: 0} 95 | --- !u!114 &-6712226621883921198 96 | MonoBehaviour: 97 | m_ObjectHideFlags: 0 98 | m_CorrespondingSourceObject: {fileID: 0} 99 | m_PrefabInstance: {fileID: 0} 100 | m_PrefabAsset: {fileID: 0} 101 | m_GameObject: {fileID: 4353797899273688399} 102 | m_Enabled: 1 103 | m_EditorHideFlags: 0 104 | m_Script: {fileID: 11500000, guid: 85f2943ed2a2d904c8c2c80eeeb49213, type: 3} 105 | m_Name: 106 | m_EditorClassIdentifier: 107 | -------------------------------------------------------------------------------- /Assets/ExtraTools/Resources/ExtraTools/Mixer.mixer: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!241 &24100000 4 | AudioMixerController: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: Mixer 10 | m_OutputGroup: {fileID: 0} 11 | m_MasterGroup: {fileID: 24300002} 12 | m_Snapshots: 13 | - {fileID: 24500006} 14 | m_StartSnapshot: {fileID: 24500006} 15 | m_SuspendThreshold: -80 16 | m_EnableSuspend: 1 17 | m_UpdateMode: 0 18 | m_ExposedParameters: 19 | - guid: f62a8af6308fa7444b27ded4615b866c 20 | name: MasterVolume 21 | - guid: ea7ed979c97592e4c8e6aaa5e29f1e6b 22 | name: MusicVolume 23 | - guid: 325210bfcafb3a948922dfc6a73bf068 24 | name: SFXVolume 25 | m_AudioMixerGroupViews: 26 | - guids: 27 | - 3406c524abe145d4482948aa07c46aa7 28 | - fd822e8bebd76b648aaa43edcb3a1271 29 | - 90fd9d5ce39638b4fa0d280fb7945cf5 30 | name: View 31 | m_CurrentViewIndex: 0 32 | m_TargetSnapshot: {fileID: 24500006} 33 | --- !u!243 &24300002 34 | AudioMixerGroupController: 35 | m_ObjectHideFlags: 0 36 | m_CorrespondingSourceObject: {fileID: 0} 37 | m_PrefabInstance: {fileID: 0} 38 | m_PrefabAsset: {fileID: 0} 39 | m_Name: Master 40 | m_AudioMixer: {fileID: 24100000} 41 | m_GroupID: 3406c524abe145d4482948aa07c46aa7 42 | m_Children: 43 | - {fileID: 8314313559591733837} 44 | - {fileID: 4587640204501386488} 45 | m_Volume: f62a8af6308fa7444b27ded4615b866c 46 | m_Pitch: 4982a33fad3094c4fa21822da31e29b7 47 | m_Send: 00000000000000000000000000000000 48 | m_Effects: 49 | - {fileID: 24400004} 50 | m_UserColorIndex: 0 51 | m_Mute: 0 52 | m_Solo: 0 53 | m_BypassEffects: 0 54 | --- !u!244 &24400004 55 | AudioMixerEffectController: 56 | m_ObjectHideFlags: 3 57 | m_CorrespondingSourceObject: {fileID: 0} 58 | m_PrefabInstance: {fileID: 0} 59 | m_PrefabAsset: {fileID: 0} 60 | m_Name: 61 | m_EffectID: 7b604275167013042b3b21413bf7561a 62 | m_EffectName: Attenuation 63 | m_MixLevel: 85f4791360eaeae45b6c2596ddd24495 64 | m_Parameters: [] 65 | m_SendTarget: {fileID: 0} 66 | m_EnableWetMix: 0 67 | m_Bypass: 0 68 | --- !u!245 &24500006 69 | AudioMixerSnapshotController: 70 | m_ObjectHideFlags: 0 71 | m_CorrespondingSourceObject: {fileID: 0} 72 | m_PrefabInstance: {fileID: 0} 73 | m_PrefabAsset: {fileID: 0} 74 | m_Name: Snapshot 75 | m_AudioMixer: {fileID: 24100000} 76 | m_SnapshotID: 73592c4f78a610c47a939b4f2ecbe4e3 77 | m_FloatValues: {} 78 | m_TransitionOverrides: {} 79 | --- !u!244 &1572475566433818420 80 | AudioMixerEffectController: 81 | m_ObjectHideFlags: 3 82 | m_CorrespondingSourceObject: {fileID: 0} 83 | m_PrefabInstance: {fileID: 0} 84 | m_PrefabAsset: {fileID: 0} 85 | m_Name: 86 | m_EffectID: 6e23bcb916237df43bc636b1741a5bed 87 | m_EffectName: Attenuation 88 | m_MixLevel: ae4e3c0d8959cb447804d0da0f37e3e9 89 | m_Parameters: [] 90 | m_SendTarget: {fileID: 0} 91 | m_EnableWetMix: 0 92 | m_Bypass: 0 93 | --- !u!243 &4587640204501386488 94 | AudioMixerGroupController: 95 | m_ObjectHideFlags: 0 96 | m_CorrespondingSourceObject: {fileID: 0} 97 | m_PrefabInstance: {fileID: 0} 98 | m_PrefabAsset: {fileID: 0} 99 | m_Name: SFX 100 | m_AudioMixer: {fileID: 24100000} 101 | m_GroupID: 90fd9d5ce39638b4fa0d280fb7945cf5 102 | m_Children: [] 103 | m_Volume: 325210bfcafb3a948922dfc6a73bf068 104 | m_Pitch: 76609db8a42a1bd40a189dd9df62e609 105 | m_Send: 00000000000000000000000000000000 106 | m_Effects: 107 | - {fileID: 7615172874682258797} 108 | m_UserColorIndex: 0 109 | m_Mute: 0 110 | m_Solo: 0 111 | m_BypassEffects: 0 112 | --- !u!244 &7615172874682258797 113 | AudioMixerEffectController: 114 | m_ObjectHideFlags: 3 115 | m_CorrespondingSourceObject: {fileID: 0} 116 | m_PrefabInstance: {fileID: 0} 117 | m_PrefabAsset: {fileID: 0} 118 | m_Name: 119 | m_EffectID: a45a0b206f0ef5a4fbecef8b66339e49 120 | m_EffectName: Attenuation 121 | m_MixLevel: 3e97a15c8929f2448aa18062e9ea2dc3 122 | m_Parameters: [] 123 | m_SendTarget: {fileID: 0} 124 | m_EnableWetMix: 0 125 | m_Bypass: 0 126 | --- !u!243 &8314313559591733837 127 | AudioMixerGroupController: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | m_Name: Music 133 | m_AudioMixer: {fileID: 24100000} 134 | m_GroupID: fd822e8bebd76b648aaa43edcb3a1271 135 | m_Children: [] 136 | m_Volume: ea7ed979c97592e4c8e6aaa5e29f1e6b 137 | m_Pitch: d9a3513f6e7a6e84b8e4517653177a7b 138 | m_Send: 00000000000000000000000000000000 139 | m_Effects: 140 | - {fileID: 1572475566433818420} 141 | m_UserColorIndex: 0 142 | m_Mute: 0 143 | m_Solo: 0 144 | m_BypassEffects: 0 145 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoStrings.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: 9 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.37311953, g: 0.38074014, b: 0.3587274, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &1803429224 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 1803429226} 135 | - component: {fileID: 1803429225} 136 | m_Layer: 0 137 | m_Name: StringTest 138 | m_TagString: Untagged 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!114 &1803429225 144 | MonoBehaviour: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 1803429224} 150 | m_Enabled: 1 151 | m_EditorHideFlags: 0 152 | m_Script: {fileID: 11500000, guid: b7d76bddd8e044c4a924186dffff5053, type: 3} 153 | m_Name: 154 | m_EditorClassIdentifier: 155 | testString: 156 | stringToFormat: 'First parameter: {0}, second parameter: {1}' 157 | parameters: 158 | - 123 159 | - asd 160 | --- !u!4 &1803429226 161 | Transform: 162 | m_ObjectHideFlags: 0 163 | m_CorrespondingSourceObject: {fileID: 0} 164 | m_PrefabInstance: {fileID: 0} 165 | m_PrefabAsset: {fileID: 0} 166 | m_GameObject: {fileID: 1803429224} 167 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 168 | m_LocalPosition: {x: 0, y: 0, z: 0} 169 | m_LocalScale: {x: 1, y: 1, z: 1} 170 | m_ConstrainProportionsScale: 0 171 | m_Children: [] 172 | m_Father: {fileID: 0} 173 | m_RootOrder: 0 174 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 175 | -------------------------------------------------------------------------------- /Assets/Demo/Scenes/DemoRandomItem.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: 9 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.37311953, g: 0.38074014, b: 0.3587274, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &1967933257 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 1967933259} 135 | - component: {fileID: 1967933258} 136 | m_Layer: 0 137 | m_Name: TestRandomItem 138 | m_TagString: Untagged 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!114 &1967933258 144 | MonoBehaviour: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 1967933257} 150 | m_Enabled: 1 151 | m_EditorHideFlags: 0 152 | m_Script: {fileID: 11500000, guid: adbc53c381f043efa8bccf592a3ce46c, type: 3} 153 | m_Name: 154 | m_EditorClassIdentifier: 155 | strings: 156 | - One 157 | - Two 158 | - Three 159 | - Four 160 | - Five 161 | floats: 162 | - 1 163 | - 2 164 | - 3 165 | - 4 166 | - 5 167 | transforms: [] 168 | --- !u!4 &1967933259 169 | Transform: 170 | m_ObjectHideFlags: 0 171 | m_CorrespondingSourceObject: {fileID: 0} 172 | m_PrefabInstance: {fileID: 0} 173 | m_PrefabAsset: {fileID: 0} 174 | m_GameObject: {fileID: 1967933257} 175 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 176 | m_LocalPosition: {x: 0, y: 0, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: [] 179 | m_Father: {fileID: 0} 180 | m_RootOrder: 0 181 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 182 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "ignore": false, 8 | "defaultInstantiationMode": 0, 9 | "supportsModification": true 10 | }, 11 | { 12 | "userAdded": false, 13 | "type": "UnityEditor.Animations.AnimatorController", 14 | "ignore": false, 15 | "defaultInstantiationMode": 0, 16 | "supportsModification": true 17 | }, 18 | { 19 | "userAdded": false, 20 | "type": "UnityEngine.AnimatorOverrideController", 21 | "ignore": false, 22 | "defaultInstantiationMode": 0, 23 | "supportsModification": true 24 | }, 25 | { 26 | "userAdded": false, 27 | "type": "UnityEditor.Audio.AudioMixerController", 28 | "ignore": false, 29 | "defaultInstantiationMode": 0, 30 | "supportsModification": true 31 | }, 32 | { 33 | "userAdded": false, 34 | "type": "UnityEngine.ComputeShader", 35 | "ignore": true, 36 | "defaultInstantiationMode": 1, 37 | "supportsModification": true 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEngine.Cubemap", 42 | "ignore": false, 43 | "defaultInstantiationMode": 0, 44 | "supportsModification": true 45 | }, 46 | { 47 | "userAdded": false, 48 | "type": "UnityEngine.GameObject", 49 | "ignore": false, 50 | "defaultInstantiationMode": 0, 51 | "supportsModification": true 52 | }, 53 | { 54 | "userAdded": false, 55 | "type": "UnityEditor.LightingDataAsset", 56 | "ignore": false, 57 | "defaultInstantiationMode": 0, 58 | "supportsModification": false 59 | }, 60 | { 61 | "userAdded": false, 62 | "type": "UnityEngine.LightingSettings", 63 | "ignore": false, 64 | "defaultInstantiationMode": 0, 65 | "supportsModification": true 66 | }, 67 | { 68 | "userAdded": false, 69 | "type": "UnityEngine.Material", 70 | "ignore": false, 71 | "defaultInstantiationMode": 0, 72 | "supportsModification": true 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEditor.MonoScript", 77 | "ignore": true, 78 | "defaultInstantiationMode": 1, 79 | "supportsModification": true 80 | }, 81 | { 82 | "userAdded": false, 83 | "type": "UnityEngine.PhysicMaterial", 84 | "ignore": false, 85 | "defaultInstantiationMode": 0, 86 | "supportsModification": true 87 | }, 88 | { 89 | "userAdded": false, 90 | "type": "UnityEngine.PhysicsMaterial2D", 91 | "ignore": false, 92 | "defaultInstantiationMode": 0, 93 | "supportsModification": true 94 | }, 95 | { 96 | "userAdded": false, 97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 98 | "ignore": false, 99 | "defaultInstantiationMode": 0, 100 | "supportsModification": true 101 | }, 102 | { 103 | "userAdded": false, 104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 105 | "ignore": false, 106 | "defaultInstantiationMode": 0, 107 | "supportsModification": true 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Rendering.VolumeProfile", 112 | "ignore": false, 113 | "defaultInstantiationMode": 0, 114 | "supportsModification": true 115 | }, 116 | { 117 | "userAdded": false, 118 | "type": "UnityEditor.SceneAsset", 119 | "ignore": false, 120 | "defaultInstantiationMode": 0, 121 | "supportsModification": false 122 | }, 123 | { 124 | "userAdded": false, 125 | "type": "UnityEngine.Shader", 126 | "ignore": true, 127 | "defaultInstantiationMode": 1, 128 | "supportsModification": true 129 | }, 130 | { 131 | "userAdded": false, 132 | "type": "UnityEngine.ShaderVariantCollection", 133 | "ignore": true, 134 | "defaultInstantiationMode": 1, 135 | "supportsModification": true 136 | }, 137 | { 138 | "userAdded": false, 139 | "type": "UnityEngine.Texture", 140 | "ignore": false, 141 | "defaultInstantiationMode": 0, 142 | "supportsModification": true 143 | }, 144 | { 145 | "userAdded": false, 146 | "type": "UnityEngine.Texture2D", 147 | "ignore": false, 148 | "defaultInstantiationMode": 0, 149 | "supportsModification": true 150 | }, 151 | { 152 | "userAdded": false, 153 | "type": "UnityEngine.Timeline.TimelineAsset", 154 | "ignore": false, 155 | "defaultInstantiationMode": 0, 156 | "supportsModification": true 157 | } 158 | ], 159 | "defaultDependencyTypeInfo": { 160 | "userAdded": false, 161 | "type": "", 162 | "ignore": false, 163 | "defaultInstantiationMode": 1, 164 | "supportsModification": true 165 | }, 166 | "newSceneOverride": 0 167 | } -------------------------------------------------------------------------------- /Assets/ExtraTools/Scripts/PopUp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | namespace ExtraTools 7 | { 8 | public readonly struct MessageButton 9 | { 10 | public readonly string label; 11 | public readonly Action callback; 12 | 13 | public MessageButton(string labelText, Action callbackAction) 14 | { 15 | label = labelText; 16 | callback = callbackAction; 17 | } 18 | } 19 | 20 | public readonly struct Message 21 | { 22 | public readonly Sprite img; 23 | public readonly string message; 24 | public readonly MessageButton[] buttons; 25 | 26 | public Message(string msg, Sprite messageIcon = null, params MessageButton[] messageButtons) 27 | { 28 | message = msg; 29 | img = messageIcon; 30 | 31 | buttons = messageButtons?.Length > 0 32 | ? messageButtons 33 | : new[] { new MessageButton("OK", () => {}) }; 34 | } 35 | } 36 | 37 | public class PopUp : MonoBehaviour 38 | { 39 | [SerializeField] private Canvas canvas; 40 | [SerializeField] private Text messageLabel; 41 | [SerializeField] private Image messageImage; 42 | [SerializeField] private Text message; 43 | [SerializeField] private GameObject buttonPrefab; 44 | [SerializeField] private Transform buttonsParent; 45 | 46 | private List