From e58a138bea26f8dd83f02278a6d092d2538fe5db Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Jan 2022 17:10:16 +1100 Subject: [PATCH] init --- .gitattributes | 6 + .gitignore | 59 ++ .vscode/settings.json | 56 ++ Assets/.gitignore | 59 ++ Assets/Bar.prefab | 41 ++ Assets/Bar.prefab.meta | 7 + Assets/Materials.meta | 8 + Assets/Materials/Background.mat | 91 +++ Assets/Materials/Background.mat.meta | 8 + Assets/Materials/Main.cs | 18 + Assets/Materials/Main.cs.meta | 11 + Assets/Scenes.meta | 8 + Assets/Scenes/Main.unity | 443 +++++++++++ Assets/Scenes/Main.unity.meta | 7 + Assets/Textus.meta | 8 + Assets/Textus/SerializeReferenceUI.meta | 8 + Assets/Textus/SerializeReferenceUI/Core.meta | 8 + .../Core/ManagedReferenceUtility.cs | 98 +++ .../Core/ManagedReferenceUtility.cs.meta | 11 + .../SerializeReferenceGenericSelectionMenu.cs | 68 ++ ...alizeReferenceGenericSelectionMenu.cs.meta | 11 + ...erializeReferenceTypeRestrictionFilters.cs | 14 + ...izeReferenceTypeRestrictionFilters.cs.meta | 11 + .../DefaultAttributes.meta | 8 + .../SerializeReferenceButtonAttribute.meta | 8 + .../SerializeReferenceButtonAttribute.cs | 8 + .../SerializeReferenceButtonAttribute.cs.meta | 3 + ...SerializeReferenceButtonAttributeDrawer.cs | 31 + ...lizeReferenceButtonAttributeDrawer.cs.meta | 3 + .../SerializeReferenceMenuAttribute.meta | 8 + .../SerializeReferenceMenuAttribute.cs | 8 + .../SerializeReferenceMenuAttribute.cs.meta | 3 + .../SerializeReferenceMenuAttributeDrawer.cs | 26 + ...ializeReferenceMenuAttributeDrawer.cs.meta | 3 + ...izeReferenceUIRestrictionExcludeTypes.meta | 8 + ...alizeReferenceUIRestrictionExcludeTypes.cs | 10 + ...ReferenceUIRestrictionExcludeTypes.cs.meta | 11 + ...izeReferenceUIRestrictionIncludeTypes.meta | 8 + ...alizeReferenceUIRestrictionIncludeTypes.cs | 10 + ...ReferenceUIRestrictionIncludeTypes.cs.meta | 11 + ...lizedReferenceUIDefaultTypeRestrictions.cs | 26 + ...ReferenceUIDefaultTypeRestrictions.cs.meta | 11 + .../SerializeReferenceUI/DefaultUI.meta | 8 + .../SerializeReferenceInspectorButton.cs | 45 ++ .../SerializeReferenceInspectorButton.cs.meta | 11 + ...ializeReferenceInspectorMiddleMouseMenu.cs | 21 + ...eReferenceInspectorMiddleMouseMenu.cs.meta | 11 + .../Textus/SerializeReferenceUI/LICENSE.txt | 21 + .../SerializeReferenceUI/LICENSE.txt.meta | 7 + .../Textus.SerializeReferenceUI.asmdef | 3 + .../Textus.SerializeReferenceUI.asmdef.meta | 7 + .../Textus/SerializeReferenceUIExample.meta | 8 + .../ExampleAnimalWorldAssembly.meta | 8 + .../AmimalWorld.asmdef | 3 + .../AmimalWorld.asmdef.meta | 7 + .../ExampleAnimalWorldAssembly/Animals.meta | 8 + .../Animals/AnimalBase.cs | 42 ++ .../Animals/AnimalBase.cs.meta | 11 + .../Animals/IAnimal.cs | 4 + .../Animals/IAnimal.cs.meta | 11 + .../Animals/MammalBase.cs | 7 + .../Animals/MammalBase.cs.meta | 3 + .../ExampleFolderCanBeSafelyRemoved.txt | 0 .../ExampleFolderCanBeSafelyRemoved.txt.meta | 7 + .../ExampleOfUsageFromDifferentAssembly.meta | 8 + .../Animals.meta | 8 + .../Animals/AnimalStruct.cs | 9 + .../Animals/AnimalStruct.cs.meta | 11 + .../Animals/ApeBase.cs | 30 + .../Animals/ApeBase.cs.meta | 11 + .../Animals/CatBase.cs | 30 + .../Animals/CatBase.cs.meta | 11 + .../Animals/DogBase.cs | 30 + .../Animals/DogBase.cs.meta | 11 + .../Animals/FishBase.cs | 28 + .../Animals/FishBase.cs.meta | 11 + .../Animals/InsectBase.cs | 30 + .../Animals/InsectBase.cs.meta | 11 + .../NotSupportedTypes.meta | 8 + .../ExampleOfNotSupportedTypes.cs | 27 + .../ExampleOfNotSupportedTypes.cs.meta | 11 + .../SerializedReferenceExample.asmdef | 16 + .../SerializedReferenceExample.asmdef.meta | 7 + .../TestingAnimalWorldExample.meta | 8 + .../TestingAnimalWorldExample/Scenes.meta | 8 + .../Scenes/SampleSceneSettings.lighting | 62 ++ .../Scenes/SampleSceneSettings.lighting.meta | 8 + .../SerializeRefereneceUIExampleScene.unity | 231 ++++++ ...rializeRefereneceUIExampleScene.unity.meta | 7 + .../TestingAnimalWorldExample/Test.cs | 58 ++ .../TestingAnimalWorldExample/Test.cs.meta | 3 + Assets/Tripsitter.cs | 20 + Assets/Tripsitter.cs.meta | 11 + Assets/TripsitterAve.cs | 9 + Assets/TripsitterAve.cs.meta | 11 + Assets/Visualisation.cs | 10 + Assets/Visualisation.cs.meta | 11 + Assets/WasapiAudio.meta | 8 + Assets/WasapiAudio/Editor.meta | 8 + .../Editor/SpectrumDataPreviewDrawer.cs | 81 +++ .../Editor/SpectrumDataPreviewDrawer.cs.meta | 11 + Assets/WasapiAudio/Plugins.meta | 8 + Assets/WasapiAudio/Plugins/CSCore.dll | 3 + Assets/WasapiAudio/Plugins/CSCore.dll.meta | 33 + Assets/WasapiAudio/Scripts.meta | 8 + Assets/WasapiAudio/Scripts/Core.meta | 8 + .../Scripts/Core/BasicSpectrumProvider.cs | 60 ++ .../Core/BasicSpectrumProvider.cs.meta | 11 + .../Scripts/Core/BiQuadFilterSource.cs | 45 ++ .../Scripts/Core/BiQuadFilterSource.cs.meta | 11 + .../Scripts/Core/ISpectrumProvider.cs | 8 + .../Scripts/Core/ISpectrumProvider.cs.meta | 11 + .../WasapiAudio/Scripts/Core/LineSpectrum.cs | 41 ++ .../Scripts/Core/LineSpectrum.cs.meta | 11 + .../Scripts/Core/ScalingStrategy.cs | 9 + .../Scripts/Core/ScalingStrategy.cs.meta | 11 + .../WasapiAudio/Scripts/Core/SpectrumBase.cs | 177 +++++ .../Scripts/Core/SpectrumBase.cs.meta | 11 + .../Scripts/Core/SpectrumSmoother.cs | 48 ++ .../Scripts/Core/SpectrumSmoother.cs.meta | 11 + .../WasapiAudio/Scripts/Core/WasapiAudio.cs | 140 ++++ .../Scripts/Core/WasapiAudio.cs.meta | 11 + .../Scripts/Core/WasapiAudioFilter.cs | 18 + .../Scripts/Core/WasapiAudioFilter.cs.meta | 11 + .../Scripts/Core/WasapiCaptureType.cs | 8 + .../Scripts/Core/WasapiCaptureType.cs.meta | 11 + Assets/WasapiAudio/Scripts/Unity.meta | 8 + .../Scripts/Unity/AudioVisualizationEffect.cs | 57 ++ .../Unity/AudioVisualizationEffect.cs.meta | 11 + .../Unity/AudioVisualizationProfile.cs | 17 + .../Unity/AudioVisualizationProfile.cs.meta | 11 + .../AudioVisualizationSpectrumBandEffect.cs | 13 + ...dioVisualizationSpectrumBandEffect.cs.meta | 11 + .../WasapiAudio/Scripts/Unity/SpectrumData.cs | 10 + .../Scripts/Unity/SpectrumData.cs.meta | 11 + .../Unity/SpectrumDataPreviewAttribute.cs | 10 + .../SpectrumDataPreviewAttribute.cs.meta | 11 + .../Scripts/Unity/SpectrumTransformer.cs | 43 ++ .../Scripts/Unity/SpectrumTransformer.cs.meta | 11 + .../Scripts/Unity/Transformers.meta | 8 + .../CurveScaledSpectrumTransformer.cs | 28 + .../CurveScaledSpectrumTransformer.cs.meta | 11 + .../PercentileBoostSpectrumTransformer.cs | 64 ++ ...PercentileBoostSpectrumTransformer.cs.meta | 11 + .../Transformers/SmoothSpectrumTransformer.cs | 25 + .../SmoothSpectrumTransformer.cs.meta | 11 + .../Unity/VfxAudioSpectrumDataBinder.cs | 53 ++ .../Unity/VfxAudioSpectrumDataBinder.cs.meta | 11 + .../Unity/VfxAudioVisualizationEffect.cs | 52 ++ .../Unity/VfxAudioVisualizationEffect.cs.meta | 11 + .../Scripts/Unity/WasapiAudioSource.cs | 46 ++ .../Scripts/Unity/WasapiAudioSource.cs.meta | 11 + Packages/manifest.json | 44 ++ Packages/packages-lock.json | 395 ++++++++++ ProjectSettings/AudioManager.asset | 19 + ProjectSettings/ClusterInputManager.asset | 6 + ProjectSettings/DynamicsManager.asset | 34 + ProjectSettings/EditorBuildSettings.asset | 8 + ProjectSettings/EditorSettings.asset | 30 + ProjectSettings/GraphicsSettings.asset | 63 ++ ProjectSettings/InputManager.asset | 487 +++++++++++++ ProjectSettings/NavMeshAreas.asset | 91 +++ ProjectSettings/PackageManagerSettings.asset | 43 ++ ProjectSettings/Physics2DSettings.asset | 56 ++ ProjectSettings/PresetManager.asset | 7 + ProjectSettings/ProjectSettings.asset | 688 ++++++++++++++++++ ProjectSettings/ProjectVersion.txt | 2 + ProjectSettings/QualitySettings.asset | 232 ++++++ ProjectSettings/SceneTemplateSettings.json | 167 +++++ ProjectSettings/TagManager.asset | 43 ++ ProjectSettings/TimeManager.asset | 9 + ProjectSettings/UnityConnectSettings.asset | 35 + ProjectSettings/VFXManager.asset | 14 + ProjectSettings/VersionControlSettings.asset | 8 + ProjectSettings/XRSettings.asset | 10 + UserSettings/EditorUserSettings.asset | 24 + 176 files changed, 6194 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 Assets/.gitignore create mode 100644 Assets/Bar.prefab create mode 100644 Assets/Bar.prefab.meta create mode 100644 Assets/Materials.meta create mode 100644 Assets/Materials/Background.mat create mode 100644 Assets/Materials/Background.mat.meta create mode 100644 Assets/Materials/Main.cs create mode 100644 Assets/Materials/Main.cs.meta create mode 100644 Assets/Scenes.meta create mode 100644 Assets/Scenes/Main.unity create mode 100644 Assets/Scenes/Main.unity.meta create mode 100644 Assets/Textus.meta create mode 100644 Assets/Textus/SerializeReferenceUI.meta create mode 100644 Assets/Textus/SerializeReferenceUI/Core.meta create mode 100644 Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs create mode 100644 Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs create mode 100644 Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs create mode 100644 Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultUI.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs create mode 100644 Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUI/LICENSE.txt create mode 100644 Assets/Textus/SerializeReferenceUI/LICENSE.txt.meta create mode 100644 Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef create mode 100644 Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity.meta create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs create mode 100644 Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs.meta create mode 100644 Assets/Tripsitter.cs create mode 100644 Assets/Tripsitter.cs.meta create mode 100644 Assets/TripsitterAve.cs create mode 100644 Assets/TripsitterAve.cs.meta create mode 100644 Assets/Visualisation.cs create mode 100644 Assets/Visualisation.cs.meta create mode 100644 Assets/WasapiAudio.meta create mode 100644 Assets/WasapiAudio/Editor.meta create mode 100644 Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs create mode 100644 Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs.meta create mode 100644 Assets/WasapiAudio/Plugins.meta create mode 100644 Assets/WasapiAudio/Plugins/CSCore.dll create mode 100644 Assets/WasapiAudio/Plugins/CSCore.dll.meta create mode 100644 Assets/WasapiAudio/Scripts.meta create mode 100644 Assets/WasapiAudio/Scripts/Core.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs create mode 100644 Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs.meta create mode 100644 Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs create mode 100644 Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs.meta create mode 100644 Packages/manifest.json create mode 100644 Packages/packages-lock.json create mode 100644 ProjectSettings/AudioManager.asset create mode 100644 ProjectSettings/ClusterInputManager.asset create mode 100644 ProjectSettings/DynamicsManager.asset create mode 100644 ProjectSettings/EditorBuildSettings.asset create mode 100644 ProjectSettings/EditorSettings.asset create mode 100644 ProjectSettings/GraphicsSettings.asset create mode 100644 ProjectSettings/InputManager.asset create mode 100644 ProjectSettings/NavMeshAreas.asset create mode 100644 ProjectSettings/PackageManagerSettings.asset create mode 100644 ProjectSettings/Physics2DSettings.asset create mode 100644 ProjectSettings/PresetManager.asset create mode 100644 ProjectSettings/ProjectSettings.asset create mode 100644 ProjectSettings/ProjectVersion.txt create mode 100644 ProjectSettings/QualitySettings.asset create mode 100644 ProjectSettings/SceneTemplateSettings.json create mode 100644 ProjectSettings/TagManager.asset create mode 100644 ProjectSettings/TimeManager.asset create mode 100644 ProjectSettings/UnityConnectSettings.asset create mode 100644 ProjectSettings/VFXManager.asset create mode 100644 ProjectSettings/VersionControlSettings.asset create mode 100644 ProjectSettings/XRSettings.asset create mode 100644 UserSettings/EditorUserSettings.asset diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5f69846 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +*.raw filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text +*.xcf filter=lfs diff=lfs merge=lfs -text +*.dll filter=lfs diff=lfs merge=lfs -text +Assets/Scenes/ZKNFT_Wald/New[[:space:]]Terrain.asset filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a046de --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Mm]emoryCaptures/ + +# Never ignore Asset meta data +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1060b04 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,56 @@ +{ + "files.exclude": + { + "**/.DS_Store":true, + "**/.git":true, + "**/.gitignore":true, + "**/.gitmodules":true, + "**/*.booproj":true, + "**/*.pidb":true, + "**/*.suo":true, + "**/*.user":true, + "**/*.userprefs":true, + "**/*.unityproj":true, + "**/*.dll":true, + "**/*.exe":true, + "**/*.pdf":true, + "**/*.mid":true, + "**/*.midi":true, + "**/*.wav":true, + "**/*.gif":true, + "**/*.ico":true, + "**/*.jpg":true, + "**/*.jpeg":true, + "**/*.png":true, + "**/*.psd":true, + "**/*.tga":true, + "**/*.tif":true, + "**/*.tiff":true, + "**/*.3ds":true, + "**/*.3DS":true, + "**/*.fbx":true, + "**/*.FBX":true, + "**/*.lxo":true, + "**/*.LXO":true, + "**/*.ma":true, + "**/*.MA":true, + "**/*.obj":true, + "**/*.OBJ":true, + "**/*.asset":true, + "**/*.cubemap":true, + "**/*.flare":true, + "**/*.mat":true, + "**/*.meta":true, + "**/*.prefab":true, + "**/*.unity":true, + "build/":true, + "Build/":true, + "Library/":true, + "library/":true, + "obj/":true, + "Obj/":true, + "ProjectSettings/":true, + "temp/":true, + "Temp/":true + } +} \ No newline at end of file diff --git a/Assets/.gitignore b/Assets/.gitignore new file mode 100644 index 0000000..0a046de --- /dev/null +++ b/Assets/.gitignore @@ -0,0 +1,59 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Mm]emoryCaptures/ + +# Never ignore Asset meta data +!/[Aa]ssets/**/*.meta + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage + +# Crashlytics generated file +crashlytics-build.properties diff --git a/Assets/Bar.prefab b/Assets/Bar.prefab new file mode 100644 index 0000000..3e17177 --- /dev/null +++ b/Assets/Bar.prefab @@ -0,0 +1,41 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &9018333240192484584 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1295477540953538798} + - component: {fileID: -3374953038235817525} + m_Layer: 0 + m_Name: Bar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1295477540953538798 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9018333240192484584} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &-3374953038235817525 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9018333240192484584} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/Bar.prefab.meta b/Assets/Bar.prefab.meta new file mode 100644 index 0000000..92c3826 --- /dev/null +++ b/Assets/Bar.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 01068a18d9bff734da651a6b6899f3b6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials.meta b/Assets/Materials.meta new file mode 100644 index 0000000..3eccfdd --- /dev/null +++ b/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7098b4f3ac19ff84c96e4c80f5ca319d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Background.mat b/Assets/Materials/Background.mat new file mode 100644 index 0000000..17cc4f5 --- /dev/null +++ b/Assets/Materials/Background.mat @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Background + m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _SUNDISK_HIGH_QUALITY + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _AtmosphereThickness: 1 + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Exposure: 1.3 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Rotation: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SunDisk: 2 + - _SunSize: 0.04 + - _SunSizeConvergence: 5 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GroundColor: {r: 0.369, g: 0.349, b: 0.341, a: 1} + - _SkyTint: {r: 0.5, g: 0.5, b: 0.5, a: 1} + - _Tint: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/Background.mat.meta b/Assets/Materials/Background.mat.meta new file mode 100644 index 0000000..8b19786 --- /dev/null +++ b/Assets/Materials/Background.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3c9d8b1fb89ff34c882dfa9e1322c71 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Materials/Main.cs b/Assets/Materials/Main.cs new file mode 100644 index 0000000..7c40c02 --- /dev/null +++ b/Assets/Materials/Main.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Main : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Materials/Main.cs.meta b/Assets/Materials/Main.cs.meta new file mode 100644 index 0000000..042a6ce --- /dev/null +++ b/Assets/Materials/Main.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 675d3d186a96f4c498f1af5c07d8dbcc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..3914022 --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89de2831fb43fc749abf13283a2d02cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity new file mode 100644 index 0000000..93d4550 --- /dev/null +++ b/Assets/Scenes/Main.unity @@ -0,0 +1,443 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 2100000, guid: f3c9d8b1fb89ff34c882dfa9e1322c71, type: 2} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 705507994} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &523739710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 523739712} + - component: {fileID: 523739711} + m_Layer: 0 + m_Name: WasapiLoopback + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!114 &523739711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523739710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 120ca4c4f9442e14db8c72acac5da136, type: 3} + m_Name: + m_EditorClassIdentifier: + CaptureType: 0 + SpectrumSize: 128 + ScalingStrategy: 2 + MinFrequency: 80 + MaxFrequency: 20000 + Filters: [] +--- !u!4 &523739712 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523739710} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &705507993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 705507995} + - component: {fileID: 705507994} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &705507994 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &705507995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 705507993} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &932500211 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932500212} + - component: {fileID: 932500213} + m_Layer: 0 + m_Name: Tripsitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &932500212 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932500211} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &932500213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932500211} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 575f46cd31a2b694bb2579e3a3eca9cc, type: 3} + m_Name: + m_EditorClassIdentifier: + ave: {fileID: 957752734} +--- !u!1 &957752733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 957752735} + - component: {fileID: 957752734} + m_Layer: 0 + m_Name: TripsitterAve + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &957752734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957752733} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0531e4e136b0daa41a7bbd6ac7ceed8c, type: 3} + m_Name: + m_EditorClassIdentifier: + WasapiAudioSource: {fileID: 523739711} + Transformers: [] + Preview: + Values: [] + references: + version: 1 +--- !u!4 &957752735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 957752733} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &963194225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 963194228} + - component: {fileID: 963194227} + - component: {fileID: 963194226} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &963194226 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 +--- !u!20 &963194227 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &963194228 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 963194225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Main.unity.meta b/Assets/Scenes/Main.unity.meta new file mode 100644 index 0000000..952bd1e --- /dev/null +++ b/Assets/Scenes/Main.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fc0d4010bbf28b4594072e72b8655ab +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus.meta b/Assets/Textus.meta new file mode 100644 index 0000000..1f5fb0c --- /dev/null +++ b/Assets/Textus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb55b8f9e66724c43badf13f7ab52569 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI.meta b/Assets/Textus/SerializeReferenceUI.meta new file mode 100644 index 0000000..3bbf7b3 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f549199d6eac96943ae073e003f12aa3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/Core.meta b/Assets/Textus/SerializeReferenceUI/Core.meta new file mode 100644 index 0000000..ab21a34 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1388bc43afa1f4e41ba1032dcee62b04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs b/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs new file mode 100644 index 0000000..0d67e39 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs @@ -0,0 +1,98 @@ +#if UNITY_EDITOR + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using Object = UnityEngine.Object; + +public static class ManagedReferenceUtility +{ + /// Creates instance of passed type and assigns it to managed reference + public static object AssignNewInstanceOfTypeToManagedReference(this SerializedProperty serializedProperty, Type type) + { + var instance = Activator.CreateInstance(type); + + serializedProperty.serializedObject.Update(); + serializedProperty.managedReferenceValue = instance; + serializedProperty.serializedObject.ApplyModifiedProperties(); + + return instance; + } + + /// Sets managed reference to null + public static void SetManagedReferenceToNull(this SerializedProperty serializedProperty) + { + serializedProperty.serializedObject.Update(); + serializedProperty.managedReferenceValue = null; + serializedProperty.serializedObject.ApplyModifiedProperties(); + } + + /// Collects appropriate types based on managed reference field type and filters. Filters all derive + public static IEnumerable GetAppropriateTypesForAssigningToManagedReference(this SerializedProperty property, List> filters = null) + { + var fieldType = property.GetManagedReferenceFieldType(); + return GetAppropriateTypesForAssigningToManagedReference(fieldType, filters); + } + + /// Filters derived types of field typ parameter and finds ones whose are compatible with managed reference and filters. + public static IEnumerable GetAppropriateTypesForAssigningToManagedReference(Type fieldType, List> filters = null) + { + var appropriateTypes = new List(); + + // Get and filter all appropriate types + var derivedTypes = TypeCache.GetTypesDerivedFrom(fieldType); + foreach (var type in derivedTypes) + { + // Skips unity engine Objects (because they are not serialized by SerializeReference) + if (type.IsSubclassOf(typeof(Object))) + continue; + // Skip abstract classes because they should not be instantiated + if (type.IsAbstract) + continue; + // Skip types that has no public empty constructors (activator can not create them) + if (type.IsClass && type.GetConstructor(Type.EmptyTypes) == null) // Structs still can be created (strangely) + continue; + // Filter types by provided filters if there is ones + if (filters != null && filters.All(f => f == null || f.Invoke(type)) == false) + continue; + + appropriateTypes.Add(type); + } + + return appropriateTypes; + } + + /// Gets real type of managed reference + public static Type GetManagedReferenceFieldType(this SerializedProperty property) + { + var realPropertyType = GetRealTypeFromTypename(property.managedReferenceFieldTypename); + if (realPropertyType != null) + return realPropertyType; + + Debug.LogError($"Can not get field type of managed reference : {property.managedReferenceFieldTypename}"); + return null; + } + + /// Gets real type of managed reference's field typeName + public static Type GetRealTypeFromTypename(string stringType) + { + var names = GetSplitNamesFromTypename(stringType); + var realType = Type.GetType($"{names.ClassName}, {names.AssemblyName}"); + return realType; + } + + /// Get assembly and class names from typeName + public static (string AssemblyName, string ClassName) GetSplitNamesFromTypename(string typename) + { + if (string.IsNullOrEmpty(typename)) + return ("",""); + + var typeSplitString = typename.Split(char.Parse(" ")); + var typeClassName = typeSplitString[1]; + var typeAssemblyName = typeSplitString[0]; + return (typeAssemblyName, typeClassName); + } +} +#endif \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs.meta b/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs.meta new file mode 100644 index 0000000..0662a26 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/ManagedReferenceUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07d7d3b6c96d5a04093953c060518522 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs new file mode 100644 index 0000000..a7490a3 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs @@ -0,0 +1,68 @@ +#if UNITY_EDITOR + +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +public static class SerializeReferenceGenericSelectionMenu +{ + /// Purpose. + /// This is generic selection menu. + /// Filtering. + /// You can add substring filter here to filter by search string. + /// As well ass type or interface restrictions. + /// As well as any custom restriction that is based on input type. + /// And it will be performed on each Appropriate type found by TypeCache. + public static void ShowContextMenuForManagedReference(this SerializedProperty property, IEnumerable> filters = null) + { + var context = new GenericMenu(); + FillContextMenu(filters, context, property); + context.ShowAsContext(); + } + + private static void FillContextMenu(IEnumerable> enumerableFilters, GenericMenu contextMenu, SerializedProperty property) + { + var filters = enumerableFilters.ToList();// Prevents possible multiple enumerations + + // Adds "Make Null" menu command + contextMenu.AddItem(new GUIContent("Null"), false, property.SetManagedReferenceToNull); + + // Collects appropriate types + var appropriateTypes = property.GetAppropriateTypesForAssigningToManagedReference(filters); + + // Adds appropriate types to menu + foreach (var appropriateType in appropriateTypes) + AddItemToContextMenu(appropriateType, contextMenu, property); + } + + private static void AddItemToContextMenu(Type type, GenericMenu genericMenuContext, SerializedProperty property) + { + var assemblyName = type.Assembly.ToString().Split('(', ',')[0]; + var entryName = type + " ( " + assemblyName + " )"; + genericMenuContext.AddItem(new GUIContent(entryName), false, AssignNewInstanceCommand, new GenericMenuParameterForAssignInstanceCommand(type, property)); + } + + private static void AssignNewInstanceCommand(object objectGenericMenuParameter ) + { + var parameter = (GenericMenuParameterForAssignInstanceCommand) objectGenericMenuParameter; + var type = parameter.Type; + var property = parameter.Property; + property.AssignNewInstanceOfTypeToManagedReference(type); + } + + private readonly struct GenericMenuParameterForAssignInstanceCommand + { + public GenericMenuParameterForAssignInstanceCommand(Type type, SerializedProperty property) + { + Type = type; + Property = property; + } + + public readonly SerializedProperty Property; + public readonly Type Type; + } +} + +#endif \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs.meta b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs.meta new file mode 100644 index 0000000..40eafcb --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceGenericSelectionMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7796948b498be241ba10c88bcf3d5fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs new file mode 100644 index 0000000..bfe06a6 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs @@ -0,0 +1,14 @@ + using System; +using System.Linq; + +public static class SerializeReferenceTypeRestrictionFilters +{ + public static Func TypeIsNotSubclassOrEqualOrHasInterface(Type[] types) => type => + TypeIsSubclassOrEqualOrHasInterface(types).Invoke(type) == false; + + public static Func TypeIsSubclassOrEqualOrHasInterface(Type[] types) => type => + types.Any(e => e.IsInterface ? TypeHasInterface(type, e) : TypeIsSubclassOrEqual(type, e)); + + public static bool TypeIsSubclassOrEqual(Type type, Type comparator) => type.IsSubclassOf(comparator) || type == comparator; + public static bool TypeHasInterface(this Type type, Type comparator) => type.GetInterface(comparator.ToString()) != null; +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs.meta b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs.meta new file mode 100644 index 0000000..0788562 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Core/SerializeReferenceTypeRestrictionFilters.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b71802ffed0a18d43901672fcbf668c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes.meta new file mode 100644 index 0000000..d734cea --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c962b02723999754ba9b137d407b5ec0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute.meta new file mode 100644 index 0000000..c7cdbed --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 827f3a2847b39a94eb6fcbdb0d73d6ca +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs new file mode 100644 index 0000000..1ec73db --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs @@ -0,0 +1,8 @@ +using System; +using UnityEngine; + +[AttributeUsage(AttributeTargets.Field)] +public class SerializeReferenceButtonAttribute : PropertyAttribute +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs.meta new file mode 100644 index 0000000..a654ed1 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c64e0f68b41b48939c9b98cc29a19b20 +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs new file mode 100644 index 0000000..e266bde --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs @@ -0,0 +1,31 @@ +#if UNITY_EDITOR + +using UnityEditor; +using UnityEngine; + +[CustomPropertyDrawer(typeof(SerializeReferenceButtonAttribute))] +public class SerializeReferenceButtonAttributeDrawer : PropertyDrawer +{ + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, true); + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + + EditorGUI.BeginProperty(position, label, property); + + var labelPosition = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight); + EditorGUI.LabelField(labelPosition, label); + + var typeRestrictions = SerializedReferenceUIDefaultTypeRestrictions.GetAllBuiltInTypeRestrictions(fieldInfo); + property.DrawSelectionButtonForManagedReference(position, typeRestrictions); + + EditorGUI.PropertyField(position, property, GUIContent.none, true); + + EditorGUI.EndProperty(); + } +} +#endif \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs.meta new file mode 100644 index 0000000..a7e4f79 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceButtonAttribute/SerializeReferenceButtonAttributeDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5a07638044724309b6088c28a11a15af +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute.meta new file mode 100644 index 0000000..d06118c --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ff8136ca43f822642adfa6388b137133 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs new file mode 100644 index 0000000..d6cbae4 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs @@ -0,0 +1,8 @@ +using System; +using UnityEngine; + +[AttributeUsage(AttributeTargets.Field)] +public class SerializeReferenceMenuAttribute : PropertyAttribute +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs.meta new file mode 100644 index 0000000..90f6b67 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4f1c372fa681cf146973df30a0d969fd +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs new file mode 100644 index 0000000..4c1f71a --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs @@ -0,0 +1,26 @@ +#if UNITY_EDITOR + +using UnityEditor; +using UnityEngine; + +[CustomPropertyDrawer(typeof(SerializeReferenceMenuAttribute))] +public class SerializeReferenceMenuAttributeDrawer : PropertyDrawer +{ + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, true); + } + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + var typeRestrictions = SerializedReferenceUIDefaultTypeRestrictions.GetAllBuiltInTypeRestrictions(fieldInfo); + property.ShowContextMenuForManagedReferenceOnMouseMiddleButton(position, typeRestrictions); + + EditorGUI.PropertyField(position, property, true); + EditorGUI.EndProperty(); + } +} +#endif + diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs.meta new file mode 100644 index 0000000..8fd963d --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceMenuAttribute/SerializeReferenceMenuAttributeDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: eaa31b1c39ee9424abe12fa0034d9d1b +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes.meta new file mode 100644 index 0000000..d774d13 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fbe55d72b5fd59459fdb52e0f301ea1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs new file mode 100644 index 0000000..3df6f31 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs @@ -0,0 +1,10 @@ +using System; +using UnityEngine; + +/// None of this types or interface types are valid. +[AttributeUsage(AttributeTargets.Field)] +public class SerializeReferenceUIRestrictionExcludeTypes : PropertyAttribute +{ + public readonly Type[] Types; + public SerializeReferenceUIRestrictionExcludeTypes(params Type[] types) => Types = types; +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs.meta new file mode 100644 index 0000000..961de1e --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionExcludeTypes/SerializeReferenceUIRestrictionExcludeTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff5f6060287437048acba59e670cd000 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes.meta new file mode 100644 index 0000000..2ab11e3 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c0c77910f7962a14cb85132596cb8d24 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs new file mode 100644 index 0000000..6325a03 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs @@ -0,0 +1,10 @@ +using System; +using UnityEngine; + +/// Any of this types or interface types are valid. And only this types can be presented. +[AttributeUsage(AttributeTargets.Field)] +public class SerializeReferenceUIRestrictionIncludeTypes : PropertyAttribute +{ + public readonly Type[] Types; + public SerializeReferenceUIRestrictionIncludeTypes(params Type[] types) => Types = types; +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs.meta new file mode 100644 index 0000000..5dfe5a4 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializeReferenceUIRestrictionIncludeTypes/SerializeReferenceUIRestrictionIncludeTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d10fb8315984ef458e4129191b17931 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs new file mode 100644 index 0000000..80dd966 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Reflection; + +public static class SerializedReferenceUIDefaultTypeRestrictions +{ + public static IEnumerable> GetAllBuiltInTypeRestrictions(FieldInfo fieldInfo) + { + var result = new List>(); + + var attributeObjects = fieldInfo.GetCustomAttributes(false); + foreach (var attributeObject in attributeObjects) + { + switch (attributeObject) + { + case SerializeReferenceUIRestrictionIncludeTypes includeTypes: + result.Add(SerializeReferenceTypeRestrictionFilters.TypeIsSubclassOrEqualOrHasInterface(includeTypes.Types)); + continue; + case SerializeReferenceUIRestrictionExcludeTypes excludeTypes: + result.Add(SerializeReferenceTypeRestrictionFilters.TypeIsNotSubclassOrEqualOrHasInterface(excludeTypes.Types)); + continue; + } + } + return result; + } +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs.meta new file mode 100644 index 0000000..1b79f01 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultAttributes/SerializedReferenceUIDefaultTypeRestrictions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95f44dc0cd315cf4988029eb8618aa02 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultUI.meta b/Assets/Textus/SerializeReferenceUI/DefaultUI.meta new file mode 100644 index 0000000..f3d4522 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a5d0da55302d3d418d5afe408a9a916 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs new file mode 100644 index 0000000..59b8879 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs @@ -0,0 +1,45 @@ +#if UNITY_EDITOR + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +public static class SerializeReferenceInspectorButton +{ + public static readonly Color SerializedReferenceMenuBackgroundColor = new Color(0.1f, 0.55f, 0.9f, 1f); + + /// Must be drawn before DefaultProperty in order to receive input + public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, Rect position, IEnumerable> filters = null) => + property.DrawSelectionButtonForManagedReference(position, SerializedReferenceMenuBackgroundColor, filters); + + /// Must be drawn before DefaultProperty in order to receive input + public static void DrawSelectionButtonForManagedReference(this SerializedProperty property, + Rect position, Color color, IEnumerable> filters = null) + { + + var backgroundColor = color; + + var buttonPosition = position; + buttonPosition.x += EditorGUIUtility.labelWidth + 1 * EditorGUIUtility.standardVerticalSpacing; + buttonPosition.width = position.width - EditorGUIUtility.labelWidth - 1 * EditorGUIUtility.standardVerticalSpacing; + buttonPosition.height = EditorGUIUtility.singleLineHeight; + + var storedIndent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + var storedColor = GUI.backgroundColor; + GUI.backgroundColor = backgroundColor; + + + var names = ManagedReferenceUtility.GetSplitNamesFromTypename(property.managedReferenceFullTypename); + var className = string.IsNullOrEmpty(names.ClassName) ? "Null (Assign)" : names.ClassName; + var assemblyName = names.AssemblyName; + if (GUI.Button(buttonPosition, new GUIContent(className, className + " ( "+ assemblyName +" )" ))) + property.ShowContextMenuForManagedReference(filters); + + GUI.backgroundColor = storedColor; + EditorGUI.indentLevel = storedIndent; + } +} + +#endif \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs.meta new file mode 100644 index 0000000..d63b0cc --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50b013bc3b4409b438f8781dee4dbbf1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs new file mode 100644 index 0000000..ca13d23 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs @@ -0,0 +1,21 @@ +#if UNITY_EDITOR + +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +public static class SerializeReferenceInspectorMiddleMouseMenu +{ + public static void ShowContextMenuForManagedReferenceOnMouseMiddleButton(this SerializedProperty property, + Rect position, IEnumerable> filters = null) + { + var e = Event.current; + if (e.type != EventType.MouseDown || !position.Contains(e.mousePosition) || e.button != 2) + return; + + property.ShowContextMenuForManagedReference(filters); + } +} + +#endif \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs.meta b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs.meta new file mode 100644 index 0000000..417008c --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/DefaultUI/SerializeReferenceInspectorMiddleMouseMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba51bcbc90077924abfcf504152b4a51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/LICENSE.txt b/Assets/Textus/SerializeReferenceUI/LICENSE.txt new file mode 100644 index 0000000..7828a94 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 TextusGames + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Assets/Textus/SerializeReferenceUI/LICENSE.txt.meta b/Assets/Textus/SerializeReferenceUI/LICENSE.txt.meta new file mode 100644 index 0000000..2bd4fc8 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/LICENSE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 97e871ef367e1604391241355b1b3962 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef b/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef new file mode 100644 index 0000000..c0f8320 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Textus.SerializeReferenceUI" +} diff --git a/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef.meta b/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef.meta new file mode 100644 index 0000000..dfdd036 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUI/Textus.SerializeReferenceUI.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 73106583b323919458c1e05166706ce3 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample.meta b/Assets/Textus/SerializeReferenceUIExample.meta new file mode 100644 index 0000000..d6b82d3 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f124bd3bbd4e5e44882fcc7ca4bbfd89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly.meta new file mode 100644 index 0000000..9c82d21 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c99b932d88d36e9439bb3e944b823502 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef new file mode 100644 index 0000000..d1cc1c5 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef @@ -0,0 +1,3 @@ +{ + "name": "AmimalWorld" +} diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef.meta new file mode 100644 index 0000000..da8d48e --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/AmimalWorld.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6b7100eb7c609e2418517e5c25caaf2a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals.meta new file mode 100644 index 0000000..1d10ba5 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b4a0269d5bc8b7345b6e2b1160c596db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs new file mode 100644 index 0000000..5a12856 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine; + +[Serializable] +public class AnimalBase : IAnimal +{ + [SerializeField] protected float age; + public GameObject food; + public virtual void Feed() + { + Debug.Log("Thanks"); + } +} + +[Serializable] +public class AnimalChild : AnimalBase {} + +[Serializable] +public abstract class AnimalGrandChildAbstract : AnimalBase +{ + public string someString; +} + +[Serializable] +public class AbstractAnimalGrandChild : AnimalGrandChildAbstract {} + + +[Serializable] +public abstract class AbstractAnimal : IAnimal +{ + [SerializeField] protected float age; + public GameObject food; + public virtual void Feed() + { + Debug.Log("Thanks"); + } +} + +[Serializable] +public class AbstractAnimalChild : AbstractAnimal {} + + diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs.meta new file mode 100644 index 0000000..f8478a7 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/AnimalBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c24236542320b8b438a9c637fc34365c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs new file mode 100644 index 0000000..90fa7b8 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs @@ -0,0 +1,4 @@ +public interface IAnimal +{ + void Feed(); +} diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs.meta new file mode 100644 index 0000000..0c66dd6 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/IAnimal.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e7999ba5a7a8e941923ff9d8795fd59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs new file mode 100644 index 0000000..ddcd083 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs @@ -0,0 +1,7 @@ +using System; + +[Serializable] +public abstract class MammalBase : AnimalBase +{ + public int numberOfBones; +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs.meta new file mode 100644 index 0000000..efdc316 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleAnimalWorldAssembly/Animals/MammalBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b7dae106e8c3cf94198d8c1d0e9bce89 +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt b/Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt.meta new file mode 100644 index 0000000..dc36171 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleFolderCanBeSafelyRemoved.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 05ba0cd389296cf44af17c4e8362fb75 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly.meta new file mode 100644 index 0000000..60b7c58 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 375e18944bf750b45b54b9715b23432a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals.meta new file mode 100644 index 0000000..205ed28 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d16251d523e3f02469f6ce9d3adef548 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs new file mode 100644 index 0000000..bfb353d --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs @@ -0,0 +1,9 @@ +using System; +using UnityEngine; + +[Serializable] +public struct AnimalStruct : IAnimal +{ + public string name; + public void Feed() => Debug.Log("thanks"); +} diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs.meta new file mode 100644 index 0000000..8815965 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/AnimalStruct.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c25ac56f032882a4b972b608e69230cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs new file mode 100644 index 0000000..9abaf0d --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs @@ -0,0 +1,30 @@ + +public abstract class ApeBase : MammalBase, IApe +{ + public string Tag = default; +} + +public interface IApe +{ + +} + +public class RedApe : ApeBase +{ + +} + +public class GoldenApe : ApeBase +{ + +} +public class GreenApe : ApeBase +{ + +} + +public class BlackApe : ApeBase +{ + +} + diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs.meta new file mode 100644 index 0000000..b349e52 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/ApeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03b5cf869ca49e343ae00efa8baef1c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs new file mode 100644 index 0000000..ba24584 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs @@ -0,0 +1,30 @@ + +public abstract class CatBase : MammalBase, ICat +{ + public string Tag = default; +} + +public interface ICat +{ + +} + +public class RedCat : CatBase +{ + +} + +public class GoldenCat : CatBase +{ + +} + +public class GreenCat : CatBase +{ + +} + +public class BlackCat : CatBase +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs.meta new file mode 100644 index 0000000..e3af075 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/CatBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58428c0f2b16db849ad5d61a465d7cbd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs new file mode 100644 index 0000000..cc43993 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs @@ -0,0 +1,30 @@ + +public abstract class DogBase : MammalBase, IDog +{ + public string Tag = default; +} + +public interface IDog +{ + +} + +public class RedDog : DogBase +{ + +} + +public class GoldenDog : DogBase +{ + +} + +public class GreenDog : DogBase +{ + +} + +public class BlackDog : DogBase +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs.meta new file mode 100644 index 0000000..16f086a --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/DogBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5c4ea427575d4745813d1a491196ed6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs new file mode 100644 index 0000000..8fdf73b --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs @@ -0,0 +1,28 @@ +public abstract class FishBase : AnimalBase, IFish +{ + public string Tag = default; +} + +public interface IFish +{ + +} +public class RedFish : FishBase +{ + +} + +public class GoldenFish : FishBase +{ + +} + +public class GreenFish : FishBase +{ + +} + +public class BlackFish : FishBase +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs.meta new file mode 100644 index 0000000..ad7ce00 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/FishBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de7faf3ac188d5b4fa97a6f504cb5060 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs new file mode 100644 index 0000000..4156f40 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs @@ -0,0 +1,30 @@ + +public abstract class InsectBase : AnimalBase, IInsect +{ + public string Tag = default; +} + +public interface IInsect +{ + +} + +public class RedInsect : InsectBase +{ + +} + +public class GoldenInsect : InsectBase +{ + +} + +public class GreenInsect : InsectBase +{ + +} + +public class BlackInsect : InsectBase +{ + +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs.meta new file mode 100644 index 0000000..dce02ed --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/Animals/InsectBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 198f13bdfb700f5478f48fa2c8b459c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes.meta new file mode 100644 index 0000000..0c74f77 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5be67cbd02bf42146a3ebb2790befebf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs new file mode 100644 index 0000000..4af4122 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +public class ExampleOfNotSupportedTypes +{ + +} + +[Serializable] +public class AnimalMonoBehaviour : MonoBehaviour, IAnimal +{ + public void Feed() => Debug.Log("thanks"); +} + +[Serializable] +public class AnimalScriptableObject : ScriptableObject, IAnimal +{ + public void Feed() => Debug.Log("thanks"); +} + +[Serializable] +public class AnimalPrivateConstructor : IAnimal +{ + private AnimalPrivateConstructor(){} + public void Feed() => Debug.Log("thanks"); +} + diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs.meta new file mode 100644 index 0000000..4fd0064 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/NotSupportedTypes/ExampleOfNotSupportedTypes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1060d26326c424a468bfd669381a0745 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef new file mode 100644 index 0000000..be36298 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef @@ -0,0 +1,16 @@ +{ + "name": "SerializedReferenceExample", + "references": [ + "GUID:6b7100eb7c609e2418517e5c25caaf2a", + "GUID:73106583b323919458c1e05166706ce3" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef.meta new file mode 100644 index 0000000..a406a57 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/SerializedReferenceExample.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9d3c3657da68d4a4e95079ed1fad6bb2 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample.meta new file mode 100644 index 0000000..c06ce32 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe686aa525f35e14498d533b056e962b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes.meta new file mode 100644 index 0000000..97a745b --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32f0237ba42624e46ac3f3ffe9234032 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting new file mode 100644 index 0000000..0bea2b9 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting @@ -0,0 +1,62 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SampleSceneSettings + serializedVersion: 2 + m_GIWorkflowMode: 1 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRRussianRouletteStartBounce: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting.meta new file mode 100644 index 0000000..c887112 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SampleSceneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41149e767ac7dcd47a90a6570ba736eb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity new file mode 100644 index 0000000..b3be355 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity @@ -0,0 +1,231 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1131539293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1131539295} + - component: {fileID: 1131539294} + m_Layer: 0 + m_Name: Test + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1131539294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131539293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 198888d66cd7476e973e8c52f7f8f04f, type: 3} + m_Name: + m_EditorClassIdentifier: + restrictedAnimals: + id: 0 + animalInterface: + id: 1 + animalAbstract: + id: 2 + animalBaseClass: + id: 3 + animalsWithInterfaces: + - id: 4 + - id: 5 + animalsWithInterfacesMenu: [] + classWithChildReferences: + - integerValue: 0 + animals: + id: 6 + animalInterfaces: + id: 7 + references: + version: 1 + 00000000: + type: {class: GoldenApe, ns: , asm: SerializedReferenceExample} + data: + age: 1231 + food: {fileID: 1131539293} + numberOfBones: 33 + Tag: dd + 00000001: + type: {class: AnimalChild, ns: , asm: AmimalWorld} + data: + age: 3213 + food: {fileID: 0} + 00000002: + type: {class: , ns: , asm: } + 00000003: + type: {class: GoldenCat, ns: , asm: SerializedReferenceExample} + data: + age: 0 + food: {fileID: 0} + numberOfBones: 0 + Tag: + 00000004: + type: {class: GoldenCat, ns: , asm: SerializedReferenceExample} + data: + age: 0 + food: {fileID: 0} + numberOfBones: 0 + Tag: + 00000005: + type: {class: AnimalStruct, ns: , asm: SerializedReferenceExample} + data: + name: + 00000006: + type: {class: BlackApe, ns: , asm: SerializedReferenceExample} + data: + age: 0 + food: {fileID: 0} + numberOfBones: 0 + Tag: + 00000007: + type: {class: GreenFish, ns: , asm: SerializedReferenceExample} + data: + age: 0 + food: {fileID: 0} + Tag: +--- !u!4 &1131539295 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1131539293} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.4785227, y: 0.00097347796, z: -2.9921875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity.meta new file mode 100644 index 0000000..c1e3c88 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Scenes/SerializeRefereneceUIExampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cda990e2423bbf4892e6590ba056729 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs new file mode 100644 index 0000000..71fdc97 --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +public class Test : MonoBehaviour +{ + [Header("Restricted to DogBase and IApe")] + [SerializeReference] + [SerializeReferenceButton] + [SerializeReferenceUIRestrictionIncludeTypes(typeof(DogBase), typeof(IApe))] + public IAnimal restrictedAnimals = default; + + [Header("Interface")] + [SerializeReference] + [SerializeReferenceButton] + public IAnimal animalInterface = default; + + [Header("Abstract")] + [SerializeReference] + [SerializeReferenceButton] + public AbstractAnimal animalAbstract = default; + + [Header("Base Class")] + [SerializeReference] + [SerializeReferenceButton] + public AnimalBase animalBaseClass = default; + + + [Header("List of interfaces")] + [SerializeReference] + [SerializeReferenceButton] + public List animalsWithInterfaces = new List(); + + + [Header("List of Animals via MMB menu")] + [SerializeReference] + [SerializeReferenceMenu] + public List animalsWithInterfacesMenu = new List(); + + + [Header("Class with serialized reference field")] + public List classWithChildReferences = default; +} + + +[Serializable] +public class ClassWithSerializedReferenceChild +{ + public int integerValue = default; + + [SerializeReference] + [SerializeReferenceButton] + public AnimalBase animals = default; + + [SerializeReference] + [SerializeReferenceButton] + public IAnimal animalInterfaces = default; +} \ No newline at end of file diff --git a/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs.meta b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs.meta new file mode 100644 index 0000000..edd8b4c --- /dev/null +++ b/Assets/Textus/SerializeReferenceUIExample/ExampleOfUsageFromDifferentAssembly/TestingAnimalWorldExample/Test.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 198888d66cd7476e973e8c52f7f8f04f +timeCreated: 1579584059 \ No newline at end of file diff --git a/Assets/Tripsitter.cs b/Assets/Tripsitter.cs new file mode 100644 index 0000000..01a978a --- /dev/null +++ b/Assets/Tripsitter.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Assets.WasapiAudio.Scripts.Unity; + +public class Tripsitter : MonoBehaviour +{ + // Start is called before the first frame update + + public AudioVisualizationEffect ave; + void Start() + { + } + + // Update is called once per frame + void Update() + { + Debug.Log(ave.GetSpectrumData()); + } +} diff --git a/Assets/Tripsitter.cs.meta b/Assets/Tripsitter.cs.meta new file mode 100644 index 0000000..b9033c6 --- /dev/null +++ b/Assets/Tripsitter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 575f46cd31a2b694bb2579e3a3eca9cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TripsitterAve.cs b/Assets/TripsitterAve.cs new file mode 100644 index 0000000..857d0db --- /dev/null +++ b/Assets/TripsitterAve.cs @@ -0,0 +1,9 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Assets.WasapiAudio.Scripts.Unity; + +public class TripsitterAve : AudioVisualizationEffect +{ + +} diff --git a/Assets/TripsitterAve.cs.meta b/Assets/TripsitterAve.cs.meta new file mode 100644 index 0000000..ce46b3f --- /dev/null +++ b/Assets/TripsitterAve.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0531e4e136b0daa41a7bbd6ac7ceed8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Visualisation.cs b/Assets/Visualisation.cs new file mode 100644 index 0000000..8d318e5 --- /dev/null +++ b/Assets/Visualisation.cs @@ -0,0 +1,10 @@ +using UnityEngine; +public class Visualisation : MonoBehaviour +{ + public GameObject vis; + + void Start() + { + Instantiate(vis, new Vector3(0,0,0), Quaternion.identity); + } +} \ No newline at end of file diff --git a/Assets/Visualisation.cs.meta b/Assets/Visualisation.cs.meta new file mode 100644 index 0000000..16e573f --- /dev/null +++ b/Assets/Visualisation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb8fd4bd46f27a849bd996a1488c62bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio.meta b/Assets/WasapiAudio.meta new file mode 100644 index 0000000..a6f7bdd --- /dev/null +++ b/Assets/WasapiAudio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c31b0b51e34701e4c88fa47cd70b1d2a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Editor.meta b/Assets/WasapiAudio/Editor.meta new file mode 100644 index 0000000..a1ab988 --- /dev/null +++ b/Assets/WasapiAudio/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b3ea3309c3fe7d47943846083c9bf86 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs b/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs new file mode 100644 index 0000000..23d3ca3 --- /dev/null +++ b/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs @@ -0,0 +1,81 @@ +using System.Linq; +using Assets.WasapiAudio.Scripts.Unity; +using UnityEditor; +using UnityEngine; + +namespace Assets.WasapiAudio.Editor +{ + [CustomPropertyDrawer(typeof(SpectrumDataPreviewAttribute))] + public class SpectrumDataPreviewDrawer : PropertyDrawer + { + private const float DrawerHeight = 150.0f; + private const float AverageBarHeight = 5.0f; + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return DrawerHeight; + } + + // Start is called before the first frame update + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + if (property.serializedObject == null || property.serializedObject.targetObject == null) + { + return; + } + + var preview = fieldInfo.GetValue(property.serializedObject.targetObject) as SpectrumData; + + if (preview == null || preview.Values == null) + { + return; + } + + try + { + // Draw black background + EditorGUI.DrawRect(position, Color.black); + + var x = 0.0f; + var barWidth = position.width / preview.Values.Length; + var average = preview.Values.Average() * DrawerHeight; + + for (var i = 0; i < preview.Values.Length; i++) + { + // Draw spectrum bar + var barHeight = preview.Values[i] * DrawerHeight; + + var spectrumBarColor = Color.green; + + if (barHeight >= average) + { + spectrumBarColor = Color.yellow; + } + + var spectrumBar = new Rect(position.x + x, + position.y + DrawerHeight - barHeight, + barWidth, + barHeight); + + EditorGUI.DrawRect(spectrumBar, spectrumBarColor); + + // Draw average line + var averageLine = new Rect(position.x, + position.y + DrawerHeight - average, + position.width, + AverageBarHeight); + + EditorGUI.DrawRect(averageLine, Color.blue); + + x += barWidth; + } + + EditorGUI.PrefixLabel(position, label); + } + catch + { + + } + } + } +} diff --git a/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs.meta b/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs.meta new file mode 100644 index 0000000..dcd8499 --- /dev/null +++ b/Assets/WasapiAudio/Editor/SpectrumDataPreviewDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46e201e71577a90439e16b71c254f90f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Plugins.meta b/Assets/WasapiAudio/Plugins.meta new file mode 100644 index 0000000..bd86c91 --- /dev/null +++ b/Assets/WasapiAudio/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b03f19e30c6f90d459210f661348a562 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Plugins/CSCore.dll b/Assets/WasapiAudio/Plugins/CSCore.dll new file mode 100644 index 0000000..05d723a --- /dev/null +++ b/Assets/WasapiAudio/Plugins/CSCore.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3afc864ad408be0d0024b8b7a79be5032de04e168db903d8d623bc67aeae09c +size 527360 diff --git a/Assets/WasapiAudio/Plugins/CSCore.dll.meta b/Assets/WasapiAudio/Plugins/CSCore.dll.meta new file mode 100644 index 0000000..f6fd91d --- /dev/null +++ b/Assets/WasapiAudio/Plugins/CSCore.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 39c1ace5108df3a448c1045a9ccefa6c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts.meta b/Assets/WasapiAudio/Scripts.meta new file mode 100644 index 0000000..37907e4 --- /dev/null +++ b/Assets/WasapiAudio/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2176dc913cfed63409c26999975d0ace +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core.meta b/Assets/WasapiAudio/Scripts/Core.meta new file mode 100644 index 0000000..4fa7c4c --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 499e69e03e0bbf94eadfd1407e650d06 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs b/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs new file mode 100644 index 0000000..70c031a --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using CSCore.DSP; + +namespace Assets.WasapiAudio.Scripts.Core +{ + /// + /// BasicSpectrumProvider + /// + public class BasicSpectrumProvider : FftProvider, ISpectrumProvider + { + private readonly int _sampleRate; + private readonly List _contexts = new List(); + + public BasicSpectrumProvider(int channels, int sampleRate, FftSize fftSize) + : base(channels, fftSize) + { + if (sampleRate <= 0) + { + throw new ArgumentOutOfRangeException(nameof(sampleRate)); + } + + _sampleRate = sampleRate; + } + + public int GetFftBandIndex(float frequency) + { + int fftSize = (int)FftSize; + double f = _sampleRate / 2.0; + // ReSharper disable once PossibleLossOfFraction + return (int)((frequency / f) * (fftSize / 2)); + } + + public bool GetFftData(float[] fftResultBuffer, object context) + { + if (_contexts.Contains(context)) + return false; + + _contexts.Add(context); + GetFftData(fftResultBuffer); + return true; + } + + public override void Add(float[] samples, int count) + { + base.Add(samples, count); + + if (count > 0) + { + _contexts.Clear(); + } + } + + public override void Add(float left, float right) + { + base.Add(left, right); + _contexts.Clear(); + } + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs.meta b/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs.meta new file mode 100644 index 0000000..9a57b32 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/BasicSpectrumProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ac978f06ccd8f943ad7c7d03b6229bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs b/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs new file mode 100644 index 0000000..5cb9783 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs @@ -0,0 +1,45 @@ +using CSCore; +using CSCore.DSP; + +namespace Assets.WasapiAudio.Scripts.Core +{ + public class BiQuadFilterSource : SampleAggregatorBase + { + private readonly object _lockObject = new object(); + private BiQuad _biQuad; + + public BiQuad Filter + { + get => _biQuad; + set + { + lock (_lockObject) + { + _biQuad = value; + } + } + } + + public BiQuadFilterSource(ISampleSource source) : base(source) + { + } + + public override int Read(float[] buffer, int offset, int count) + { + var read = base.Read(buffer, offset, count); + + lock (_lockObject) + { + if (Filter != null) + { + for (int i = 0; i < read; i++) + { + buffer[i + offset] = Filter.Process(buffer[i + offset]); + } + } + } + + return read; + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs.meta b/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs.meta new file mode 100644 index 0000000..7787b93 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/BiQuadFilterSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce8b1509cfd7d26459241de2dc788b5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs b/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs new file mode 100644 index 0000000..cd07ecd --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs @@ -0,0 +1,8 @@ +namespace Assets.WasapiAudio.Scripts.Core +{ + internal interface ISpectrumProvider + { + bool GetFftData(float[] fftBuffer, object context); + int GetFftBandIndex(float frequency); + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs.meta b/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs.meta new file mode 100644 index 0000000..d86a06b --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/ISpectrumProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b3d8384de325694c8a3a05f5c22b115 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs b/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs new file mode 100644 index 0000000..1f5a8ff --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Linq; +using CSCore.DSP; + +namespace Assets.WasapiAudio.Scripts.Core +{ + internal class LineSpectrum : SpectrumBase + { + public int BarCount + { + get => SpectrumResolution; + set => SpectrumResolution = value; + } + + public LineSpectrum(FftSize fftSize, int minFrequency, int maxFrequency) + : base(minFrequency, maxFrequency) + { + FftSize = fftSize; + } + + public float[] GetSpectrumData(double maxValue) + { + // Get spectrum data internal + var fftBuffer = new float[(int)FftSize]; + + UpdateFrequencyMapping(); + + if (SpectrumProvider.GetFftData(fftBuffer, this)) + { + SpectrumPointData[] spectrumPoints = CalculateSpectrumPoints(maxValue, fftBuffer); + + // Convert to float[] + List spectrumData = new List(); + spectrumPoints.ToList().ForEach(point => spectrumData.Add((float)point.Value)); + return spectrumData.ToArray(); + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs.meta b/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs.meta new file mode 100644 index 0000000..b1b3c00 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/LineSpectrum.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a2567baf275265a478107376fdd44c99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs b/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs new file mode 100644 index 0000000..00e9c3e --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs @@ -0,0 +1,9 @@ +namespace Assets.WasapiAudio.Scripts.Core +{ + public enum ScalingStrategy + { + Decibel, + Linear, + Sqrt + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs.meta b/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs.meta new file mode 100644 index 0000000..ad3f02b --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/ScalingStrategy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a5498d82d260dc48a788da725b7d4c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs b/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs new file mode 100644 index 0000000..2196064 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using CSCore; +using CSCore.DSP; + +namespace Assets.WasapiAudio.Scripts.Core +{ + internal abstract class SpectrumBase + { + private const int ScaleFactorLinear = 9; + protected const int ScaleFactorSqr = 2; + protected const double MinDbValue = -90; + protected const double MaxDbValue = 0; + protected const double DbScale = (MaxDbValue - MinDbValue); + + private int _fftSize; + private bool _isXLogScale; + private int _maxFftIndex; + private int _minFrequency; + private int _minimumFrequencyIndex; + private int _maxFrequency; + private int _maximumFrequencyIndex; + private int[] _spectrumIndexMax; + private int[] _spectrumLogScaleIndexMax; + private ISpectrumProvider _spectrumProvider; + + protected int SpectrumResolution; + private bool _useAverage; + + [Browsable(false)] + public ISpectrumProvider SpectrumProvider + { + get => _spectrumProvider; + set => _spectrumProvider = value ?? throw new ArgumentNullException(nameof(value)); + } + + public bool IsXLogScale + { + get => _isXLogScale; + set + { + _isXLogScale = value; + UpdateFrequencyMapping(); + } + } + + public ScalingStrategy ScalingStrategy { get; set; } + + public bool UseAverage + { + get => _useAverage; + set => _useAverage = value; + } + + [Browsable(false)] + public FftSize FftSize + { + get => (FftSize) _fftSize; + protected set + { + if ((int) Math.Log((int) value, 2) % 1 != 0) + throw new ArgumentOutOfRangeException(nameof(value)); + + _fftSize = (int) value; + _maxFftIndex = _fftSize / 2 - 1; + } + } + + public SpectrumBase(int minFrequency, int maxFrequency) + { + _minFrequency = minFrequency; + _maxFrequency = maxFrequency; + } + + protected virtual void UpdateFrequencyMapping() + { + _minimumFrequencyIndex = Math.Min(_spectrumProvider.GetFftBandIndex(_minFrequency), _maxFftIndex); + _maximumFrequencyIndex = Math.Min(_spectrumProvider.GetFftBandIndex(_maxFrequency) + 1, _maxFftIndex); + + var actualResolution = SpectrumResolution; + + var indexCount = _maximumFrequencyIndex - _minimumFrequencyIndex; + var linearIndexBucketSize = Math.Round(indexCount / (double) actualResolution, 3); + + _spectrumIndexMax = _spectrumIndexMax.CheckBuffer(actualResolution, true); + _spectrumLogScaleIndexMax = _spectrumLogScaleIndexMax.CheckBuffer(actualResolution, true); + + var maxLog = Math.Log(actualResolution, actualResolution); + + for (int i = 1; i < actualResolution; i++) + { + var logIndex = + (int) ((maxLog - Math.Log((actualResolution + 1) - i, (actualResolution + 1))) * indexCount) + + _minimumFrequencyIndex; + + _spectrumIndexMax[i - 1] = _minimumFrequencyIndex + (int) (i * linearIndexBucketSize); + _spectrumLogScaleIndexMax[i - 1] = logIndex; + } + + if (actualResolution > 0) + { + _spectrumIndexMax[_spectrumIndexMax.Length - 1] = + _spectrumLogScaleIndexMax[_spectrumLogScaleIndexMax.Length - 1] = _maximumFrequencyIndex; + } + } + + protected virtual SpectrumPointData[] CalculateSpectrumPoints(double maxValue, float[] fftBuffer) + { + var dataPoints = new List(); + + double value0 = 0, value = 0; + double lastValue = 0; + double actualMaxValue = maxValue; + var spectrumPointIndex = 0; + + for (int i = _minimumFrequencyIndex; i <= _maximumFrequencyIndex; i++) + { + switch (ScalingStrategy) + { + case ScalingStrategy.Decibel: + value0 = (((20 * Math.Log10(fftBuffer[i])) - MinDbValue) / DbScale) * actualMaxValue; + break; + case ScalingStrategy.Linear: + value0 = (fftBuffer[i] * ScaleFactorLinear) * actualMaxValue; + break; + case ScalingStrategy.Sqrt: + value0 = ((Math.Sqrt(fftBuffer[i])) * ScaleFactorSqr) * actualMaxValue; + break; + } + + var recalc = true; + + value = Math.Max(0, Math.Max(value0, value)); + + while (spectrumPointIndex <= _spectrumIndexMax.Length - 1 && + i == + (IsXLogScale + ? _spectrumLogScaleIndexMax[spectrumPointIndex] + : _spectrumIndexMax[spectrumPointIndex])) + { + if (!recalc) + { + value = lastValue; + } + + if (value > maxValue) + { + value = maxValue; + } + + if (_useAverage && spectrumPointIndex > 0) + { + value = (lastValue + value) / 2.0; + } + + dataPoints.Add(new SpectrumPointData {SpectrumPointIndex = spectrumPointIndex, Value = value}); + + lastValue = value; + value = 0.0; + spectrumPointIndex++; + recalc = false; + } + } + + return dataPoints.ToArray(); + } + + [DebuggerDisplay("{" + nameof(Value) + "}")] + protected struct SpectrumPointData + { + public int SpectrumPointIndex; + public double Value; + } + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs.meta b/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs.meta new file mode 100644 index 0000000..16c4fc0 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/SpectrumBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fbdbf5c48dee7b4da3f946503b29f80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs b/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs new file mode 100644 index 0000000..f66670e --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs @@ -0,0 +1,48 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Assets.WasapiAudio.Scripts.Core +{ + public class SpectrumSmoother + { + private long _iteration; + + private readonly int _spectrumSize; + private readonly float[] _smoothedSpectrum; + private readonly List _spectrumHistory = new List(); + + public byte SmoothingIterations { get; } + + public SpectrumSmoother(int spectrumSize, byte smoothingIterations) + { + _spectrumSize = spectrumSize; + + SmoothingIterations = smoothingIterations; + + _smoothedSpectrum = new float[_spectrumSize]; + + for (int i = 0; i < _spectrumSize; i++) + { + _spectrumHistory.Add(new float[SmoothingIterations]); + } + } + + public float[] GetSpectrumData(float[] spectrum) + { + _iteration++; + + // Record and average last N frames + for (var i = 0; i < _spectrumSize; i++) + { + var historyIndex = _iteration % SmoothingIterations; + + var audioData = spectrum[i]; + _spectrumHistory[i][historyIndex] = audioData; + + _smoothedSpectrum[i] = _spectrumHistory[i].Average(); + } + + return _smoothedSpectrum; + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs.meta b/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs.meta new file mode 100644 index 0000000..8fb1aa7 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/SpectrumSmoother.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6dd5954917d385d458671783cb3579ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs b/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs new file mode 100644 index 0000000..36977b5 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs @@ -0,0 +1,140 @@ +using System; +using Assets.WasapiAudio.Scripts.Unity; +using CSCore; +using CSCore.CoreAudioAPI; +using CSCore.DSP; +using CSCore.SoundIn; +using CSCore.Streams; + +namespace Assets.WasapiAudio.Scripts.Core +{ + public class WasapiAudio + { + private const FftSize CFftSize = FftSize.Fft4096; + private const float MaxAudioValue = 1.0f; + + private readonly WasapiCaptureType _captureType; + private readonly int _spectrumSize; + private readonly ScalingStrategy _scalingStrategy; + private readonly int _minFrequency; + private readonly int _maxFrequency; + + private WasapiCapture _wasapiCapture; + private SoundInSource _soundInSource; + private IWaveSource _realtimeSource; + private BasicSpectrumProvider _basicSpectrumProvider; + private LineSpectrum _lineSpectrum; + private SingleBlockNotificationStream _singleBlockNotificationStream; + private WasapiAudioFilter[] _filters; + private Action _receiveAudio; + + public WasapiAudio(WasapiCaptureType captureType, int spectrumSize, ScalingStrategy scalingStrategy, int minFrequency, int maxFrequency, WasapiAudioFilter[] filters, Action receiveAudio) + { + _captureType = captureType; + _spectrumSize = spectrumSize; + _scalingStrategy = scalingStrategy; + _minFrequency = minFrequency; + _maxFrequency = maxFrequency; + _filters = filters; + _receiveAudio = receiveAudio; + } + + public void StartListen() + { + switch (_captureType) + { + case WasapiCaptureType.Loopback: + _wasapiCapture = new WasapiLoopbackCapture(); + break; + case WasapiCaptureType.Microphone: + MMDevice defaultMicrophone; + using (var deviceEnumerator = new MMDeviceEnumerator()) + { + defaultMicrophone = deviceEnumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Communications); + } + _wasapiCapture = new WasapiCapture(); + _wasapiCapture.Device = defaultMicrophone; + break; + default: + throw new InvalidOperationException("Unhandled WasapiCaptureType"); + } + + _wasapiCapture.Initialize(); + + _soundInSource = new SoundInSource(_wasapiCapture); + + _basicSpectrumProvider = new BasicSpectrumProvider(_soundInSource.WaveFormat.Channels, _soundInSource.WaveFormat.SampleRate, CFftSize); + + _lineSpectrum = new LineSpectrum(CFftSize, _minFrequency, _maxFrequency) + { + SpectrumProvider = _basicSpectrumProvider, + BarCount = _spectrumSize, + UseAverage = true, + IsXLogScale = true, + ScalingStrategy = _scalingStrategy + }; + + _wasapiCapture.Start(); + + var sampleSource = _soundInSource.ToSampleSource(); + + if (_filters != null && _filters.Length > 0) + { + foreach (var filter in _filters) + { + sampleSource = sampleSource.AppendSource(x => new BiQuadFilterSource(x)); + var biQuadSource = (BiQuadFilterSource) sampleSource; + + switch (filter.Type) + { + case WasapiAudioFilterType.LowPass: + biQuadSource.Filter = new LowpassFilter(_soundInSource.WaveFormat.SampleRate, filter.Frequency); + break; + case WasapiAudioFilterType.HighPass: + biQuadSource.Filter = new HighpassFilter(_soundInSource.WaveFormat.SampleRate, filter.Frequency); + break; + case WasapiAudioFilterType.BandPass: + biQuadSource.Filter = new BandpassFilter(_soundInSource.WaveFormat.SampleRate, filter.Frequency); + break; + } + } + } + + _singleBlockNotificationStream = new SingleBlockNotificationStream(sampleSource); + _realtimeSource = _singleBlockNotificationStream.ToWaveSource(); + + var buffer = new byte[_realtimeSource.WaveFormat.BytesPerSecond / 2]; + + _soundInSource.DataAvailable += (s, ea) => + { + while (_realtimeSource.Read(buffer, 0, buffer.Length) > 0) + { + var spectrumData = _lineSpectrum.GetSpectrumData(MaxAudioValue); + + if (spectrumData != null) + { + _receiveAudio?.Invoke(spectrumData); + } + } + }; + + _singleBlockNotificationStream.SingleBlockRead += SingleBlockNotificationStream_SingleBlockRead; + } + + public void StopListen() + { + _singleBlockNotificationStream.SingleBlockRead -= SingleBlockNotificationStream_SingleBlockRead; + + _soundInSource.Dispose(); + _realtimeSource.Dispose(); + _receiveAudio = null; + _wasapiCapture.Stop(); + _wasapiCapture.Dispose(); + } + + private void SingleBlockNotificationStream_SingleBlockRead(object sender, SingleBlockReadEventArgs e) + { + _basicSpectrumProvider.Add(e.Left, e.Right); + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs.meta b/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs.meta new file mode 100644 index 0000000..0ac2542 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiAudio.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3c269a428d97534b89ae32d45f9658a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs b/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs new file mode 100644 index 0000000..0f59234 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs @@ -0,0 +1,18 @@ +using System; + +namespace Assets.WasapiAudio.Scripts.Core +{ + public enum WasapiAudioFilterType + { + LowPass, + HighPass, + BandPass, + } + + [Serializable] + public class WasapiAudioFilter + { + public WasapiAudioFilterType Type; + public int Frequency; + } +} diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs.meta b/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs.meta new file mode 100644 index 0000000..0d1f3d9 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiAudioFilter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 512a31747c43f524b9317c43013b7f98 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs b/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs new file mode 100644 index 0000000..9946c54 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs @@ -0,0 +1,8 @@ +namespace Assets.WasapiAudio.Scripts.Core +{ + public enum WasapiCaptureType + { + Loopback, + Microphone + } +} diff --git a/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs.meta b/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs.meta new file mode 100644 index 0000000..e7470ef --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Core/WasapiCaptureType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 503e87bd4ebdf5b498b2683bb0bba127 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity.meta b/Assets/WasapiAudio/Scripts/Unity.meta new file mode 100644 index 0000000..0271e4b --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7d31d84c01ffe24eb0e36653e03832a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs new file mode 100644 index 0000000..541d10a --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + public abstract class AudioVisualizationEffect : MonoBehaviour + { + // Inspector Properties + public WasapiAudioSource WasapiAudioSource; + + [SerializeReference] + [SerializeReferenceButton] + public List Transformers = new List(); + + [SpectrumDataPreview] + public SpectrumData Preview; + + protected int SpectrumSize { get; private set; } + + public virtual void Awake() + { + if (WasapiAudioSource == null) + { + Debug.Log("You must set a WasapiAudioSource"); + return; + } + + SpectrumSize = WasapiAudioSource.SpectrumSize; + Preview = new SpectrumData(); + } + + public float[] GetSpectrumData() + { + if (WasapiAudioSource == null) + { + Debug.Log("You must set a WasapiAudioSource"); + return null; + } + + // Get raw / unmodified spectrum data + var spectrumData = WasapiAudioSource.GetSpectrumData(); + + // Run spectrum data through all configured transformers + if (Transformers != null && Transformers.Count > 0) + { + foreach (var transformer in Transformers) + { + spectrumData = transformer.Transform(spectrumData); + } + } + + Preview.Values = spectrumData; + + return spectrumData; + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs.meta b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs.meta new file mode 100644 index 0000000..19afe61 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba1b44ffd6d8856448e4ae29b67ca69d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs new file mode 100644 index 0000000..2916da7 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs @@ -0,0 +1,17 @@ +//using UnityEngine; + +//namespace Assets.WasapiAudio.Scripts.Unity +//{ +// [CreateAssetMenu(fileName = "Audio Visualization Profile", menuName = "Audio/Audio Visualization Profile", order = 1)] +// public class AudioVisualizationProfile : ScriptableObject +// { +// // Inspector Fields +// public AnimationCurve ScaleCurve; +// [Range(1, 50)] +// public int AudioSmoothingIterations = 5; +// [Range(1, 2)] +// public float MinMaxThreshold = 1.2f; +// public float MinScale = 0.0f; +// public float MaxScale = 1.0f; +// } +//} diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs.meta b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs.meta new file mode 100644 index 0000000..46db6f8 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationProfile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ceabdd331bee1a8459e8b85d942a772f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs new file mode 100644 index 0000000..8510747 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs @@ -0,0 +1,13 @@ +namespace Assets.WasapiAudio.Scripts.Unity +{ + public abstract class AudioVisualizationSpectrumBandEffect : AudioVisualizationEffect + { + // Inspector properties + public int SpectrumBand; + + protected float GetSpectrumBandData() + { + return GetSpectrumData()[SpectrumBand]; + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs.meta b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs.meta new file mode 100644 index 0000000..2a8c46d --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/AudioVisualizationSpectrumBandEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b411fd36109dfe746be0478532cc7bc4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs b/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs new file mode 100644 index 0000000..a110865 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs @@ -0,0 +1,10 @@ +using System; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + [Serializable] + public class SpectrumData + { + public float[] Values; + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs.meta b/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs.meta new file mode 100644 index 0000000..f990416 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4ddc80a206711b4b8c119fec4626751 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs b/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs new file mode 100644 index 0000000..d6c4bf2 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs @@ -0,0 +1,10 @@ +using System; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + [AttributeUsage(AttributeTargets.Field)] + public class SpectrumDataPreviewAttribute : PropertyAttribute + { + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs.meta b/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs.meta new file mode 100644 index 0000000..8b0f9ef --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumDataPreviewAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87b43e36cb5d1a64bb463e84f5e104a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs b/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs new file mode 100644 index 0000000..1465866 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs @@ -0,0 +1,43 @@ +using System; +using System.Linq; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + [Serializable] + public abstract class SpectrumTransformer + { + private float[] _input; + private float[] _output; + + public bool Enabled = true; + + protected float InputMin { get; private set; } + protected float InputMax { get; private set; } + protected float InputAverage { get; private set; } + protected float InputRange { get; private set; } + + public float[] Transform(float[] input) + { + _input = input; + + if (_output == null || _output.Length != _input.Length) + { + _output = new float[_input.Length]; + } + + InputMin = _input.Min(); + InputMax = _input.Max(); + InputAverage = _input.Average(); + InputRange = InputMax - InputMin; + + if (Enabled) + { + PerformTransform(_input, ref _output); + } + + return Enabled ? _output : _input; + } + + protected abstract void PerformTransform(float[] input, ref float[] output); + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs.meta b/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs.meta new file mode 100644 index 0000000..f68f964 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/SpectrumTransformer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1bf2ffb4b98288345ac7353d5ca83108 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers.meta b/Assets/WasapiAudio/Scripts/Unity/Transformers.meta new file mode 100644 index 0000000..5121ec2 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 723fc4f6d47c6234fbe8232c91accc22 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs b/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs new file mode 100644 index 0000000..22d05b1 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs @@ -0,0 +1,28 @@ +using System; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity.Transformers +{ + [Serializable] + public class CurveScaledSpectrumTransformer : SpectrumTransformer + { + public AnimationCurve ScaleCurve; + + protected override void PerformTransform(float[] input, ref float[] output) + { + if (ScaleCurve == null) + { + return; + } + + var scaleStep = 1.0f / input.Length; + + for (int i = 0; i < input.Length; i++) + { + var scaledValue = ScaleCurve.Evaluate(scaleStep * i) * input[i]; + + output[i] = scaledValue; + } + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs.meta b/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs.meta new file mode 100644 index 0000000..d80b70a --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/CurveScaledSpectrumTransformer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 565fed8317271174792674bb2bc0e5af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs b/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs new file mode 100644 index 0000000..7c732b2 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs @@ -0,0 +1,64 @@ +using System; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity.Transformers +{ + [Serializable] + public class PercentileBoostSpectrumTransformer : SpectrumTransformer + { + private float[] _sortedPercentileArray; + + [Range(0.0f, 1.0f)] + public float Percentile = 0.5f; + public float BelowPercentileMultiplier = 0.5f; + public float AbovePercentileMultiplier = 2.0f; + + protected override void PerformTransform(float[] input, ref float[] output) + { + if (_sortedPercentileArray == null || _sortedPercentileArray.Length != input.Length) + { + _sortedPercentileArray = new float[input.Length]; + } + + input.CopyTo(_sortedPercentileArray, 0); + + var percentile = GetPercentile(_sortedPercentileArray, Percentile); + + for (int i = 0; i < input.Length; i++) + { + if (input[i] < percentile) + { + output[i] = input[i] * BelowPercentileMultiplier; + } + else + { + output[i] = input[i] * AbovePercentileMultiplier; + } + } + } + + public float GetPercentile(float[] sequence, float percentile) + { + Array.Sort(sequence); + + var length = sequence.Length; + var n = (length - 1) * percentile + 1; + + // Another method: double n = (N + 1) * excelPercentile; + if (n == 1.0f) + { + return sequence[0]; + } + + if (n == length) + { + return sequence[length - 1]; + } + + int k = (int)n; + float d = n - k; + + return sequence[k - 1] + d * (sequence[k] - sequence[k - 1]); + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs.meta b/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs.meta new file mode 100644 index 0000000..a1522ca --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/PercentileBoostSpectrumTransformer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac3cd62c87d1ef54f90e71e71fe2000b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs b/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs new file mode 100644 index 0000000..b69527f --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs @@ -0,0 +1,25 @@ +using System; +using Assets.WasapiAudio.Scripts.Core; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity.Transformers +{ + [Serializable] + public class SmoothSpectrumTransformer : SpectrumTransformer + { + private SpectrumSmoother _smoother; + + [Range(1, 50)] + public byte Iterations = 1; + + protected override void PerformTransform(float[] input, ref float[] output) + { + if (_smoother == null || _smoother.SmoothingIterations != Iterations) + { + _smoother = new SpectrumSmoother(input.Length, Iterations); + } + + output = _smoother.GetSpectrumData(input); + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs.meta b/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs.meta new file mode 100644 index 0000000..d3a3e02 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/Transformers/SmoothSpectrumTransformer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a86e967af4ca4f4ab907c1a6d5a77aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs b/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs new file mode 100644 index 0000000..52bf0b1 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEngine.VFX; +using UnityEngine.VFX.Utility; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + [AddComponentMenu("VFX/Property Binders/VFX Audio Spectrum Data Binder")] + [VFXBinder("Audio/Audio Spectrum Data to AttributeMap")] + public class VfxAudioSpectrumDataBinder : VfxAudioVisualizationEffect + { + [VFXPropertyBinding("System.UInt32"), SerializeField] + protected ExposedProperty SpectrumSizeParameter = "SpectrumSize"; + + [VFXPropertyBinding("UnityEngine.Texture2D"), SerializeField] + protected ExposedProperty SpectrumDataTextureParameter = "SpectrumDataTexture"; + + private Texture2D _texture; + private Color[] _colorCache; + + private void UpdateTexture() + { + if (_texture == null) + { + _texture = new Texture2D(SpectrumSize, 1, TextureFormat.RFloat, false); + _texture.name = $"AudioSpectrumData{SpectrumSize}"; + _colorCache = new Color[SpectrumSize]; + } + + var spectrumData = GetSpectrumData(); + + for (int i = 0; i < SpectrumSize; i++) + { + _colorCache[i] = new Color(spectrumData[i], 0, 0, 0); + } + + _texture.SetPixels(_colorCache); + _texture.Apply(); + } + + public override void UpdateBinding(VisualEffect component) + { + base.UpdateBinding(component); + UpdateTexture(); + component.SetUInt(SpectrumSizeParameter, (uint) SpectrumSize); + component.SetTexture(SpectrumDataTextureParameter, _texture); + } + + public override string ToString() + { + return "Audio Spectrum Data"; + } + } +} \ No newline at end of file diff --git a/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs.meta b/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs.meta new file mode 100644 index 0000000..d0d1019 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/VfxAudioSpectrumDataBinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d899048990fdc6246a5f17ff39f840bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs b/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs new file mode 100644 index 0000000..e3a54c7 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.VFX; +using UnityEngine.VFX.Utility; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + public abstract class VfxAudioVisualizationEffect : VFXBinderBase + { + // Inspector Properties + public WasapiAudioSource WasapiAudioSource; + + [SerializeReference] + [SerializeReferenceButton] + public List Transformers = new List(); + + [SpectrumDataPreview] + public SpectrumData Preview; + + protected int SpectrumSize { get; private set; } + + public override bool IsValid(VisualEffect component) + { + return WasapiAudioSource != null; + } + + public override void UpdateBinding(VisualEffect component) + { + SpectrumSize = WasapiAudioSource.SpectrumSize; + Preview = new SpectrumData(); + } + + protected float[] GetSpectrumData() + { + // Get raw / unmodified spectrum data + var spectrumData = WasapiAudioSource.GetSpectrumData(); + + // Run spectrum data through all configured transformers + if (Transformers != null && Transformers.Count > 0) + { + foreach (var transformer in Transformers) + { + spectrumData = transformer.Transform(spectrumData); + } + } + + Preview.Values = spectrumData; + + return spectrumData; + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs.meta b/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs.meta new file mode 100644 index 0000000..185045e --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/VfxAudioVisualizationEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4dc0fbf002e63e148b601b689dcc5ca7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs b/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs new file mode 100644 index 0000000..50ddfd6 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs @@ -0,0 +1,46 @@ +using Assets.WasapiAudio.Scripts.Core; +using UnityEngine; + +namespace Assets.WasapiAudio.Scripts.Unity +{ + [ExecuteInEditMode] + public class WasapiAudioSource : MonoBehaviour + { + private Core.WasapiAudio _wasapiAudio; + private float[] _spectrumData; + + // Inspector Properties + public WasapiCaptureType CaptureType = WasapiCaptureType.Loopback; + public int SpectrumSize = 32; + public ScalingStrategy ScalingStrategy = ScalingStrategy.Sqrt; + public int MinFrequency = 100; + public int MaxFrequency = 20000; + public WasapiAudioFilter[] Filters; + + public void Awake() + { + // Setup loopback audio and start listening + _wasapiAudio = new Core.WasapiAudio(CaptureType, SpectrumSize, ScalingStrategy, MinFrequency, MaxFrequency, Filters, spectrumData => + { + _spectrumData = spectrumData; + }); + + _wasapiAudio.StartListen(); + } + + public void Update() + { + + } + + public float[] GetSpectrumData() + { + return _spectrumData; + } + + public void OnApplicationQuit() + { + _wasapiAudio?.StopListen(); + } + } +} diff --git a/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs.meta b/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs.meta new file mode 100644 index 0000000..afe7430 --- /dev/null +++ b/Assets/WasapiAudio/Scripts/Unity/WasapiAudioSource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 120ca4c4f9442e14db8c72acac5da136 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 0000000..024235b --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,44 @@ +{ + "dependencies": { + "com.unity.collab-proxy": "1.15.7", + "com.unity.ide.rider": "2.0.7", + "com.unity.ide.visualstudio": "2.0.12", + "com.unity.ide.vscode": "1.2.4", + "com.unity.test-framework": "1.1.29", + "com.unity.textmeshpro": "3.0.6", + "com.unity.timeline": "1.4.8", + "com.unity.ugui": "1.0.0", + "com.unity.visualeffectgraph": "10.8.1", + "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.cloth": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.terrainphysics": "1.0.0", + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.vehicles": "1.0.0", + "com.unity.modules.video": "1.0.0", + "com.unity.modules.vr": "1.0.0", + "com.unity.modules.wind": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } +} diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json new file mode 100644 index 0000000..f39e8a5 --- /dev/null +++ b/Packages/packages-lock.json @@ -0,0 +1,395 @@ +{ + "dependencies": { + "com.unity.collab-proxy": { + "version": "1.15.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.nuget.newtonsoft-json": "2.0.0", + "com.unity.services.core": "1.0.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "1.0.6", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.ide.rider": { + "version": "2.0.7", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.visualstudio": { + "version": "2.0.12", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ide.vscode": { + "version": "1.2.4", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.nuget.newtonsoft-json": { + "version": "2.0.0", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.render-pipelines.core": { + "version": "10.8.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.searcher": { + "version": "4.3.2", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.services.core": { + "version": "1.0.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.shadergraph": { + "version": "10.8.1", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.render-pipelines.core": "10.8.1", + "com.unity.searcher": "4.3.2" + }, + "url": "https://packages.unity.com" + }, + "com.unity.test-framework": { + "version": "1.1.29", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ext.nunit": "1.0.6", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.textmeshpro": { + "version": "3.0.6", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.4.8", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.visualeffectgraph": { + "version": "10.8.1", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.shadergraph": "10.8.1", + "com.unity.render-pipelines.core": "10.8.1" + }, + "url": "https://packages.unity.com" + }, + "com.unity.modules.ai": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.androidjni": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.cloth": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.terrainphysics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0" + } + }, + "com.unity.modules.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics2d": "1.0.0" + } + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.uielementsnative": "1.0.0" + } + }, + "com.unity.modules.uielementsnative": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unityanalytics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.vehicles": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.vr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.xr": "1.0.0" + } + }, + "com.unity.modules.wind": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.xr": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.subsystems": "1.0.0" + } + } + } +} diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..07ebfb0 --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 1024 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..cdc1f3e --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,34 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_DefaultMaxAngluarSpeed: 7 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..0147887 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: [] + m_configObjects: {} diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..de5d0b2 --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_ExternalVersionControlSupport: Visible Meta Files + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerPaddingPower: 1 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_CollabEditorSettings: + inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 0 + m_SerializeInlineMappingsOnOneLine: 1 \ No newline at end of file diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..43369e3 --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_LegacyDeferred: + m_Mode: 1 + m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, + type: 0} + m_CustomRenderPipeline: {fileID: 0} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_LightsUseLinearIntensity: 0 + m_LightsUseColorTemperature: 0 + m_LogWhenShaderIsCompiled: 0 + m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..b16147e --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,487 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: joystick button 8 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: backspace + altNegativeButton: + altPositiveButton: joystick button 9 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Reset + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Next + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page down + altNegativeButton: + altPositiveButton: joystick button 5 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Previous + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page up + altNegativeButton: + altPositiveButton: joystick button 4 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Validate + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Persistent + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: right shift + altNegativeButton: + altPositiveButton: joystick button 2 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Multiplier + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: joystick button 3 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 6 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 5 + joyNum: 0 diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..be4a797 --- /dev/null +++ b/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreviewPackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..47880b1 --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 1 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..0516ce7 --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,688 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 22 + productGUID: 7b43c58e327ef104397f177aab5d3b79 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: tripsitter + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 0 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + iosAllowHTTPDownload: 1 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 1 + androidBlitType: 0 + androidResizableWindow: 0 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 1 + captureSingleScreen: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 0 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 + m_SupportedAspectRatios: + 4:3: 1 + 5:4: 1 + 16:10: 1 + 16:9: 1 + Others: 1 + bundleVersion: 0.1 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + useHDRDisplay: 0 + D3DHDRBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.1 + applicationIdentifier: {} + buildNumber: + Standalone: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 0 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 19 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + APKExpansionFiles: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 1 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSTargetOSVersionString: 11.0 + tvOSSdkVersion: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 11.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreenCustomXibPath: + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreeniPadCustomXibPath: + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea + templatePackageId: com.unity.template.3d@5.0.4 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 1 + AndroidTargetDevices: 0 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + chromeosInputEmulation: 1 + AndroidMinifyWithR8: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: tvOS + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: iPhone + m_StaticBatching: 1 + m_DynamicBatching: 0 + - m_BuildTarget: WebGL + m_StaticBatching: 0 + m_DynamicBatching: 0 + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 1 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 1 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 1 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 1 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 1 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 1 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: AndroidPlayer + m_APIs: 150000000b000000 + m_Automatic: 0 + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AppleTVSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: WebGLSupport + m_APIs: 0b000000 + m_Automatic: 1 + m_BuildTargetVRSettings: + - m_BuildTarget: Standalone + m_Enabled: 0 + m_Devices: + - Oculus + - OpenVR + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetNormalMapEncoding: [] + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + bluetoothUsageDescription: + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchUseGOLDLinker: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchTouchScreenUsage: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchPlayerConnectionEnabled: 1 + switchUseNewStyleFilepaths: 0 + switchUseMicroSleepForYield: 1 + switchMicroSleepForYieldTime: 25 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 1 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 0 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 16 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 1 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + scriptingDefineSymbols: {} + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: {} + il2cppCompilerConfiguration: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + useReferenceAssemblies: 1 + enableRoslynAnalyzers: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + assemblyVersionValidation: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Template_3D + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Template_3D + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} + metroSplashScreenUseBackgroundColor: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: + UNet: 1 + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + apiCompatibilityLevel: 6 + activeInputHandler: 0 + cloudProjectId: + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: + organizationId: + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + virtualTexturingSupportEnabled: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..def2933 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 2020.3.26f1 +m_EditorVersionWithRevision: 2020.3.26f1 (7298b473bc1a) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..7b7658d --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,232 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 5 + m_QualitySettings: + - serializedVersion: 2 + name: Very Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 15 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 1 + textureQuality: 1 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.3 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Low + pixelLightCount: 0 + shadows: 0 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 0 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 0 + lodBias: 0.4 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 16 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Medium + pixelLightCount: 1 + shadows: 1 + shadowResolution: 0 + shadowProjection: 1 + shadowCascades: 1 + shadowDistance: 20 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 0 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 0 + vSyncCount: 1 + lodBias: 0.7 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 64 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: High + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 2 + textureQuality: 0 + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Very High + pixelLightCount: 3 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 70 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 1.5 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 1024 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + - serializedVersion: 2 + name: Ultra + pixelLightCount: 4 + shadows: 2 + shadowResolution: 2 + shadowProjection: 1 + shadowCascades: 4 + shadowDistance: 150 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + blendWeights: 4 + textureQuality: 0 + anisotropicTextures: 2 + antiAliasing: 2 + softParticles: 1 + softVegetation: 1 + realtimeReflectionProbes: 1 + billboardsFaceCameraPosition: 1 + vSyncCount: 1 + lodBias: 2 + maximumLODLevel: 0 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 4096 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + excludedTargetPlatforms: [] + m_PerPlatformDefaultQuality: + Android: 2 + Lumin: 5 + Nintendo 3DS: 5 + Nintendo Switch: 5 + PS4: 5 + PSP2: 2 + Stadia: 5 + Standalone: 5 + WebGL: 3 + Windows Store Apps: 5 + XboxOne: 5 + iPhone: 2 + tvOS: 2 diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..6f3e60f --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,167 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "ignore": false, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..1c92a78 --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..6125b30 --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com + m_TestInitMode: 0 + CrashReportingSettings: + m_EventUrl: https://perf-events.cloud.unity3d.com + m_Enabled: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..4e57831 --- /dev/null +++ b/ProjectSettings/VFXManager.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 7200000, guid: 84a17cfa13e40ae4082ef42714f0a81c, type: 3} + m_CopyBufferShader: {fileID: 7200000, guid: 23c51f21a3503f6428b527b01f8a2f4e, type: 3} + m_SortShader: {fileID: 7200000, guid: ea257ca3cfb12a642a5025e612af6b2a, type: 3} + m_StripUpdateShader: {fileID: 7200000, guid: 8fa6c4009fe2a4d4486c62736fc30ad8, type: 3} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 + m_CompiledVersion: 2 + m_RuntimeVersion: 12 diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset new file mode 100644 index 0000000..b543455 --- /dev/null +++ b/UserSettings/EditorUserSettings.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!162 &1 +EditorUserSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_ConfigSettings: + RecentlyUsedScenePath-0: + value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d + flags: 0 + vcSharedLogLevel: + value: 0d5e400f0650 + flags: 0 + m_VCAutomaticAdd: 1 + m_VCDebugCom: 0 + m_VCDebugCmd: 0 + m_VCDebugOut: 0 + m_SemanticMergeMode: 2 + m_VCShowFailedCheckout: 1 + m_VCOverwriteFailedCheckoutAssets: 1 + m_VCProjectOverlayIcons: 1 + m_VCHierarchyOverlayIcons: 1 + m_VCOtherOverlayIcons: 1 + m_VCAllowAsyncUpdate: 1