diff --git a/Assets/GoogleMobileAds.meta b/Assets/.GoogleMobileAds.meta similarity index 100% rename from Assets/GoogleMobileAds.meta rename to Assets/.GoogleMobileAds.meta diff --git a/Assets/GoogleMobileAds/CHANGELOG.md b/Assets/.GoogleMobileAds/CHANGELOG.md similarity index 100% rename from Assets/GoogleMobileAds/CHANGELOG.md rename to Assets/.GoogleMobileAds/CHANGELOG.md diff --git a/Assets/GoogleMobileAds/CHANGELOG.md.meta b/Assets/.GoogleMobileAds/CHANGELOG.md.meta similarity index 100% rename from Assets/GoogleMobileAds/CHANGELOG.md.meta rename to Assets/.GoogleMobileAds/CHANGELOG.md.meta diff --git a/Assets/GoogleMobileAds/Editor.meta b/Assets/.GoogleMobileAds/Editor.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor.meta rename to Assets/.GoogleMobileAds/Editor.meta diff --git a/Assets/GoogleMobileAds/Editor/BuildPreProcessor.cs b/Assets/.GoogleMobileAds/Editor/BuildPreProcessor.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/BuildPreProcessor.cs rename to Assets/.GoogleMobileAds/Editor/BuildPreProcessor.cs diff --git a/Assets/GoogleMobileAds/Editor/BuildPreProcessor.cs.meta b/Assets/.GoogleMobileAds/Editor/BuildPreProcessor.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/BuildPreProcessor.cs.meta rename to Assets/.GoogleMobileAds/Editor/BuildPreProcessor.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/EditorPathUtils.cs b/Assets/.GoogleMobileAds/Editor/EditorPathUtils.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/EditorPathUtils.cs rename to Assets/.GoogleMobileAds/Editor/EditorPathUtils.cs diff --git a/Assets/GoogleMobileAds/Editor/EditorPathUtils.cs.meta b/Assets/.GoogleMobileAds/Editor/EditorPathUtils.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/EditorPathUtils.cs.meta rename to Assets/.GoogleMobileAds/Editor/EditorPathUtils.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef b/Assets/.GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef.meta b/Assets/.GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef.meta rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAds.Editor.asmdef.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml.meta b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml.meta rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml.meta b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml.meta rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSKAdNetworkItems.xml.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs.meta b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs.meta rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettings.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs diff --git a/Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs.meta b/Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs.meta rename to Assets/.GoogleMobileAds/Editor/GoogleMobileAdsSettingsEditor.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml b/Assets/.GoogleMobileAds/Editor/GoogleUmpDependencies.xml similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml rename to Assets/.GoogleMobileAds/Editor/GoogleUmpDependencies.xml diff --git a/Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml.meta b/Assets/.GoogleMobileAds/Editor/GoogleUmpDependencies.xml.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml.meta rename to Assets/.GoogleMobileAds/Editor/GoogleUmpDependencies.xml.meta diff --git a/Assets/GoogleMobileAds/Editor/GradleProcessor.cs b/Assets/.GoogleMobileAds/Editor/GradleProcessor.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/GradleProcessor.cs rename to Assets/.GoogleMobileAds/Editor/GradleProcessor.cs diff --git a/Assets/GoogleMobileAds/Editor/GradleProcessor.cs.meta b/Assets/.GoogleMobileAds/Editor/GradleProcessor.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/GradleProcessor.cs.meta rename to Assets/.GoogleMobileAds/Editor/GradleProcessor.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/ManifestProcessor.cs b/Assets/.GoogleMobileAds/Editor/ManifestProcessor.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/ManifestProcessor.cs rename to Assets/.GoogleMobileAds/Editor/ManifestProcessor.cs diff --git a/Assets/GoogleMobileAds/Editor/ManifestProcessor.cs.meta b/Assets/.GoogleMobileAds/Editor/ManifestProcessor.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/ManifestProcessor.cs.meta rename to Assets/.GoogleMobileAds/Editor/ManifestProcessor.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/PListProcessor.cs b/Assets/.GoogleMobileAds/Editor/PListProcessor.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/PListProcessor.cs rename to Assets/.GoogleMobileAds/Editor/PListProcessor.cs diff --git a/Assets/GoogleMobileAds/Editor/PListProcessor.cs.meta b/Assets/.GoogleMobileAds/Editor/PListProcessor.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/PListProcessor.cs.meta rename to Assets/.GoogleMobileAds/Editor/PListProcessor.cs.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources.meta b/Assets/.GoogleMobileAds/Editor/Resources.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources.meta rename to Assets/.GoogleMobileAds/Editor/Resources.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/1024x768.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/300x250.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x100.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x480.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/320x50.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/468x60.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/480x320.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/728x90.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/768x1024.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdImages/AdInspectorHome.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AdInspector/768x1024.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/1024x768.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/AppOpen/768x1024.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/ADAPTIVE.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/BANNER.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/CENTER.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/FULL_BANNER.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LARGE_BANNER.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/LEADERBOARD.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/MEDIUM_RECTANGLE.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Banners/SMART_BANNER.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/1024x768.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Interstitials/768x1024.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/1024x768.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/PlaceholderAds/Rewarded/768x1024.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/Ump.meta b/Assets/.GoogleMobileAds/Editor/Resources/Ump.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/Ump.meta rename to Assets/.GoogleMobileAds/Editor/Resources/Ump.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png b/Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png rename to Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png diff --git a/Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png.meta b/Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png.meta rename to Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.png.meta diff --git a/Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab b/Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab rename to Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab diff --git a/Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab.meta b/Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab.meta rename to Assets/.GoogleMobileAds/Editor/Resources/Ump/ConsentForm.prefab.meta diff --git a/Assets/GoogleMobileAds/Editor/Utils.cs b/Assets/.GoogleMobileAds/Editor/Utils.cs similarity index 100% rename from Assets/GoogleMobileAds/Editor/Utils.cs rename to Assets/.GoogleMobileAds/Editor/Utils.cs diff --git a/Assets/GoogleMobileAds/Editor/Utils.cs.meta b/Assets/.GoogleMobileAds/Editor/Utils.cs.meta similarity index 100% rename from Assets/GoogleMobileAds/Editor/Utils.cs.meta rename to Assets/.GoogleMobileAds/Editor/Utils.cs.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Android.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Android.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Android.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Android.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Android.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Android.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Android.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Android.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Common.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Common.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Common.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Common.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Common.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Common.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Common.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Common.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Core.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Core.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Core.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Core.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Core.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Core.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Core.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Core.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.Android.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Android.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.Android.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Android.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.Android.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Android.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.Android.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Android.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.Unity.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Ump.iOS.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Unity.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.Unity.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Unity.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.Unity.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.Unity.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.Unity.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.Unity.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.Unity.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.iOS.dll b/Assets/.GoogleMobileAds/GoogleMobileAds.iOS.dll similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.iOS.dll rename to Assets/.GoogleMobileAds/GoogleMobileAds.iOS.dll diff --git a/Assets/GoogleMobileAds/GoogleMobileAds.iOS.dll.meta b/Assets/.GoogleMobileAds/GoogleMobileAds.iOS.dll.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds.iOS.dll.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds.iOS.dll.meta diff --git a/Assets/GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt b/Assets/.GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt rename to Assets/.GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt diff --git a/Assets/GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt.meta b/Assets/.GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt.meta similarity index 100% rename from Assets/GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt.meta rename to Assets/.GoogleMobileAds/GoogleMobileAds_version-9.1.1_manifest.txt.meta diff --git a/Assets/GoogleMobileAds/LICENSE b/Assets/.GoogleMobileAds/LICENSE similarity index 100% rename from Assets/GoogleMobileAds/LICENSE rename to Assets/.GoogleMobileAds/LICENSE diff --git a/Assets/GoogleMobileAds/LICENSE.meta b/Assets/.GoogleMobileAds/LICENSE.meta similarity index 100% rename from Assets/GoogleMobileAds/LICENSE.meta rename to Assets/.GoogleMobileAds/LICENSE.meta diff --git a/Assets/GoogleMobileAds/Resources.meta b/Assets/.GoogleMobileAds/Resources.meta similarity index 100% rename from Assets/GoogleMobileAds/Resources.meta rename to Assets/.GoogleMobileAds/Resources.meta diff --git a/Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset b/Assets/.GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset similarity index 100% rename from Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset rename to Assets/.GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset diff --git a/Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta b/Assets/.GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta similarity index 100% rename from Assets/GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta rename to Assets/.GoogleMobileAds/Resources/GoogleMobileAdsSettings.asset.meta diff --git a/Assets/GoogleMobileAds/link.xml b/Assets/.GoogleMobileAds/link.xml similarity index 100% rename from Assets/GoogleMobileAds/link.xml rename to Assets/.GoogleMobileAds/link.xml diff --git a/Assets/GoogleMobileAds/link.xml.meta b/Assets/.GoogleMobileAds/link.xml.meta similarity index 100% rename from Assets/GoogleMobileAds/link.xml.meta rename to Assets/.GoogleMobileAds/link.xml.meta diff --git a/Assets/3rd/D2D_Scripts/Gameplay/Health/Health.cs b/Assets/3rd/D2D_Scripts/Gameplay/Health/Health.cs index 15265dc7..15ae122e 100644 --- a/Assets/3rd/D2D_Scripts/Gameplay/Health/Health.cs +++ b/Assets/3rd/D2D_Scripts/Gameplay/Health/Health.cs @@ -35,13 +35,15 @@ namespace D2D.Gameplay private void OnEnable() { - AdsManager.Instance.OnUserEarnedReward += OnRewardsAchieved; + //AliSharoz + //AdsManager.Instance.OnUserEarnedReward += OnRewardsAchieved; } private void OnDisable() { - AdsManager.Instance.OnUserEarnedReward -= OnRewardsAchieved; + //AliSharoz + //AdsManager.Instance.OnUserEarnedReward -= OnRewardsAchieved; } public float CurrentPoints @@ -125,12 +127,14 @@ namespace D2D.Gameplay } else { - if (_isPlayer && AdsManager.Instance.isRewardedAdAvailable) - { - _stateMachine.Push(new RevivalState()); - deathCoroutine = StartCoroutine(DeathCoroutine()); - } - else + //AliSharoz + // + //if (_isPlayer && AdsManager.Instance.isRewardedAdAvailable) + //{ + // _stateMachine.Push(new RevivalState()); + // deathCoroutine = StartCoroutine(DeathCoroutine()); + //} + //else { InitiateDeathSequence(); } @@ -138,23 +142,23 @@ namespace D2D.Gameplay } private Coroutine deathCoroutine; - - private void OnRewardsAchieved(RewardedTypes rewardedTypes) - { - if (_isPlayer) - { - Debug.Log("RewardType: " + rewardedTypes.ToString()); - if (rewardedTypes != RewardedTypes.Revive) return; - StopCoroutine(deathCoroutine); - CurrentPoints = MaxPoints; - _stateMachine.Push(new RunningState()); - GameManager.Instance.OnRevival(); - } - else - { - InitiateDeathSequence(); - } - } + //AliSharoz + //private void OnRewardsAchieved(RewardedTypes rewardedTypes) + //{ + // if (_isPlayer) + // { + // Debug.Log("RewardType: " + rewardedTypes.ToString()); + // if (rewardedTypes != RewardedTypes.Revive) return; + // StopCoroutine(deathCoroutine); + // CurrentPoints = MaxPoints; + // _stateMachine.Push(new RunningState()); + // GameManager.Instance.OnRevival(); + // } + // else + // { + // InitiateDeathSequence(); + // } + //} IEnumerator DeathCoroutine() { diff --git a/Assets/3rd/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset b/Assets/3rd/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset index 98147fd9..679b1792 100644 --- a/Assets/3rd/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset +++ b/Assets/3rd/Plugins/Easy Save 3/Resources/ES3/ES3Defaults.asset @@ -31,9 +31,10 @@ MonoBehaviour: assemblyNames: - StompyRobot.SRDebugger - MoreMountains.Feedbacks - - NaughtyAttributes.Core - Assembly-CSharp + - NaughtyAttributes.Test - StompyRobot.SRF + - NaughtyAttributes.Core - UniTask - ToonyColorsPro.Editor - Animancer @@ -43,20 +44,20 @@ MonoBehaviour: - MoreMountains.Tools.Editor - MoreMountains.Feedbacks.TextMeshPro - AV.Inspector - - NaughtyAttributes.Editor - IAPResolver - Sirenix.OdinInspector.CompatibilityLayer.Editor - UniTask.Linq - MPUIKit.Editor - ToonyColorsPro2.Demo - MoreMountains.Feedbacks.HDRP + - NaughtyAttributes.Editor - Animancer.Examples - MoreMountains.Feedbacks.PostProcessing - StompyRobot.SRDebugger.Editor - ToonyColorsPro.Runtime - MoreMountains.Feedbacks.URP + - IngameDebugConsole.Runtime - AssetUsageDetector.Editor - - NaughtyAttributes.Test - MoreMountains.Feedbacks.MMTools - Lofelt.NiceVibrations - Lofelt.NiceVibrations.Demo @@ -70,7 +71,6 @@ MonoBehaviour: - AV.Inspector.Runtime - NavMeshComponentsEditor - ThirteenPixels.Placr - - GoogleMobileAds.Editor - MPUIKit - Sirenix.OdinInspector.CompatibilityLayer - NavMeshComponents @@ -78,6 +78,7 @@ MonoBehaviour: - MoreMountains.Feedbacks.NiceVibrations - Purchasing.Common - UniTask.TextMeshPro + - IngameDebugConsole.Editor - MoreMountains.Feedbacks.Authorizations - UniTask.DOTween - Lofelt.NiceVibrations.Editor diff --git a/Assets/GoogleSignIn.meta b/Assets/GoogleSignIn.meta new file mode 100644 index 00000000..b61c9432 --- /dev/null +++ b/Assets/GoogleSignIn.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a089c79cc334748a5a29c5f219b7cfd4 +folderAsset: yes +timeCreated: 1490807626 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor.meta b/Assets/GoogleSignIn/Editor.meta new file mode 100644 index 00000000..d55e3f7a --- /dev/null +++ b/Assets/GoogleSignIn/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a7e77ece57ef34772969fad4915b1a4c +folderAsset: yes +timeCreated: 1490978071 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml new file mode 100644 index 00000000..556cf4e6 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta new file mode 100644 index 00000000..6493d604 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 938014c9994164100b26d82840a88fbb +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml new file mode 100644 index 00000000..1ef90349 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml @@ -0,0 +1,11 @@ + + + + + + + Assets/GoogleSignIn/Editor/m2repository + + + + diff --git a/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta new file mode 100644 index 00000000..578e49d5 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e8689106c65f445c19cec6044d615c19 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt new file mode 100644 index 00000000..a0e24547 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt @@ -0,0 +1,33 @@ +Assets/PlayServicesResolver/Editor/Google.VersionHandlerImpl_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.IOSResolver_v1.2.89.0.dll +Assets/PlayServicesResolver/Editor/Google.VersionHandler.dll +Assets/PlayServicesResolver/Editor/Google.JarResolver_v1.2.89.0.dll +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.mm +Assets/Plugins/iOS/GoogleSignIn/GoogleSignInAppController.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.h +Assets/Plugins/iOS/GoogleSignIn/GoogleSignIn.mm +Assets/Parse/LICENSE +Assets/Parse/Plugins/Unity.Compat.dll +Assets/Parse/Plugins/Unity.Tasks.dll +Assets/SignInSample/MainScene.unity +Assets/SignInSample/SigninSampleScript.cs +Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs +Assets/GoogleSignIn/Impl/SignInHelperObject.cs +Assets/GoogleSignIn/Impl/NativeFuture.cs +Assets/GoogleSignIn/Impl/BaseObject.cs +Assets/GoogleSignIn/GoogleSignIn.cs +Assets/GoogleSignIn/GoogleSignInConfiguration.cs +Assets/GoogleSignIn/Future.cs +Assets/GoogleSignIn/GoogleSignInUser.cs +Assets/GoogleSignIn/GoogleSignInStatusCode.cs +Assets/GoogleSignIn/Editor/GoogleSignInDependencies.xml +Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom +Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 diff --git a/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta new file mode 100644 index 00000000..eb7a5d66 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/google-signin-plugin_v1.0.4.txt.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a67d5f0cfc09749e6b1ce13e8b8e6e1d +labels: +- gvh +- gvh_manifest +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository.meta b/Assets/GoogleSignIn/Editor/m2repository.meta new file mode 100644 index 00000000..26cfc222 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: eefc3dc8b56e545998952bd59ab36247 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com.meta b/Assets/GoogleSignIn/Editor/m2repository/com.meta new file mode 100644 index 00000000..9372f2b8 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ade49ef91c70440a0baeac322ecaa2d7 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta new file mode 100644 index 00000000..a1cf31a7 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 707de6ade212a46b1ab4bf4d42325176 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta new file mode 100644 index 00000000..4a56a312 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 34b86fc2e934d482ea5f9d1f5354b0f9 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta new file mode 100644 index 00000000..1132fbfe --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e3becceb8680148d59e5bb93e5eb5a24 +folderAsset: yes +timeCreated: 1508956004 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta new file mode 100644 index 00000000..27236f59 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 001a15402063b4df983ba8bc4ddb269f +folderAsset: yes +timeCreated: 1537405253 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom new file mode 100644 index 00000000..ce320d07 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + com.google.signin + google-signin-support + 1.0.4 + srcaar + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 new file mode 100644 index 00000000..a6bc0c50 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5 @@ -0,0 +1 @@ +7cd48eaf454469c04dae63043d467d69 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta new file mode 100644 index 00000000..8209b096 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 907bf7a19cd7848cabf1f641f61343ee +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta new file mode 100644 index 00000000..94612747 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a3f74b3d329a24e81a6c6f9f1d2f46f1 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 new file mode 100644 index 00000000..8721bf36 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1 @@ -0,0 +1 @@ +f30d09407a5b0e439bfc0e54e33f3a34f7c7d35c \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta new file mode 100644 index 00000000..df944c49 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.pom.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e1a3ff77f802d43818521ff3db2bf944 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar new file mode 100644 index 00000000..1ebd5a13 Binary files /dev/null and b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar differ diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 new file mode 100644 index 00000000..f7df30ce --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5 @@ -0,0 +1 @@ +040097cf545e84135c0e4d783e3b1143 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta new file mode 100644 index 00000000..ee2f55dd --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 79f9d122dd99b483282294f3b1f1bd36 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta new file mode 100644 index 00000000..4ae20ba3 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6eab7a3cbdbf34cffaf951dc9210a32c +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 new file mode 100644 index 00000000..db669bff --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1 @@ -0,0 +1 @@ +632874f93336b4f05e15f55b63656dace924fa72 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta new file mode 100644 index 00000000..124743a3 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/1.0.4/google-signin-support-1.0.4.srcaar.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: d508eb0e16bb14c8a962b343e755ef01 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml new file mode 100644 index 00000000..c3049afe --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml @@ -0,0 +1,12 @@ + + + com.google.signin + google-signin-support + + 1.0.4 + + 1.0.4 + + 20180920010048 + + diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 new file mode 100644 index 00000000..77f39ed2 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5 @@ -0,0 +1 @@ +e243363a85b4f7bd1170918ba674061b \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta new file mode 100644 index 00000000..49e3156c --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.md5.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c020582c1a85d47c7934908f00a0bd37 +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta new file mode 100644 index 00000000..1236df6d --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f3911d467587242978192a8723c68395 +labels: +- gvh +- gvh_version-1.0.4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 new file mode 100644 index 00000000..e1c0999f --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +43ebede449c3782df517a7156c18c28cde4fd4f4 \ No newline at end of file diff --git a/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta new file mode 100644 index 00000000..63dc4be7 --- /dev/null +++ b/Assets/GoogleSignIn/Editor/m2repository/com/google/signin/google-signin-support/maven-metadata.xml.sha1.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 16b8065a143bb4277af08381a56157dd +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Future.cs b/Assets/GoogleSignIn/Future.cs new file mode 100644 index 00000000..df469423 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs @@ -0,0 +1,84 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google { + using System.Collections; + using System.Threading.Tasks; + using UnityEngine; + + /// + /// Interface for implementations of the Future API. + /// + internal interface FutureAPIImpl { + bool Pending { get; } + GoogleSignInStatusCode Status { get; } + T Result { get; } + } + + /// + /// Future return value. + /// + /// This class provides a promise of a result from a method call. + /// The typical usage is to check the Pending property until it is false. + /// At this time either the Status or Result will be available for use. + /// Result is only set if the operation was successful. + /// As a convience, a coroutine to complete a Task is provided. + /// + public class Future { + + private FutureAPIImpl apiImpl; + + internal Future(FutureAPIImpl impl) { + apiImpl = impl; + } + + /// + /// Gets a value indicating whether this + /// is pending. + /// + /// true if pending; otherwise, false. + public bool Pending { get { return apiImpl.Pending; } } + + /// + /// Gets the status. + /// + /// The status is set when Pending == false. + GoogleSignInStatusCode Status { get { return apiImpl.Status; } } + + /// + /// Gets the result. + /// + /// The result is set when Pending == false and there is no error. + /// + T Result { get { return apiImpl.Result; } } + + /// + /// Waits for result then completes the TaskCompleationSource. + /// + /// The for result. + /// Tcs. + internal IEnumerator WaitForResult(TaskCompletionSource tcs) { + yield return new WaitUntil(() => !Pending); + if (Status == GoogleSignInStatusCode.Canceled) { + tcs.SetCanceled(); + } else if (Status == GoogleSignInStatusCode.Success || + Status == GoogleSignInStatusCode.SuccessCached) { + tcs.SetResult(Result); + } else { + tcs.SetException(new GoogleSignIn.SignInException(Status)); + } + } + } +} \ No newline at end of file diff --git a/Assets/GoogleSignIn/Future.cs.meta b/Assets/GoogleSignIn/Future.cs.meta new file mode 100644 index 00000000..75a7f224 --- /dev/null +++ b/Assets/GoogleSignIn/Future.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad3b09fb652fb4ff0a68d1966f13160e +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs b/Assets/GoogleSignIn/GoogleSignIn.cs new file mode 100644 index 00000000..c59ced72 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs @@ -0,0 +1,202 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + using System.Runtime.Serialization; + using System.Threading.Tasks; + using Google.Impl; + using UnityEngine; + + /// + /// Google sign in API. + /// + /// This class implements the GoogleSignInAPI for Unity. + /// Typical usage is to set the Configuration options as needed, then + /// get the DefaultInstance and call signIn or signInSilently. See + /// the + /// Google Sign-In API documentation for more details. + /// + /// + /// private static readonly GoogleSignInConfiguration configuration = + /// new GoogleSignInConfiguration { + /// WebClientId = "", + /// RequestIdToken = true + /// }; + /// + /// public void OnSignIn() { + /// GoogleSignIn.Configuration = configuration; + /// GoogleSignIn.Configuration.UseGameSignIn = false; + /// GoogleSignIn.Configuration.RequestIdToken = true; + /// GoogleSignIn.DefaultInstance.SignIn().ContinueWith( + /// OnAuthenticationFinished); + /// } + /// + /// + /// + public class GoogleSignIn { + +#if !UNITY_ANDROID && !UNITY_IOS + static GoogleSignIn() { + Debug.LogError("This platform is not supported"); + } +#endif + + private static GoogleSignIn theInstance = null; + private static GoogleSignInConfiguration theConfiguration = null; + private ISignInImpl impl; + + /// The configuration settings for Google Sign-in. + /// The configuration should be set before calling the sign-in + /// methods. Once the configuration is set it cannot be changed. + /// + public static GoogleSignInConfiguration Configuration { + set { + // Can set the configuration until the singleton is created. + if (theInstance == null || theConfiguration == value || theConfiguration == null) { + theConfiguration = value; + } else { + throw new SignInException(GoogleSignInStatusCode.DeveloperError, + "DefaultInstance already created. " + + " Cannot change configuration after creation."); + } + } + + get { + return theConfiguration; + } + } + + /// + /// Singleton instance of this class. + /// + /// The instance. + public static GoogleSignIn DefaultInstance { + get { + if (theInstance == null) { +#if UNITY_ANDROID || UNITY_IOS + theInstance = new GoogleSignIn(new GoogleSignInImpl(Configuration)); +#else + theInstance = new GoogleSignIn(null); + throw new SignInException( + GoogleSignInStatusCode.DeveloperError, + "This platform is not supported by GoogleSignIn"); +#endif + } + return theInstance; + } + } + + internal GoogleSignIn(GoogleSignInImpl impl) { + this.impl = impl; + } + + public void EnableDebugLogging(bool flag) { + impl.EnableDebugLogging(flag); + } + + /// Starts the authentication process. + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Task SignIn() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignIn().WaitForResult(tcs)); + return tcs.Task; + } + + /// Starts the silent authentication process. + /// + /// The authenication process is started and will attempt to sign in without + /// displaying any UI. If this cannot be done, the developer should call + /// SignIn(). + /// + public Task SignInSilently() { + var tcs = new TaskCompletionSource(); + SignInHelperObject.Instance.StartCoroutine( + impl.SignInSilently().WaitForResult(tcs)); + return tcs.Task; + } + + /// + /// Signs out the User. + /// + /// Future sign-in attempts will require the user to select the + /// account to use when signing in. + /// + public void SignOut() { + theConfiguration = null; + impl.SignOut(); + } + + /// + /// Disconnect this instance. + /// + /// When the user is disconnected, it revokes all access that may + /// have been granted to this application. This includes any server side + /// access tokens derived from server auth codes. As a result, future + /// sign-in attempts will require the user to re-consent to the requested + /// scopes. + /// + public void Disconnect() { + impl.Disconnect(); + } + + /// + /// Sign in exception. This is a checked exception for handling specific + /// errors during the sign-in process. + /// + [Serializable] + public class SignInException : Exception { + internal SignInException(GoogleSignInStatusCode status) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message) : + base(message) { + Status = status; + } + + public SignInException(GoogleSignInStatusCode status, string message, + Exception innerException) : base(message, innerException) { + Status = status; + } + + protected SignInException(GoogleSignInStatusCode status, + SerializationInfo info, + StreamingContext context) : + base(info, context) { + Status = status; + } + + public GoogleSignInStatusCode Status { + get; + internal set; + } + } + } + + internal interface ISignInImpl { + Future SignIn(); + Future SignInSilently(); + void EnableDebugLogging(bool flag); + void SignOut(); + void Disconnect(); + } +} // namespace Google diff --git a/Assets/GoogleSignIn/GoogleSignIn.cs.meta b/Assets/GoogleSignIn/GoogleSignIn.cs.meta new file mode 100644 index 00000000..31609ffd --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignIn.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 138b984208e394be797ce8905a44fd54 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs new file mode 100644 index 00000000..d914c68d --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs @@ -0,0 +1,63 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System.Collections.Generic; + + /// + /// Configuration properties for Google Sign-In. + /// + public class GoogleSignInConfiguration { + /// Set to true to use games signin, false for default signin. + /// + /// Note: The Games configuration is not supported on non-Android + /// platforms. + /// If games configuration is used, you must also add the + /// play-services-games libraries and dependencies. + /// See the README for more details. + /// + public bool UseGameSignIn = false; + /// Web client id associated with this app. + /// Required for requesting auth code or id token. + public string WebClientId = null; + /// Set to true for getting an auth code when authenticating. + /// + public bool RequestAuthCode = false; + /// Set to true to request to reset the refresh token. + /// Causes re-consent. + /// + public bool ForceTokenRefresh = false; + /// Request email address, requires consent. + public bool RequestEmail = false; + /// Request id token, requires consent. + public bool RequestIdToken = false; + /// Request profile information, requires consent. + public bool RequestProfile = false; + /// Hides popup UIs from games services. + /// Used with games signin to show or hide the connecting popup UI + /// and to associate an invisible view for other popups. This is + /// recommended for VR applications. This has no effect if UseGameSignIn is + /// false. + /// + public bool HidePopups = false; + /// Account name to use when authenticating, + /// null indicates use default. + public string AccountName = null; + /// Additional scopes to request, requires consent. + public IEnumerable AdditionalScopes = null; + } +} + diff --git a/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta new file mode 100644 index 00000000..943644cc --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInConfiguration.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 0c3999c0f68f04ae08f04fb3bf2a2050 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs new file mode 100644 index 00000000..0719f2c2 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs @@ -0,0 +1,72 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + + /// + /// Status code for the SignIn operations. + /// + /// All successful status codes are less than or equal to 0. + /// + public enum GoogleSignInStatusCode { + /// The operation was successful, but used the device's cache. + /// + SuccessCached = -1, + + /// The operation was successful. + Success = 0, + + /// The client attempted to call a method from an API that + /// failed to connect. + ApiNotConnected = 1, + + /// The result was canceled either due to client disconnect + /// or cancel(). + Canceled = 2, + + /// A blocking call was interrupted while waiting and did not + /// run to completion. + Interrupted = 3, + + /// The client attempted to connect to the service with an + /// invalid account name specified. + InvalidAccount = 4, + + /// Timed out while awaiting the result. + Timeout = 5, + + /// The application is misconfigured. + /// This error is not recoverable. + /// + /// The developer should look at the logs after this to determine + /// more actionable information. + /// + DeveloperError = 6, + + /// An internal error occurred. Retrying should resolve the + /// problem. + InternalError = 7, + + /// A network error occurred. Retrying should resolve the problem. + /// + NetworkError = 8, + + /// The operation failed with no more detailed information. + /// + Error = 9, + } +} // namespace GoogleSignIn + diff --git a/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta new file mode 100644 index 00000000..238e45f5 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInStatusCode.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 077933fcaedac412d9762bf3e0a3be68 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs b/Assets/GoogleSignIn/GoogleSignInUser.cs new file mode 100644 index 00000000..a3ea8b3f --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs @@ -0,0 +1,76 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google { + using System; + + /// Information for the authenticated user. + public class GoogleSignInUser { + + /// Server AuthCode to be exchanged for an auth token. + /// null if not requested, or if there was an error. + public string AuthCode { + get; + internal set; + } + + /// Email address. + /// null if not requested, or if there was an error. + public string Email { + get; + internal set; + } + + /// Id token. + /// null if not requested, or if there was an error. + public string IdToken { + get; + internal set; + } + + /// Display Name. + public string DisplayName { + get; + internal set; + } + + /// Given Name. + public string GivenName { + get; + internal set; + } + + /// Family Name. + public string FamilyName { + get; + internal set; + } + + /// Profile photo + /// Can be null if the profile is not requested, + /// or none set. + public Uri ImageUrl { + get; + internal set; + } + + /// User ID + public string UserId { + get; + internal set; + } + } +} diff --git a/Assets/GoogleSignIn/GoogleSignInUser.cs.meta b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta new file mode 100644 index 00000000..587c6861 --- /dev/null +++ b/Assets/GoogleSignIn/GoogleSignInUser.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c56b92217d0144af5907627d1235e0a5 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl.meta b/Assets/GoogleSignIn/Impl.meta new file mode 100644 index 00000000..de5f17f2 --- /dev/null +++ b/Assets/GoogleSignIn/Impl.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2fbe4f3ec9db4415e849f9bb89e63a92 +folderAsset: yes +timeCreated: 1502761839 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs b/Assets/GoogleSignIn/Impl/BaseObject.cs new file mode 100644 index 00000000..44d65013 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs @@ -0,0 +1,70 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + using System.Text; + using UnityEngine; + + /// + /// Base object manages the pointer to a native object which provides the + /// implementation of a C# object. + /// + internal abstract class BaseObject : IDisposable { + // handle to native object. + private HandleRef selfHandleRef; + private static HandleRef nullSelf = new HandleRef(); + + public BaseObject(IntPtr intPtr) { + selfHandleRef = new HandleRef(this, intPtr); + } + + protected HandleRef SelfPtr() { + if (selfHandleRef.Equals(nullSelf)) { + throw new InvalidOperationException( + "Attempted to use object after it was cleaned up"); + } + return selfHandleRef; + } + + public virtual void Dispose() { + selfHandleRef = nullSelf; + } + + internal delegate UIntPtr OutStringMethod([In, Out] byte[] out_bytes, + UIntPtr out_size); + + internal static String OutParamsToString(OutStringMethod outStringMethod) { + UIntPtr requiredSize = outStringMethod(null, UIntPtr.Zero); + if (requiredSize.Equals(UIntPtr.Zero)) { + return null; + } + + string str = null; + try { + byte[] array = new byte[requiredSize.ToUInt32()]; + outStringMethod(array, requiredSize); + str = Encoding.UTF8.GetString(array, 0, + (int)requiredSize.ToUInt32() - 1); + } catch (Exception e) { + Debug.LogError("Exception creating string from char array: " + e); + str = string.Empty; + } + return str; + } + } +} diff --git a/Assets/GoogleSignIn/Impl/BaseObject.cs.meta b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta new file mode 100644 index 00000000..0e24225d --- /dev/null +++ b/Assets/GoogleSignIn/Impl/BaseObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: fe250cda690a44cb08f8f7d26c9723b4 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs new file mode 100644 index 00000000..78c8081f --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs @@ -0,0 +1,187 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Collections.Generic; + using System.Runtime.InteropServices; + + internal class GoogleSignInImpl : BaseObject, ISignInImpl { + +#if UNITY_ANDROID + private const string DllName = "native-googlesignin"; +#else + private const string DllName = "__Internal"; +#endif + + internal GoogleSignInImpl(GoogleSignInConfiguration configuration) + : base(GoogleSignIn_Create(GetPlayerActivity())) { + + if (configuration != null) { + List scopes = new List(); + if (configuration.AdditionalScopes != null) { + scopes.AddRange(configuration.AdditionalScopes); + } + GoogleSignIn_Configure(SelfPtr(), configuration.UseGameSignIn, + configuration.WebClientId, + configuration.RequestAuthCode, + configuration.ForceTokenRefresh, + configuration.RequestEmail, + configuration.RequestIdToken, + configuration.HidePopups, + scopes.ToArray(), + scopes.Count, + configuration.AccountName); + } + } + + /// Enables/Disables verbose logging to help troubleshooting + public void EnableDebugLogging(bool flag) { + GoogleSignIn_EnableDebugLogging(SelfPtr(), flag); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignIn() { + IntPtr nativeFuture = GoogleSignIn_SignIn(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Starts the authentication process. + /// + /// + /// The authenication process is started and may display account picker + /// popups and consent prompts based on the state of authentication and + /// the requested elements. + /// + public Future SignInSilently() { + IntPtr nativeFuture = GoogleSignIn_SignInSilently(SelfPtr()); + return new Future(new NativeFuture(nativeFuture)); + } + + /// + /// Signs out the User. + /// + public void SignOut() { + GoogleSignIn_Signout(SelfPtr()); + } + + /// + /// Disconnects the user from the application and revokes all consent. + /// + public void Disconnect() { + GoogleSignIn_Disconnect(SelfPtr()); + } + + /// + /// Creates an instance of the native Google Sign-In implementation. + /// + /// + /// For Android this must be the JNI raw object for the parentActivity. + /// For iOS it is ignored. + /// + /// The pointer to the instance. + /// Data used in creating the instance. + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_Create(IntPtr data); + + [DllImport(DllName)] + static extern void GoogleSignIn_EnableDebugLogging(HandleRef self, bool flag); + + [DllImport(DllName)] + static extern bool GoogleSignIn_Configure(HandleRef self, + bool useGameSignIn, string webClientId, + bool requestAuthCode, bool forceTokenRefresh, bool requestEmail, + bool requestIdToken, bool hidePopups, string[] additionalScopes, + int scopeCount, string accountName); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignIn(HandleRef self); + + [DllImport(DllName)] + static extern IntPtr GoogleSignIn_SignInSilently(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Signout(HandleRef self); + + [DllImport(DllName)] + static extern void GoogleSignIn_Disconnect(HandleRef self); + + [DllImport(DllName)] + internal static extern void GoogleSignIn_DisposeFuture(HandleRef self); + + [DllImport(DllName)] + internal static extern bool GoogleSignIn_Pending(HandleRef self); + + [DllImport(DllName)] + internal static extern IntPtr GoogleSignIn_Result(HandleRef self); + + [DllImport(DllName)] + internal static extern int GoogleSignIn_Status(HandleRef self); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetServerAuthCode( + HandleRef self, [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetDisplayName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetEmail(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetFamilyName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetGivenName(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetIdToken(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetImageUrl(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + [DllImport(DllName)] + internal static extern UIntPtr GoogleSignIn_GetUserId(HandleRef self, + [In, Out] byte[] bytes, UIntPtr len); + + // Gets the Unity player activity. + // For iOS, this returns Zero. + private static IntPtr GetPlayerActivity() { +#if UNITY_ANDROID + UnityEngine.AndroidJavaClass jc = new UnityEngine.AndroidJavaClass( + "com.unity3d.player.UnityPlayer"); + return jc.GetStatic("currentActivity") + .GetRawObject(); +#else + return IntPtr.Zero; +#endif + } + } +} diff --git a/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta new file mode 100644 index 00000000..46c1d561 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/GoogleSignInImpl.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 9ae1f008f9f994b9c96c1a14067d7b48 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs b/Assets/GoogleSignIn/Impl/NativeFuture.cs new file mode 100644 index 00000000..6d460f22 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs @@ -0,0 +1,102 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace Google.Impl { + using System; + using System.Runtime.InteropServices; + + /// + /// Native future is an interal class that implements the FutureAPIImpl + /// by calling native methods which are implemented in the native code. + /// + internal class NativeFuture : BaseObject, FutureAPIImpl { + + internal NativeFuture(IntPtr ptr) : base(ptr) { + } + + public override void Dispose() { + GoogleSignInImpl.GoogleSignIn_DisposeFuture(SelfPtr()); + base.Dispose(); + } + + public bool Pending { + get { + return GoogleSignInImpl.GoogleSignIn_Pending(SelfPtr()); + } + } + + public GoogleSignInUser Result { + get { + IntPtr ptr = GoogleSignInImpl.GoogleSignIn_Result(SelfPtr()); + if (ptr != IntPtr.Zero) { + GoogleSignInUser user = new GoogleSignInUser(); + HandleRef userPtr = new HandleRef(user, ptr); + + user.DisplayName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetDisplayName(userPtr, + out_string, + out_size)); + user.Email = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetEmail(userPtr, out_string, + out_size)); + + user.FamilyName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetFamilyName(userPtr, out_string, + out_size)); + + user.GivenName = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetGivenName(userPtr, out_string, + out_size)); + + user.IdToken = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetIdToken(userPtr, out_string, + out_size)); + + user.AuthCode = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetServerAuthCode(userPtr, out_string, + out_size)); + + string url = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetImageUrl(userPtr, out_string, + out_size)); + if (url.Length > 0) { + user.ImageUrl = new System.Uri(url); + } + + user.UserId = OutParamsToString((out_string, out_size) => + GoogleSignInImpl.GoogleSignIn_GetUserId(userPtr, out_string, + out_size)); + return user; + } else { + return null; + } + } + } + + /// + /// Gets the status. + /// + /// The platform specific implementation maps the platform specific + /// code to one defined in GoogleSignStatusCode. + /// The status. + public GoogleSignInStatusCode Status { + get { + return (GoogleSignInStatusCode)GoogleSignInImpl.GoogleSignIn_Status( + SelfPtr()); + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta new file mode 100644 index 00000000..0cb0bd1b --- /dev/null +++ b/Assets/GoogleSignIn/Impl/NativeFuture.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 5f1aae79b1ca4432d9d8ec382c54bf46 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs new file mode 100644 index 00000000..6fbf3fe0 --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs @@ -0,0 +1,42 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Google.Impl { + using UnityEngine; + + ///Helper object to connect the Sign-in API to the Unity Game Scene. + /// + ///This class is added to the scene so that the Google Sign-in API + /// can start coroutines. + /// + public class SignInHelperObject : MonoBehaviour { + + private static SignInHelperObject instance; + + internal static SignInHelperObject Instance { + get { + if (Application.isPlaying) { + // add an invisible game object to the scene + GameObject obj = new GameObject("GoogleSignInHelperObject"); + DontDestroyOnLoad(obj); + instance = obj.AddComponent(); + } else { + instance = new SignInHelperObject(); + } + return instance; + } + } + } +} diff --git a/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta new file mode 100644 index 00000000..2dd5652c --- /dev/null +++ b/Assets/GoogleSignIn/Impl/SignInHelperObject.cs.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: ad98e5b48888e44eb81dd5884d3a1754 +labels: +- gvh +- gvh_version-1.0.4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GoogleSignInManager.cs b/Assets/GoogleSignInManager.cs new file mode 100644 index 00000000..8ea57f87 --- /dev/null +++ b/Assets/GoogleSignInManager.cs @@ -0,0 +1,130 @@ +using UnityEngine; +using UnityEngine.UI; +using Google; +using PlayFab; +using PlayFab.ClientModels; +using System.Threading.Tasks; + +public class GoogleSignInManager : MonoBehaviour +{ + //#if UNITY_IOS + // private string webClientId = "723833850517-2j378fbm2a8u644p4qqod4qbi93dsgom.apps.googleusercontent.com"; // Replace with your actual Google Web Client ID + //#elif UNITY_ANDROID + // private string webClientId = "723833850517-tfaer77vetml1bhv9qbj3o84ec52u45d.apps.googleusercontent.com"; // Replace with your actual Google Web Client ID + //#endif + private string webClientId = "723833850517-865419enf8t0j1itln3cgmd1b67shsue.apps.googleusercontent.com"; + + private GoogleSignInConfiguration configuration; + public Bootstrapper bootstrapper; // Assign Bootstrapper in Inspector + public Button googleSignInButton; + + void Start() + { + configuration = new GoogleSignInConfiguration + { + WebClientId = webClientId, + RequestIdToken = true, + RequestAuthCode = true, + }; + + if (PlayerPrefs.HasKey("PlayFabID")) + { + Debug.Log("User already signed in, attempting silent login..."); + SignInSilently(); + } + else + { + Debug.Log("No saved PlayFab ID, waiting for user sign-in."); + SignInWithGoogle(); + googleSignInButton.gameObject.SetActive(true); + googleSignInButton.onClick.AddListener(SignInWithGoogle); + } + } + + public void SignInWithGoogle() + { + Debug.Log("Starting Google Sign-In..."); + GoogleSignIn.Configuration = configuration; + GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnGoogleSignIn); + } + + private void OnGoogleSignIn(Task task) + { + if (task.IsFaulted) + { + Debug.LogError("Google Sign-In Failed: " + task.Exception); + } + else if (task.IsCanceled) + { + Debug.Log("Google Sign-In Canceled."); + } + else + { + Debug.Log("Google Sign-In Successful! Fetching PlayFab login..."); + + string idToken = task.Result.IdToken; + PlayerPrefs.SetString("GoogleIdToken", idToken); // Save Google Token for auto-login + PlayerPrefs.Save(); + + LoginToPlayFab(idToken); + } + } + + private void LoginToPlayFab(string idToken) + { + var request = new LoginWithGoogleAccountRequest + { + TitleId = PlayFabSettings.TitleId, + ServerAuthCode = idToken, + CreateAccount = true + }; + + PlayFabClientAPI.LoginWithGoogleAccount(request, OnPlayFabLoginSuccess, OnPlayFabLoginFailure); + } + + private void OnPlayFabLoginSuccess(LoginResult result) + { + Debug.Log("PlayFab Login Success! PlayFab ID: " + result.PlayFabId); + + // Save PlayFab ID to keep the user signed in automatically + PlayerPrefs.SetString("PlayFabID", result.PlayFabId); + PlayerPrefs.Save(); + + // Start the game after login + bootstrapper.StartGame(); + } + + private void OnPlayFabLoginFailure(PlayFabError error) + { + Debug.LogError("PlayFab Login Failed: " + error.GenerateErrorReport()); + } + + private void SignInSilently() + { + if (PlayerPrefs.HasKey("GoogleIdToken")) + { + Debug.Log("Attempting silent Google Sign-In..."); + string savedIdToken = PlayerPrefs.GetString("GoogleIdToken"); + LoginToPlayFab(savedIdToken); // Skip Google UI, go directly to PlayFab login + } + else + { + Debug.LogWarning("No Google ID Token saved, user must sign in manually."); + } + } + + public void SignOut() + { + Debug.Log("Signing out user..."); + + // Clear stored login data + PlayerPrefs.DeleteKey("PlayFabID"); + PlayerPrefs.DeleteKey("GoogleIdToken"); + PlayerPrefs.Save(); + + // Sign out from Google + GoogleSignIn.DefaultInstance.SignOut(); + + Debug.Log("User signed out. They will need to log in again."); + } +} diff --git a/Assets/GoogleSignInManager.cs.meta b/Assets/GoogleSignInManager.cs.meta new file mode 100644 index 00000000..9a5af1d6 --- /dev/null +++ b/Assets/GoogleSignInManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aea303bf6931eb64a925ac187863ae99 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes.meta b/Assets/NaughtyAttributes.meta new file mode 100644 index 00000000..bc641136 --- /dev/null +++ b/Assets/NaughtyAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16c5fe3cc9768584c8a61ab857f499e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/README.html b/Assets/NaughtyAttributes/README.html similarity index 100% rename from Assets/Plugins/NaughtyAttributes/README.html rename to Assets/NaughtyAttributes/README.html diff --git a/Assets/Plugins/NaughtyAttributes/README.html.meta b/Assets/NaughtyAttributes/README.html.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/README.html.meta rename to Assets/NaughtyAttributes/README.html.meta diff --git a/Assets/Plugins/NaughtyAttributes/Samples.meta b/Assets/NaughtyAttributes/Samples.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples.meta rename to Assets/NaughtyAttributes/Samples.meta diff --git a/Assets/NaughtyAttributes/Samples/DemoScene.meta b/Assets/NaughtyAttributes/Samples/DemoScene.meta new file mode 100644 index 00000000..ea993c66 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: afb4c815411c28b449e61fbaa1a8bfa3 +folderAsset: yes +timeCreated: 1507995550 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity b/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity new file mode 100644 index 00000000..3c134139 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity @@ -0,0 +1,2415 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.5748172, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + 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_LightingSettings: {fileID: 4890085278179872738, guid: 98ee975b74776234986f4d35f14c4ccc, + type: 2} +--- !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 &106181862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 106181863} + m_Layer: 0 + m_Name: ===== Drawer Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &106181863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 106181862} + 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: 1148579784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &114650323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 114650324} + - component: {fileID: 114650325} + - component: {fileID: 114650326} + m_Layer: 0 + m_Name: EnableIf_DisableIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &114650324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + 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: 1148579784} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114650325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bed506d8be3a10f45bec4bf2237bec87, type: 3} + m_Name: + m_EditorClassIdentifier: + enable1: 0 + enable2: 0 + enum1: 0 + enum2: 0 + enableIfAll: + enableIfAny: + enableIfEnum: + enableIfEnumFlag: + enableIfEnumFlagMulti: + nest1: + enable1: 1 + enable2: 0 + enum1: 0 + enum2: 0 + enableIfAll: 1 + enableIfAny: 2 + enableIfEnum: 0 + enableIfEnumFlag: 0 + enableIfEnumFlagMulti: 0 + nest2: + enable1: 1 + enable2: 1 + enum1: 0 + enum2: 0 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} + enableIfEnum: {x: 0.25, y: 0.75} + enableIfEnumFlag: {x: 0, y: 0} + enableIfEnumFlagMulti: {x: 0, y: 0} +--- !u!114 &114650326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e48a088cb96287448c3be58932bfcb7, type: 3} + m_Name: + m_EditorClassIdentifier: + disable1: 0 + disable2: 0 + enum1: 0 + enum2: 0 + disableIfAll: + disableIfAny: + disableIfEnum: + disableIfEnumFlag: + disableIfEnumFlagMulti: + nest1: + disable1: 1 + disable2: 0 + enum1: 0 + enum2: 0 + disableIfAll: 1 + disableIfAny: 2 + disableIfEnum: 3 + disableIfEnumFlag: 0 + disableIfEnumFlagMulti: 0 + nest2: + disable1: 1 + disable2: 1 + enum1: 0 + enum2: 0 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} + enableIfEnum: {x: 0.25, y: 0.75} + disableIfEnumFlag: {x: 0, y: 0} + disableIfEnumFlagMulti: {x: 0, y: 0} +--- !u!1 &155697335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 155697336} + - component: {fileID: 155697337} + m_Layer: 0 + m_Name: InputAxis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &155697336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + 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: 1148579784} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &155697337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0cc8a31c22090847b75538c0ed2d2fc, type: 3} + m_Name: + m_EditorClassIdentifier: + inputAxis0: + nest1: + inputAxis1: Horizontal + nest2: + inputAxis2: Vertical +--- !u!1 &237121640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 237121641} + - component: {fileID: 237121642} + m_Layer: 0 + m_Name: ReadOnly + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &237121641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + 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: 1148579784} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &237121642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5443d37a05e188846bda9b05b067184e, type: 3} + m_Name: + m_EditorClassIdentifier: + readOnlyInt: 5 + nest1: + readOnlyFloat: 3.14 + nest2: + readOnlyString: +--- !u!1 &369789276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 369789277} + - component: {fileID: 369789278} + m_Layer: 0 + m_Name: Required + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &369789277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + 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: 1148579784} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &369789278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c8c10b2234650d42b2a8efad6b413db, type: 3} + m_Name: + m_EditorClassIdentifier: + trans0: {fileID: 0} + nest1: + trans1: {fileID: 0} + nest2: + trans2: {fileID: 0} +--- !u!1 &572382748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572382749} + - component: {fileID: 572382751} + m_Layer: 0 + m_Name: Foldout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &572382749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + 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: 1148579784} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &572382751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b437215d92efa74ea85ff726ca0dd09, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &607441873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 607441874} + - component: {fileID: 607441875} + m_Layer: 0 + m_Name: MinMaxSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &607441874 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + 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: 1148579784} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &607441875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd67fbde6acdd6a44944f12e507067c5, type: 3} + m_Name: + m_EditorClassIdentifier: + minMaxSlider0: {x: 0, y: 0.5} + nest1: + minMaxSlider1: {x: 0.25, y: 0.75} + nest2: + minMaxSlider2: {x: 6, y: 11} +--- !u!1 &706445688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 706445689} + - component: {fileID: 706445690} + m_Layer: 0 + m_Name: NaughtyComponent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &706445689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + 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!114 &706445690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c928ea15ae74a44089beb2e534c1a35, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &732714203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 732714204} + m_Layer: 0 + m_Name: ===== Meta Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &732714204 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732714203} + 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: 1148579784} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &779670086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779670087} + - component: {fileID: 779670088} + m_Layer: 0 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &779670087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + 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: 1148579784} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &779670088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3855e37cd6b01194e8166573c7c4b37d, type: 3} + m_Name: + m_EditorClassIdentifier: + intValue: 1 + nest1: + stringValue: A + nest2: + vectorValue: {x: 1, y: 0, z: 0} +--- !u!1 &892661554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892661555} + - component: {fileID: 892661556} + m_Layer: 0 + m_Name: Scene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &892661555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + 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: 1148579784} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &892661556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 281a85803caf74a459439020a0840fa4, type: 3} + m_Name: + m_EditorClassIdentifier: + scene0: DemoScene + nest1: + scene1: DemoScene + nest2: + scene2: 0 +--- !u!1 &933563384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 933563385} + - component: {fileID: 933563386} + m_Layer: 0 + m_Name: ShowAssetPreview + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &933563385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + 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: 1148579784} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &933563386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705c14aa9ecaa274289972381f471367, type: 3} + m_Name: + m_EditorClassIdentifier: + sprite0: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab0: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest1: + sprite1: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab1: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest2: + sprite2: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab2: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, + type: 3} +--- !u!1 &948946033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948946034} + - component: {fileID: 948946035} + m_Layer: 0 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948946034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + 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: 1148579784} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &948946035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 96ca4c27fc649764b9d1625f1740cb9e, type: 3} + m_Name: + m_EditorClassIdentifier: + health: 50 + nest1: + mana: 25 + nest2: + stamina: 75 + elixir: 50 + maxElixir: 100 +--- !u!1 &993534225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 993534226} + - component: {fileID: 993534227} + m_Layer: 0 + m_Name: Layer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &993534226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993534225} + 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: 1148579784} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &993534227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993534225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 460459d6ac76acd4d872f94cf444e6fa, type: 3} + m_Name: + m_EditorClassIdentifier: + layerNumber0: 5 + layerName0: UI + nest1: + layerNumber1: 0 + layerName1: Default + nest2: + layerNumber2: 4 + layerName2: Water +--- !u!1 &1139446979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1139446980} + - component: {fileID: 1139446981} + m_Layer: 0 + m_Name: HorizontalLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1139446980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + 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: 1148579784} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1139446981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5cc6d3f8d4a53374887b3d620a6972e3, type: 3} + m_Name: + m_EditorClassIdentifier: + line0: 0 + nest1: + line1: 0 + nest2: + line2: 0 +--- !u!1 &1148579783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148579784} + m_Layer: 0 + m_Name: Tests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1148579784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148579783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 106181863} + - {fileID: 1178133860} + - {fileID: 2043059161} + - {fileID: 2082563173} + - {fileID: 779670087} + - {fileID: 2015414598} + - {fileID: 1622801696} + - {fileID: 1139446980} + - {fileID: 1552114400} + - {fileID: 155697336} + - {fileID: 993534226} + - {fileID: 607441874} + - {fileID: 948946034} + - {fileID: 1747151588} + - {fileID: 1202167595} + - {fileID: 892661555} + - {fileID: 933563385} + - {fileID: 1989156459} + - {fileID: 1194502638} + - {fileID: 1609261820} + - {fileID: 1380469385} + - {fileID: 732714204} + - {fileID: 1784643785} + - {fileID: 572382749} + - {fileID: 114650324} + - {fileID: 1524906391} + - {fileID: 1293624596} + - {fileID: 1871127830} + - {fileID: 237121641} + - {fileID: 1641427334} + - {fileID: 1706612702} + - {fileID: 369789277} + - {fileID: 1463483878} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1178133859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178133860} + - component: {fileID: 1178133862} + - component: {fileID: 1178133861} + m_Layer: 0 + m_Name: AnimatorParam + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178133860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + 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: 1148579784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1178133861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9bff20ccdde00fc49a62bad6a4ef9982, type: 3} + m_Name: + m_EditorClassIdentifier: + animator0: {fileID: 1178133862} + hash0: 1943738498 + name0: Float0 + nest1: + animator1: {fileID: 1178133862} + hash1: 726565755 + name1: Float0 + nest2: + animator2: {fileID: 1178133862} + hash1: -392453409 + name1: Trigger0 +--- !u!95 &1178133862 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 63ee86efd213bf34285c95f33e79dc6c, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &1194502637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1194502638} + - component: {fileID: 1194502639} + m_Layer: 0 + m_Name: ShowNonSerializedField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1194502638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + 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: 1148579784} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1194502639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 913d67a695253f744bdc776625b9b948, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1202167594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202167595} + - component: {fileID: 1202167596} + m_Layer: 0 + m_Name: ResizableTextArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202167595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + 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: 1148579784} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1202167596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb4f4bb2e3e063340a24f4bb24528bb5, type: 3} + m_Name: + m_EditorClassIdentifier: + text0: '1 + + 2 + + 3' + nest1: + text1: '1 + + 2 + + 3 + + 4 + + 5' + nest2: + text2: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7' +--- !u!1 &1293624595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1293624596} + - component: {fileID: 1293624597} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1293624596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + 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: 1148579784} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1293624597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7488af014527ebf42af5c4fc4d5f4f5b, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + vector2: {x: 0.25, y: 0.75} +--- !u!1 &1380469384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1380469385} + - component: {fileID: 1380469386} + m_Layer: 0 + m_Name: Tag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380469385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + 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: 1148579784} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1380469386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8bcc0d5613b48fb43bd36c9d37e99900, type: 3} + m_Name: + m_EditorClassIdentifier: + tag0: + nest1: + tag1: MainCamera + nest2: + tag2: Player +--- !u!1 &1444377589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1444377591} + - component: {fileID: 1444377590} + 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 &1444377590 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + 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: 4 + 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 &1444377591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + 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 &1463483877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1463483878} + - component: {fileID: 1463483879} + m_Layer: 0 + m_Name: ValidateInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1463483878 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + 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: 1148579784} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1463483879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94adafcfe59aa344c9b5596b2cc6ecd0, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 + inheritedNest: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1524906390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1524906391} + - component: {fileID: 1524906392} + - component: {fileID: 1524906393} + m_Layer: 0 + m_Name: ShowIf_HideIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524906391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + 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: 1148579784} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1524906392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fdbfcfbf5b056a4bac491fe21569572, type: 3} + m_Name: + m_EditorClassIdentifier: + show1: 0 + show2: 0 + enum1: 0 + enum2: 0 + showIfAll: + showIfAny: + showIfEnum: + showIfEnumFlag: + showIfEnumFlagMulti: + nest1: + show1: 1 + show2: 0 + enum1: 0 + enum2: 0 + showIfAll: 0 + showIfAny: 0 + showIfEnum: 0 + showIfEnumFlag: 0 + showIfEnumFlagMulti: 0 + nest2: + show1: 1 + show2: 1 + enum1: 0 + enum2: 0 + showIfAll: {x: 0.25, y: 0.75} + showIfAny: {x: 0.25, y: 0.75} + showIfEnum: {x: 0.25, y: 0.75} + showIfEnumFlag: {x: 0, y: 0} + showIfEnumFlagMulti: {x: 0, y: 0} +--- !u!114 &1524906393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3cf166cb519e666419bb79b0c50c5ee1, type: 3} + m_Name: + m_EditorClassIdentifier: + hide1: 0 + hide2: 0 + enum1: 0 + enum2: 0 + hideIfAll: + hideIfAny: + hideIfEnum: + hideIfEnumFlag: + hideIfEnumFlagMulti: + nest1: + hide1: 1 + hide2: 0 + enum1: 0 + enum2: 0 + hideIfAll: 0 + hideIfAny: 0 + hideIfEnum: 0 + hideIfEnumFlag: 0 + hideIfEnumFlagMulti: 0 + nest2: + hide1: 1 + hide2: 1 + enum1: 0 + enum2: 0 + hideIfAll: {x: 0.25, y: 0.75} + hideIfAny: {x: 0.25, y: 0.75} + hideIfEnum: {x: 0.25, y: 0.75} + hideIfEnumFlag: {x: 0, y: 0} + hideIfEnumFlagMulti: {x: 0, y: 0} +--- !u!1 &1552114399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1552114400} + - component: {fileID: 1552114401} + m_Layer: 0 + m_Name: InfoBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1552114400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + 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: 1148579784} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1552114401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0dcb08e489c17644e9eacaa1ec5fe781, type: 3} + m_Name: + m_EditorClassIdentifier: + normal: 0 + nest1: + warning: 0 + nest2: + error: 0 +--- !u!1 &1591883662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591883666} + - component: {fileID: 1591883665} + - component: {fileID: 1591883664} + - component: {fileID: 1591883663} + 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 &1591883663 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!124 &1591883664 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!20 &1591883665 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + 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 &1591883666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1609261819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1609261820} + - component: {fileID: 1609261821} + m_Layer: 0 + m_Name: 'SortingLayer ' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1609261820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609261819} + 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: 1148579784} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1609261821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609261819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8ed73e666d447964d93c4840f05423dc, type: 3} + m_Name: + m_EditorClassIdentifier: + layerNumber0: 0 + layerName0: Default + nest1: + layerNumber1: 0 + layerName1: Default + nest2: + layerNumber2: 0 + layerName2: Default +--- !u!1 &1622801695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1622801696} + - component: {fileID: 1622801697} + m_Layer: 0 + m_Name: Expandable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1622801696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + 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: 1148579784} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1622801697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64c4c9aee2b494d44be9bb0b7f12ed7c, type: 3} + m_Name: + m_EditorClassIdentifier: + precedingField: 5 + obj0: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest1: + obj1: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest2: + obj2: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} +--- !u!1 &1641427333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641427334} + m_Layer: 0 + m_Name: ===== Validator Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1641427334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641427333} + 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: 1148579784} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1706612701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1706612702} + - component: {fileID: 1706612703} + m_Layer: 0 + m_Name: MinValue_MaxValue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1706612702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + 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: 1148579784} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1706612703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 450a05787c54e6b4fa88ffe223bcee87, type: 3} + m_Name: + m_EditorClassIdentifier: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} + nest1: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} + nest2: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} +--- !u!1 &1747151587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1747151588} + - component: {fileID: 1747151589} + m_Layer: 0 + m_Name: ReorderableList + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1747151588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + 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: 1148579784} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1747151589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c93fde7cd79390148ac576c3a159a77b, type: 3} + m_Name: + m_EditorClassIdentifier: + intArray: 020000000300000001000000 + vectorList: + - {x: 2, y: 2, z: 2} + - {x: 3, y: 3, z: 3} + - {x: 1, y: 1, z: 1} + structList: + - Int: 2 + Float: 2 + Vector: {x: 2, y: 2, z: 2} + - Int: 3 + Float: 3 + Vector: {x: 3, y: 3, z: 3} + - Int: 1 + Float: 1 + Vector: {x: 1, y: 1, z: 1} + gameObjectsList: [] + transformsList: [] + monoBehavioursList: [] +--- !u!1 &1784643784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1784643785} + - component: {fileID: 1784643786} + m_Layer: 0 + m_Name: BoxGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1784643785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + 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: 1148579784} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1784643786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3920f5ea384951b4990e4d9e8032d12e, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &1871127829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1871127830} + - component: {fileID: 1871127831} + m_Layer: 0 + m_Name: OnValueChanged + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1871127830 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + 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: 1148579784} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1871127831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff1df679e5b32f64bb106752c63933fa, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1989156458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989156459} + - component: {fileID: 1989156460} + m_Layer: 0 + m_Name: ShowNativeProperty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1989156459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + 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: 1148579784} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1989156460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5a73795d25dd334e90a5a347c6079d9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2015414597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2015414598} + - component: {fileID: 2015414599} + m_Layer: 0 + m_Name: EnumFlags + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2015414598 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + 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: 1148579784} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2015414599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b7f6b84ce0d7674d8a386fde729279c, type: 3} + m_Name: + m_EditorClassIdentifier: + flags0: 0 + nest1: + flags1: 6 + nest2: + flags2: -1 +--- !u!1 &2043059160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2043059161} + - component: {fileID: 2043059162} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2043059161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + 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: 1148579784} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2043059162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b592f12a9f69ac3408f6f870762232c7, type: 3} + m_Name: + m_EditorClassIdentifier: + myInt: 0 +--- !u!1 &2082563172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2082563173} + - component: {fileID: 2082563174} + m_Layer: 0 + m_Name: CurveRange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2082563173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + 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: 1148579784} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2082563174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6587b100d001e7e46b9aaae7f1180b40, type: 3} + m_Name: + m_EditorClassIdentifier: + curves: + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: -1 + value: -1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve1: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve2: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 10 + value: 10 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest1: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest2: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 5 + value: 5 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta b/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta new file mode 100644 index 00000000..e76127e1 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 07845a5477be2b149a6f1cb32b5a3a5b +timeCreated: 1507998788 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting b/Assets/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting rename to Assets/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta b/Assets/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta rename to Assets/NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets.meta new file mode 100644 index 00000000..d4b6a192 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 53a462744f22ca549927c5e6ea797362 +folderAsset: yes +timeCreated: 1509089305 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta new file mode 100644 index 00000000..5f6520ad --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7ec354ef3daae7641b7a3fa5e1fe0c81 +timeCreated: 1509089337 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset new file mode 100644 index 00000000..353dc478 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 11500000, guid: 753bdb918c6038142acddbd7aae6958f, type: 3} + m_Name: NaughtyScriptableObject + m_EditorClassIdentifier: + listA: + - {fileID: 11400000, guid: 149474eb879a6a641b560ca17d48712f, type: 2} + - {fileID: 11400000, guid: 149474eb879a6a641b560ca17d48712f, type: 2} diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta new file mode 100644 index 00000000..0734977b --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9cf80899b80517945a2d2390fb48877f +timeCreated: 1518639643 +licenseType: Store +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset new file mode 100644 index 00000000..3907d95e --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 11500000, guid: 19472ac11eae27a4b804f354ca7d9c00, type: 3} + m_Name: TestScriptableObjectA + m_EditorClassIdentifier: + listB: + - {fileID: 11400000, guid: 05371aa7630d3ef44ac0106af06cd73c, type: 2} + - {fileID: 11400000, guid: 05371aa7630d3ef44ac0106af06cd73c, type: 2} diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset.meta rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset.meta diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset new file mode 100644 index 00000000..79f5b602 --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + 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: 11500000, guid: c2b396aeebc9d984da298eee313896bc, type: 3} + m_Name: TestScriptableObjectB + m_EditorClassIdentifier: + slider: {x: 3, y: 7} diff --git a/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta new file mode 100644 index 00000000..7645ee1f --- /dev/null +++ b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05371aa7630d3ef44ac0106af06cd73c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta b/Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta rename to Assets/NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta diff --git a/Assets/NaughtyAttributes/Scripts.meta b/Assets/NaughtyAttributes/Scripts.meta new file mode 100644 index 00000000..30b4bb8f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 66686847ee1fa044bb15dfe473666178 +folderAsset: yes +timeCreated: 1507995546 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core.meta b/Assets/NaughtyAttributes/Scripts/Core.meta new file mode 100644 index 00000000..f1fc7823 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1f67e408a6d0adf4ab29d095ccd8b116 +folderAsset: yes +timeCreated: 1507998942 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs new file mode 100644 index 00000000..c73cd8df --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class AllowNestingAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs new file mode 100644 index 00000000..214cd66c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class AnimatorParamAttribute : DrawerAttribute + { + public string AnimatorName { get; private set; } + public AnimatorControllerParameterType? AnimatorParamType { get; private set; } + + public AnimatorParamAttribute(string animatorName) + { + AnimatorName = animatorName; + AnimatorParamType = null; + } + + public AnimatorParamAttribute(string animatorName, AnimatorControllerParameterType animatorParamType) + { + AnimatorName = animatorName; + AnimatorParamType = animatorParamType; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs new file mode 100644 index 00000000..45dcd710 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class CurveRangeAttribute : DrawerAttribute + { + public Vector2 Min { get; private set; } + public Vector2 Max { get; private set; } + public EColor Color { get; private set; } + + public CurveRangeAttribute(Vector2 min, Vector2 max, EColor color = EColor.Clear) + { + Min = min; + Max = max; + Color = color; + } + + public CurveRangeAttribute(EColor color) + : this(Vector2.zero, Vector2.one, color) + { + } + + public CurveRangeAttribute(float minX, float minY, float maxX, float maxY, EColor color = EColor.Clear) + : this(new Vector2(minX, minY), new Vector2(maxX, maxY), color) + { + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs new file mode 100644 index 00000000..90d4f2d6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + /// + /// Base class for all drawer attributes + /// + public class DrawerAttribute : PropertyAttribute, INaughtyAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs new file mode 100644 index 00000000..3d950649 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs @@ -0,0 +1,57 @@ +using System.Collections; +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class DropdownAttribute : DrawerAttribute + { + public string ValuesName { get; private set; } + + public DropdownAttribute(string valuesName) + { + ValuesName = valuesName; + } + } + + public interface IDropdownList : IEnumerable> + { + } + + public class DropdownList : IDropdownList + { + private List> _values; + + public DropdownList() + { + _values = new List>(); + } + + public void Add(string displayName, T value) + { + _values.Add(new KeyValuePair(displayName, value)); + } + + public IEnumerator> GetEnumerator() + { + return _values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public static explicit operator DropdownList(DropdownList target) + { + DropdownList result = new DropdownList(); + foreach (var kvp in target) + { + result.Add(kvp.Key, kvp.Value); + } + + return result; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs new file mode 100644 index 00000000..2fcb1347 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class EnumFlagsAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs new file mode 100644 index 00000000..b4e8ebdc --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ExpandableAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs new file mode 100644 index 00000000..50d59a80 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class HorizontalLineAttribute : DrawerAttribute + { + public const float DefaultHeight = 2.0f; + public const EColor DefaultColor = EColor.Gray; + + public float Height { get; private set; } + public EColor Color { get; private set; } + + public HorizontalLineAttribute(float height = DefaultHeight, EColor color = DefaultColor) + { + Height = height; + Color = color; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs new file mode 100644 index 00000000..8867d97a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs @@ -0,0 +1,24 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EInfoBoxType + { + Normal, + Warning, + Error + } + + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class InfoBoxAttribute : DrawerAttribute + { + public string Text { get; private set; } + public EInfoBoxType Type { get; private set; } + + public InfoBoxAttribute(string text, EInfoBoxType type = EInfoBoxType.Normal) + { + Text = text; + Type = type; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs new file mode 100644 index 00000000..416a1075 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class InputAxisAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs new file mode 100644 index 00000000..87c1bce8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class LayerAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs new file mode 100644 index 00000000..f76d6022 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinMaxSliderAttribute : DrawerAttribute + { + public float MinValue { get; private set; } + public float MaxValue { get; private set; } + + public MinMaxSliderAttribute(float minValue, float maxValue) + { + MinValue = minValue; + MaxValue = maxValue; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs new file mode 100644 index 00000000..72b7ea85 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs @@ -0,0 +1,37 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ProgressBarAttribute : DrawerAttribute + { + public string Name { get; private set; } + public float MaxValue { get; set; } + public string MaxValueName { get; private set; } + public EColor Color { get; private set; } + + public ProgressBarAttribute(string name, float maxValue, EColor color = EColor.Blue) + { + Name = name; + MaxValue = maxValue; + Color = color; + } + + public ProgressBarAttribute(string name, string maxValueName, EColor color = EColor.Blue) + { + Name = name; + MaxValueName = maxValueName; + Color = color; + } + + public ProgressBarAttribute(float maxValue, EColor color = EColor.Blue) + : this("", maxValue, color) + { + } + + public ProgressBarAttribute(string maxValueName, EColor color = EColor.Blue) + : this("", maxValueName, color) + { + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs new file mode 100644 index 00000000..e84e664e --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ResizableTextAreaAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs new file mode 100644 index 00000000..0cc044b7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class SceneAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs new file mode 100644 index 00000000..dd628ffb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowAssetPreviewAttribute : DrawerAttribute + { + public const int DefaultWidth = 64; + public const int DefaultHeight = 64; + + public int Width { get; private set; } + public int Height { get; private set; } + + public ShowAssetPreviewAttribute(int width = DefaultWidth, int height = DefaultHeight) + { + Width = width; + Height = height; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs new file mode 100644 index 00000000..0df4964c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class SortingLayerAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta new file mode 100644 index 00000000..d4cfaf8b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7564ee02deb3974a85d8617eea098fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs new file mode 100644 index 00000000..296d8d35 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class TagAttribute : DrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs new file mode 100644 index 00000000..5deef560 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs @@ -0,0 +1,33 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EButtonEnableMode + { + /// + /// Button should be active always + /// + Always, + /// + /// Button should be active only in editor + /// + Editor, + /// + /// Button should be active only in playmode + /// + Playmode + } + + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ButtonAttribute : SpecialCaseDrawerAttribute + { + public string Text { get; private set; } + public EButtonEnableMode SelectedEnableMode { get; private set; } + + public ButtonAttribute(string text = null, EButtonEnableMode enabledMode = EButtonEnableMode.Always) + { + this.Text = text; + this.SelectedEnableMode = enabledMode; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs new file mode 100644 index 00000000..91af2ead --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReorderableListAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs new file mode 100644 index 00000000..10d03368 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] + public class ShowNativePropertyAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs new file mode 100644 index 00000000..a4303dd0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowNonSerializedFieldAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs new file mode 100644 index 00000000..204f9c6b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class SpecialCaseDrawerAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs new file mode 100644 index 00000000..bd16238c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public interface INaughtyAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs new file mode 100644 index 00000000..bb6380af --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class BoxGroupAttribute : MetaAttribute, IGroupAttribute + { + public string Name { get; private set; } + + public BoxGroupAttribute(string name = "") + { + Name = name; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs new file mode 100644 index 00000000..c8fd6e3a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class DisableIfAttribute : EnableIfAttributeBase + { + public DisableIfAttribute(string condition) + : base(condition) + { + Inverted = true; + } + + public DisableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = true; + } + + public DisableIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = true; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs new file mode 100644 index 00000000..c8014138 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class EnableIfAttribute : EnableIfAttributeBase + { + public EnableIfAttribute(string condition) + : base(condition) + { + Inverted = false; + } + + public EnableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = false; + } + + public EnableIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = false; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs new file mode 100644 index 00000000..cebc67a4 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs @@ -0,0 +1,39 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class EnableIfAttributeBase : MetaAttribute + { + public string[] Conditions { get; private set; } + public EConditionOperator ConditionOperator { get; private set; } + public bool Inverted { get; protected set; } + + /// + /// If this not null, [0] is name of an enum variable. + /// + public Enum EnumValue { get; private set; } + + public EnableIfAttributeBase(string condition) + { + ConditionOperator = EConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public EnableIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public EnableIfAttributeBase(string enumName, Enum enumValue) + : this(enumName) + { + if (enumValue == null) + { + throw new ArgumentNullException(nameof(enumValue), "This parameter must be an enum value."); + } + + EnumValue = enumValue; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs new file mode 100644 index 00000000..f1b81bdb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class FoldoutAttribute : MetaAttribute, IGroupAttribute + { + public string Name { get; private set; } + + public FoldoutAttribute(string name) + { + Name = name; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs new file mode 100644 index 00000000..88a0850d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class HideIfAttribute : ShowIfAttributeBase + { + public HideIfAttribute(string condition) + : base(condition) + { + Inverted = true; + } + + public HideIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = true; + } + + public HideIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = true; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs new file mode 100644 index 00000000..b30ac9a3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + public interface IGroupAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs new file mode 100644 index 00000000..30982739 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class LabelAttribute : MetaAttribute + { + public string Label { get; private set; } + + public LabelAttribute(string label) + { + Label = label; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs new file mode 100644 index 00000000..9436bf3a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class MetaAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs new file mode 100644 index 00000000..8358af94 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class OnValueChangedAttribute : MetaAttribute + { + public string CallbackName { get; private set; } + + public OnValueChangedAttribute(string callbackName) + { + CallbackName = callbackName; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs new file mode 100644 index 00000000..95110f6f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs @@ -0,0 +1,10 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReadOnlyAttribute : MetaAttribute + { + + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs new file mode 100644 index 00000000..fce37635 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ShowIfAttribute : ShowIfAttributeBase + { + public ShowIfAttribute(string condition) + : base(condition) + { + Inverted = false; + } + + public ShowIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = false; + } + + public ShowIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = false; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs new file mode 100644 index 00000000..1ead58bb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs @@ -0,0 +1,39 @@ +using System; + +namespace NaughtyAttributes +{ + public class ShowIfAttributeBase : MetaAttribute + { + public string[] Conditions { get; private set; } + public EConditionOperator ConditionOperator { get; private set; } + public bool Inverted { get; protected set; } + + /// + /// If this not null, [0] is name of an enum variable. + /// + public Enum EnumValue { get; private set; } + + public ShowIfAttributeBase(string condition) + { + ConditionOperator = EConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public ShowIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public ShowIfAttributeBase(string enumName, Enum enumValue) + : this(enumName) + { + if (enumValue == null) + { + throw new ArgumentNullException(nameof(enumValue), "This parameter must be an enum value."); + } + + EnumValue = enumValue; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef rename to Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta rename to Assets/NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility.meta b/Assets/NaughtyAttributes/Scripts/Core/Utility.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility.meta rename to Assets/NaughtyAttributes/Scripts/Core/Utility.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/Utility/EColor.cs b/Assets/NaughtyAttributes/Scripts/Core/Utility/EColor.cs new file mode 100644 index 00000000..ab50f1d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/Utility/EColor.cs @@ -0,0 +1,56 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + public enum EColor + { + Clear, + White, + Black, + Gray, + Red, + Pink, + Orange, + Yellow, + Green, + Blue, + Indigo, + Violet + } + + public static class EColorExtensions + { + public static Color GetColor(this EColor color) + { + switch (color) + { + case EColor.Clear: + return new Color32(0, 0, 0, 0); + case EColor.White: + return new Color32(255, 255, 255, 255); + case EColor.Black: + return new Color32(0, 0, 0, 255); + case EColor.Gray: + return new Color32(128, 128, 128, 255); + case EColor.Red: + return new Color32(255, 0, 63, 255); + case EColor.Pink: + return new Color32(255, 152, 203, 255); + case EColor.Orange: + return new Color32(255, 128, 0, 255); + case EColor.Yellow: + return new Color32(255, 211, 0, 255); + case EColor.Green: + return new Color32(98, 200, 79, 255); + case EColor.Blue: + return new Color32(0, 135, 189, 255); + case EColor.Indigo: + return new Color32(75, 0, 130, 255); + case EColor.Violet: + return new Color32(128, 0, 255, 255); + default: + return new Color32(0, 0, 0, 255); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs b/Assets/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs new file mode 100644 index 00000000..d0894f54 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs @@ -0,0 +1,10 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EConditionOperator + { + And, + Or + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs new file mode 100644 index 00000000..3410e744 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MaxValueAttribute : ValidatorAttribute + { + public float MaxValue { get; private set; } + + public MaxValueAttribute(float maxValue) + { + MaxValue = maxValue; + } + + public MaxValueAttribute(int maxValue) + { + MaxValue = maxValue; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs new file mode 100644 index 00000000..956ca7a7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinValueAttribute : ValidatorAttribute + { + public float MinValue { get; private set; } + + public MinValueAttribute(float minValue) + { + MinValue = minValue; + } + + public MinValueAttribute(int minValue) + { + MinValue = minValue; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs new file mode 100644 index 00000000..61e36184 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class RequiredAttribute : ValidatorAttribute + { + public string Message { get; private set; } + + public RequiredAttribute(string message = null) + { + Message = message; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs new file mode 100644 index 00000000..2b738c32 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ValidateInputAttribute : ValidatorAttribute + { + public string CallbackName { get; private set; } + public string Message { get; private set; } + + public ValidateInputAttribute(string callbackName, string message = null) + { + CallbackName = callbackName; + Message = message; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs new file mode 100644 index 00000000..db5dcb5c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class ValidatorAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta b/Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta rename to Assets/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor.meta b/Assets/NaughtyAttributes/Scripts/Editor.meta new file mode 100644 index 00000000..8dd7e3e2 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b76068e69df25a94ab378b0b6829c4f0 +folderAsset: yes +timeCreated: 1507995613 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta rename to Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs new file mode 100644 index 00000000..2953c613 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(HorizontalLineAttribute))] + public class HorizontalLineDecoratorDrawer : DecoratorDrawer + { + public override float GetHeight() + { + HorizontalLineAttribute lineAttr = (HorizontalLineAttribute)attribute; + return EditorGUIUtility.singleLineHeight + lineAttr.Height; + } + + public override void OnGUI(Rect position) + { + Rect rect = EditorGUI.IndentedRect(position); + rect.y += EditorGUIUtility.singleLineHeight / 3.0f; + HorizontalLineAttribute lineAttr = (HorizontalLineAttribute)attribute; + NaughtyEditorGUI.HorizontalLine(rect, lineAttr.Height, lineAttr.Color.GetColor()); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs new file mode 100644 index 00000000..83cdbd20 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs @@ -0,0 +1,59 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(InfoBoxAttribute))] + public class InfoBoxDecoratorDrawer : DecoratorDrawer + { + public override float GetHeight() + { + return GetHelpBoxHeight(); + } + + public override void OnGUI(Rect rect) + { + InfoBoxAttribute infoBoxAttribute = (InfoBoxAttribute)attribute; + + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect infoBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight()); + + DrawInfoBox(infoBoxRect, infoBoxAttribute.Text, infoBoxAttribute.Type); + } + + private float GetHelpBoxHeight() + { + InfoBoxAttribute infoBoxAttribute = (InfoBoxAttribute)attribute; + float minHeight = EditorGUIUtility.singleLineHeight * 2.0f; + float desiredHeight = GUI.skin.box.CalcHeight(new GUIContent(infoBoxAttribute.Text), EditorGUIUtility.currentViewWidth); + float height = Mathf.Max(minHeight, desiredHeight); + + return height; + } + + private void DrawInfoBox(Rect rect, string infoText, EInfoBoxType infoBoxType) + { + MessageType messageType = MessageType.None; + switch (infoBoxType) + { + case EInfoBoxType.Normal: + messageType = MessageType.Info; + break; + + case EInfoBoxType.Warning: + messageType = MessageType.Warning; + break; + + case EInfoBoxType.Error: + messageType = MessageType.Error; + break; + } + + NaughtyEditorGUI.HelpBox(rect, infoText, messageType); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef rename to Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta rename to Assets/NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs new file mode 100644 index 00000000..03adaee6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs @@ -0,0 +1,221 @@ +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(UnityEngine.Object), true)] + public class NaughtyInspector : UnityEditor.Editor + { + private List _serializedProperties = new List(); + private IEnumerable _nonSerializedFields; + private IEnumerable _nativeProperties; + private IEnumerable _methods; + private Dictionary _foldouts = new Dictionary(); + + protected virtual void OnEnable() + { + _nonSerializedFields = ReflectionUtility.GetAllFields( + target, f => f.GetCustomAttributes(typeof(ShowNonSerializedFieldAttribute), true).Length > 0); + + _nativeProperties = ReflectionUtility.GetAllProperties( + target, p => p.GetCustomAttributes(typeof(ShowNativePropertyAttribute), true).Length > 0); + + _methods = ReflectionUtility.GetAllMethods( + target, m => m.GetCustomAttributes(typeof(ButtonAttribute), true).Length > 0); + } + + protected virtual void OnDisable() + { + ReorderableListPropertyDrawer.Instance.ClearCache(); + } + + public override void OnInspectorGUI() + { + GetSerializedProperties(ref _serializedProperties); + + bool anyNaughtyAttribute = _serializedProperties.Any(p => PropertyUtility.GetAttribute(p) != null); + if (!anyNaughtyAttribute) + { + DrawDefaultInspector(); + } + else + { + DrawSerializedProperties(); + } + + DrawNonSerializedFields(); + DrawNativeProperties(); + DrawButtons(); + } + + protected void GetSerializedProperties(ref List outSerializedProperties) + { + outSerializedProperties.Clear(); + using (var iterator = serializedObject.GetIterator()) + { + if (iterator.NextVisible(true)) + { + do + { + outSerializedProperties.Add(serializedObject.FindProperty(iterator.name)); + } + while (iterator.NextVisible(false)); + } + } + } + + protected void DrawSerializedProperties() + { + serializedObject.Update(); + + // Draw non-grouped serialized properties + foreach (var property in GetNonGroupedProperties(_serializedProperties)) + { + if (property.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + using (new EditorGUI.DisabledScope(disabled: true)) + { + EditorGUILayout.PropertyField(property); + } + } + else + { + NaughtyEditorGUI.PropertyField_Layout(property, includeChildren: true); + } + } + + // Draw grouped serialized properties + foreach (var group in GetGroupedProperties(_serializedProperties)) + { + IEnumerable visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + if (!visibleProperties.Any()) + { + continue; + } + + NaughtyEditorGUI.BeginBoxGroup_Layout(group.Key); + foreach (var property in visibleProperties) + { + NaughtyEditorGUI.PropertyField_Layout(property, includeChildren: true); + } + + NaughtyEditorGUI.EndBoxGroup_Layout(); + } + + // Draw foldout serialized properties + foreach (var group in GetFoldoutProperties(_serializedProperties)) + { + IEnumerable visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + if (!visibleProperties.Any()) + { + continue; + } + + if (!_foldouts.ContainsKey(group.Key)) + { + _foldouts[group.Key] = new SavedBool($"{target.GetInstanceID()}.{group.Key}", false); + } + + _foldouts[group.Key].Value = EditorGUILayout.Foldout(_foldouts[group.Key].Value, group.Key, true); + if (_foldouts[group.Key].Value) + { + foreach (var property in visibleProperties) + { + NaughtyEditorGUI.PropertyField_Layout(property, true); + } + } + } + + serializedObject.ApplyModifiedProperties(); + } + + protected void DrawNonSerializedFields(bool drawHeader = false) + { + if (_nonSerializedFields.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Non-Serialized Fields", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var field in _nonSerializedFields) + { + NaughtyEditorGUI.NonSerializedField_Layout(serializedObject.targetObject, field); + } + } + } + + protected void DrawNativeProperties(bool drawHeader = false) + { + if (_nativeProperties.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Native Properties", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var property in _nativeProperties) + { + NaughtyEditorGUI.NativeProperty_Layout(serializedObject.targetObject, property); + } + } + } + + protected void DrawButtons(bool drawHeader = false) + { + if (_methods.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Buttons", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var method in _methods) + { + NaughtyEditorGUI.Button(serializedObject.targetObject, method); + } + } + } + + private static IEnumerable GetNonGroupedProperties(IEnumerable properties) + { + return properties.Where(p => PropertyUtility.GetAttribute(p) == null); + } + + private static IEnumerable> GetGroupedProperties(IEnumerable properties) + { + return properties + .Where(p => PropertyUtility.GetAttribute(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute(p).Name); + } + + private static IEnumerable> GetFoldoutProperties(IEnumerable properties) + { + return properties + .Where(p => PropertyUtility.GetAttribute(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute(p).Name); + } + + private static GUIStyle GetHeaderGUIStyle() + { + GUIStyle style = new GUIStyle(EditorStyles.centeredGreyMiniLabel); + style.fontStyle = FontStyle.Bold; + style.alignment = TextAnchor.UpperCenter; + + return style; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs new file mode 100644 index 00000000..6c391327 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(AllowNestingAttribute))] + public class AllowNestingPropertyDrawer : PropertyDrawerBase + { + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + EditorGUI.PropertyField(rect, property, label, true); + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs new file mode 100644 index 00000000..cf3da38b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs @@ -0,0 +1,173 @@ +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEditor.Animations; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(AnimatorParamAttribute))] + public class AnimatorParamPropertyDrawer : PropertyDrawerBase + { + private const string InvalidAnimatorControllerWarningMessage = "Target animator controller is null"; + private const string InvalidTypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + AnimatorParamAttribute animatorParamAttribute = PropertyUtility.GetAttribute(property); + bool validAnimatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName) != null; + bool validPropertyType = property.propertyType == SerializedPropertyType.Integer || property.propertyType == SerializedPropertyType.String; + + return (validAnimatorController && validPropertyType) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + AnimatorParamAttribute animatorParamAttribute = PropertyUtility.GetAttribute(property); + + AnimatorController animatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName); + if (animatorController == null) + { + DrawDefaultPropertyAndHelpBox(rect, property, InvalidAnimatorControllerWarningMessage, MessageType.Warning); + return; + } + + int parametersCount = animatorController.parameters.Length; + List animatorParameters = new List(parametersCount); + for (int i = 0; i < parametersCount; i++) + { + AnimatorControllerParameter parameter = animatorController.parameters[i]; + if (animatorParamAttribute.AnimatorParamType == null || parameter.type == animatorParamAttribute.AnimatorParamType) + { + animatorParameters.Add(parameter); + } + } + + switch (property.propertyType) + { + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, animatorParameters); + break; + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, animatorParameters); + break; + default: + DrawDefaultPropertyAndHelpBox(rect, property, string.Format(InvalidTypeWarningMessage, property.name), MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, List animatorParameters) + { + int paramNameHash = property.intValue; + int index = 0; + + for (int i = 0; i < animatorParameters.Count; i++) + { + if (paramNameHash == animatorParameters[i].nameHash) + { + index = i + 1; // +1 because the first option is reserved for (None) + break; + } + } + + string[] displayOptions = GetDisplayOptions(animatorParameters); + + int newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + int newValue = newIndex == 0 ? 0 : animatorParameters[newIndex - 1].nameHash; + + if (property.intValue != newValue) + { + property.intValue = newValue; + } + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, List animatorParameters) + { + string paramName = property.stringValue; + int index = 0; + + for (int i = 0; i < animatorParameters.Count; i++) + { + if (paramName.Equals(animatorParameters[i].name, System.StringComparison.Ordinal)) + { + index = i + 1; // +1 because the first option is reserved for (None) + break; + } + } + + string[] displayOptions = GetDisplayOptions(animatorParameters); + + int newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + string newValue = newIndex == 0 ? null : animatorParameters[newIndex - 1].name; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + + private static string[] GetDisplayOptions(List animatorParams) + { + string[] displayOptions = new string[animatorParams.Count + 1]; + displayOptions[0] = "(None)"; + + for (int i = 0; i < animatorParams.Count; i++) + { + displayOptions[i + 1] = animatorParams[i].name; + } + + return displayOptions; + } + + private static AnimatorController GetAnimatorController(SerializedProperty property, string animatorName) + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo animatorFieldInfo = ReflectionUtility.GetField(target, animatorName); + if (animatorFieldInfo != null && + animatorFieldInfo.FieldType == typeof(Animator)) + { + Animator animator = animatorFieldInfo.GetValue(target) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + PropertyInfo animatorPropertyInfo = ReflectionUtility.GetProperty(target, animatorName); + if (animatorPropertyInfo != null && + animatorPropertyInfo.PropertyType == typeof(Animator)) + { + Animator animator = animatorPropertyInfo.GetValue(target) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + MethodInfo animatorGetterMethodInfo = ReflectionUtility.GetMethod(target, animatorName); + if (animatorGetterMethodInfo != null && + animatorGetterMethodInfo.ReturnType == typeof(Animator) && + animatorGetterMethodInfo.GetParameters().Length == 0) + { + Animator animator = animatorGetterMethodInfo.Invoke(target, null) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + return null; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs new file mode 100644 index 00000000..8f5a6c5d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs @@ -0,0 +1,47 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(CurveRangeAttribute))] + public class CurveRangePropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + float propertyHeight = property.propertyType == SerializedPropertyType.AnimationCurve + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + // Check user error + if (property.propertyType != SerializedPropertyType.AnimationCurve) + { + string message = string.Format("Field {0} is not an AnimationCurve", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + return; + } + + var curveRangeAttribute = (CurveRangeAttribute)attribute; + var curveRanges = new Rect( + curveRangeAttribute.Min.x, + curveRangeAttribute.Min.y, + curveRangeAttribute.Max.x - curveRangeAttribute.Min.x, + curveRangeAttribute.Max.y - curveRangeAttribute.Min.y); + + EditorGUI.CurveField( + rect, + property, + curveRangeAttribute.Color == EColor.Clear ? Color.green : curveRangeAttribute.Color.GetColor(), + curveRanges, + label); + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs new file mode 100644 index 00000000..90184868 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs @@ -0,0 +1,177 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Reflection; +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(DropdownAttribute))] + public class DropdownPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + DropdownAttribute dropdownAttribute = (DropdownAttribute)attribute; + object values = GetValues(property, dropdownAttribute.ValuesName); + FieldInfo fieldInfo = ReflectionUtility.GetField(PropertyUtility.GetTargetObjectWithProperty(property), property.name); + + float propertyHeight = AreValuesValid(values, fieldInfo) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + DropdownAttribute dropdownAttribute = (DropdownAttribute)attribute; + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + object valuesObject = GetValues(property, dropdownAttribute.ValuesName); + FieldInfo dropdownField = ReflectionUtility.GetField(target, property.name); + + if (AreValuesValid(valuesObject, dropdownField)) + { + if (valuesObject is IList && dropdownField.FieldType == GetElementType(valuesObject)) + { + // Selected value + object selectedValue = dropdownField.GetValue(target); + + // Values and display options + IList valuesList = (IList)valuesObject; + object[] values = new object[valuesList.Count]; + string[] displayOptions = new string[valuesList.Count]; + + for (int i = 0; i < values.Length; i++) + { + object value = valuesList[i]; + values[i] = value; + displayOptions[i] = value == null ? "" : value.ToString(); + } + + // Selected value index + int selectedValueIndex = Array.IndexOf(values, selectedValue); + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, property.serializedObject, target, dropdownField, label.text, selectedValueIndex, values, displayOptions); + } + else if (valuesObject is IDropdownList) + { + // Current value + object selectedValue = dropdownField.GetValue(target); + + // Current value index, values and display options + int index = -1; + int selectedValueIndex = -1; + List values = new List(); + List displayOptions = new List(); + IDropdownList dropdown = (IDropdownList)valuesObject; + + using (IEnumerator> dropdownEnumerator = dropdown.GetEnumerator()) + { + while (dropdownEnumerator.MoveNext()) + { + index++; + + KeyValuePair current = dropdownEnumerator.Current; + if (current.Value?.Equals(selectedValue) == true) + { + selectedValueIndex = index; + } + + values.Add(current.Value); + + if (current.Key == null) + { + displayOptions.Add(""); + } + else if (string.IsNullOrWhiteSpace(current.Key)) + { + displayOptions.Add(""); + } + else + { + displayOptions.Add(current.Key); + } + } + } + + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, property.serializedObject, target, dropdownField, label.text, selectedValueIndex, values.ToArray(), displayOptions.ToArray()); + } + } + else + { + string message = string.Format("Invalid values with name '{0}' provided to '{1}'. Either the values name is incorrect or the types of the target field and the values field/property/method don't match", + dropdownAttribute.ValuesName, dropdownAttribute.GetType().Name); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private object GetValues(SerializedProperty property, string valuesName) + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo valuesFieldInfo = ReflectionUtility.GetField(target, valuesName); + if (valuesFieldInfo != null) + { + return valuesFieldInfo.GetValue(target); + } + + PropertyInfo valuesPropertyInfo = ReflectionUtility.GetProperty(target, valuesName); + if (valuesPropertyInfo != null) + { + return valuesPropertyInfo.GetValue(target); + } + + MethodInfo methodValuesInfo = ReflectionUtility.GetMethod(target, valuesName); + if (methodValuesInfo != null && + methodValuesInfo.ReturnType != typeof(void) && + methodValuesInfo.GetParameters().Length == 0) + { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + + private bool AreValuesValid(object values, FieldInfo dropdownField) + { + if (values == null || dropdownField == null) + { + return false; + } + + if ((values is IList && dropdownField.FieldType == GetElementType(values)) || + (values is IDropdownList)) + { + return true; + } + + return false; + } + + private Type GetElementType(object values) + { + Type valuesType = values.GetType(); + Type elementType = ReflectionUtility.GetListElementType(valuesType); + + return elementType; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs new file mode 100644 index 00000000..df2da6d1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(EnumFlagsAttribute))] + public class EnumFlagsPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + + return (targetEnum != null) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + if (targetEnum != null) + { + Enum enumNew = EditorGUI.EnumFlagsField(rect, label.text, targetEnum); + property.intValue = (int)Convert.ChangeType(enumNew, targetEnum.GetType()); + } + else + { + string message = attribute.GetType().Name + " can be used only on enums"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs new file mode 100644 index 00000000..705e17a6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs @@ -0,0 +1,195 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ExpandableAttribute))] + public class ExpandablePropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.objectReferenceValue == null) + { + return GetPropertyHeight(property); + } + + System.Type propertyType = PropertyUtility.GetPropertyType(property); + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + return GetPropertyHeight(property); + } + + if (property.isExpanded) + { + using (SerializedObject serializedObject = new SerializedObject(scriptableObject)) + { + float totalHeight = EditorGUIUtility.singleLineHeight; + + using (var iterator = serializedObject.GetIterator()) + { + if (iterator.NextVisible(true)) + { + do + { + SerializedProperty childProperty = serializedObject.FindProperty(iterator.name); + if (childProperty.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + continue; + } + + bool visible = PropertyUtility.IsVisible(childProperty); + if (!visible) + { + continue; + } + + float height = GetPropertyHeight(childProperty); + totalHeight += height; + } + while (iterator.NextVisible(false)); + } + } + + totalHeight += EditorGUIUtility.standardVerticalSpacing; + return totalHeight; + } + } + else + { + return GetPropertyHeight(property); + } + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.objectReferenceValue == null) + { + EditorGUI.PropertyField(rect, property, label, false); + } + else + { + System.Type propertyType = PropertyUtility.GetPropertyType(property); + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + EditorGUI.PropertyField(rect, property, label, false); + } + else + { + // Draw a foldout + Rect foldoutRect = new Rect() + { + x = rect.x, + y = rect.y, + width = EditorGUIUtility.labelWidth, + height = EditorGUIUtility.singleLineHeight + }; + + property.isExpanded = EditorGUI.Foldout(foldoutRect, property.isExpanded, label, toggleOnLabelClick: true); + + // Draw the scriptable object field + Rect propertyRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.PropertyField(propertyRect, property, label, false); + + // Draw the child properties + if (property.isExpanded) + { + DrawChildProperties(rect, property); + } + } + } + else + { + string message = $"{typeof(ExpandableAttribute).Name} can only be used on scriptable objects"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + } + + property.serializedObject.ApplyModifiedProperties(); + EditorGUI.EndProperty(); + } + + private void DrawChildProperties(Rect rect, SerializedProperty property) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + return; + } + + Rect boxRect = new Rect() + { + x = 0.0f, + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width * 2.0f, + height = rect.height - EditorGUIUtility.singleLineHeight + }; + + GUI.Box(boxRect, GUIContent.none); + + using (new EditorGUI.IndentLevelScope()) + { + SerializedObject serializedObject = new SerializedObject(scriptableObject); + serializedObject.Update(); + + using (var iterator = serializedObject.GetIterator()) + { + float yOffset = EditorGUIUtility.singleLineHeight; + + if (iterator.NextVisible(true)) + { + do + { + SerializedProperty childProperty = serializedObject.FindProperty(iterator.name); + if (childProperty.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + continue; + } + + bool visible = PropertyUtility.IsVisible(childProperty); + if (!visible) + { + continue; + } + + float childHeight = GetPropertyHeight(childProperty); + Rect childRect = new Rect() + { + x = rect.x, + y = rect.y + yOffset, + width = rect.width, + height = childHeight + }; + + NaughtyEditorGUI.PropertyField(childRect, childProperty, true); + + yOffset += childHeight; + } + while (iterator.NextVisible(false)); + } + } + + serializedObject.ApplyModifiedProperties(); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs new file mode 100644 index 00000000..1fbcfebe --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(InputAxisAttribute))] + public class InputAxisPropertyDrawer : PropertyDrawerBase + { + private static readonly string AssetPath = Path.Combine("ProjectSettings", "InputManager.asset"); + private const string AxesPropertyPath = "m_Axes"; + private const string NamePropertyPath = "m_Name"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.String) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + var inputManagerAsset = AssetDatabase.LoadAssetAtPath(AssetPath, typeof(object)); + var inputManager = new SerializedObject(inputManagerAsset); + + var axesProperty = inputManager.FindProperty(AxesPropertyPath); + var axesSet = new HashSet(); + axesSet.Add("(None)"); + + for (var i = 0; i < axesProperty.arraySize; i++) + { + var axis = axesProperty.GetArrayElementAtIndex(i).FindPropertyRelative(NamePropertyPath).stringValue; + axesSet.Add(axis); + } + + var axes = axesSet.ToArray(); + + string propertyString = property.stringValue; + int index = 0; + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (int i = 1; i < axes.Length; i++) + { + if (axes[i].Equals(propertyString, System.StringComparison.Ordinal)) + { + index = i; + break; + } + } + + // Draw the popup box with the current selected index + int newIndex = EditorGUI.Popup(rect, label.text, index, axes); + + // Adjust the actual string value of the property based on the selection + string newValue = newIndex > 0 ? axes[newIndex] : string.Empty; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + else + { + string message = string.Format("{0} supports only string fields", typeof(InputAxisAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs new file mode 100644 index 00000000..d789eb92 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs @@ -0,0 +1,88 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(LayerAttribute))] + public class LayerPropertyDrawer : PropertyDrawerBase + { + private const string TypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + + return validPropertyType + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, GetLayers()); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, GetLayers()); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetLayers() + { + return UnityEditorInternal.InternalEditorUtility.layers; + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = IndexOf(layers, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayer = layers[newIndex]; + + if (!property.stringValue.Equals(newLayer, StringComparison.Ordinal)) + { + property.stringValue = layers[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = 0; + string layerName = LayerMask.LayerToName(property.intValue); + for (int i = 0; i < layers.Length; i++) + { + if (layerName.Equals(layers[i], StringComparison.Ordinal)) + { + index = i; + break; + } + } + + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayerName = layers[newIndex]; + int newLayerNumber = LayerMask.NameToLayer(newLayerName); + + if (property.intValue != newLayerNumber) + { + property.intValue = newLayerNumber; + } + } + + private static int IndexOf(string[] layers, string layer) + { + var index = Array.IndexOf(layers, layer); + return Mathf.Clamp(index, 0, layers.Length - 1); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs new file mode 100644 index 00000000..7866c569 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs @@ -0,0 +1,108 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(MinMaxSliderAttribute))] + public class MinMaxSliderPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.Vector2 || property.propertyType == SerializedPropertyType.Vector2Int) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + MinMaxSliderAttribute minMaxSliderAttribute = (MinMaxSliderAttribute)attribute; + + if (property.propertyType == SerializedPropertyType.Vector2 || property.propertyType == SerializedPropertyType.Vector2Int) + { + EditorGUI.BeginProperty(rect, label, property); + + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + float labelWidth = EditorGUIUtility.labelWidth + NaughtyEditorGUI.HorizontalSpacing; + float floatFieldWidth = EditorGUIUtility.fieldWidth; + float sliderWidth = rect.width - labelWidth - 2.0f * floatFieldWidth; + float sliderPadding = 5.0f; + + Rect labelRect = new Rect( + rect.x, + rect.y, + labelWidth, + rect.height); + + Rect sliderRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderPadding - indentLength, + rect.y, + sliderWidth - 2.0f * sliderPadding + indentLength, + rect.height); + + Rect minFloatFieldRect = new Rect( + rect.x + labelWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height); + + Rect maxFloatFieldRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height); + + // Draw the label + EditorGUI.LabelField(labelRect, label.text); + + // Draw the slider + EditorGUI.BeginChangeCheck(); + + if (property.propertyType == SerializedPropertyType.Vector2) + { + Vector2 sliderValue = property.vector2Value; + EditorGUI.MinMaxSlider(sliderRect, ref sliderValue.x, ref sliderValue.y, minMaxSliderAttribute.MinValue, minMaxSliderAttribute.MaxValue); + + sliderValue.x = EditorGUI.FloatField(minFloatFieldRect, sliderValue.x); + sliderValue.x = Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.FloatField(maxFloatFieldRect, sliderValue.y); + sliderValue.y = Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) + { + property.vector2Value = sliderValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + Vector2Int sliderValue = property.vector2IntValue; + float xValue = sliderValue.x; + float yValue = sliderValue.y; + EditorGUI.MinMaxSlider(sliderRect, ref xValue, ref yValue, minMaxSliderAttribute.MinValue, minMaxSliderAttribute.MaxValue); + + sliderValue.x = EditorGUI.IntField(minFloatFieldRect, (int)xValue); + sliderValue.x = (int)Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.IntField(maxFloatFieldRect, (int)yValue); + sliderValue.y = (int)Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) + { + property.vector2IntValue = sliderValue; + } + } + + EditorGUI.EndProperty(); + } + else + { + string message = minMaxSliderAttribute.GetType().Name + " can be used only on Vector2 or Vector2Int fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs new file mode 100644 index 00000000..84d88233 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs @@ -0,0 +1,154 @@ +using UnityEngine; +using UnityEditor; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ProgressBarAttribute))] + public class ProgressBarPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + ProgressBarAttribute progressBarAttribute = PropertyUtility.GetAttribute(property); + var maxValue = GetMaxValue(property, progressBarAttribute); + + return IsNumber(property) && IsNumber(maxValue) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (!IsNumber(property)) + { + string message = string.Format("Field {0} is not a number", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + return; + } + + ProgressBarAttribute progressBarAttribute = PropertyUtility.GetAttribute(property); + var value = property.propertyType == SerializedPropertyType.Integer ? property.intValue : property.floatValue; + var valueFormatted = property.propertyType == SerializedPropertyType.Integer ? value.ToString() : string.Format("{0:0.00}", value); + var maxValue = GetMaxValue(property, progressBarAttribute); + + if (maxValue != null && IsNumber(maxValue)) + { + var fillPercentage = value / CastToFloat(maxValue); + var barLabel = (!string.IsNullOrEmpty(progressBarAttribute.Name) ? "[" + progressBarAttribute.Name + "] " : "") + valueFormatted + "/" + maxValue; + var barColor = progressBarAttribute.Color.GetColor(); + var labelColor = Color.white; + + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect barRect = new Rect() + { + x = rect.x + indentLength, + y = rect.y, + width = rect.width - indentLength, + height = EditorGUIUtility.singleLineHeight + }; + + DrawBar(barRect, Mathf.Clamp01(fillPercentage), barLabel, barColor, labelColor); + } + else + { + string message = string.Format( + "The provided dynamic max value for the progress bar is not correct. Please check if the '{0}' is correct, or the return type is float/int", + nameof(progressBarAttribute.MaxValueName)); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private object GetMaxValue(SerializedProperty property, ProgressBarAttribute progressBarAttribute) + { + if (string.IsNullOrEmpty(progressBarAttribute.MaxValueName)) + { + return progressBarAttribute.MaxValue; + } + else + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo valuesFieldInfo = ReflectionUtility.GetField(target, progressBarAttribute.MaxValueName); + if (valuesFieldInfo != null) + { + return valuesFieldInfo.GetValue(target); + } + + PropertyInfo valuesPropertyInfo = ReflectionUtility.GetProperty(target, progressBarAttribute.MaxValueName); + if (valuesPropertyInfo != null) + { + return valuesPropertyInfo.GetValue(target); + } + + MethodInfo methodValuesInfo = ReflectionUtility.GetMethod(target, progressBarAttribute.MaxValueName); + if (methodValuesInfo != null && + (methodValuesInfo.ReturnType == typeof(float) || methodValuesInfo.ReturnType == typeof(int)) && + methodValuesInfo.GetParameters().Length == 0) + { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + } + + private void DrawBar(Rect rect, float fillPercent, string label, Color barColor, Color labelColor) + { + if (Event.current.type != EventType.Repaint) + { + return; + } + + var fillRect = new Rect(rect.x, rect.y, rect.width * fillPercent, rect.height); + + EditorGUI.DrawRect(rect, new Color(0.13f, 0.13f, 0.13f)); + EditorGUI.DrawRect(fillRect, barColor); + + // set alignment and cache the default + var align = GUI.skin.label.alignment; + GUI.skin.label.alignment = TextAnchor.UpperCenter; + + // set the color and cache the default + var c = GUI.contentColor; + GUI.contentColor = labelColor; + + // calculate the position + var labelRect = new Rect(rect.x, rect.y - 2, rect.width, rect.height); + + // draw~ + EditorGUI.DropShadowLabel(labelRect, label); + + // reset color and alignment + GUI.contentColor = c; + GUI.skin.label.alignment = align; + } + + private bool IsNumber(SerializedProperty property) + { + bool isNumber = property.propertyType == SerializedPropertyType.Float || property.propertyType == SerializedPropertyType.Integer; + return isNumber; + } + + private bool IsNumber(object obj) + { + return (obj is float) || (obj is int); + } + + private float CastToFloat(object obj) + { + if (obj is int) + { + return (int)obj; + } + else + { + return (float)obj; + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs new file mode 100644 index 00000000..36afd85d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs @@ -0,0 +1,94 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyDrawerBase : PropertyDrawer + { + public sealed override void OnGUI(Rect rect, SerializedProperty property, GUIContent label) + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + OnGUI_Internal(rect, property, PropertyUtility.GetLabel(property)); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + + sealed override public float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return 0.0f; + } + + return GetPropertyHeight_Internal(property, label); + } + + protected virtual float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, includeChildren: true); + } + + protected float GetPropertyHeight(SerializedProperty property) + { + SpecialCaseDrawerAttribute specialCaseAttribute = PropertyUtility.GetAttribute(property); + if (specialCaseAttribute != null) + { + return specialCaseAttribute.GetDrawer().GetPropertyHeight(property); + } + + return EditorGUI.GetPropertyHeight(property, includeChildren: true); + } + + public virtual float GetHelpBoxHeight() + { + return EditorGUIUtility.singleLineHeight * 2.0f; + } + + public void DrawDefaultPropertyAndHelpBox(Rect rect, SerializedProperty property, string message, MessageType messageType) + { + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect helpBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight()); + + NaughtyEditorGUI.HelpBox(helpBoxRect, message, MessageType.Warning, context: property.serializedObject.targetObject); + + Rect propertyRect = new Rect( + rect.x, + rect.y + GetHelpBoxHeight(), + rect.width, + GetPropertyHeight(property)); + + EditorGUI.PropertyField(propertyRect, property, true); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs new file mode 100644 index 00000000..6a78fa1c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs @@ -0,0 +1,80 @@ +using UnityEngine; +using UnityEditor; +using System.Text.RegularExpressions; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ResizableTextAreaAttribute))] + public class ResizableTextAreaPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.String) + { + float labelHeight = EditorGUIUtility.singleLineHeight; + float textAreaHeight = GetTextAreaHeight(property.stringValue); + return labelHeight + textAreaHeight; + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + Rect labelRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.LabelField(labelRect, label.text); + + EditorGUI.BeginChangeCheck(); + + Rect textAreaRect = new Rect() + { + x = labelRect.x, + y = labelRect.y + EditorGUIUtility.singleLineHeight, + width = labelRect.width, + height = GetTextAreaHeight(property.stringValue) + }; + + string textAreaValue = EditorGUI.TextArea(textAreaRect, property.stringValue); + + if (EditorGUI.EndChangeCheck()) + { + property.stringValue = textAreaValue; + } + } + else + { + string message = typeof(ResizableTextAreaAttribute).Name + " can only be used on string fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private int GetNumberOfLines(string text) + { + string content = Regex.Replace(text, @"\r\n|\n\r|\r|\n", Environment.NewLine); + string[] lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); + return lines.Length; + } + + private float GetTextAreaHeight(string text) + { + float height = (EditorGUIUtility.singleLineHeight - 3.0f) * GetNumberOfLines(text) + 3.0f; + return height; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs new file mode 100644 index 00000000..9b0dfb3b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs @@ -0,0 +1,99 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; +using System.Text.RegularExpressions; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(SceneAttribute))] + public class ScenePropertyDrawer : PropertyDrawerBase + { + private const string SceneListItem = "{0} ({1})"; + private const string ScenePattern = @".+\/(.+)\.unity"; + private const string TypeWarningMessage = "{0} must be an int or a string"; + private const string BuildSettingsWarningMessage = "No scenes in the build settings"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + bool anySceneInBuildSettings = GetScenes().Length > 0; + + return (validPropertyType && anySceneInBuildSettings) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + string[] scenes = GetScenes(); + bool anySceneInBuildSettings = scenes.Length > 0; + if (!anySceneInBuildSettings) + { + DrawDefaultPropertyAndHelpBox(rect, property, BuildSettingsWarningMessage, MessageType.Warning); + return; + } + + string[] sceneOptions = GetSceneOptions(scenes); + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, scenes, sceneOptions); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, sceneOptions); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetScenes() + { + return EditorBuildSettings.scenes + .Where(scene => scene.enabled) + .Select(scene => Regex.Match(scene.path, ScenePattern).Groups[1].Value) + .ToArray(); + } + + private string[] GetSceneOptions(string[] scenes) + { + return scenes.Select((s, i) => string.Format(SceneListItem, s, i)).ToArray(); + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] scenes, string[] sceneOptions) + { + int index = IndexOf(scenes, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + string newScene = scenes[newIndex]; + + if (!property.stringValue.Equals(newScene, StringComparison.Ordinal)) + { + property.stringValue = scenes[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] sceneOptions) + { + int index = property.intValue; + int newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + + if (property.intValue != newIndex) + { + property.intValue = newIndex; + } + } + + private static int IndexOf(string[] scenes, string scene) + { + var index = Array.IndexOf(scenes, scene); + return Mathf.Clamp(index, 0, scenes.Length - 1); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs new file mode 100644 index 00000000..ee3d10bf --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs @@ -0,0 +1,110 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ShowAssetPreviewAttribute))] + public class ShowAssetPreviewPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture != null) + { + return GetPropertyHeight(property) + GetAssetPreviewSize(property).y; + } + else + { + return GetPropertyHeight(property); + } + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + Rect propertyRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.PropertyField(propertyRect, property, label); + + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture != null) + { + Rect previewRect = new Rect() + { + x = rect.x + NaughtyEditorGUI.GetIndentLength(rect), + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width, + height = GetAssetPreviewSize(property).y + }; + + GUI.Label(previewRect, previewTexture); + } + } + else + { + string message = property.name + " doesn't have an asset preview"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private Texture2D GetAssetPreview(SerializedProperty property) + { + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue != null) + { + Texture2D previewTexture = AssetPreview.GetAssetPreview(property.objectReferenceValue); + return previewTexture; + } + + return null; + } + + return null; + } + + private Vector2 GetAssetPreviewSize(SerializedProperty property) + { + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture == null) + { + return Vector2.zero; + } + else + { + int targetWidth = ShowAssetPreviewAttribute.DefaultWidth; + int targetHeight = ShowAssetPreviewAttribute.DefaultHeight; + + ShowAssetPreviewAttribute showAssetPreviewAttribute = PropertyUtility.GetAttribute(property); + if (showAssetPreviewAttribute != null) + { + targetWidth = showAssetPreviewAttribute.Width; + targetHeight = showAssetPreviewAttribute.Height; + } + + int width = Mathf.Clamp(targetWidth, 0, previewTexture.width); + int height = Mathf.Clamp(targetHeight, 0, previewTexture.height); + + return new Vector2(width, height); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs new file mode 100644 index 00000000..88227157 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs @@ -0,0 +1,91 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(SortingLayerAttribute))] + public class SortingLayerPropertyDrawer : PropertyDrawerBase + { + private const string TypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + + return validPropertyType + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, GetLayers()); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, GetLayers()); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetLayers() + { + Type internalEditorUtilityType = typeof(UnityEditorInternal.InternalEditorUtility); + PropertyInfo sortingLayersProperty = internalEditorUtilityType.GetProperty("sortingLayerNames", BindingFlags.Static | BindingFlags.NonPublic); + return (string[])sortingLayersProperty.GetValue(null, new object[0]); + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = IndexOf(layers, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayer = layers[newIndex]; + + if (!property.stringValue.Equals(newLayer, StringComparison.Ordinal)) + { + property.stringValue = layers[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = 0; + string layerName = SortingLayer.IDToName(property.intValue); + for (int i = 0; i < layers.Length; i++) + { + if (layerName.Equals(layers[i], StringComparison.Ordinal)) + { + index = i; + break; + } + } + + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayerName = layers[newIndex]; + int newLayerNumber = SortingLayer.NameToID(newLayerName); + + if (property.intValue != newLayerNumber) + { + property.intValue = newLayerNumber; + } + } + + private static int IndexOf(string[] layers, string layer) + { + var index = Array.IndexOf(layers, layer); + return Mathf.Clamp(index, 0, layers.Length - 1); + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta new file mode 100644 index 00000000..d99bdf93 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0ed20ed34d732246a98cde96351fccb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs new file mode 100644 index 00000000..7a00a403 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(TagAttribute))] + public class TagPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.String) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + // generate the taglist + custom tags + List tagList = new List(); + tagList.Add("(None)"); + tagList.Add("Untagged"); + tagList.AddRange(UnityEditorInternal.InternalEditorUtility.tags); + + string propertyString = property.stringValue; + int index = 0; + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (int i = 1; i < tagList.Count; i++) + { + if (tagList[i].Equals(propertyString, System.StringComparison.Ordinal)) + { + index = i; + break; + } + } + + // Draw the popup box with the current selected index + int newIndex = EditorGUI.Popup(rect, label.text, index, tagList.ToArray()); + + // Adjust the actual string value of the property based on the selection + string newValue = newIndex > 0 ? tagList[newIndex] : string.Empty; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + else + { + string message = string.Format("{0} supports only string fields", typeof(TagAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs new file mode 100644 index 00000000..fea369d6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs @@ -0,0 +1,205 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public class ReorderableListPropertyDrawer : SpecialCasePropertyDrawerBase + { + public static readonly ReorderableListPropertyDrawer Instance = new ReorderableListPropertyDrawer(); + + private readonly Dictionary _reorderableListsByPropertyName = new Dictionary(); + + private GUIStyle _labelStyle; + + private GUIStyle GetLabelStyle() + { + if (_labelStyle == null) + { + _labelStyle = new GUIStyle(EditorStyles.boldLabel); + _labelStyle.richText = true; + } + + return _labelStyle; + } + + private string GetPropertyKeyName(SerializedProperty property) + { + return property.serializedObject.targetObject.GetInstanceID() + "." + property.name; + } + + protected override float GetPropertyHeight_Internal(SerializedProperty property) + { + if (property.isArray) + { + string key = GetPropertyKeyName(property); + + if (_reorderableListsByPropertyName.TryGetValue(key, out ReorderableList reorderableList) == false) + { + return 0; + } + + return reorderableList.GetHeight(); + } + + return EditorGUI.GetPropertyHeight(property, true); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + if (property.isArray) + { + string key = GetPropertyKeyName(property); + + ReorderableList reorderableList = null; + if (!_reorderableListsByPropertyName.ContainsKey(key)) + { + reorderableList = new ReorderableList(property.serializedObject, property, true, true, true, true) + { + drawHeaderCallback = (Rect r) => + { + EditorGUI.LabelField(r, string.Format("{0}: {1}", label.text, property.arraySize), GetLabelStyle()); + HandleDragAndDrop(r, reorderableList); + }, + + drawElementCallback = (Rect r, int index, bool isActive, bool isFocused) => + { + SerializedProperty element = property.GetArrayElementAtIndex(index); + r.y += 1.0f; + r.x += 10.0f; + r.width -= 10.0f; + + EditorGUI.PropertyField(new Rect(r.x, r.y, r.width, EditorGUIUtility.singleLineHeight), element, true); + }, + + elementHeightCallback = (int index) => + { + return EditorGUI.GetPropertyHeight(property.GetArrayElementAtIndex(index)) + 4.0f; + } + }; + + _reorderableListsByPropertyName[key] = reorderableList; + } + + reorderableList = _reorderableListsByPropertyName[key]; + + if (rect == default) + { + reorderableList.DoLayoutList(); + } + else + { + reorderableList.DoList(rect); + } + } + else + { + string message = typeof(ReorderableListAttribute).Name + " can be used only on arrays or lists"; + NaughtyEditorGUI.HelpBox_Layout(message, MessageType.Warning, context: property.serializedObject.targetObject); + EditorGUILayout.PropertyField(property, true); + } + } + + public void ClearCache() + { + _reorderableListsByPropertyName.Clear(); + } + + private Object GetAssignableObject(Object obj, ReorderableList list) + { + System.Type listType = PropertyUtility.GetPropertyType(list.serializedProperty); + System.Type elementType = ReflectionUtility.GetListElementType(listType); + + if (elementType == null) + { + return null; + } + + System.Type objType = obj.GetType(); + + if (elementType.IsAssignableFrom(objType)) + { + return obj; + } + + if (objType == typeof(GameObject)) + { + if (typeof(Transform).IsAssignableFrom(elementType)) + { + Transform transform = ((GameObject)obj).transform; + if (elementType == typeof(RectTransform)) + { + RectTransform rectTransform = transform as RectTransform; + return rectTransform; + } + else + { + return transform; + } + } + else if (typeof(MonoBehaviour).IsAssignableFrom(elementType)) + { + return ((GameObject)obj).GetComponent(elementType); + } + } + + return null; + } + + private void HandleDragAndDrop(Rect rect, ReorderableList list) + { + var currentEvent = Event.current; + var usedEvent = false; + + switch (currentEvent.type) + { + case EventType.DragExited: + if (GUI.enabled) + { + HandleUtility.Repaint(); + } + + break; + + case EventType.DragUpdated: + case EventType.DragPerform: + if (rect.Contains(currentEvent.mousePosition) && GUI.enabled) + { + // Check each single object, so we can add multiple objects in a single drag. + bool didAcceptDrag = false; + Object[] references = DragAndDrop.objectReferences; + foreach (Object obj in references) + { + Object assignableObject = GetAssignableObject(obj, list); + if (assignableObject != null) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + if (currentEvent.type == EventType.DragPerform) + { + list.serializedProperty.arraySize++; + int arrayEnd = list.serializedProperty.arraySize - 1; + list.serializedProperty.GetArrayElementAtIndex(arrayEnd).objectReferenceValue = assignableObject; + didAcceptDrag = true; + } + } + } + + if (didAcceptDrag) + { + GUI.changed = true; + DragAndDrop.AcceptDrag(); + usedEvent = true; + } + } + + break; + } + + if (usedEvent) + { + currentEvent.Use(); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs new file mode 100644 index 00000000..0490b50a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public abstract class SpecialCasePropertyDrawerBase + { + public void OnGUI(Rect rect, SerializedProperty property) + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + OnGUI_Internal(rect, property, PropertyUtility.GetLabel(property)); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + public float GetPropertyHeight(SerializedProperty property) + { + return GetPropertyHeight_Internal(property); + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + protected abstract float GetPropertyHeight_Internal(SerializedProperty property); + } + + public static class SpecialCaseDrawerAttributeExtensions + { + private static Dictionary _drawersByAttributeType; + + static SpecialCaseDrawerAttributeExtensions() + { + _drawersByAttributeType = new Dictionary(); + _drawersByAttributeType[typeof(ReorderableListAttribute)] = ReorderableListPropertyDrawer.Instance; + } + + public static SpecialCasePropertyDrawerBase GetDrawer(this SpecialCaseDrawerAttribute attr) + { + SpecialCasePropertyDrawerBase drawer; + if (_drawersByAttributeType.TryGetValue(attr.GetType(), out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs new file mode 100644 index 00000000..0e7d3b7b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class MaxValuePropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + MaxValueAttribute maxValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue > maxValueAttribute.MaxValue) + { + property.intValue = (int)maxValueAttribute.MaxValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue > maxValueAttribute.MaxValue) + { + property.floatValue = maxValueAttribute.MaxValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2) + { + property.vector2Value = Vector2.Min(property.vector2Value, new Vector2(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3) + { + property.vector3Value = Vector3.Min(property.vector3Value, new Vector3(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector4) + { + property.vector4Value = Vector4.Min(property.vector4Value, new Vector4(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + property.vector2IntValue = Vector2Int.Min(property.vector2IntValue, new Vector2Int((int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3Int) + { + property.vector3IntValue = Vector3Int.Min(property.vector3IntValue, new Vector3Int((int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue)); + } + else + { + string warning = maxValueAttribute.GetType().Name + " can be used only on int, float, Vector or VectorInt fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs new file mode 100644 index 00000000..80df0695 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class MinValuePropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + MinValueAttribute minValueAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue < minValueAttribute.MinValue) + { + property.intValue = (int)minValueAttribute.MinValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue < minValueAttribute.MinValue) + { + property.floatValue = minValueAttribute.MinValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2) + { + property.vector2Value = Vector2.Max(property.vector2Value, new Vector2(minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3) + { + property.vector3Value = Vector3.Max(property.vector3Value, new Vector3(minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector4) + { + property.vector4Value = Vector4.Max(property.vector4Value, new Vector4(minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + property.vector2IntValue = Vector2Int.Max(property.vector2IntValue, new Vector2Int((int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3Int) + { + property.vector3IntValue = Vector3Int.Max(property.vector3IntValue, new Vector3Int((int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue)); + } + else + { + string warning = minValueAttribute.GetType().Name + " can be used only on int, float, Vector or VectorInt fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs new file mode 100644 index 00000000..1c0411fc --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyValidatorBase + { + public abstract void ValidateProperty(SerializedProperty property); + } + + public static class ValidatorAttributeExtensions + { + private static Dictionary _validatorsByAttributeType; + + static ValidatorAttributeExtensions() + { + _validatorsByAttributeType = new Dictionary(); + _validatorsByAttributeType[typeof(MinValueAttribute)] = new MinValuePropertyValidator(); + _validatorsByAttributeType[typeof(MaxValueAttribute)] = new MaxValuePropertyValidator(); + _validatorsByAttributeType[typeof(RequiredAttribute)] = new RequiredPropertyValidator(); + _validatorsByAttributeType[typeof(ValidateInputAttribute)] = new ValidateInputPropertyValidator(); + } + + public static PropertyValidatorBase GetValidator(this ValidatorAttribute attr) + { + PropertyValidatorBase validator; + if (_validatorsByAttributeType.TryGetValue(attr.GetType(), out validator)) + { + return validator; + } + else + { + return null; + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs new file mode 100644 index 00000000..11336503 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs @@ -0,0 +1,31 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class RequiredPropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + RequiredAttribute requiredAttribute = PropertyUtility.GetAttribute(property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue == null) + { + string errorMessage = property.name + " is required"; + if (!string.IsNullOrEmpty(requiredAttribute.Message)) + { + errorMessage = requiredAttribute.Message; + } + + NaughtyEditorGUI.HelpBox_Layout(errorMessage, MessageType.Error, context: property.serializedObject.targetObject); + } + } + else + { + string warning = requiredAttribute.GetType().Name + " works only on reference types"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs new file mode 100644 index 00000000..1252c702 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs @@ -0,0 +1,76 @@ +using UnityEditor; +using System.Reflection; +using System; + +namespace NaughtyAttributes.Editor +{ + public class ValidateInputPropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + ValidateInputAttribute validateInputAttribute = PropertyUtility.GetAttribute(property); + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + MethodInfo validationCallback = ReflectionUtility.GetMethod(target, validateInputAttribute.CallbackName); + + if (validationCallback != null && + validationCallback.ReturnType == typeof(bool)) + { + ParameterInfo[] callbackParameters = validationCallback.GetParameters(); + + if (callbackParameters.Length == 0) + { + if (!(bool)validationCallback.Invoke(target, null)) + { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) + { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", MessageType.Error, context: property.serializedObject.targetObject); + } + else + { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, MessageType.Error, context: property.serializedObject.targetObject); + } + } + } + else if (callbackParameters.Length == 1) + { + FieldInfo fieldInfo = ReflectionUtility.GetField(target, property.name); + Type fieldType = fieldInfo.FieldType; + Type parameterType = callbackParameters[0].ParameterType; + + if (fieldType == parameterType) + { + if (!(bool)validationCallback.Invoke(target, new object[] { fieldInfo.GetValue(target) })) + { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) + { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", MessageType.Error, context: property.serializedObject.targetObject); + } + else + { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, MessageType.Error, context: property.serializedObject.targetObject); + } + } + } + else + { + string warning = "The field type is not the same as the callback's parameter type"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + else + { + string warning = + validateInputAttribute.GetType().Name + + " needs a callback with boolean return type and an optional single parameter of the same type as the field"; + + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta new file mode 100644 index 00000000..40e857c7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: acb4475c71a3fe947a81ced84ab89c6d +folderAsset: yes +timeCreated: 1508062761 +licenseType: Store +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs new file mode 100644 index 00000000..ca5f4ca8 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs @@ -0,0 +1,55 @@ +using UnityEngine; +using System.Reflection; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class ButtonUtility + { + public static bool IsEnabled(Object target, MethodInfo method) + { + EnableIfAttributeBase enableIfAttribute = method.GetCustomAttribute(); + if (enableIfAttribute == null) + { + return true; + } + + List conditionValues = PropertyUtility.GetConditionValues(target, enableIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = PropertyUtility.GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + return enabled; + } + else + { + string message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + } + + public static bool IsVisible(Object target, MethodInfo method) + { + ShowIfAttributeBase showIfAttribute = method.GetCustomAttribute(); + if (showIfAttribute == null) + { + return true; + } + + List conditionValues = PropertyUtility.GetConditionValues(target, showIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = PropertyUtility.GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + return enabled; + } + else + { + string message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs new file mode 100644 index 00000000..ee17a7a7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs @@ -0,0 +1,380 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class NaughtyEditorGUI + { + public const float IndentLength = 15.0f; + public const float HorizontalSpacing = 2.0f; + + private static GUIStyle _buttonStyle = new GUIStyle(GUI.skin.button) { richText = true }; + + private delegate void PropertyFieldFunction(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren); + + public static void PropertyField(Rect rect, SerializedProperty property, bool includeChildren) + { + PropertyField_Implementation(rect, property, includeChildren, DrawPropertyField); + } + + public static void PropertyField_Layout(SerializedProperty property, bool includeChildren) + { + Rect dummyRect = new Rect(); + PropertyField_Implementation(dummyRect, property, includeChildren, DrawPropertyField_Layout); + } + + private static void DrawPropertyField(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) + { + EditorGUI.PropertyField(rect, property, label, includeChildren); + } + + private static void DrawPropertyField_Layout(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) + { + EditorGUILayout.PropertyField(property, label, includeChildren); + } + + private static void PropertyField_Implementation(Rect rect, SerializedProperty property, bool includeChildren, PropertyFieldFunction propertyFieldFunction) + { + SpecialCaseDrawerAttribute specialCaseAttribute = PropertyUtility.GetAttribute(property); + if (specialCaseAttribute != null) + { + specialCaseAttribute.GetDrawer().OnGUI(rect, property); + } + else + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + propertyFieldFunction.Invoke(rect, property, PropertyUtility.GetLabel(property), includeChildren); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + } + + public static float GetIndentLength(Rect sourceRect) + { + Rect indentRect = EditorGUI.IndentedRect(sourceRect); + float indentLength = indentRect.x - sourceRect.x; + + return indentLength; + } + + public static void BeginBoxGroup_Layout(string label = "") + { + EditorGUILayout.BeginVertical(GUI.skin.box); + if (!string.IsNullOrEmpty(label)) + { + EditorGUILayout.LabelField(label, EditorStyles.boldLabel); + } + } + + public static void EndBoxGroup_Layout() + { + EditorGUILayout.EndVertical(); + } + + /// + /// Creates a dropdown + /// + /// The rect the defines the position and size of the dropdown in the inspector + /// The serialized object that is being updated + /// The target object that contains the dropdown + /// The field of the target object that holds the currently selected dropdown value + /// The label of the dropdown + /// The index of the value from the values array + /// The values of the dropdown + /// The display options for the values + public static void Dropdown( + Rect rect, SerializedObject serializedObject, object target, FieldInfo dropdownField, + string label, int selectedValueIndex, object[] values, string[] displayOptions) + { + EditorGUI.BeginChangeCheck(); + + int newIndex = EditorGUI.Popup(rect, label, selectedValueIndex, displayOptions); + object newValue = values[newIndex]; + + object dropdownValue = dropdownField.GetValue(target); + if (dropdownValue == null || !dropdownValue.Equals(newValue)) + { + Undo.RecordObject(serializedObject.targetObject, "Dropdown"); + + // TODO: Problem with structs, because they are value type. + // The solution is to make boxing/unboxing but unfortunately I don't know the compile time type of the target object + dropdownField.SetValue(target, newValue); + } + } + + public static void Button(UnityEngine.Object target, MethodInfo methodInfo) + { + bool visible = ButtonUtility.IsVisible(target, methodInfo); + if (!visible) + { + return; + } + + if (methodInfo.GetParameters().All(p => p.IsOptional)) + { + ButtonAttribute buttonAttribute = (ButtonAttribute)methodInfo.GetCustomAttributes(typeof(ButtonAttribute), true)[0]; + string buttonText = string.IsNullOrEmpty(buttonAttribute.Text) ? ObjectNames.NicifyVariableName(methodInfo.Name) : buttonAttribute.Text; + + bool buttonEnabled = ButtonUtility.IsEnabled(target, methodInfo); + + EButtonEnableMode mode = buttonAttribute.SelectedEnableMode; + buttonEnabled &= + mode == EButtonEnableMode.Always || + mode == EButtonEnableMode.Editor && !Application.isPlaying || + mode == EButtonEnableMode.Playmode && Application.isPlaying; + + bool methodIsCoroutine = methodInfo.ReturnType == typeof(IEnumerator); + if (methodIsCoroutine) + { + buttonEnabled &= (Application.isPlaying ? true : false); + } + + EditorGUI.BeginDisabledGroup(!buttonEnabled); + + if (GUILayout.Button(buttonText, _buttonStyle)) + { + object[] defaultParams = methodInfo.GetParameters().Select(p => p.DefaultValue).ToArray(); + IEnumerator methodResult = methodInfo.Invoke(target, defaultParams) as IEnumerator; + + if (!Application.isPlaying) + { + // Set target object and scene dirty to serialize changes to disk + EditorUtility.SetDirty(target); + + PrefabStage stage = PrefabStageUtility.GetCurrentPrefabStage(); + if (stage != null) + { + // Prefab mode + EditorSceneManager.MarkSceneDirty(stage.scene); + } + else + { + // Normal scene + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + } + else if (methodResult != null && target is MonoBehaviour behaviour) + { + behaviour.StartCoroutine(methodResult); + } + } + + EditorGUI.EndDisabledGroup(); + } + else + { + string warning = typeof(ButtonAttribute).Name + " works only on methods with no parameters"; + HelpBox_Layout(warning, MessageType.Warning, context: target, logToConsole: true); + } + } + + public static void NativeProperty_Layout(UnityEngine.Object target, PropertyInfo property) + { + object value = property.GetValue(target, null); + + if (value == null) + { + string warning = string.Format("{0} is null. {1} doesn't support reference types with null value", ObjectNames.NicifyVariableName(property.Name), typeof(ShowNativePropertyAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + else if (!Field_Layout(value, ObjectNames.NicifyVariableName(property.Name))) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNativePropertyAttribute).Name, property.PropertyType.Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + } + + public static void NonSerializedField_Layout(UnityEngine.Object target, FieldInfo field) + { + object value = field.GetValue(target); + + if (value == null) + { + string warning = string.Format("{0} is null. {1} doesn't support reference types with null value", ObjectNames.NicifyVariableName(field.Name), typeof(ShowNonSerializedFieldAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + else if (!Field_Layout(value, ObjectNames.NicifyVariableName(field.Name))) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNonSerializedFieldAttribute).Name, field.FieldType.Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + } + + public static void HorizontalLine(Rect rect, float height, Color color) + { + rect.height = height; + EditorGUI.DrawRect(rect, color); + } + + public static void HelpBox(Rect rect, string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = false) + { + EditorGUI.HelpBox(rect, message, type); + + if (logToConsole) + { + DebugLogMessage(message, type, context); + } + } + + public static void HelpBox_Layout(string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = false) + { + EditorGUILayout.HelpBox(message, type); + + if (logToConsole) + { + DebugLogMessage(message, type, context); + } + } + + public static bool Field_Layout(object value, string label) + { + using (new EditorGUI.DisabledScope(disabled: true)) + { + bool isDrawn = true; + Type valueType = value.GetType(); + + if (valueType == typeof(bool)) + { + EditorGUILayout.Toggle(label, (bool)value); + } + else if (valueType == typeof(short)) + { + EditorGUILayout.IntField(label, (short)value); + } + else if (valueType == typeof(ushort)) + { + EditorGUILayout.IntField(label, (ushort)value); + } + else if (valueType == typeof(int)) + { + EditorGUILayout.IntField(label, (int)value); + } + else if (valueType == typeof(uint)) + { + EditorGUILayout.LongField(label, (uint)value); + } + else if (valueType == typeof(long)) + { + EditorGUILayout.LongField(label, (long)value); + } + else if (valueType == typeof(ulong)) + { + EditorGUILayout.TextField(label, ((ulong)value).ToString()); + } + else if (valueType == typeof(float)) + { + EditorGUILayout.FloatField(label, (float)value); + } + else if (valueType == typeof(double)) + { + EditorGUILayout.DoubleField(label, (double)value); + } + else if (valueType == typeof(string)) + { + EditorGUILayout.TextField(label, (string)value); + } + else if (valueType == typeof(Vector2)) + { + EditorGUILayout.Vector2Field(label, (Vector2)value); + } + else if (valueType == typeof(Vector3)) + { + EditorGUILayout.Vector3Field(label, (Vector3)value); + } + else if (valueType == typeof(Vector4)) + { + EditorGUILayout.Vector4Field(label, (Vector4)value); + } + else if (valueType == typeof(Vector2Int)) + { + EditorGUILayout.Vector2IntField(label, (Vector2Int)value); + } + else if (valueType == typeof(Vector3Int)) + { + EditorGUILayout.Vector3IntField(label, (Vector3Int)value); + } + else if (valueType == typeof(Color)) + { + EditorGUILayout.ColorField(label, (Color)value); + } + else if (valueType == typeof(Bounds)) + { + EditorGUILayout.BoundsField(label, (Bounds)value); + } + else if (valueType == typeof(Rect)) + { + EditorGUILayout.RectField(label, (Rect)value); + } + else if (valueType == typeof(RectInt)) + { + EditorGUILayout.RectIntField(label, (RectInt)value); + } + else if (typeof(UnityEngine.Object).IsAssignableFrom(valueType)) + { + EditorGUILayout.ObjectField(label, (UnityEngine.Object)value, valueType, true); + } + else if (valueType.BaseType == typeof(Enum)) + { + EditorGUILayout.EnumPopup(label, (Enum)value); + } + else if (valueType.BaseType == typeof(System.Reflection.TypeInfo)) + { + EditorGUILayout.TextField(label, value.ToString()); + } + else + { + isDrawn = false; + } + + return isDrawn; + } + } + + private static void DebugLogMessage(string message, MessageType type, UnityEngine.Object context) + { + switch (type) + { + case MessageType.None: + case MessageType.Info: + Debug.Log(message, context); + break; + case MessageType.Warning: + Debug.LogWarning(message, context); + break; + case MessageType.Error: + Debug.LogError(message, context); + break; + } + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta new file mode 100644 index 00000000..782824e0 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6ff27ff7705d6064e935bb2159a1b453 +timeCreated: 1510926159 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs new file mode 100644 index 00000000..e42db4bd --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs @@ -0,0 +1,374 @@ +using UnityEditor; +using System.Reflection; +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyUtility + { + public static T GetAttribute(SerializedProperty property) where T : class + { + T[] attributes = GetAttributes(property); + return (attributes.Length > 0) ? attributes[0] : null; + } + + public static T[] GetAttributes(SerializedProperty property) where T : class + { + FieldInfo fieldInfo = ReflectionUtility.GetField(GetTargetObjectWithProperty(property), property.name); + if (fieldInfo == null) + { + return new T[] { }; + } + + return (T[])fieldInfo.GetCustomAttributes(typeof(T), true); + } + + public static GUIContent GetLabel(SerializedProperty property) + { + LabelAttribute labelAttribute = GetAttribute(property); + string labelText = (labelAttribute == null) + ? property.displayName + : labelAttribute.Label; + + GUIContent label = new GUIContent(labelText); + return label; + } + + public static void CallOnValueChangedCallbacks(SerializedProperty property) + { + OnValueChangedAttribute[] onValueChangedAttributes = GetAttributes(property); + if (onValueChangedAttributes.Length == 0) + { + return; + } + + object target = GetTargetObjectWithProperty(property); + property.serializedObject.ApplyModifiedProperties(); // We must apply modifications so that the new value is updated in the serialized object + + foreach (var onValueChangedAttribute in onValueChangedAttributes) + { + MethodInfo callbackMethod = ReflectionUtility.GetMethod(target, onValueChangedAttribute.CallbackName); + if (callbackMethod != null && + callbackMethod.ReturnType == typeof(void) && + callbackMethod.GetParameters().Length == 0) + { + callbackMethod.Invoke(target, new object[] { }); + } + else + { + string warning = string.Format( + "{0} can invoke only methods with 'void' return type and 0 parameters", + onValueChangedAttribute.GetType().Name); + + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } + + public static bool IsEnabled(SerializedProperty property) + { + ReadOnlyAttribute readOnlyAttribute = GetAttribute(property); + if (readOnlyAttribute != null) + { + return false; + } + + EnableIfAttributeBase enableIfAttribute = GetAttribute(property); + if (enableIfAttribute == null) + { + return true; + } + + object target = GetTargetObjectWithProperty(property); + + // deal with enum conditions + if (enableIfAttribute.EnumValue != null) + { + Enum value = GetEnumValue(target, enableIfAttribute.Conditions[0]); + if (value != null) + { + bool matched = value.GetType().GetCustomAttribute() == null + ? enableIfAttribute.EnumValue.Equals(value) + : value.HasFlag(enableIfAttribute.EnumValue); + + return matched != enableIfAttribute.Inverted; + } + + string message = enableIfAttribute.GetType().Name + " needs a valid enum field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + // deal with normal conditions + List conditionValues = GetConditionValues(target, enableIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + return enabled; + } + else + { + string message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + } + + public static bool IsVisible(SerializedProperty property) + { + ShowIfAttributeBase showIfAttribute = GetAttribute(property); + if (showIfAttribute == null) + { + return true; + } + + object target = GetTargetObjectWithProperty(property); + + // deal with enum conditions + if (showIfAttribute.EnumValue != null) + { + Enum value = GetEnumValue(target, showIfAttribute.Conditions[0]); + if (value != null) + { + bool matched = value.GetType().GetCustomAttribute() == null + ? showIfAttribute.EnumValue.Equals(value) + : value.HasFlag(showIfAttribute.EnumValue); + + return matched != showIfAttribute.Inverted; + } + + string message = showIfAttribute.GetType().Name + " needs a valid enum field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + // deal with normal conditions + List conditionValues = GetConditionValues(target, showIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + return enabled; + } + else + { + string message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + } + + /// + /// Gets an enum value from reflection. + /// + /// The target object. + /// Name of a field, property, or method that returns an enum. + /// Null if can't find an enum value. + internal static Enum GetEnumValue(object target, string enumName) + { + FieldInfo enumField = ReflectionUtility.GetField(target, enumName); + if (enumField != null && enumField.FieldType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumField.GetValue(target); + } + + PropertyInfo enumProperty = ReflectionUtility.GetProperty(target, enumName); + if (enumProperty != null && enumProperty.PropertyType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumProperty.GetValue(target); + } + + MethodInfo enumMethod = ReflectionUtility.GetMethod(target, enumName); + if (enumMethod != null && enumMethod.ReturnType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumMethod.Invoke(target, null); + } + + return null; + } + + internal static List GetConditionValues(object target, string[] conditions) + { + List conditionValues = new List(); + foreach (var condition in conditions) + { + FieldInfo conditionField = ReflectionUtility.GetField(target, condition); + if (conditionField != null && + conditionField.FieldType == typeof(bool)) + { + conditionValues.Add((bool)conditionField.GetValue(target)); + } + + PropertyInfo conditionProperty = ReflectionUtility.GetProperty(target, condition); + if (conditionProperty != null && + conditionProperty.PropertyType == typeof(bool)) + { + conditionValues.Add((bool)conditionProperty.GetValue(target)); + } + + MethodInfo conditionMethod = ReflectionUtility.GetMethod(target, condition); + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) + { + conditionValues.Add((bool)conditionMethod.Invoke(target, null)); + } + } + + return conditionValues; + } + + internal static bool GetConditionsFlag(List conditionValues, EConditionOperator conditionOperator, bool invert) + { + bool flag; + if (conditionOperator == EConditionOperator.And) + { + flag = true; + foreach (var value in conditionValues) + { + flag = flag && value; + } + } + else + { + flag = false; + foreach (var value in conditionValues) + { + flag = flag || value; + } + } + + if (invert) + { + flag = !flag; + } + + return flag; + } + + public static Type GetPropertyType(SerializedProperty property) + { + object obj = GetTargetObjectOfProperty(property); + Type objType = obj.GetType(); + + return objType; + } + + /// + /// Gets the object the property represents. + /// + /// + /// + public static object GetTargetObjectOfProperty(SerializedProperty property) + { + if (property == null) + { + return null; + } + + string path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + string[] elements = path.Split('.'); + + foreach (var element in elements) + { + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } + else + { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + /// + /// Gets the object that the property is a member of + /// + /// + /// + public static object GetTargetObjectWithProperty(SerializedProperty property) + { + string path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + string[] elements = path.Split('.'); + + for (int i = 0; i < elements.Length - 1; i++) + { + string element = elements[i]; + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } + else + { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + private static object GetValue_Imp(object source, string name) + { + if (source == null) + { + return null; + } + + Type type = source.GetType(); + + while (type != null) + { + FieldInfo field = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + if (field != null) + { + return field.GetValue(source); + } + + PropertyInfo property = type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (property != null) + { + return property.GetValue(source, null); + } + + type = type.BaseType; + } + + return null; + } + + private static object GetValue_Imp(object source, string name, int index) + { + IEnumerable enumerable = GetValue_Imp(source, name) as IEnumerable; + if (enumerable == null) + { + return null; + } + + IEnumerator enumerator = enumerable.GetEnumerator(); + for (int i = 0; i <= index; i++) + { + if (!enumerator.MoveNext()) + { + return null; + } + } + + return enumerator.Current; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs new file mode 100644 index 00000000..57d28eae --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class ReflectionUtility + { + public static IEnumerable GetAllFields(object target, Func predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable fieldInfos = types[i] + .GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var fieldInfo in fieldInfos) + { + yield return fieldInfo; + } + } + } + + public static IEnumerable GetAllProperties(object target, Func predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable propertyInfos = types[i] + .GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var propertyInfo in propertyInfos) + { + yield return propertyInfo; + } + } + } + + public static IEnumerable GetAllMethods(object target, Func predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable methodInfos = types[i] + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var methodInfo in methodInfos) + { + yield return methodInfo; + } + } + } + + public static FieldInfo GetField(object target, string fieldName) + { + return GetAllFields(target, f => f.Name.Equals(fieldName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static PropertyInfo GetProperty(object target, string propertyName) + { + return GetAllProperties(target, p => p.Name.Equals(propertyName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static MethodInfo GetMethod(object target, string methodName) + { + return GetAllMethods(target, m => m.Name.Equals(methodName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static Type GetListElementType(Type listType) + { + if (listType.IsGenericType) + { + return listType.GetGenericArguments()[0]; + } + else + { + return listType.GetElementType(); + } + } + + /// + /// Get type and all base types of target, sorted as following: + /// [target's type, base type, base's base type, ...] + /// + /// + /// + private static List GetSelfAndBaseTypes(object target) + { + List types = new List() + { + target.GetType() + }; + + while (types.Last().BaseType != null) + { + types.Add(types.Last().BaseType); + } + + return types; + } + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta new file mode 100644 index 00000000..fc012150 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1d86c581f02a55f458e36bf7e81e3084 +timeCreated: 1520258793 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs b/Assets/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs new file mode 100644 index 00000000..e463f498 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs @@ -0,0 +1,34 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + internal class SavedBool + { + private bool _value; + private string _name; + + public bool Value + { + get + { + return _value; + } + set + { + if (_value == value) + { + return; + } + + _value = value; + EditorPrefs.SetBool(_name, value); + } + } + + public SavedBool(string name, bool value) + { + _name = name; + _value = EditorPrefs.GetBool(name, value); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta b/Assets/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta rename to Assets/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test.meta b/Assets/NaughtyAttributes/Scripts/Test.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test.meta rename to Assets/NaughtyAttributes/Scripts/Test.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs b/Assets/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs new file mode 100644 index 00000000..c5a371cb --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class AnimatorParamTest : MonoBehaviour + { + public Animator animator0; + + [AnimatorParam("animator0")] + public int hash0; + + [AnimatorParam("animator0")] + public string name0; + + public AnimatorParamNest1 nest1; + + [Button("Log 'hash0' and 'name0'")] + private void TestLog() + { + Debug.Log($"hash0 = {hash0}"); + Debug.Log($"name0 = {name0}"); + Debug.Log($"Animator.StringToHash(name0) = {Animator.StringToHash(name0)}"); + } + } + + [System.Serializable] + public class AnimatorParamNest1 + { + public Animator animator1; + private Animator Animator1 => animator1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Bool)] + public int hash1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Float)] + public string name1; + + public AnimatorParamNest2 nest2; + } + + [System.Serializable] + public class AnimatorParamNest2 + { + public Animator animator2; + private Animator GetAnimator2() => animator2; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Int)] + public int hash1; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Trigger)] + public string name1; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs b/Assets/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs new file mode 100644 index 00000000..789d1f8b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class BoxGroupTest : MonoBehaviour + { + [BoxGroup("Integers")] + public int int0; + [BoxGroup("Integers")] + public int int1; + + [BoxGroup("Floats")] + public float float0; + [BoxGroup("Floats")] + public float float1; + + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [BoxGroup] + public Transform trans0; + [BoxGroup] + public Transform trans1; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ButtonTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ButtonTest.cs new file mode 100644 index 00000000..d7f6f04d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ButtonTest.cs @@ -0,0 +1,39 @@ +using System.Collections; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ButtonTest : MonoBehaviour + { + public int myInt; + + [Button(enabledMode: EButtonEnableMode.Always)] + private void IncrementMyInt() + { + myInt++; + } + + [Button("Decrement My Int", EButtonEnableMode.Editor)] + private void DecrementMyInt() + { + myInt--; + } + + [Button(enabledMode: EButtonEnableMode.Playmode)] + private void LogMyInt(string prefix = "MyInt = ") + { + Debug.Log(prefix + myInt); + } + + [Button("StartCoroutine")] + private IEnumerator IncrementMyIntCoroutine() + { + int seconds = 5; + for (int i = 0; i < seconds; i++) + { + myInt++; + yield return new WaitForSeconds(1.0f); + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs b/Assets/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs new file mode 100644 index 00000000..f33f2d21 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs @@ -0,0 +1,37 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class CurveRangeTest : MonoBehaviour + { + [CurveRange(0f, 0f, 1f, 1f, EColor.Yellow)] + public AnimationCurve[] curves; + + [CurveRange(-1, -1, 1, 1, EColor.Red)] + public AnimationCurve curve; + + [CurveRange(EColor.Orange)] + public AnimationCurve curve1; + + [CurveRange(0, 0, 10, 10)] + public AnimationCurve curve2; + + public CurveRangeNest1 nest1; + + [System.Serializable] + public class CurveRangeNest1 + { + [CurveRange(0, 0, 1, 1, EColor.Green)] + public AnimationCurve curve; + + public CurveRangeNest2 nest2; + } + + [System.Serializable] + public class CurveRangeNest2 + { + [CurveRange(0, 0, 5, 5, EColor.Blue)] + public AnimationCurve curve; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/DisableIfTest.cs b/Assets/NaughtyAttributes/Scripts/Test/DisableIfTest.cs new file mode 100644 index 00000000..6913166c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/DisableIfTest.cs @@ -0,0 +1,120 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class DisableIfTest : MonoBehaviour + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + + [DisableIf(EConditionOperator.And, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAll; + + [DisableIf(EConditionOperator.Or, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAny; + + [DisableIf("enum1", DisableIfEnum.Case0)] + [ReorderableList] + public int[] disableIfEnum; + + [DisableIf("enum2", DisableIfEnumFlag.Flag0)] + [ReorderableList] + public int[] disableIfEnumFlag; + + [DisableIf("enum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [ReorderableList] + public int[] disableIfEnumFlagMulti; + + public DisableIfNest1 nest1; + } + + [System.Serializable] + public class DisableIfNest1 + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + public bool Disable1 { get { return disable1; } } + public bool Disable2 { get { return disable2; } } + public DisableIfEnum Enum1 { get { return enum1; } } + public DisableIfEnumFlag Enum2 { get { return enum2; } } + + [DisableIf(EConditionOperator.And, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAll = 1; + + [DisableIf(EConditionOperator.Or, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAny = 2; + + [DisableIf("Enum1", DisableIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnum = 3; + + [DisableIf("Enum2", DisableIfEnumFlag.Flag0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnumFlag; + + [DisableIf("Enum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnumFlagMulti; + + public DisableIfNest2 nest2; + } + + [System.Serializable] + public class DisableIfNest2 + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + public bool GetDisable1() { return disable1; } + public bool GetDisable2() { return disable2; } + public DisableIfEnum GetEnum1() { return enum1; } + public DisableIfEnumFlag GetEnum2() { return enum2; } + + [DisableIf(EConditionOperator.And, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [DisableIf(EConditionOperator.Or, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + [DisableIf("GetEnum1", DisableIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnum = new Vector2(0.25f, 0.75f); + + [DisableIf("GetEnum2", DisableIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 disableIfEnumFlag; + + [DisableIf("GetEnum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 disableIfEnumFlagMulti; + } + + [System.Serializable] + public enum DisableIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum DisableIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/DropdownTest.cs b/Assets/NaughtyAttributes/Scripts/Test/DropdownTest.cs new file mode 100644 index 00000000..723eca8f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/DropdownTest.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + public class DropdownTest : MonoBehaviour + { + [Dropdown("intValues")] + public int intValue; + +#pragma warning disable 414 + private int[] intValues = new int[] { 1, 2, 3 }; +#pragma warning restore 414 + + public DropdownNest1 nest1; + } + + [System.Serializable] + public class DropdownNest1 + { + [Dropdown("StringValues")] + public string stringValue; + + private List StringValues { get { return new List() { "A", "B", "C" }; } } + + public DropdownNest2 nest2; + } + + [System.Serializable] + public class DropdownNest2 + { + [Dropdown("GetVectorValues")] + public Vector3 vectorValue; + + private DropdownList GetVectorValues() + { + return new DropdownList() + { + { "Right", Vector3.right }, + { "Up", Vector3.up }, + { "Forward", Vector3.forward } + }; + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/EnableIfTest.cs b/Assets/NaughtyAttributes/Scripts/Test/EnableIfTest.cs new file mode 100644 index 00000000..6e744f51 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/EnableIfTest.cs @@ -0,0 +1,120 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class EnableIfTest : MonoBehaviour + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + + [EnableIf(EConditionOperator.And, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAll; + + [EnableIf(EConditionOperator.Or, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAny; + + [EnableIf("enum1", EnableIfEnum.Case0)] + [ReorderableList] + public int[] enableIfEnum; + + [EnableIf("enum2", EnableIfEnumFlag.Flag0)] + [ReorderableList] + public int[] enableIfEnumFlag; + + [EnableIf("enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [ReorderableList] + public int[] enableIfEnumFlagMulti; + + public EnableIfNest1 nest1; + } + + [System.Serializable] + public class EnableIfNest1 + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + public bool Enable1 { get { return enable1; } } + public bool Enable2 { get { return enable2; } } + public EnableIfEnum Enum1 { get { return enum1; } } + public EnableIfEnumFlag Enum2 { get { return enum2; } } + + [EnableIf(EConditionOperator.And, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAll; + + [EnableIf(EConditionOperator.Or, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAny; + + [EnableIf("Enum1", EnableIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnum; + + [EnableIf("Enum2", EnableIfEnumFlag.Flag0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnumFlag; + + [EnableIf("Enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnumFlagMulti; + + public EnableIfNest2 nest2; + } + + [System.Serializable] + public class EnableIfNest2 + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + public bool GetEnable1() { return enable1; } + public bool GetEnable2() { return enable2; } + public EnableIfEnum GetEnum1() { return enum1; } + public EnableIfEnumFlag GetEnum2() { return enum2; } + + [EnableIf(EConditionOperator.And, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [EnableIf(EConditionOperator.Or, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + [EnableIf("GetEnum1", EnableIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnum = new Vector2(0.25f, 0.75f); + + [EnableIf("GetEnum2", EnableIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnumFlag; + + [EnableIf("GetEnum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnumFlagMulti; + } + + [System.Serializable] + public enum EnableIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum EnableIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs b/Assets/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs new file mode 100644 index 00000000..94723346 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public enum TestEnum + { + None = 0, + B = 1 << 0, + C = 1 << 1, + D = 1 << 2, + E = 1 << 3, + F = 1 << 4, + All = ~0 + } + + public class EnumFlagsTest : MonoBehaviour + { + [EnumFlags] + public TestEnum flags0; + + public EnumFlagsNest1 nest1; + } + + [System.Serializable] + public class EnumFlagsNest1 + { + [EnumFlags] + public TestEnum flags1; + + public EnumFlagsNest2 nest2; + } + + [System.Serializable] + public class EnumFlagsNest2 + { + [EnumFlags] + public TestEnum flags2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ExpandableTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ExpandableTest.cs new file mode 100644 index 00000000..8c08b8c7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ExpandableTest.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ExpandableTest : MonoBehaviour + { + // See #294 + public int precedingField = 5; + + [Expandable] + public ScriptableObject obj0; + + public ExpandableScriptableObjectNest1 nest1; + } + + [System.Serializable] + public class ExpandableScriptableObjectNest1 + { + [Expandable] + public ScriptableObject obj1; + + public ExpandableScriptableObjectNest2 nest2; + } + + [System.Serializable] + public class ExpandableScriptableObjectNest2 + { + [Expandable] + public ScriptableObject obj2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/FoldoutTest.cs b/Assets/NaughtyAttributes/Scripts/Test/FoldoutTest.cs new file mode 100644 index 00000000..c171cc84 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/FoldoutTest.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class FoldoutTest : MonoBehaviour + { + [Foldout("Integers")] + public int int0; + [Foldout("Integers")] + public int int1; + + [Foldout("Floats")] + public float float0; + [Foldout("Floats")] + public float float1; + + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [Foldout("Transforms")] + public Transform trans0; + [Foldout("Transforms")] + public Transform trans1; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/HideIfTest.cs b/Assets/NaughtyAttributes/Scripts/Test/HideIfTest.cs new file mode 100644 index 00000000..ec5c7c1a --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/HideIfTest.cs @@ -0,0 +1,119 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class HideIfTest : MonoBehaviour + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + + [HideIf(EConditionOperator.And, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAll; + + [HideIf(EConditionOperator.Or, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAny; + + [HideIf("enum1", HideIfEnum.Case0)] + [ReorderableList] + public int[] hideIfEnum; + + [HideIf("enum2", HideIfEnumFlag.Flag0)] + [ReorderableList] + public int[] hideIfEnumFlag; + + [HideIf("enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [ReorderableList] + public int[] hideIfEnumFlagMulti; + + public HideIfNest1 nest1; + } + + [System.Serializable] + public class HideIfNest1 + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + public bool Hide1 { get { return hide1; } } + public bool Hide2 { get { return hide2; } } + public HideIfEnum Enum1 { get { return enum1; } } + public HideIfEnumFlag Enum2 { get { return enum2; } } + + [HideIf(EConditionOperator.And, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAll; + + [HideIf(EConditionOperator.Or, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAny; + + [HideIf("Enum1", HideIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfEnum; + + [HideIf("Enum2", HideIfEnumFlag.Flag0)] + [AllowNesting] + public int hideIfEnumFlag; + + [HideIf("Enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [AllowNesting] + public int hideIfEnumFlagMulti; + + public HideIfNest2 nest2; + } + + [System.Serializable] + public class HideIfNest2 + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + public bool GetHide1() { return hide1; } + public bool GetHide2() { return hide2; } + public HideIfEnum GetEnum1() { return enum1; } + public HideIfEnumFlag GetEnum2() { return enum2; } + + [HideIf(EConditionOperator.And, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAll = new Vector2(0.25f, 0.75f); + + [HideIf(EConditionOperator.Or, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAny = new Vector2(0.25f, 0.75f); + + [HideIf("GetEnum1", HideIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnum = new Vector2(0.25f, 0.75f); + + [HideIf("GetEnum2", HideIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnumFlag; + + [HideIf("GetEnum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnumFlagMulti; + } + + public enum HideIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum HideIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs b/Assets/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs new file mode 100644 index 00000000..2bbe587d --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class HorizontalLineTest : MonoBehaviour + { + [HorizontalLine(color: EColor.Black)] + [Header("Black")] + [HorizontalLine(color: EColor.Blue)] + [Header("Blue")] + [HorizontalLine(color: EColor.Gray)] + [Header("Gray")] + [HorizontalLine(color: EColor.Green)] + [Header("Green")] + [HorizontalLine(color: EColor.Indigo)] + [Header("Indigo")] + [HorizontalLine(color: EColor.Orange)] + [Header("Orange")] + [HorizontalLine(color: EColor.Pink)] + [Header("Pink")] + [HorizontalLine(color: EColor.Red)] + [Header("Red")] + [HorizontalLine(color: EColor.Violet)] + [Header("Violet")] + [HorizontalLine(color: EColor.White)] + [Header("White")] + [HorizontalLine(color: EColor.Yellow)] + [Header("Yellow")] + [HorizontalLine(10.0f)] + [Header("Thick")] + public int line0; + + public HorizontalLineNest1 nest1; + } + + [System.Serializable] + public class HorizontalLineNest1 + { + [HorizontalLine] + public int line1; + + public HorizontalLineNest2 nest2; + } + + [System.Serializable] + public class HorizontalLineNest2 + { + [HorizontalLine] + public int line2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs new file mode 100644 index 00000000..a1dd5f85 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class InfoBoxTest : MonoBehaviour + { + [InfoBox("Normal", EInfoBoxType.Normal)] + public int normal; + + public InfoBoxNest1 nest1; + } + + [System.Serializable] + public class InfoBoxNest1 + { + [InfoBox("Warning", EInfoBoxType.Warning)] + public int warning; + + public InfoBoxNest2 nest2; + } + + [System.Serializable] + public class InfoBoxNest2 + { + [InfoBox("Error", EInfoBoxType.Error)] + public int error; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/InputAxisTest.cs b/Assets/NaughtyAttributes/Scripts/Test/InputAxisTest.cs new file mode 100644 index 00000000..2080e300 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/InputAxisTest.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class InputAxisTest : MonoBehaviour + { + [InputAxis] + public string inputAxis0; + + public InputAxisNest1 nest1; + + [Button] + private void LogInputAxis0() + { + Debug.Log(inputAxis0); + } + } + + [System.Serializable] + public class InputAxisNest1 + { + [InputAxis] + public string inputAxis1; + + public InputAxisNest2 nest2; + } + + [System.Serializable] + public struct InputAxisNest2 + { + [InputAxis] + public string inputAxis2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/LabelTest.cs b/Assets/NaughtyAttributes/Scripts/Test/LabelTest.cs new file mode 100644 index 00000000..5f40e6e7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/LabelTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class LabelTest : MonoBehaviour + { + [Label("Label 0")] + public int int0; + + public LabelNest1 nest1; + } + + [System.Serializable] + public class LabelNest1 + { + [Label("Label 1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + public LabelNest2 nest2; + } + + [System.Serializable] + public class LabelNest2 + { + [Label("Label 2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 vector2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/LabelTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/LayerTest.cs b/Assets/NaughtyAttributes/Scripts/Test/LayerTest.cs new file mode 100644 index 00000000..52ac6fee --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/LayerTest.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class LayerTest : MonoBehaviour + { + [Layer] + public int layerNumber0; + + [Layer] + public string layerName0; + + public LayerNest1 nest1; + + [Button] + public void DebugLog() + { + Debug.LogFormat("{0} = {1}", nameof(layerNumber0), layerNumber0); + Debug.LogFormat("{0} = {1}", nameof(layerName0), layerName0); + Debug.LogFormat("LayerToName({0}) = {1}", layerNumber0, LayerMask.LayerToName(layerNumber0)); + Debug.LogFormat("NameToLayer({0}) = {1}", layerName0, LayerMask.NameToLayer(layerName0)); + } + } + + [System.Serializable] + public class LayerNest1 + { + [Layer] + public int layerNumber1; + + [Layer] + public string layerName1; + + public LayerNest2 nest2; + } + + [System.Serializable] + public struct LayerNest2 + { + [Layer] + public int layerNumber2; + + [Layer] + public string layerName2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LayerTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/LayerTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/LayerTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/LayerTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs b/Assets/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs new file mode 100644 index 00000000..f1ec981c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class MinMaxSliderTest : MonoBehaviour + { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider0 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest1 nest1; + } + + [System.Serializable] + public class MinMaxSliderNest1 + { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider1 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest2 nest2; + } + + [System.Serializable] + public class MinMaxSliderNest2 + { + [MinMaxSlider(1, 11)] + public Vector2Int minMaxSlider2 = new Vector2Int(6, 11); + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs b/Assets/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs new file mode 100644 index 00000000..43d15864 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs @@ -0,0 +1,129 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class MinMaxValueTest : MonoBehaviour + { + [MinValue(0)] + public int min0Int; + + [MaxValue(0)] + public int max0Int; + + [MinValue(0), MaxValue(1)] + public float range01Float; + + [MinValue(0), MaxValue(1)] + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + public Vector4 range01Vector4; + + [MinValue(0)] + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + public Vector2Int max100Vector2Int; + + [MinValue(0)] + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + public Vector3Int max100Vector3Int; + + public MinMaxValueNest1 nest1; + } + + [System.Serializable] + public class MinMaxValueNest1 + { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0Int; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0Int; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01Float; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector4 range01Vector4; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int max100Vector2Int; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int max100Vector3Int; + + public MinMaxValueNest2 nest2; + } + + [System.Serializable] + public class MinMaxValueNest2 + { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0Int; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0Int; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01Float; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector4 range01Vector4; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int max100Vector2Int; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int max100Vector3Int; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef rename to Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta b/Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta rename to Assets/NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs b/Assets/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs new file mode 100644 index 00000000..360df146 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class OnValueChangedTest : MonoBehaviour + { + [OnValueChanged("OnValueChangedMethod1")] + [OnValueChanged("OnValueChangedMethod2")] + public int int0; + + private void OnValueChangedMethod1() + { + Debug.LogFormat("int0: {0}", int0); + } + + private void OnValueChangedMethod2() + { + Debug.LogFormat("int0: {0}", int0); + } + + public OnValueChangedNest1 nest1; + } + + [System.Serializable] + public class OnValueChangedNest1 + { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int1; + + private void OnValueChangedMethod() + { + Debug.LogFormat("int1: {0}", int1); + } + + public OnValueChangedNest2 nest2; + } + + [System.Serializable] + public class OnValueChangedNest2 + { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int2; + + private void OnValueChangedMethod() + { + Debug.LogFormat("int2: {0}", int2); + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs new file mode 100644 index 00000000..05348122 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs @@ -0,0 +1,35 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ProgressBarTest : MonoBehaviour + { + [Header("Constant ProgressBar")] + [ProgressBar("Health", 100, EColor.Red)] + public float health = 50.0f; + + [Header("Nested ProgressBar")] + public ProgressBarNest1 nest1; + + [Header("Dynamic ProgressBar")] + [ProgressBar("Elixir", "maxElixir", color: EColor.Violet)] + public int elixir = 50; + public int maxElixir = 100; + } + + [System.Serializable] + public class ProgressBarNest1 + { + [ProgressBar("Mana", 100, EColor.Blue)] + public float mana = 25.0f; + + public ProgressBarNest2 nest2; + } + + [System.Serializable] + public class ProgressBarNest2 + { + [ProgressBar("Stamina", 100, EColor.Green)] + public float stamina = 75.0f; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs new file mode 100644 index 00000000..d832097b --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ReadOnlyTest : MonoBehaviour + { + [ReadOnly] + public int readOnlyInt = 5; + + public ReadOnlyNest1 nest1; + } + + [System.Serializable] + public class ReadOnlyNest1 + { + [ReadOnly] + [AllowNesting] + public float readOnlyFloat = 3.14f; + + public ReadOnlyNest2 nest2; + } + + [System.Serializable] + public struct ReadOnlyNest2 + { + [ReadOnly] + [AllowNesting] + public string readOnlyString; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs new file mode 100644 index 00000000..6b3e4391 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ReorderableListTest : MonoBehaviour + { + [ReorderableList] + public int[] intArray; + + [ReorderableList] + public List vectorList; + + [ReorderableList] + public List structList; + + [ReorderableList] + public GameObject[] gameObjectsList; + + [ReorderableList] + public List transformsList; + + [ReorderableList] + public List monoBehavioursList; + } + + [System.Serializable] + public struct SomeStruct + { + public int Int; + public float Float; + public Vector3 Vector; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/RequiredTest.cs b/Assets/NaughtyAttributes/Scripts/Test/RequiredTest.cs new file mode 100644 index 00000000..ea049361 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/RequiredTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class RequiredTest : MonoBehaviour + { + [Required] + public Transform trans0; + + public RequiredNest1 nest1; + } + + [System.Serializable] + public class RequiredNest1 + { + [Required] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans1; + + public RequiredNest2 nest2; + } + + [System.Serializable] + public class RequiredNest2 + { + [Required("trans2 is invalid custom message - hohoho")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs new file mode 100644 index 00000000..aa57a3d7 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ResizableTextAreaTest : MonoBehaviour + { + [ResizableTextArea] + public string text0; + + public ResizableTextAreaNest1 nest1; + } + + [System.Serializable] + public class ResizableTextAreaNest1 + { + [ResizableTextArea] + public string text1; + + public ResizableTextAreaNest2 nest2; + } + + [System.Serializable] + public class ResizableTextAreaNest2 + { + [ResizableTextArea] + public string text2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/SceneTest.cs b/Assets/NaughtyAttributes/Scripts/Test/SceneTest.cs new file mode 100644 index 00000000..70d37c0f --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/SceneTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class SceneTest : MonoBehaviour + { + [Scene] + public string scene0; + + public SceneNest1 nest1; + } + + [System.Serializable] + public class SceneNest1 + { + [Scene] + public string scene1; + + public SceneNest2 nest2; + } + + [System.Serializable] + public struct SceneNest2 + { + [Scene] + public int scene2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/SceneTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs new file mode 100644 index 00000000..c20b7547 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs @@ -0,0 +1,37 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowAssetPreviewTest : MonoBehaviour + { + [ShowAssetPreview] + public Sprite sprite0; + + [ShowAssetPreview(96, 96)] + public GameObject prefab0; + + public ShowAssetPreviewNest1 nest1; + } + + [System.Serializable] + public class ShowAssetPreviewNest1 + { + [ShowAssetPreview] + public Sprite sprite1; + + [ShowAssetPreview(96, 96)] + public GameObject prefab1; + + public ShowAssetPreviewNest2 nest2; + } + + [System.Serializable] + public class ShowAssetPreviewNest2 + { + [ShowAssetPreview] + public Sprite sprite2; + + [ShowAssetPreview(96, 96)] + public GameObject prefab2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowIfTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowIfTest.cs new file mode 100644 index 00000000..fe19d632 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowIfTest.cs @@ -0,0 +1,119 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowIfTest : MonoBehaviour + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + + [ShowIf(EConditionOperator.And, "show1", "show2")] + [ReorderableList] + public int[] showIfAll; + + [ShowIf(EConditionOperator.Or, "show1", "show2")] + [ReorderableList] + public int[] showIfAny; + + [ShowIf("enum1", ShowIfEnum.Case0)] + [ReorderableList] + public int[] showIfEnum; + + [ShowIf("enum2", ShowIfEnumFlag.Flag0)] + [ReorderableList] + public int[] showIfEnumFlag; + + [ShowIf("enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [ReorderableList] + public int[] showIfEnumFlagMulti; + + public ShowIfNest1 nest1; + } + + [System.Serializable] + public class ShowIfNest1 + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + public bool Show1 { get { return show1; } } + public bool Show2 { get { return show2; } } + public ShowIfEnum Enum1 { get { return enum1; } } + public ShowIfEnumFlag Enum2 { get { return enum2; } } + + [ShowIf(EConditionOperator.And, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAll; + + [ShowIf(EConditionOperator.Or, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAny; + + [ShowIf("Enum1", ShowIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfEnum; + + [ShowIf("Enum2", ShowIfEnumFlag.Flag0)] + [AllowNesting] + public int showIfEnumFlag; + + [ShowIf("Enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [AllowNesting] + public int showIfEnumFlagMulti; + + public ShowIfNest2 nest2; + } + + [System.Serializable] + public class ShowIfNest2 + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + public bool GetShow1() { return show1; } + public bool GetShow2() { return show2; } + public ShowIfEnum GetEnum1() { return enum1; } + public ShowIfEnumFlag GetEnum2() { return enum2; } + + [ShowIf(EConditionOperator.And, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAll = new Vector2(0.25f, 0.75f); + + [ShowIf(EConditionOperator.Or, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAny = new Vector2(0.25f, 0.75f); + + [ShowIf("GetEnum1", ShowIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnum = new Vector2(0.25f, 0.75f); + + [ShowIf("GetEnum2", ShowIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnumFlag; + + [ShowIf("GetEnum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnumFlagMulti; + } + + public enum ShowIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum ShowIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs new file mode 100644 index 00000000..6f4b3797 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs @@ -0,0 +1,79 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowNativePropertyTest : MonoBehaviour + { + [ShowNativeProperty] + private Transform Transform + { + get + { + return transform; + } + } + + [ShowNativeProperty] + private Transform ParentTransform + { + get + { + return transform.parent; + } + } + + [ShowNativeProperty] + private ushort MyUShort + { + get + { + return ushort.MaxValue; + } + } + + [ShowNativeProperty] + private short MyShort + { + get + { + return short.MaxValue; + } + } + + [ShowNativeProperty] + private ulong MyULong + { + get + { + return ulong.MaxValue; + } + } + + [ShowNativeProperty] + private long MyLong + { + get + { + return long.MaxValue; + } + } + + [ShowNativeProperty] + private uint MyUInt + { + get + { + return uint.MaxValue; + } + } + + [ShowNativeProperty] + private int MyInt + { + get + { + return int.MaxValue; + } + } + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs new file mode 100644 index 00000000..cace1508 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowNonSerializedFieldTest : MonoBehaviour + { +#pragma warning disable 414 + [ShowNonSerializedField] + private ushort myUShort = ushort.MaxValue; + + [ShowNonSerializedField] + private short myShort = short.MaxValue; + + [ShowNonSerializedField] + private uint myUInt = uint.MaxValue; + + [ShowNonSerializedField] + private int myInt = 10; + + [ShowNonSerializedField] + private ulong myULong = ulong.MaxValue; + + [ShowNonSerializedField] + private long myLong = long.MaxValue; + + [ShowNonSerializedField] + private const float PI = 3.14159f; + + [ShowNonSerializedField] + private static readonly Vector3 CONST_VECTOR = Vector3.one; +#pragma warning restore 414 + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs b/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs new file mode 100644 index 00000000..e77bfec6 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class SortingLayerTest : MonoBehaviour + { + [SortingLayer] + public int layerNumber0; + + [SortingLayer] + public string layerName0; + + public SortingLayerNest1 nest1; + + [Button] + public void DebugLog() + { + Debug.LogFormat("{0} = {1}", nameof(layerNumber0), layerNumber0); + Debug.LogFormat("{0} = {1}", nameof(layerName0), layerName0); + Debug.LogFormat("LayerToName({0}) = {1}", layerNumber0, SortingLayer.IDToName(layerNumber0)); + Debug.LogFormat("NameToLayer({0}) = {1}", layerName0, SortingLayer.NameToID(layerName0)); + } + } + + [System.Serializable] + public class SortingLayerNest1 + { + [SortingLayer] + public int layerNumber1; + + [SortingLayer] + public string layerName1; + + public SortingLayerNest2 nest2; + } + + [System.Serializable] + public struct SortingLayerNest2 + { + [SortingLayer] + public int layerNumber2; + + [SortingLayer] + public string layerName2; + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs.meta new file mode 100644 index 00000000..e8cd99c1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/SortingLayerTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ed73e666d447964d93c4840f05423dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/TagTest.cs b/Assets/NaughtyAttributes/Scripts/Test/TagTest.cs new file mode 100644 index 00000000..cb77fb83 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/TagTest.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class TagTest : MonoBehaviour + { + [Tag] + public string tag0; + + public TagNest1 nest1; + + [Button] + private void LogTag0() + { + Debug.Log(tag0); + } + } + + [System.Serializable] + public class TagNest1 + { + [Tag] + public string tag1; + + public TagNest2 nest2; + } + + [System.Serializable] + public struct TagNest2 + { + [Tag] + public string tag2; + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/TagTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/TagTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs b/Assets/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs new file mode 100644 index 00000000..8e7b091c --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs @@ -0,0 +1,52 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ValidateInputTest : MonoBehaviour + { + [ValidateInput("NotZero0", "int0 must not be zero")] + public int int0; + + private bool NotZero0(int value) + { + return value != 0; + } + + public ValidateInputNest1 nest1; + + public ValidateInputInheritedNest inheritedNest; + } + + [System.Serializable] + public class ValidateInputNest1 + { + [ValidateInput("NotZero1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + private bool NotZero1(int value) + { + return value != 0; + } + + public ValidateInputNest2 nest2; + } + + [System.Serializable] + public class ValidateInputNest2 + { + [ValidateInput("NotZero2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int2; + + private bool NotZero2(int value) + { + return value != 0; + } + } + + [System.Serializable] + public class ValidateInputInheritedNest : ValidateInputNest1 + { + } +} diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs new file mode 100644 index 00000000..aff1dfa3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class _NaughtyComponent : MonoBehaviour + { + } + + [System.Serializable] + public class MyClass + { + } + + [System.Serializable] + public struct MyStruct + { + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta new file mode 100644 index 00000000..10803eed --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9c928ea15ae74a44089beb2e534c1a35 +timeCreated: 1507996629 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs new file mode 100644 index 00000000..c8d80fbc --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "NaughtyScriptableObject", menuName = "NaughtyAttributes/_NaughtyScriptableObject")] + public class _NaughtyScriptableObject : ScriptableObject + { + [Expandable] + public List<_TestScriptableObjectA> listA; + } +} diff --git a/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta new file mode 100644 index 00000000..6328fa32 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 753bdb918c6038142acddbd7aae6958f +timeCreated: 1518639587 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectA.cs b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectA.cs new file mode 100644 index 00000000..ee7b36f1 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectA.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "TestScriptableObjectA", menuName = "NaughtyAttributes/TestScriptableObjectA")] + public class _TestScriptableObjectA : ScriptableObject + { + [Expandable] + public List<_TestScriptableObjectB> listB; + } +} \ No newline at end of file diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectA.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs.meta rename to Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectA.cs.meta diff --git a/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs new file mode 100644 index 00000000..89a474d3 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "TestScriptableObjectB", menuName = "NaughtyAttributes/TestScriptableObjectB")] + public class _TestScriptableObjectB : ScriptableObject + { + [MinMaxSlider(0, 10)] + public Vector2Int slider; + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs.meta b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs.meta new file mode 100644 index 00000000..0562e579 --- /dev/null +++ b/Assets/NaughtyAttributes/Scripts/Test/_TestScriptableObjectB.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2b396aeebc9d984da298eee313896bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes/package.json b/Assets/NaughtyAttributes/package.json new file mode 100644 index 00000000..960db057 --- /dev/null +++ b/Assets/NaughtyAttributes/package.json @@ -0,0 +1,21 @@ +{ + "name": "com.dbrizov.naughtyattributes", + "displayName": "NaughtyAttributes", + "version": "2.1.4", + "unity": "2018.4", + "description": "NaughtyAttributes is an extension for the Unity Inspector.", + "keywords": [ "attribute", "inspector", "editor" ], + "category": "editor extensions", + "dependencies": {}, + "samples": [ + { + "displayName": "Demo Scene", + "description": "Demo Scene", + "path": "Samples/DemoScene" + } + ], + "author": { + "name": "Denis Rizov", + "url": "https://github.com/dbrizov" + } +} diff --git a/Assets/Plugins/NaughtyAttributes/package.json.meta b/Assets/NaughtyAttributes/package.json.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/package.json.meta rename to Assets/NaughtyAttributes/package.json.meta diff --git a/Assets/Parse.meta b/Assets/Parse.meta new file mode 100644 index 00000000..351c7ed2 --- /dev/null +++ b/Assets/Parse.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d1a8f2ea2fc954f4db9d55a59d097a7d +folderAsset: yes +timeCreated: 1500403331 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Parse/LICENSE b/Assets/Parse/LICENSE new file mode 100644 index 00000000..4abeb6e9 --- /dev/null +++ b/Assets/Parse/LICENSE @@ -0,0 +1,30 @@ +BSD License + +For Parse .NET SDK software + +Copyright (c) 2015-present, Parse, LLC. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Parse nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/Parse/LICENSE.meta b/Assets/Parse/LICENSE.meta new file mode 100644 index 00000000..1391b3ae --- /dev/null +++ b/Assets/Parse/LICENSE.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9dd0e3c9dea104831bc092afe2f6eb5e +labels: +- gvh +- gvh_version-1.0.4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Parse/Plugins.meta b/Assets/Parse/Plugins.meta new file mode 100644 index 00000000..2b04519c --- /dev/null +++ b/Assets/Parse/Plugins.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: aecfff8cf5706409e93b95c9c1081553 +folderAsset: yes +timeCreated: 1500403331 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset b/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset index 9d129824..c7e5568c 100644 --- a/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset +++ b/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 093286084a3d1994a9c28281a1c38b1d, type: 3} m_Name: PlayFabSharedSettings m_EditorClassIdentifier: - TitleId: 7D3B9 + TitleId: 1879F5 DeveloperSecretKey: ProductionEnvironmentUrl: RequestType: 0 diff --git a/Assets/Plugins/.Android(old).meta b/Assets/Plugins/.Android(old).meta new file mode 100644 index 00000000..3129ac70 --- /dev/null +++ b/Assets/Plugins/.Android(old).meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3aa2e86589b8cb94394e391e45dcfa34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar new file mode 100644 index 00000000..8c92fce8 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar.meta new file mode 100644 index 00000000..12cd28b7 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.activity.activity-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 64eb7cdadd0222c41a6af19fcb1647a7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar new file mode 100644 index 00000000..579ad59b Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar.meta b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar.meta new file mode 100644 index 00000000..032250bc --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-1.6.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: b902ad8747159dd4a812b2a2c9149fcd +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar new file mode 100644 index 00000000..5b71e27a Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar.meta new file mode 100644 index 00000000..7affe8ae --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.annotation.annotation-experimental-1.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 3644b73528679d249a890eb4c297f853 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar new file mode 100644 index 00000000..075fabc3 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar.meta new file mode 100644 index 00000000..51531c68 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-1.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: b181ecd98e709de478743efc3e79c986 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar new file mode 100644 index 00000000..197abb99 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar.meta new file mode 100644 index 00000000..20a611c4 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.appcompat.appcompat-resources-1.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: e305f907a7813764ab6384ebdcba0956 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar b/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar new file mode 100644 index 00000000..5dd6acd6 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar.meta b/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar.meta new file mode 100644 index 00000000..5c314f2e --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.arch.core.core-common-2.1.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 27fa0dc6fec391443b5f5f1d0f9e3caf +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar new file mode 100644 index 00000000..c31d5c30 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar.meta new file mode 100644 index 00000000..2e986249 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.arch.core.core-runtime-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 8a8087bd1dcdc6b46858f83329ca8ead +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar b/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar new file mode 100644 index 00000000..d32a985c Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar.meta new file mode 100644 index 00000000..c59cbd92 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.browser.browser-1.4.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 9ca4c11203104c941bdee1f11690fb3f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar b/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar new file mode 100644 index 00000000..761fe3bf Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar.meta b/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar.meta new file mode 100644 index 00000000..857b3266 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.collection.collection-1.1.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 663267073762a064fabc4f3ceda25546 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar b/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar new file mode 100644 index 00000000..833b0958 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar.meta b/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar.meta new file mode 100644 index 00000000..ce84e265 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.concurrent.concurrent-futures-1.1.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a049189c99e557941bd3659189490d95 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar new file mode 100644 index 00000000..98fe7c1a Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar.meta b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar.meta new file mode 100644 index 00000000..a1ecafab --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-2.1.4.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 8ed95235e53265841b093473517ed4a9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar new file mode 100644 index 00000000..cb027fc4 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar.meta b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar.meta new file mode 100644 index 00000000..b5406c21 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.constraintlayout.constraintlayout-core-1.0.4.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 07cb63ea9e5118640b7c49ad6830b3d9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar b/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar new file mode 100644 index 00000000..c68ebd2e Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar.meta new file mode 100644 index 00000000..fa1b75a8 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.core.core-1.8.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 982bce583be2c26468cf821006aa09ad +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar b/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar new file mode 100644 index 00000000..122441f6 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar.meta new file mode 100644 index 00000000..df57f770 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.core.core-ktx-1.8.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 90ed13bca54f25548b39f2530adafb65 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar new file mode 100644 index 00000000..cd1494a9 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta new file mode 100644 index 00000000..68dbea1b --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.cursoradapter.cursoradapter-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a384c93aa5fa7414a8dadd7c2c9322d7 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar new file mode 100644 index 00000000..73e70ac4 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar.meta new file mode 100644 index 00000000..54027d09 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.customview.customview-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 4e389e83e52ca5f4d8f263c6fe19ed21 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar new file mode 100644 index 00000000..a9968c7f Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta new file mode 100644 index 00000000..4f2830aa --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.drawerlayout.drawerlayout-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: e5ea38009c35f8d409557474ac082dfd +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar b/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar new file mode 100644 index 00000000..ea16f9ed Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar.meta new file mode 100644 index 00000000..a90288d1 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.fragment.fragment-1.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 0c20a46df35b2d1408c84640e8d41b3c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar new file mode 100644 index 00000000..bccf86f7 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar.meta new file mode 100644 index 00000000..8838f68c --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.interpolator.interpolator-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a933b63b44000334e89476750095450c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar new file mode 100644 index 00000000..db85be68 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar.meta new file mode 100644 index 00000000..e3d63c8e --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-common-2.3.1.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 2759b84dcbe48de4883c09f355b64998 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar new file mode 100644 index 00000000..9710a55a Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta new file mode 100644 index 00000000..bc86e9fe --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: b7aa892511c18064bb638cdbf6cbe477 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar new file mode 100644 index 00000000..95c579df Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta new file mode 100644 index 00000000..4e65dfce --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-livedata-core-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f10bd9f243555a044b00ce4901c97dfc +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar new file mode 100644 index 00000000..79c9fe4e Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar.meta new file mode 100644 index 00000000..2a485965 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-runtime-2.3.1.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 37034dc9d4631a3429c75f1cfa974ece +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar new file mode 100644 index 00000000..e455b04c Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta new file mode 100644 index 00000000..ee5eb0b1 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-service-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 334418781e1c6ff4f83ed63a7e33d31c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar new file mode 100644 index 00000000..83ad9a35 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar.meta new file mode 100644 index 00000000..1c309035 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 575e7ecc2ea17724eb19af6ff6eb10b9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar new file mode 100644 index 00000000..32c57746 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar.meta new file mode 100644 index 00000000..37e3fc60 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.loader.loader-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 73af7870779f93e4f8bf3687635a7e02 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar new file mode 100644 index 00000000..025bf52b Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar.meta b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar.meta new file mode 100644 index 00000000..ade37b17 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-1.0.0-beta05.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 6a480cc17d8aa464989b379f0621fed6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar new file mode 100644 index 00000000..5fc6eb4a Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar.meta b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar.meta new file mode 100644 index 00000000..cb56a5d2 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.privacysandbox.ads.ads-adservices-java-1.0.0-beta05.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 4cb732408ec87f94d9f758b00508a7c2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar b/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar new file mode 100644 index 00000000..c1400d08 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar differ diff --git a/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar.meta b/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar.meta new file mode 100644 index 00000000..12836131 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.room.room-common-2.2.5.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a2ab8b5fa5cbbbd459f43a130c04aede +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar b/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar new file mode 100644 index 00000000..09f080bc Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar.meta b/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar.meta new file mode 100644 index 00000000..8506b2ee --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.room.room-runtime-2.2.5.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 07e2ed8ffe5cbeb4e8dbc30caf89d7b6 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar new file mode 100644 index 00000000..aea0914d Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar.meta new file mode 100644 index 00000000..2e68fb4a --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.savedstate.savedstate-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: b3dfcd9562da13b44aa238032a04bcba +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar new file mode 100644 index 00000000..53894f9a Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar.meta new file mode 100644 index 00000000..81cb83fe --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 3de8ab94590b2574fbefb80554382640 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar new file mode 100644 index 00000000..83185bc6 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar.meta new file mode 100644 index 00000000..809bfe40 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.sqlite.sqlite-framework-2.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 474341bc38cb3374b8961f98c1af91af +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar new file mode 100644 index 00000000..cbf45dd8 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar.meta new file mode 100644 index 00000000..61d8c6fa --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.startup.startup-runtime-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f5c3249ea5a52334cbca384e67d394ce +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar new file mode 100644 index 00000000..daec68b0 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar.meta new file mode 100644 index 00000000..269a22ae --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.tracing.tracing-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f8e8cb046f1ecc24a8acec5549550336 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar new file mode 100644 index 00000000..0746c625 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar.meta new file mode 100644 index 00000000..51635851 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-1.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 89d0e7eaed503d9478b7cdc952585e56 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar new file mode 100644 index 00000000..bf885775 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar.meta new file mode 100644 index 00000000..2a27df3c --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.vectordrawable.vectordrawable-animated-1.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 7bd5018d3d0d61b4f824c5b3f2650e62 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar b/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar new file mode 100644 index 00000000..4f5acaab Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta b/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta new file mode 100644 index 00000000..332d551f --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.versionedparcelable.versionedparcelable-1.1.1.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 2c41b0414c4fc8f40bff790c0d3c2657 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar b/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar new file mode 100644 index 00000000..a7667298 Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar.meta new file mode 100644 index 00000000..a42911e6 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.viewpager.viewpager-1.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 156cb7a5793d0164a841c170b09eab06 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar b/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar new file mode 100644 index 00000000..35ef143b Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar.meta b/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar.meta new file mode 100644 index 00000000..75cf71fd --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.webkit.webkit-1.11.0-alpha02.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d9602f0a72436cb4ca0e5ee4b5497149 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar b/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar new file mode 100644 index 00000000..4c10638d Binary files /dev/null and b/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar differ diff --git a/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar.meta b/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar.meta new file mode 100644 index 00000000..07f232f0 --- /dev/null +++ b/Assets/Plugins/.Android(old)/androidx.work.work-runtime-2.7.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d76789ab8d8c69f47b7955cecad55b35 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar new file mode 100644 index 00000000..a7b19851 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar.meta new file mode 100644 index 00000000..6916cc6d --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-23.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: cbbff196d8d91914b80b3acbd8a48dba +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar new file mode 100644 index 00000000..dafc2f62 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar.meta new file mode 100644 index 00000000..f3891293 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-base-23.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a70f74653b2098b4f91d4027bf39dfc9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar new file mode 100644 index 00000000..6c0c07a0 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta new file mode 100644 index 00000000..77b0bc50 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-identifier-18.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 21aa624e272c1324d8beef5dfb066eac +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar new file mode 100644 index 00000000..40e9f81e Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar.meta new file mode 100644 index 00000000..90ef3fc8 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-ads-lite-23.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 10af1ab86086f8c41b92dc75a03cf491 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar new file mode 100644 index 00000000..dfa4c74b Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar.meta new file mode 100644 index 00000000..d39afce9 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-appset-16.0.1.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 5ca68ac7a3f43404bad8f3a1f4bae569 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar new file mode 100644 index 00000000..fddef8f3 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar.meta new file mode 100644 index 00000000..2d3050ee --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-16.0.1.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 82ef4e0d67ed9e34ba6e39cee24dfa8f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar new file mode 100644 index 00000000..7db13a6b Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar.meta new file mode 100644 index 00000000..fd1a6b97 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-api-phone-16.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: cebc952cca2fb9c418acda12117be57f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar new file mode 100644 index 00000000..a79065ad Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar.meta new file mode 100644 index 00000000..5f398fdd --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-auth-base-16.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d387cfa543218dd459184410dbdad273 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar new file mode 100644 index 00000000..cc79a96a Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar.meta new file mode 100644 index 00000000..7b65f8bb --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-base-18.0.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 75559b13fceeed24092b53cd973b9a65 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar new file mode 100644 index 00000000..f8165a43 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar.meta new file mode 100644 index 00000000..11163eeb --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-basement-18.3.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 69d9fda692e751b43919511293c6b2ed +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar new file mode 100644 index 00000000..270f7c69 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar.meta new file mode 100644 index 00000000..e2ea9215 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-base-20.1.2.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f961537ef224ed34485347bfba20f340 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar new file mode 100644 index 00000000..bcc0bfec Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar.meta new file mode 100644 index 00000000..25a0b39c --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-measurement-sdk-api-20.1.2.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 30a3b2e0c8f377b4d985dff0fb515d22 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar new file mode 100644 index 00000000..5117e6c6 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar.meta new file mode 100644 index 00000000..5645efa8 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.gms.play-services-tasks-18.1.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: d6a637daf05186545aa1d5fa1cf736f9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar b/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar new file mode 100644 index 00000000..2bdcbcfa Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar.meta b/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar.meta new file mode 100644 index 00000000..e69f1f43 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.android.ump.user-messaging-platform-2.2.0.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 9cb842595b531a349b743feee17d02c2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar b/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar new file mode 100644 index 00000000..59222d9c Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar.meta b/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar.meta new file mode 100644 index 00000000..2fb838b3 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.code.findbugs.jsr305-3.0.2.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: cd54c3e07efdd8b4ea88b37154aca63d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar b/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar new file mode 100644 index 00000000..bec76567 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar.meta b/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar.meta new file mode 100644 index 00000000..492d2bc7 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.errorprone.error_prone_annotations-2.11.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 703e850d43ea9f94aa1ee5c7b35e8a8b +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar b/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar new file mode 100644 index 00000000..9b56dc75 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar.meta b/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar.meta new file mode 100644 index 00000000..85dd02c7 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.guava.failureaccess-1.0.1.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 5396bbf16a68f6941a43772e29e12ab3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar b/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar new file mode 100644 index 00000000..8ff77a80 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar.meta b/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar.meta new file mode 100644 index 00000000..7ad9d9de --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.guava.guava-31.1-android.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 664358441abeac941ada4df02891d892 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar b/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar new file mode 100644 index 00000000..45832c05 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar.meta b/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar.meta new file mode 100644 index 00000000..f6dd3a43 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.guava.listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: fe1c5856654ed1546b79c6afc667fd58 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar b/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar new file mode 100644 index 00000000..a429c721 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar differ diff --git a/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar.meta b/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar.meta new file mode 100644 index 00000000..cb9fa0e1 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.j2objc.j2objc-annotations-1.3.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 71e42f9b526215d43bad585a37a401e9 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar b/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar new file mode 100644 index 00000000..93e4ebd7 Binary files /dev/null and b/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar differ diff --git a/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar.meta b/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar.meta new file mode 100644 index 00000000..a7ec12a5 --- /dev/null +++ b/Assets/Plugins/.Android(old)/com.google.signin.google-signin-support-1.0.4.aar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 9ad574ce6e64e584d891a47bf0796386 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/gradleTemplate.properties b/Assets/Plugins/.Android(old)/gradleTemplate.properties new file mode 100644 index 00000000..87046809 --- /dev/null +++ b/Assets/Plugins/.Android(old)/gradleTemplate.properties @@ -0,0 +1,8 @@ +org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M +org.gradle.parallel=true +unityStreamingAssets=**STREAMING_ASSETS** +# Android Resolver Properties Start +android.useAndroidX=true +android.enableJetifier=true +# Android Resolver Properties End +**ADDITIONAL_PROPERTIES** diff --git a/Assets/Plugins/.Android(old)/gradleTemplate.properties.meta b/Assets/Plugins/.Android(old)/gradleTemplate.properties.meta new file mode 100644 index 00000000..dbc44971 --- /dev/null +++ b/Assets/Plugins/.Android(old)/gradleTemplate.properties.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 284b36cc3926c8943afb1ec92628dd55 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/mainTemplate.gradle b/Assets/Plugins/.Android(old)/mainTemplate.gradle new file mode 100644 index 00000000..98832b34 --- /dev/null +++ b/Assets/Plugins/.Android(old)/mainTemplate.gradle @@ -0,0 +1,62 @@ +apply plugin: 'com.android.library' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + // Required dependencies for Google Sign-In + implementation 'com.google.android.gms:play-services-auth:20.4.1' // Updated auth version + implementation 'com.google.android.gms:play-services-base:18.1.0' // Added + implementation 'com.google.android.gms:play-services-tasks:18.0.2' // Added + + // Other dependencies (Ads, UMP, etc.) + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.google.android.gms:play-services-ads:23.2.0' + implementation 'com.google.android.ump:user-messaging-platform:2.2.0' + implementation 'com.google.signin:google-signin-support:1.0.4' +} +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} +// Android Resolver Exclusions End +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + compileSdkVersion **APIVERSION** + buildToolsVersion '**BUILDTOOLS**' + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + defaultConfig { + minSdkVersion **MINSDKVERSION** + targetSdkVersion **TARGETSDKVERSION** + ndk { + abiFilters **ABIFILTERS** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** + } + + lintOptions { + abortOnError false + } + + aaptOptions { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + }**PACKAGING_OPTIONS** +} +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** diff --git a/Assets/Plugins/.Android(old)/mainTemplate.gradle.meta b/Assets/Plugins/.Android(old)/mainTemplate.gradle.meta new file mode 100644 index 00000000..efc46305 --- /dev/null +++ b/Assets/Plugins/.Android(old)/mainTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 333d1288d35295342b538b63f80a76e1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar b/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar new file mode 100644 index 00000000..e9eed802 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar differ diff --git a/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar.meta b/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar.meta new file mode 100644 index 00000000..bef38460 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.checkerframework.checker-qual-3.12.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 191e4c9470200c8469bd920e815e34b8 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar b/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar new file mode 100644 index 00000000..5119f5e7 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar.meta new file mode 100644 index 00000000..f2d21c15 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.annotations-23.0.0.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 5bd24b3fb9bfdfe478fc73e9207aa8ff +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar new file mode 100644 index 00000000..18359808 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar.meta new file mode 100644 index 00000000..768fae75 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-1.8.21.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 064cbd6ce3d304a4e90e9693d846b79c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar new file mode 100644 index 00000000..b387a697 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar.meta new file mode 100644 index 00000000..705c5b2e --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-common-1.8.21.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 86d82412905a68142a678bf05138a992 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar new file mode 100644 index 00000000..a671f249 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar.meta new file mode 100644 index 00000000..61eaf9cc --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk7-1.8.20.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 7be6affdd48ac5946be22cd60945b6b1 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar new file mode 100644 index 00000000..073879cf Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar.meta new file mode 100644 index 00000000..22a8daa0 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlin.kotlin-stdlib-jdk8-1.8.20.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 07d12b96d5d7e8746aa8a082202db5e3 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar new file mode 100644 index 00000000..5127028d Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar.meta new file mode 100644 index 00000000..81e59b95 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-1.7.1.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: a03040bb46db02c43adeca0445afae0f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar new file mode 100644 index 00000000..0e133230 Binary files /dev/null and b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar differ diff --git a/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar.meta b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar.meta new file mode 100644 index 00000000..2c057f61 --- /dev/null +++ b/Assets/Plugins/.Android(old)/org.jetbrains.kotlinx.kotlinx-coroutines-core-jvm-1.7.1.jar.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: f307ce9f6a3d68749996407cd94f2f3d +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Android: Android + second: + enabled: 1 + settings: {} + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android(old)/settingsTemplate.gradle b/Assets/Plugins/.Android(old)/settingsTemplate.gradle new file mode 100644 index 00000000..939fa3d5 --- /dev/null +++ b/Assets/Plugins/.Android(old)/settingsTemplate.gradle @@ -0,0 +1,23 @@ +pluginManagement { + repositories { + **ARTIFACTORYREPOSITORY** + gradlePluginPortal() + google() + mavenCentral() + } +} + +include ':launcher', ':unityLibrary' +**INCLUDES** + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + repositories { + **ARTIFACTORYREPOSITORY** + google() + mavenCentral() + flatDir { + dirs "${project(':unityLibrary').projectDir}/libs" + } + } +} diff --git a/Assets/Plugins/.Android(old)/settingsTemplate.gradle.meta b/Assets/Plugins/.Android(old)/settingsTemplate.gradle.meta new file mode 100644 index 00000000..8627fb29 --- /dev/null +++ b/Assets/Plugins/.Android(old)/settingsTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3e0a23326958a184bb7d9300afa3090b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android.meta b/Assets/Plugins/.Android.meta new file mode 100644 index 00000000..3129ac70 --- /dev/null +++ b/Assets/Plugins/.Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3aa2e86589b8cb94394e391e45dcfa34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android/gradleTemplate.properties b/Assets/Plugins/.Android/gradleTemplate.properties new file mode 100644 index 00000000..9c05e6fd --- /dev/null +++ b/Assets/Plugins/.Android/gradleTemplate.properties @@ -0,0 +1,11 @@ +org.gradle.parallel=true +unityStreamingAssets=**STREAMING_ASSETS** +android.useAndroidX=true +android.enableJetifier=true +org.gradle.jvmargs=-Xmx6144m +# Android Resolver Properties End +# Android Resolver Properties Start +android.useAndroidX=true +android.enableJetifier=true +# Android Resolver Properties End +**ADDITIONAL_PROPERTIES** diff --git a/Assets/Plugins/.Android/gradleTemplate.properties.meta b/Assets/Plugins/.Android/gradleTemplate.properties.meta new file mode 100644 index 00000000..cd4ada7d --- /dev/null +++ b/Assets/Plugins/.Android/gradleTemplate.properties.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: faf008ca98ca73b4eb957babdbf54cd3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android/mainTemplate.gradle b/Assets/Plugins/.Android/mainTemplate.gradle new file mode 100644 index 00000000..6c036e48 --- /dev/null +++ b/Assets/Plugins/.Android/mainTemplate.gradle @@ -0,0 +1,89 @@ +// Top-level buildscript configuration +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + // Updated Android Gradle Plugin (compatible with Unity 2022.3) + classpath 'com.android.tools.build:gradle:7.4.0' + // Google Services plugin (for Firebase if needed) + classpath 'com.google.gms:google-services:4.3.15' + } +} + +apply plugin: 'com.android.library' +**APPLY_PLUGINS** + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + // Google Play Services + implementation 'com.google.android.gms:play-services-auth:20.7.0' // Updated auth version + implementation 'com.google.android.gms:play-services-base:18.2.0' + implementation 'com.google.android.gms:play-services-tasks:18.0.2' + + // PlayFab & Ads dependencies + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.google.android.gms:play-services-ads:23.2.0' + implementation 'com.google.android.ump:user-messaging-platform:2.2.0' + + // AndroidX core dependencies + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.browser:browser:1.5.0' +} + +android { + namespace "com.unity3d.player" + ndkPath "**NDKPATH**" + compileSdkVersion 34 + buildToolsVersion '34.0.0' + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + defaultConfig { + minSdkVersion **MINSDKVERSION** + targetSdkVersion 34 + ndk { + abiFilters **ABIFILTERS** + } + versionCode **VERSIONCODE** + versionName '**VERSIONNAME**' + consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD** + } + + lintOptions { + abortOnError false + } + + aaptOptions { + noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" + } + + // Packaging options to prevent duplicate classes + packagingOptions { + exclude 'META-INF/proguard/androidx-annotations.pro' + exclude 'META-INF/androidx.*' + exclude 'META-INF/proguard/coroutines.pro' + pickFirst '**/libc++_shared.so' + } +} + +// Android Resolver Exclusions +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } +} + +**IL_CPP_BUILD_SETUP** +**SOURCE_BUILD_SETUP** +**EXTERNAL_SOURCES** \ No newline at end of file diff --git a/Assets/Plugins/.Android/mainTemplate.gradle.meta b/Assets/Plugins/.Android/mainTemplate.gradle.meta new file mode 100644 index 00000000..7b6eafac --- /dev/null +++ b/Assets/Plugins/.Android/mainTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7df7534277218d540bf8cbe9f1631681 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.Android/settingsTemplate.gradle b/Assets/Plugins/.Android/settingsTemplate.gradle new file mode 100644 index 00000000..f9c1bdbf --- /dev/null +++ b/Assets/Plugins/.Android/settingsTemplate.gradle @@ -0,0 +1,30 @@ +pluginManagement { + repositories { + **ARTIFACTORYREPOSITORY** + gradlePluginPortal() + google() + mavenCentral() + } +} + +include ':launcher', ':unityLibrary' +**INCLUDES** + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + repositories { + **ARTIFACTORYREPOSITORY** + google() + mavenCentral() +// Android Resolver Repos Start + def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/") + maven { + url (unityProjectPath + "/Assets/GoogleSignIn/Editor/m2repository") // Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml:9 + } + mavenLocal() +// Android Resolver Repos End + flatDir { + dirs "${project(':unityLibrary').projectDir}/libs" + } + } +} diff --git a/Assets/Plugins/.Android/settingsTemplate.gradle.meta b/Assets/Plugins/.Android/settingsTemplate.gradle.meta new file mode 100644 index 00000000..66605b5e --- /dev/null +++ b/Assets/Plugins/.Android/settingsTemplate.gradle.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d6bb8c91f48e04d4aa13d1a1ccbf4076 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes.meta b/Assets/Plugins/.NaughtyAttributes.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes.meta rename to Assets/Plugins/.NaughtyAttributes.meta diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/BoxGroup_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/BoxGroup_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/BoxGroup_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/BoxGroup_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Button_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Button_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Button_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Button_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/CurveRange_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/CurveRange_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/CurveRange_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/CurveRange_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Dropdown_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/Dropdown_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Dropdown_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Dropdown_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/EnableIf_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/EnableIf_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/EnableIf_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/EnableIf_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/EnumFlags_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/EnumFlags_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/EnumFlags_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/EnumFlags_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Expandable_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Expandable_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Expandable_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Expandable_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Foldout_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/Foldout_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Foldout_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Foldout_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/InfoBox_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/InfoBox_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/InfoBox_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/InfoBox_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/InputAxis_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/InputAxis_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/InputAxis_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/InputAxis_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Label_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Label_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Label_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Label_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Layer_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Layer_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Layer_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Layer_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ProgressBar_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/ProgressBar_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ProgressBar_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ProgressBar_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ProgressBar_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ProgressBar_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ProgressBar_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ProgressBar_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ReadOnly_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ReadOnly_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ReadOnly_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ReadOnly_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Required_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Required_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Required_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Required_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Scene_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Scene_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Scene_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Scene_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ShowIf_Inspector.gif b/Assets/Plugins/.NaughtyAttributes/Documentation~/ShowIf_Inspector.gif similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ShowIf_Inspector.gif rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ShowIf_Inspector.gif diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/Tag_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/Tag_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/Tag_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/Tag_Inspector.png diff --git a/Assets/Plugins/NaughtyAttributes/Documentation~/ValidateInput_Inspector.png b/Assets/Plugins/.NaughtyAttributes/Documentation~/ValidateInput_Inspector.png similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Documentation~/ValidateInput_Inspector.png rename to Assets/Plugins/.NaughtyAttributes/Documentation~/ValidateInput_Inspector.png diff --git a/Assets/Plugins/.NaughtyAttributes/README.html b/Assets/Plugins/.NaughtyAttributes/README.html new file mode 100644 index 00000000..5df2d2d5 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/README.html @@ -0,0 +1,1648 @@ + + + + + README.md - Grip + + + + + + +
+
+ + + +
+
+
+
+ +

+ + README.md +

+ +
+

+NaughtyAttributes

+

Unity 2018.3+ +openupm +License: MIT

+

NaughtyAttributes is an extension for the Unity Inspector.

+

It expands the range of attributes that Unity provides so that you can create powerful inspectors without the need of custom editors or property drawers. It also provides attributes that can be applied to non-serialized fields or functions.

+

Most of the attributes are implemented using Unity's CustomPropertyDrawer, so they will work in your custom editors. If you want all of the attributes to work in your custom editors, however, you must inherit from NaughtyInspector and use the NaughtyEditorGUI.PropertyField_Layout function instead of EditorGUILayout.PropertyField.

+

+System Requirements

+

Unity 2018.3.0 or later versions. Feel free to try older version. Don't forget to include the NaughtyAttributes namespace.

+

+Installation

+
    +
  1. The package is available on the openupm registry. You can install it via openupm-cli.
  2. +
+
openupm add com.dbrizov.naughtyattributes
+
+
    +
  1. You can also install via git url by adding this entry in your manifest.json +
  2. +
+
"com.dbrizov.naughtyattributes": "https://github.com/dbrizov/NaughtyAttributes.git#upm"
+
+
    +
  1. You can also download it from the Asset Store +
  2. +
+

+Documentation

+ +

+Support

+

NaughtyAttributes is an open-source project that I am developing in my free time. If you like it you can support me by donating.

+ +

+Overview

+

+Drawer Attributes

+

Provide special draw options to serialized fields. +A field can have only one DrawerAttribute. If a field has more than one, only the bottom one will be used.

+

+AnimatorParam

+

Select an Animator paramater via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public Animator someAnimator;
+
+	[AnimatorParam("someAnimator")]
+	public int paramHash;
+
+	[AnimatorParam("someAnimator")]
+	public string paramName;
+}
+

inspector

+

+Button

+

A method can be marked as a button. A button appears in the inspector and executes the method if clicked. +Works both with instance and static methods.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Button]
+	private void MethodOne() { }
+
+	[Button("Button Text")]
+	private void MethodTwo() { }
+}
+

inspector

+

+CurveRange

+

Set bounds and modify curve color for AnimationCurves

+
public class NaughtyComponent : MonoBehaviour
+{
+	[CurveRange(-1, -1, 1, 1)]
+	public AnimationCurve curve;
+	
+	[CurveRange(EColor.Orange)]
+	public AnimationCurve curve1;
+	
+	[CurveRange(0, 0, 5, 5, EColor.Red)]
+	public AnimationCurve curve2;
+}
+

inspector

+

+Dropdown

+

Provides an interface for dropdown value selection.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Dropdown("intValues")]
+	public int intValue;
+
+	[Dropdown("StringValues")]
+	public string stringValue;
+
+	[Dropdown("GetVectorValues")]
+	public Vector3 vectorValue;
+
+	private int[] intValues = new int[] { 1, 2, 3, 4, 5 };
+
+	private List<string> StringValues { get { return new List<string>() { "A", "B", "C", "D", "E" }; } }
+
+	private DropdownList<Vector3> GetVectorValues()
+	{
+		return new DropdownList<Vector3>()
+		{
+			{ "Right",   Vector3.right },
+			{ "Left",    Vector3.left },
+			{ "Up",      Vector3.up },
+			{ "Down",    Vector3.down },
+			{ "Forward", Vector3.forward },
+			{ "Back",    Vector3.back }
+		};
+	}
+}
+

inspector

+

+EnumFlags

+

Provides dropdown interface for setting enum flags.

+
public enum Direction
+{
+	None = 0,
+	Right = 1 << 0,
+	Left = 1 << 1,
+	Up = 1 << 2,
+	Down = 1 << 3
+}
+
+public class NaughtyComponent : MonoBehaviour
+{
+	[EnumFlags]
+	public Direction flags;
+}
+

inspector

+

+Expandable

+

Make scriptable objects expandable.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Expandable]
+	public ScriptableObject scriptableObject;
+}
+

inspector

+

+HorizontalLine

+
public class NaughtyComponent : MonoBehaviour
+{
+	[HorizontalLine(color: EColor.Red)]
+	public int red;
+
+	[HorizontalLine(color: EColor.Green)]
+	public int green;
+
+	[HorizontalLine(color: EColor.Blue)]
+	public int blue;
+}
+

inspector

+

+InfoBox

+

Used for providing additional information.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[InfoBox("This is my int", EInfoBoxType.Normal)]
+	public int myInt;
+
+	[InfoBox("This is my float", EInfoBoxType.Warning)]
+	public float myFloat;
+
+	[InfoBox("This is my vector", EInfoBoxType.Error)]
+	public Vector3 myVector;
+}
+

inspector

+

+InputAxis

+

Select an input axis via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[InputAxis]
+	public string inputAxis;
+}
+

inspector

+

+MinMaxSlider

+

A double slider. The min value is saved to the X property, and the max value is saved to the Y property of a Vector2 field.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[MinMaxSlider(0.0f, 100.0f)]
+	public Vector2 minMaxSlider;
+}
+

inspector

+

+ProgressBar

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ProgressBar("Health", 300, EColor.Red)]
+	public int health = 250;
+
+	[ProgressBar("Mana", 100, EColor.Blue)]
+	public int mana = 25;
+
+	[ProgressBar("Stamina", 200, EColor.Green)]
+	public int stamina = 150;
+}
+

inspector

+

+ReorderableList

+

Provides array type fields with an interface for easy reordering of elements.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ReorderableList]
+	public int[] intArray;
+
+	[ReorderableList]
+	public List<float> floatArray;
+}
+

inspector

+

+ReadOnly

+

Makes a field read only.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ReadOnly]
+	public Vector3 forwardVector = Vector3.forward;
+}
+

inspector

+

+ResizableTextArea

+

A resizable text area where you can see the whole text. +Unlike Unity's Multiline and TextArea attributes where you can see only 3 rows of a given text, and in order to see it or modify it you have to manually scroll down to the desired row.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ResizableTextArea]
+	public string resizableTextArea;
+}
+

inspector

+

+Scene

+

Select a scene from the build settings via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Scene]
+	public string bootScene; // scene name
+
+	[Scene]
+	public int tutorialScene; // scene index
+}
+

inspector

+

+ShowAssetPreview

+

Shows the texture preview of a given asset (Sprite, Prefab...).

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ShowAssetPreview]
+	public Sprite sprite;
+
+	[ShowAssetPreview(128, 128)]
+	public GameObject prefab;
+}
+

inspector

+

+ShowNativeProperty

+

Shows native C# properties in the inspector. +All native properties are displayed at the bottom of the inspector after the non-serialized fields and before the method buttons. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+
public class NaughtyComponent : MonoBehaviour
+{
+	public List<Transform> transforms;
+
+	[ShowNativeProperty]
+	public int TransformsCount => transforms.Count;
+}
+

inspector

+

+ShowNonSerializedField

+

Shows non-serialized fields in the inspector. +All non-serialized fields are displayed at the bottom of the inspector before the method buttons. +Keep in mind that if you change a non-static non-serialized field in the code - the value in the inspector will be updated after you press Play in the editor. +There is no such issue with static non-serialized fields because their values are updated at compile time. +It supports only certain types (bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object).

+
public class NaughtyComponent : MonoBehaviour
+{
+	[ShowNonSerializedField]
+	private int myInt = 10;
+
+	[ShowNonSerializedField]
+	private const float PI = 3.14159f;
+
+	[ShowNonSerializedField]
+	private static readonly Vector3 CONST_VECTOR = Vector3.one;
+}
+

inspector

+

+Tag

+

Select a tag via dropdown interface.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Tag]
+	public string tagField;
+}
+

inspector

+

+Meta Attributes

+

Give the fields meta data. A field can have more than one meta attributes.

+

+BoxGroup

+

Surrounds grouped fields with a box.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[BoxGroup("Integers")]
+	public int firstInt;
+	[BoxGroup("Integers")]
+	public int secondInt;
+
+	[BoxGroup("Floats")]
+	public float firstFloat;
+	[BoxGroup("Floats")]
+	public float secondFloat;
+}
+

inspector

+

+Foldout

+

Makes a foldout group.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Foldout("Integers")]
+	public int firstInt;
+	[Foldout("Integers")]
+	public int secondInt;
+}
+

inspector

+

+EnableIf / DisableIf

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool enableMyInt;
+
+	[EnableIf("enableMyInt")]
+	public int myInt;
+
+	[EnableIf("Enabled")]
+	public float myFloat;
+
+	[EnableIf("NotEnabled")]
+	public Vector3 myVector;
+
+	public bool Enabled() { return true; }
+
+	public bool NotEnabled => false;
+}
+

inspector

+

You can have more than one condition.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool flag0;
+	public bool flag1;
+
+	[EnableIf(EConditionOperator.And, "flag0", "flag1")]
+	public int enabledIfAll;
+
+	[EnableIf(EConditionOperator.Or, "flag0", "flag1")]
+	public int enabledIfAny;
+}
+

+ShowIf / HideIf

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool showInt;
+
+	[ShowIf("showInt")]
+	public int myInt;
+
+	[ShowIf("AlwaysShow")]
+	public float myFloat;
+
+	[ShowIf("NeverShow")]
+	public Vector3 myVector;
+
+	public bool AlwaysShow() { return true; }
+
+	public bool NeverShow => false;
+}
+

inspector

+

You can have more than one condition.

+
public class NaughtyComponent : MonoBehaviour
+{
+	public bool flag0;
+	public bool flag1;
+
+	[ShowIf(EConditionOperator.And, "flag0", "flag1")]
+	public int showIfAll;
+
+	[ShowIf(EConditionOperator.Or, "flag0", "flag1")]
+	public int showIfAny;
+}
+

+Label

+

Override default field label.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Label("Short Name")]
+	public string veryVeryLongName;
+
+	[Label("RGB")]
+	public Vector3 vectorXYZ;
+}
+

inspector

+

+OnValueChanged

+

Detects a value change and executes a callback. +Keep in mind that the event is detected only when the value is changed from the inspector. +If you want a runtime event, you should probably use an event/delegate and subscribe to it.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[OnValueChanged("OnValueChangedCallback")]
+	public int myInt;
+
+	private void OnValueChangedCallback()
+	{
+		Debug.Log(myInt);
+	}
+}
+

+Validator Attributes

+

Used for validating the fields. A field can have infinite number of validator attributes.

+

+MinValue / MaxValue

+

Clamps integer and float fields.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[MinValue(0), MaxValue(10)]
+	public int myInt;
+
+	[MinValue(0.0f)]
+	public float myFloat;
+}
+

inspector

+

+Required

+

Used to remind the developer that a given reference type field is required.

+
public class NaughtyComponent : MonoBehaviour
+{
+	[Required]
+	public Transform myTransform;
+
+	[Required("Custom required text")]
+	public GameObject myGameObject;
+}
+

inspector

+

+ValidateInput

+

The most powerful ValidatorAttribute.

+
public class _NaughtyComponent : MonoBehaviour
+{
+	[ValidateInput("IsNotNull")]
+	public Transform myTransform;
+
+	[ValidateInput("IsGreaterThanZero", "myInteger must be greater than zero")]
+	public int myInt;
+
+	private bool IsNotNull(Transform tr)
+	{
+		return tr != null;
+	}
+
+	private bool IsGreaterThanZero(int value)
+	{
+		return value > 0;
+	}
+}
+

inspector

+ +
+
+
+
+
+ + + +
+
 
+
+ + \ No newline at end of file diff --git a/Assets/Plugins/.NaughtyAttributes/README.html.meta b/Assets/Plugins/.NaughtyAttributes/README.html.meta new file mode 100644 index 00000000..42c42d4a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/README.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f1c5c604e6d27cc4d86e81f45c704e11 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Samples.meta b/Assets/Plugins/.NaughtyAttributes/Samples.meta new file mode 100644 index 00000000..db0978e4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1e9ff0668650a54da2c458e80a90032 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene.meta diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoScene.unity similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoScene.unity diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoScene.unity.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting new file mode 100644 index 00000000..a88ae386 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting @@ -0,0 +1,63 @@ +%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: DemoSceneSettings + serializedVersion: 2 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 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/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta new file mode 100644 index 00000000..3af7b5e1 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/DemoSceneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98ee975b74776234986f4d35f14c4ccc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab new file mode 100644 index 00000000..64055f67 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1981131855061102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4344736110947706} + - component: {fileID: 33062901823624450} + - component: {fileID: 65233182844289960} + - component: {fileID: 23099360439063292} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4344736110947706 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + 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 &33062901823624450 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &65233182844289960 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &23099360439063292 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/Cube.prefab.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim new file mode 100644 index 00000000..9536161f --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim @@ -0,0 +1,169 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta new file mode 100644 index 00000000..d66e3b6c --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31fbd6c92d19aaa48910857627a54a25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller new file mode 100644 index 00000000..bb64cae8 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller @@ -0,0 +1,120 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-1567792821050049497 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 31fbd6c92d19aaa48910857627a54a25, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimatorController + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Float0 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Float1 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int0 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int1 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool0 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool1 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger0 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger1 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 945276690032550857} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &945276690032550857 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -1567792821050049497} + m_Position: {x: 390, y: 80, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -1567792821050049497} diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta new file mode 100644 index 00000000..2ce8a9cc --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63ee86efd213bf34285c95f33e79dc6c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset.meta new file mode 100644 index 00000000..3143872e --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 0.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 149474eb879a6a641b560ca17d48712f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset diff --git a/Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset.meta rename to Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/TestScriptableObject 1.asset.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png new file mode 100644 index 00000000..228b09ac Binary files /dev/null and b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png differ diff --git a/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta new file mode 100644 index 00000000..c92bc5d6 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Samples/DemoScene/TestAssets/icon-github.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 005888ede18a58e4db8d069cfa3007cb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts.meta b/Assets/Plugins/.NaughtyAttributes/Scripts.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes.meta new file mode 100644 index 00000000..132a3c27 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c76425e719cd4424d868674bcfb233f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta new file mode 100644 index 00000000..343dfece --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95b49d3abe880c044adbe7faf6b7b4ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta new file mode 100644 index 00000000..db61addc --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7373332cb77b42744a415d6b4add445d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta new file mode 100644 index 00000000..93b60ab0 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbdf3fb8882c7514c9a01108122cda7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta new file mode 100644 index 00000000..aa542159 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9df37fdebccf65c4da5b0a14f6dad5f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta new file mode 100644 index 00000000..b25926d7 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cb864a1092cec04f8a4dbb556e8ed31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta new file mode 100644 index 00000000..25a52af4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8b31eb6d7299e54d89dcabc4cad0e6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta new file mode 100644 index 00000000..8fa04e48 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/Expandable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60926d6ca7f9ced469e9248ff1192da6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta new file mode 100644 index 00000000..ecfd2587 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fdd6f99acca2fd42a4f3162d585ce95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta new file mode 100644 index 00000000..8748a6e0 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afd1d6323740c734893fa8397c53113b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta new file mode 100644 index 00000000..da3b2c44 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85033978c18810f46af271bbe94cf4aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta new file mode 100644 index 00000000..93d97f73 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 668d19ebe071176448d1af816a9a0ce0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta new file mode 100644 index 00000000..03e5dcff --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4aaa73f574deaa54187cb54aae571b24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta new file mode 100644 index 00000000..11029f0e --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e19e4db6f4d08f849aa8ea8155cd2760 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta new file mode 100644 index 00000000..cc11d00a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56d9a4b795ef4a94d86b94e55fb81240 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta new file mode 100644 index 00000000..f22649b7 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e054de18423364f4688b72a0f2a472b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta new file mode 100644 index 00000000..4893b923 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b7dd9b44abc0054cb5cd68d74be2c1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta new file mode 100644 index 00000000..618033c4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8903399bbd7c9d745a7b9188ab6c8320 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta new file mode 100644 index 00000000..3096ac43 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cf879ed72221e740a7aa02ef9c366a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta new file mode 100644 index 00000000..cc7be5c0 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8fe363a25ec5e24a9dd510bb0b4a0d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta new file mode 100644 index 00000000..add3c4a4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6189b48f4055e6c47aa132632d898fa6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta new file mode 100644 index 00000000..5aed9a27 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8e9b7b71c94a1f459336a24cfe04b1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta new file mode 100644 index 00000000..84d56244 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ea09f60df536734184a8920ff8bda6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta new file mode 100644 index 00000000..3b4bd252 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95a59093f8ed1af48a8be75fa3050a3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta new file mode 100644 index 00000000..e2dd9d9b --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/INaughtyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edda855906d15e541b46efd812fd70f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes.meta new file mode 100644 index 00000000..547f24d6 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64c95d02a2004854585e8d923d6680d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta new file mode 100644 index 00000000..d68d8de4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07da8af1e3be52c4789678bf4138ae11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta new file mode 100644 index 00000000..b91dc528 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52a0d5c249ac8fd42a4fb4d61bc2f797 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta new file mode 100644 index 00000000..f3a696c4 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a616ae826c8ebae45a89d6a8cb68a843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta new file mode 100644 index 00000000..45fd5eb3 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ba6385cd022e164b89ead1937173ddc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta new file mode 100644 index 00000000..e39736b2 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95f184555d5079243b2d25b35a641a74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta new file mode 100644 index 00000000..888cf89a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ab2d0fcfb13a214ea6ef7629c96a761 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta new file mode 100644 index 00000000..47db85d8 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c437b9ac50575347a7b12520f37f9a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta new file mode 100644 index 00000000..9488d54a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79e0e0c0a7c25ea4fbe8eecaa4d559a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta new file mode 100644 index 00000000..a7be1329 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a482b4e0fbf0f4547a5d522182a68d24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta new file mode 100644 index 00000000..4a92c4bf --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e16a27c5576022b4bbe997c7db9051f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta new file mode 100644 index 00000000..24ec8462 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e57264747ba93b94fbff12733de29499 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta new file mode 100644 index 00000000..4556ac23 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ada427cfd2c9b04989d6d18dea27985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta new file mode 100644 index 00000000..e82a9ad3 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0532b1c4d8a9ccf4b9f98f0bbe4a6747 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef new file mode 100644 index 00000000..569e4e66 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef @@ -0,0 +1,12 @@ +{ + "name": "NaughtyAttributes.Core", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta new file mode 100644 index 00000000..731749cb --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/NaughtyAttributes.Core.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 776d03a35f1b52c4a9aed9f56d7b4229 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility.meta new file mode 100644 index 00000000..80be4768 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d61a3a977073c740ae13a3683ed22a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EColor.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EColor.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EColor.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta new file mode 100644 index 00000000..0f32c5e0 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EColor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 059f8674a8065924ea9c678298b5cd63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta new file mode 100644 index 00000000..60e32647 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/Utility/EConditionOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c227b6c19fc67b46ad294d95818f85a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta new file mode 100644 index 00000000..d5aba48f --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf91d63e37bed3e4cbf75d576fc03a21 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta new file mode 100644 index 00000000..b02fdbcf --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a748250af5ccfd7499cfb444aafb8a03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta new file mode 100644 index 00000000..9d901912 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40133bac7c8d42b4d837138430a503e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta new file mode 100644 index 00000000..7f87cfcb --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0cdf49d1687849458b1a8d4786553d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta new file mode 100644 index 00000000..0addd1a9 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c4171d68fb5bc0448d3ac298973e82c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta new file mode 100644 index 00000000..f5daea83 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f3c43bed2dbc5249b6c6ec7859c2020 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor.meta diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta new file mode 100644 index 00000000..79b2c371 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3041a2296f3b1749b3ef18e695adee4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta new file mode 100644 index 00000000..719f6d80 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ec99f3a124f20e40b8f5edfeb1ecced +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta new file mode 100644 index 00000000..5f50aced --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9c18b0e698717442b7631c5066d667f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef new file mode 100644 index 00000000..e1aafc26 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "NaughtyAttributes.Editor", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta new file mode 100644 index 00000000..70dc9f26 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f88fb04354076c646a4107a491394033 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta new file mode 100644 index 00000000..b63e99f9 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/NaughtyInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b9b53879f7c93b42835c3ad9e0d0a66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta new file mode 100644 index 00000000..7d7dbed8 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4327d74fca5deaa4c83c483fe468d274 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta new file mode 100644 index 00000000..f2f21454 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3175e7041b8f4348bd652485a78e7b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta new file mode 100644 index 00000000..4c3a7e64 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98ff8cb1bcefae740a68d9a5c5ee3563 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta new file mode 100644 index 00000000..adea11ef --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 798b8c99fbc072a4b83ee387e472a2bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta new file mode 100644 index 00000000..fecae2ce --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd080b36769bcd94d909fc0431cf25e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta new file mode 100644 index 00000000..c0081d29 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b750e1461c1126d4399459b90b31e75e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta new file mode 100644 index 00000000..d5925fe0 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1ddb7194615bdc4e8b2088c8d165d8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta new file mode 100644 index 00000000..08f8f461 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0de9d3dfe2d466a458be838edf361645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta new file mode 100644 index 00000000..4b2ac86c --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7278ba0893ab7d940b5f944e5b1cf1a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta new file mode 100644 index 00000000..4613ffec --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27011af81554b5b4489b155f09275475 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta new file mode 100644 index 00000000..dfb90f1a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bcbc424b10864b4eb6e3bcfb276cdf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta new file mode 100644 index 00000000..71a80b6a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 574f5fa6033f26342816a8a5f39749e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta new file mode 100644 index 00000000..4b1e4a57 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e27ffd9a96b58c46bb74cc93de3e06f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta new file mode 100644 index 00000000..a4165442 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f5ed440d4f429e42a5da7bc5df48fd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta new file mode 100644 index 00000000..5a4d16d2 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24dee3fc91cfe94438de1e3c158f187f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta new file mode 100644 index 00000000..75f76c59 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3df4c068c970ab6498df7a60efbde311 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta new file mode 100644 index 00000000..88cd4587 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 750a102004a7e4f46a2046a3d74cae19 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta new file mode 100644 index 00000000..4ff1a661 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf36691a6d456564db2fcbfa8726b3f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta new file mode 100644 index 00000000..c60287c7 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 771776453ad34b045a41dea54856fa12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators.meta new file mode 100644 index 00000000..949d96db --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41caedece93df91439d624dc9d124424 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta new file mode 100644 index 00000000..3e809ac2 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 627b8e9e7bda6fa408c6f47fb8285665 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta new file mode 100644 index 00000000..b3bb871b --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03dd23f6c0598074fb1b721dcd8fe023 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta new file mode 100644 index 00000000..97fe5812 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f332c8e1c3627d742aa9158af7b02ccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta new file mode 100644 index 00000000..d24143ac --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a7e657ea45f6414682b5f41be9541b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta new file mode 100644 index 00000000..3f6e5393 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f6adf84ed53a7840a456e8b4dce38d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta new file mode 100644 index 00000000..cf4dacee --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ButtonUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a273f81125ec52d4cb5dec2228afda0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta new file mode 100644 index 00000000..dce67c63 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/PropertyUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 312eedcb79c7a5542b87c0b848e3e2fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/ReflectionUtility.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta new file mode 100644 index 00000000..aebf0075 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Editor/Utility/SavedBool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18613afe66b0c0344a2be5f430bf965a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test.meta new file mode 100644 index 00000000..6eca4f65 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce2bd76b5676a434bb8a84254f67f1dc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta new file mode 100644 index 00000000..a8daa631 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/AnimatorParamTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bff20ccdde00fc49a62bad6a4ef9982 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/BoxGroupTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/BoxGroupTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/BoxGroupTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta new file mode 100644 index 00000000..0c5ee54f --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/BoxGroupTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3920f5ea384951b4990e4d9e8032d12e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ButtonTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ButtonTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ButtonTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta new file mode 100644 index 00000000..1d7d58f6 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ButtonTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b592f12a9f69ac3408f6f870762232c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/CurveRangeTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/CurveRangeTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/CurveRangeTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta new file mode 100644 index 00000000..e43f8f03 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/CurveRangeTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6587b100d001e7e46b9aaae7f1180b40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DisableIfTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/DisableIfTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/DisableIfTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta new file mode 100644 index 00000000..c3a1e7af --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DisableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e48a088cb96287448c3be58932bfcb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DropdownTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/DropdownTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/DropdownTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta new file mode 100644 index 00000000..ec7fa241 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/DropdownTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3855e37cd6b01194e8166573c7c4b37d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnableIfTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/EnableIfTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnableIfTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta new file mode 100644 index 00000000..c22fe7b7 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bed506d8be3a10f45bec4bf2237bec87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta new file mode 100644 index 00000000..b5486752 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/EnumFlagsTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b7f6b84ce0d7674d8a386fde729279c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ExpandableTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ExpandableTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ExpandableTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta new file mode 100644 index 00000000..ffa82d1a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ExpandableTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64c4c9aee2b494d44be9bb0b7f12ed7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/FoldoutTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/FoldoutTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/FoldoutTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta new file mode 100644 index 00000000..8c72e06b --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/FoldoutTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b437215d92efa74ea85ff726ca0dd09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HideIfTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/HideIfTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/HideIfTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta new file mode 100644 index 00000000..6115ad28 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HideIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf166cb519e666419bb79b0c50c5ee1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta new file mode 100644 index 00000000..4d7ff377 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/HorizontalLineTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cc6d3f8d4a53374887b3d620a6972e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InfoBoxTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/InfoBoxTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/InfoBoxTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta new file mode 100644 index 00000000..68dc824f --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InfoBoxTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dcb08e489c17644e9eacaa1ec5fe781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InputAxisTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/InputAxisTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/InputAxisTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta new file mode 100644 index 00000000..b44a8628 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/InputAxisTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0cc8a31c22090847b75538c0ed2d2fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LabelTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/LabelTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/LabelTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LabelTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LabelTest.cs.meta new file mode 100644 index 00000000..114af72a --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LabelTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7488af014527ebf42af5c4fc4d5f4f5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/LayerTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LayerTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/LayerTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/LayerTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LayerTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LayerTest.cs.meta new file mode 100644 index 00000000..d66d32c6 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/LayerTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 460459d6ac76acd4d872f94cf444e6fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta new file mode 100644 index 00000000..7580a81b --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxSliderTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd67fbde6acdd6a44944f12e507067c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta new file mode 100644 index 00000000..328dee36 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/MinMaxValueTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 450a05787c54e6b4fa88ffe223bcee87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef new file mode 100644 index 00000000..910f5483 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef @@ -0,0 +1,14 @@ +{ + "name": "NaughtyAttributes.Test", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta new file mode 100644 index 00000000..c3d49e73 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/NaughtyAttributes.Test.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df1dea26b8503004d92d621e88aa9421 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta new file mode 100644 index 00000000..bfd1ab25 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/OnValueChangedTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff1df679e5b32f64bb106752c63933fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ProgressBarTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ProgressBarTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ProgressBarTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta new file mode 100644 index 00000000..db884298 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ProgressBarTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96ca4c27fc649764b9d1625f1740cb9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta new file mode 100644 index 00000000..d65c60ce --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReadOnlyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5443d37a05e188846bda9b05b067184e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReorderableListTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ReorderableListTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReorderableListTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta new file mode 100644 index 00000000..b993018c --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ReorderableListTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c93fde7cd79390148ac576c3a159a77b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/RequiredTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/RequiredTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/RequiredTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta new file mode 100644 index 00000000..bc512606 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/RequiredTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c8c10b2234650d42b2a8efad6b413db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta new file mode 100644 index 00000000..380566d5 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ResizableTextAreaTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb4f4bb2e3e063340a24f4bb24528bb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/SceneTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/SceneTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/SceneTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/SceneTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/SceneTest.cs.meta new file mode 100644 index 00000000..3ceca2fe --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/SceneTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 281a85803caf74a459439020a0840fa4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta new file mode 100644 index 00000000..b636853b --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowAssetPreviewTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 705c14aa9ecaa274289972381f471367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowIfTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowIfTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowIfTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta new file mode 100644 index 00000000..749d05ce --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fdbfcfbf5b056a4bac491fe21569572 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta new file mode 100644 index 00000000..19f9e31f --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNativePropertyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5a73795d25dd334e90a5a347c6079d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta new file mode 100644 index 00000000..404ff1bb --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ShowNonSerializedFieldTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 913d67a695253f744bdc776625b9b948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/TagTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/TagTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/TagTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/TagTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/TagTest.cs.meta new file mode 100644 index 00000000..88ea5af3 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/TagTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bcc0d5613b48fb43bd36c9d37e99900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ValidateInputTest.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/ValidateInputTest.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/ValidateInputTest.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta new file mode 100644 index 00000000..f57070a2 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/ValidateInputTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94adafcfe59aa344c9b5596b2cc6ecd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyComponent.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/_NaughtyScriptableObject.cs.meta diff --git a/Assets/Plugins/NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs similarity index 100% rename from Assets/Plugins/NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs rename to Assets/Plugins/.NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs diff --git a/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs.meta b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs.meta new file mode 100644 index 00000000..5037e5c2 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/Scripts/Test/_TestScriptableObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19472ac11eae27a4b804f354ca7d9c00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/NaughtyAttributes/package.json b/Assets/Plugins/.NaughtyAttributes/package.json similarity index 100% rename from Assets/Plugins/NaughtyAttributes/package.json rename to Assets/Plugins/.NaughtyAttributes/package.json diff --git a/Assets/Plugins/.NaughtyAttributes/package.json.meta b/Assets/Plugins/.NaughtyAttributes/package.json.meta new file mode 100644 index 00000000..6f1fa825 --- /dev/null +++ b/Assets/Plugins/.NaughtyAttributes/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db9a5ca20403b0344ae64015de8f8c86 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml deleted file mode 100644 index a24985a3..00000000 --- a/Assets/Plugins/Android/AndroidManifest.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/Assets/Plugins/Android/AndroidManifest.xml.meta b/Assets/Plugins/Android/AndroidManifest.xml.meta deleted file mode 100644 index 829050c5..00000000 --- a/Assets/Plugins/Android/AndroidManifest.xml.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 91b54cdaef10da8448f6794b51c3df28 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib.meta b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib.meta deleted file mode 100644 index 69bae420..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib.meta +++ /dev/null @@ -1,32 +0,0 @@ -fileFormatVersion: 2 -guid: 4c454200c35b8514c95e363363406196 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml deleted file mode 100644 index b2a4c0a3..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml.meta b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml.meta deleted file mode 100644 index 4828a69c..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e869b36b657604102a7166a39ee7d9c9 -labels: -- gvh -- gvh_version-9.2.0 -- gvhp_exportpath-Plugins/Android/GoogleMobileAdsPlugin.androidlib/AndroidManifest.xml -timeCreated: 1427838353 -licenseType: Free -TextScriptImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle deleted file mode 100644 index 7a99a3a5..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle +++ /dev/null @@ -1,5 +0,0 @@ -android { - packagingOptions { - pickFirst "META-INF/kotlinx_coroutines_core.version" - } -} diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle.meta b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle.meta deleted file mode 100644 index c61578b5..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle.meta +++ /dev/null @@ -1,81 +0,0 @@ -fileFormatVersion: 2 -guid: 5b00d19726f74439b9a2fd9accf90795 -labels: -- gvh -- gvh_version-9.2.0 -- gvhp_exportpath-Plugins/Android/GoogleMobileAdsPlugin.androidlib/packaging_options.gradle -timeCreated: 1480838400 -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Android: - enabled: 1 - settings: - CPU: AnyCPU - Any: - enabled: 0 - settings: {} - Editor: - enabled: 1 - settings: - CPU: AnyCPU - DefaultValueInitialized: true - OS: AnyOS - Linux: - enabled: 1 - settings: - CPU: x86 - Linux64: - enabled: 1 - settings: - CPU: x86_64 - LinuxUniversal: - enabled: 1 - settings: - CPU: AnyCPU - OSXIntel: - enabled: 1 - settings: - CPU: x86 - OSXIntel64: - enabled: 1 - settings: - CPU: x86_64 - OSXUniversal: - enabled: 1 - settings: - CPU: AnyCPU - Web: - enabled: 0 - settings: {} - WebStreamed: - enabled: 0 - settings: {} - Win: - enabled: 1 - settings: - CPU: x86 - Win64: - enabled: 1 - settings: - CPU: x86_64 - WindowsStoreApps: - enabled: 0 - settings: - CPU: AnyCPU - iOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - tvOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties deleted file mode 100644 index 37f1a3b7..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties +++ /dev/null @@ -1,2 +0,0 @@ -target=android-31 -android.library=true diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties.meta b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties.meta deleted file mode 100644 index 7c379b33..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 1d06ef613dfec4baa88b56aeef69cd9c -labels: -- gvh -- gvh_version-9.2.0 -- gvhp_exportpath-Plugins/Android/GoogleMobileAdsPlugin.androidlib/project.properties -timeCreated: 1427838343 -licenseType: Free -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle deleted file mode 100644 index e8f2bb0c..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (C) 2023 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -import groovy.util.XmlSlurper -import groovy.xml.XmlUtil - -import java.util.zip.ZipEntry -import java.util.zip.ZipOutputStream - -configurations { - // Configuration used to resolve the artifacts of dependencies. - aarArtifacts.extendsFrom implementation -} - -/** - * Validates the Unity GMA plugin dependencies. - * Add the following snippet to Assets/Plugins/Android/mainTemplate.gradle in the Unity Editor or - * unityLibrary/build.gradle in an Android project to use this script: - *
{@code
- * gradle.projectsEvaluated {
- *     apply from: 'GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle'
- * }
- * }
- */ -task validateDependencies { - def expandedArchiveDirectory - // List of artifacts resolved from the aarArtifacts configuration. - project.configurations.aarArtifacts. - resolvedConfiguration.lenientConfiguration. - getArtifacts(Specs.satisfyAll()).findResults { - ResolvedArtifact artifact -> - File artifactTargetFile = new File(artifact.file.parent , artifact.file.name) - // Desired artifact - com.google.android.gms:play-services-ads-lite:22.4.0 - // Group ID - com.google.android.gms - // Artifact ID - play-services-ads-lite - // Since Gradle has different naming convention for the same artifact in - // * modules-2 cache - play-services-ads-lite-22.4.0.aar - // * transforms-2 cache - com.google.android.gms.play-services-ads-lite-22.4.0 - // we look for the common segment. - if (artifact.name.contains("play-services-ads-lite")) { - // Explode the archive to a temporary directory. - FileTree expandedArchive = project.zipTree(artifactTargetFile) - expandedArchive.forEach { File androidManifest -> - if (androidManifest.getName() == "AndroidManifest.xml") { - def xml = new XmlSlurper().parse(androidManifest) - def propertyNode = xml.depthFirst().find { it.name() == 'property' } - if (propertyNode) { - // Replace the node with a comment. - propertyNode.replaceNode { - mkp.comment 'android.adservices.AD_SERVICES_CONFIG property'\ - + ' removed by GoogleMobileAds Unity plugin - Release notes: '\ - + 'https://github.com/googleads/googleads-mobile-unity/releases/'\ - + 'tag/v8.6.0' - } - } - def updatedXml = XmlUtil.serialize(xml) - androidManifest.setWritable(true) - androidManifest.text = updatedXml - expandedArchiveDirectory = androidManifest.parent - } - } - // Update the artifact archive. - artifactTargetFile.withOutputStream { outputStream -> - def zipStream = new ZipOutputStream(outputStream) - file(expandedArchiveDirectory).eachFileRecurse { file -> - if (file.isFile()) { - def entry = new ZipEntry(file.name) - zipStream.putNextEntry(entry) - file.withInputStream { zipStream << it } - zipStream.closeEntry() - } - } - zipStream.close() - } - } - } - // Clean up the temporary directory. - if (expandedArchiveDirectory) delete expandedArchiveDirectory -} - -// Run the update task before unityLibrary project is built. -project(':unityLibrary:GoogleMobileAdsPlugin.androidlib') { - tasks.named('preBuild') { - dependsOn validateDependencies - } -} diff --git a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle.meta b/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle.meta deleted file mode 100644 index 99076986..00000000 --- a/Assets/Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle.meta +++ /dev/null @@ -1,81 +0,0 @@ -fileFormatVersion: 2 -guid: 9dfd887a15174d2b91b4e979131a7ac7 -labels: -- gvh -- gvh_version-9.2.0 -- gvhp_exportpath-Plugins/Android/GoogleMobileAdsPlugin.androidlib/validate_dependencies.gradle -timeCreated: 1480838400 -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - platformData: - Android: - enabled: 1 - settings: - CPU: AnyCPU - Any: - enabled: 0 - settings: {} - Editor: - enabled: 1 - settings: - CPU: AnyCPU - DefaultValueInitialized: true - OS: AnyOS - Linux: - enabled: 1 - settings: - CPU: x86 - Linux64: - enabled: 1 - settings: - CPU: x86_64 - LinuxUniversal: - enabled: 1 - settings: - CPU: AnyCPU - OSXIntel: - enabled: 1 - settings: - CPU: x86 - OSXIntel64: - enabled: 1 - settings: - CPU: x86_64 - OSXUniversal: - enabled: 1 - settings: - CPU: AnyCPU - Web: - enabled: 0 - settings: {} - WebStreamed: - enabled: 0 - settings: {} - Win: - enabled: 1 - settings: - CPU: x86 - Win64: - enabled: 1 - settings: - CPU: x86_64 - WindowsStoreApps: - enabled: 0 - settings: - CPU: AnyCPU - iOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - tvOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/googlemobileads-unity.aar b/Assets/Plugins/Android/googlemobileads-unity.aar deleted file mode 100644 index 28ebc6dc..00000000 Binary files a/Assets/Plugins/Android/googlemobileads-unity.aar and /dev/null differ diff --git a/Assets/Plugins/Android/googlemobileads-unity.aar.meta b/Assets/Plugins/Android/googlemobileads-unity.aar.meta deleted file mode 100644 index 0c7cd3c9..00000000 --- a/Assets/Plugins/Android/googlemobileads-unity.aar.meta +++ /dev/null @@ -1,34 +0,0 @@ -fileFormatVersion: 2 -guid: 17a245deed759224988771175b43158e -labels: -- gvh -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/gradleTemplate.properties.meta b/Assets/Plugins/Android/gradleTemplate.properties.meta index dbc44971..e1842b8f 100644 --- a/Assets/Plugins/Android/gradleTemplate.properties.meta +++ b/Assets/Plugins/Android/gradleTemplate.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 284b36cc3926c8943afb1ec92628dd55 +guid: 808f896bbfbcd444996c1b80c77e34e2 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/Android/mainTemplate.gradle b/Assets/Plugins/Android/mainTemplate.gradle index 47345455..19cd47bd 100644 --- a/Assets/Plugins/Android/mainTemplate.gradle +++ b/Assets/Plugins/Android/mainTemplate.gradle @@ -1,31 +1,34 @@ +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:7.4.2' // Updated AGP + classpath 'com.google.gms:google-services:4.3.15' // For Firebase + } +} + apply plugin: 'com.android.library' **APPLY_PLUGINS** dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) -// Android Resolver Dependencies Start - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:12 - implementation 'com.google.android.gms:play-services-ads:23.2.0' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7 - implementation 'com.google.android.ump:user-messaging-platform:2.2.0' // Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml:7 -// Android Resolver Dependencies End -**DEPS**} - -// Android Resolver Exclusions Start -android { - packagingOptions { - exclude ('/lib/armeabi/*' + '*') - exclude ('/lib/mips/*' + '*') - exclude ('/lib/mips64/*' + '*') - exclude ('/lib/x86/*' + '*') - exclude ('/lib/x86_64/*' + '*') - } + + // Google Sign-In + implementation 'com.google.android.gms:play-services-auth:20.7.0' + implementation 'com.google.android.gms:play-services-base:18.2.0' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.browser:browser:1.5.0' + + **DEPS** } -// Android Resolver Exclusions End + android { namespace "com.unity3d.player" ndkPath "**NDKPATH**" - compileSdkVersion **APIVERSION** - buildToolsVersion '**BUILDTOOLS**' + compileSdkVersion 34 + buildToolsVersion '34.0.0' compileOptions { sourceCompatibility JavaVersion.VERSION_11 @@ -34,7 +37,7 @@ android { defaultConfig { minSdkVersion **MINSDKVERSION** - targetSdkVersion **TARGETSDKVERSION** + targetSdkVersion 34 ndk { abiFilters **ABIFILTERS** } @@ -48,10 +51,28 @@ android { } aaptOptions { - noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ') + // Updated noCompress property + noCompress = ['.unity3d', '.ress', '.resource', '.obb', '.bundle', '.xap'] + unityStreamingAssets.tokenize(', ') ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~" - }**PACKAGING_OPTIONS** + } + + packagingOptions { + pickFirst '**/libc++_shared.so' + } +} + +// Android Resolver Exclusions Start +android { + packagingOptions { + exclude ('/lib/armeabi/*' + '*') + exclude ('/lib/mips/*' + '*') + exclude ('/lib/mips64/*' + '*') + exclude ('/lib/x86/*' + '*') + exclude ('/lib/x86_64/*' + '*') + } } +// Android Resolver Exclusions End + **IL_CPP_BUILD_SETUP** **SOURCE_BUILD_SETUP** -**EXTERNAL_SOURCES** +**EXTERNAL_SOURCES** \ No newline at end of file diff --git a/Assets/Plugins/Android/mainTemplate.gradle.meta b/Assets/Plugins/Android/mainTemplate.gradle.meta index efc46305..be22fd21 100644 --- a/Assets/Plugins/Android/mainTemplate.gradle.meta +++ b/Assets/Plugins/Android/mainTemplate.gradle.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 333d1288d35295342b538b63f80a76e1 +guid: b894219fe1305084c86de6d3d70b0180 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/Android/settingsTemplate.gradle b/Assets/Plugins/Android/settingsTemplate.gradle index d6a97f9f..f9c1bdbf 100644 --- a/Assets/Plugins/Android/settingsTemplate.gradle +++ b/Assets/Plugins/Android/settingsTemplate.gradle @@ -19,7 +19,7 @@ dependencyResolutionManagement { // Android Resolver Repos Start def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/") maven { - url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7, Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:12, Assets/GoogleMobileAds/Editor/GoogleUmpDependencies.xml:7 + url (unityProjectPath + "/Assets/GoogleSignIn/Editor/m2repository") // Assets/GoogleSignIn/Editor/GoogleSignInSupportDependencies.xml:9 } mavenLocal() // Android Resolver Repos End diff --git a/Assets/Plugins/Android/settingsTemplate.gradle.meta b/Assets/Plugins/Android/settingsTemplate.gradle.meta index 8627fb29..6d11824b 100644 --- a/Assets/Plugins/Android/settingsTemplate.gradle.meta +++ b/Assets/Plugins/Android/settingsTemplate.gradle.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3e0a23326958a184bb7d9300afa3090b +guid: 479c1ae3d527aaf4b8abf61d2a1ca1ef DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/IngameDebugConsole.meta b/Assets/Plugins/IngameDebugConsole.meta new file mode 100644 index 00000000..4e6cfc8d --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9346e14043bcae743a1370b80894ba10 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Android.meta b/Assets/Plugins/IngameDebugConsole/Android.meta new file mode 100644 index 00000000..fcaef243 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3d7d7a61a5341904eb3c65af025b1d86 +folderAsset: yes +timeCreated: 1510075633 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs new file mode 100644 index 00000000..95e8df7b --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs @@ -0,0 +1,54 @@ +#if !UNITY_EDITOR && UNITY_ANDROID +using System.Collections.Generic; +using UnityEngine; + +// Credit: https://stackoverflow.com/a/41018028/2373034 +namespace IngameDebugConsole +{ + public class DebugLogLogcatListener : AndroidJavaProxy + { + private Queue queuedLogs; + private AndroidJavaObject nativeObject; + + public DebugLogLogcatListener() : base( "com.yasirkula.unity.DebugConsoleLogcatLogReceiver" ) + { + queuedLogs = new Queue( 16 ); + } + + ~DebugLogLogcatListener() + { + Stop(); + + if( nativeObject != null ) + nativeObject.Dispose(); + } + + public void Start( string arguments ) + { + if( nativeObject == null ) + nativeObject = new AndroidJavaObject( "com.yasirkula.unity.DebugConsoleLogcatLogger" ); + + nativeObject.Call( "Start", this, arguments ); + } + + public void Stop() + { + if( nativeObject != null ) + nativeObject.Call( "Stop" ); + } + + public void OnLogReceived( string log ) + { + queuedLogs.Enqueue( log ); + } + + public string GetLog() + { + if( queuedLogs.Count > 0 ) + return queuedLogs.Dequeue(); + + return null; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta new file mode 100644 index 00000000..8f332f61 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dd3b7385882055d4a8c2b91deb6b2470 +timeCreated: 1510076185 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar new file mode 100644 index 00000000..e8bb24f4 Binary files /dev/null and b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar differ diff --git a/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta new file mode 100644 index 00000000..b67820ba --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: bf909fab1c14af446b0a854de42289b2 +timeCreated: 1510086220 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Editor.meta b/Assets/Plugins/IngameDebugConsole/Editor.meta new file mode 100644 index 00000000..89ddb4f2 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 86f54622630720f4abe279acdbb8886f +folderAsset: yes +timeCreated: 1561217660 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs new file mode 100644 index 00000000..63b2eb03 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs @@ -0,0 +1,83 @@ +using UnityEditor; + +namespace IngameDebugConsole +{ + [CustomEditor( typeof( DebugLogManager ) )] + public class DebugLogManagerEditor : Editor + { + private SerializedProperty singleton; + private SerializedProperty minimumHeight; + private SerializedProperty enablePopup; + private SerializedProperty startInPopupMode; + private SerializedProperty startMinimized; + private SerializedProperty toggleWithKey; + private SerializedProperty toggleKey; + private SerializedProperty enableSearchbar; + private SerializedProperty topSearchbarMinWidth; + private SerializedProperty clearCommandAfterExecution; + private SerializedProperty commandHistorySize; + private SerializedProperty showCommandSuggestions; + private SerializedProperty receiveLogcatLogsInAndroid; + private SerializedProperty logcatArguments; + + private void OnEnable() + { + singleton = serializedObject.FindProperty( "singleton" ); + minimumHeight = serializedObject.FindProperty( "minimumHeight" ); + enablePopup = serializedObject.FindProperty( "enablePopup" ); + startInPopupMode = serializedObject.FindProperty( "startInPopupMode" ); + startMinimized = serializedObject.FindProperty( "startMinimized" ); + toggleWithKey = serializedObject.FindProperty( "toggleWithKey" ); + toggleKey = serializedObject.FindProperty( "toggleKey" ); + enableSearchbar = serializedObject.FindProperty( "enableSearchbar" ); + topSearchbarMinWidth = serializedObject.FindProperty( "topSearchbarMinWidth" ); + clearCommandAfterExecution = serializedObject.FindProperty( "clearCommandAfterExecution" ); + commandHistorySize = serializedObject.FindProperty( "commandHistorySize" ); + showCommandSuggestions = serializedObject.FindProperty( "showCommandSuggestions" ); + receiveLogcatLogsInAndroid = serializedObject.FindProperty( "receiveLogcatLogsInAndroid" ); + logcatArguments = serializedObject.FindProperty( "logcatArguments" ); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField( singleton ); + EditorGUILayout.PropertyField( minimumHeight ); + EditorGUILayout.PropertyField( enablePopup ); + + if( enablePopup.boolValue ) + DrawSubProperty( startInPopupMode ); + else + DrawSubProperty( startMinimized ); + + EditorGUILayout.PropertyField( toggleWithKey ); + + if( toggleWithKey.boolValue ) + DrawSubProperty( toggleKey ); + + EditorGUILayout.PropertyField( enableSearchbar ); + + if( enableSearchbar.boolValue ) + DrawSubProperty( topSearchbarMinWidth ); + + EditorGUILayout.PropertyField( clearCommandAfterExecution ); + EditorGUILayout.PropertyField( commandHistorySize ); + EditorGUILayout.PropertyField( showCommandSuggestions ); + EditorGUILayout.PropertyField( receiveLogcatLogsInAndroid ); + + if( receiveLogcatLogsInAndroid.boolValue ) + DrawSubProperty( logcatArguments ); + + DrawPropertiesExcluding( serializedObject, "m_Script" ); + serializedObject.ApplyModifiedProperties(); + } + + private void DrawSubProperty( SerializedProperty property ) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField( property ); + EditorGUI.indentLevel--; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta new file mode 100644 index 00000000..2fcd70ec --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4c23e5c521cb0c54b9a638b2a653d1d3 +timeCreated: 1561217671 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef new file mode 100644 index 00000000..c2ac0063 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "IngameDebugConsole.Editor", + "references": [ + "IngameDebugConsole.Runtime" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta new file mode 100644 index 00000000..e2378b7e --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 466e67dabd1db22468246c39eddb6c3f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef new file mode 100644 index 00000000..9f4bfcff --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef @@ -0,0 +1,3 @@ +{ + "name": "IngameDebugConsole.Runtime" +} diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta new file mode 100644 index 00000000..7e13cb2d --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3de88c88fbbb8f944b9210d496af9762 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab new file mode 100644 index 00000000..1a434d3c --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab @@ -0,0 +1,4005 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100406 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22478474} + - component: {fileID: 22292746} + - component: {fileID: 11476740} + m_Layer: 5 + m_Name: NewInfoCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109254 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 437128} + - component: {fileID: 11418932} + - component: {fileID: 11492840} + - component: {fileID: 114575087663981696} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &110786 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22460680} + - component: {fileID: 22261918} + - component: {fileID: 11431488} + - component: {fileID: 114538072837526774} + m_Layer: 5 + m_Name: DebugLogWindowResize + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &118212 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22429100} + - component: {fileID: 22207004} + - component: {fileID: 11499344} + - component: {fileID: 11414302} + - component: {fileID: 11460786} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &119972 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22485076} + - component: {fileID: 11471588} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &121708 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22456566} + - component: {fileID: 222466100300644746} + - component: {fileID: 114944715489184838} + - component: {fileID: 114777798721274074} + m_Layer: 5 + m_Name: Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &123548 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22466754} + - component: {fileID: 22288586} + - component: {fileID: 11495556} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &132536 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22457152} + - component: {fileID: 22331464} + - component: {fileID: 11440770} + - component: {fileID: 11490438} + - component: {fileID: 11452418} + m_Layer: 5 + m_Name: IngameDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133140 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22428984} + - component: {fileID: 22231690} + - component: {fileID: 11400378} + - component: {fileID: 11466918} + m_Layer: 5 + m_Name: FilterLogButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &133612 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22468896} + - component: {fileID: 22255062} + - component: {fileID: 11448508} + - component: {fileID: 11477250} + m_Layer: 5 + m_Name: HideButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &135210 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22496878} + - component: {fileID: 22213036} + - component: {fileID: 11450122} + m_Layer: 5 + m_Name: ErrorCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &142160 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22488670} + - component: {fileID: 22236784} + - component: {fileID: 11491814} + - component: {fileID: 11437802} + m_Layer: 5 + m_Name: CollapseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &145092 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22497984} + - component: {fileID: 22209426} + - component: {fileID: 11437286} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148506 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22435388} + - component: {fileID: 22236120} + - component: {fileID: 11430762} + m_Layer: 5 + m_Name: WarningImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &160714 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22439026} + - component: {fileID: 22209194} + - component: {fileID: 11486984} + m_Layer: 5 + m_Name: InfoImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &161086 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22420992} + - component: {fileID: 22290652} + - component: {fileID: 11419610} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &163938 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22455554} + - component: {fileID: 22258478} + - component: {fileID: 11490350} + - component: {fileID: 11472314} + m_Layer: 5 + m_Name: FilterWarningButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &164562 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22485120} + - component: {fileID: 22261724} + - component: {fileID: 114435636144975300} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &165242 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22452256} + - component: {fileID: 22278414} + - component: {fileID: 11431640} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166206 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22412306} + - component: {fileID: 22260676} + - component: {fileID: 11421290} + m_Layer: 5 + m_Name: ErrorImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168792 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22431144} + - component: {fileID: 22240830} + - component: {fileID: 11411602} + m_Layer: 5 + m_Name: NewErrorCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &170186 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22495692} + - component: {fileID: 22248262} + - component: {fileID: 11406916} + - component: {fileID: 11420596} + m_Layer: 5 + m_Name: FilterErrorButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &171206 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22482970} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173314 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22436850} + - component: {fileID: 11405548} + - component: {fileID: 22273436} + - component: {fileID: 11410364} + - component: {fileID: 11414998} + m_Layer: 5 + m_Name: Debugs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176246 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22427174} + - component: {fileID: 22242412} + - component: {fileID: 11496004} + m_Layer: 5 + m_Name: WarningCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &176876 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22452314} + - component: {fileID: 22235120} + - component: {fileID: 11400274} + m_Layer: 5 + m_Name: LogCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178532 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22414360} + - component: {fileID: 22223402} + - component: {fileID: 11410584} + - component: {fileID: 11491080} + - component: {fileID: 22505754} + m_Layer: 5 + m_Name: DebugLogPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &183006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22477946} + - component: {fileID: 22230524} + - component: {fileID: 11400672} + - component: {fileID: 22509978} + m_Layer: 5 + m_Name: DebugLogWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &187566 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22400762} + - component: {fileID: 11453682} + m_Layer: 5 + m_Name: LogsContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &189604 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22426080} + - component: {fileID: 22270452} + - component: {fileID: 11419798} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &192924 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22436794} + - component: {fileID: 22260966} + - component: {fileID: 11414436} + m_Layer: 5 + m_Name: NewWarningCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &437128 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109254} + 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: 22457152} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11400274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176876} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11400378 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400672 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960784, g: 0.21960784, b: 0.21960784, a: 0.797} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11405548 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 22400762} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.01 + m_ScrollSensitivity: 25 + m_Viewport: {fileID: 22485076} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 11414302} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11406916 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11410364 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173314} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11410584 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30588236, g: 0.30588236, b: 0.30588236, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11411602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11414302 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11419798} + m_HandleRect: {fileID: 22426080} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11414436 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11414998 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb564dcb180e586429c57456166a76b5, type: 3} + m_Name: + m_EditorClassIdentifier: + debugsScrollRect: {fileID: 11405548} + debugLogManager: {fileID: 11452418} +--- !u!114 &11418932 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 0 + m_DragThreshold: 5 +--- !u!114 &11419610 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11419798 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 189604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11420596 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11406916} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11421290 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11430762 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11431488 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11431640 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11437286 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11437802 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11491814} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11440770 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11448508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450122 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11452418 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a4f16ed905adcd4ab0d7c8c11f0d72c, type: 3} + m_Name: + m_EditorClassIdentifier: + singleton: 1 + minimumHeight: 200 + enablePopup: 1 + startInPopupMode: 1 + startMinimized: 0 + toggleWithKey: 1 + toggleKey: 96 + enableSearchbar: 1 + topSearchbarMinWidth: 360 + clearCommandAfterExecution: 1 + commandHistorySize: 15 + showCommandSuggestions: 1 + receiveLogcatLogsInAndroid: 0 + logcatArguments: + avoidScreenCutout: 1 + maxLogLength: 10000 + autoFocusOnCommandInputField: 1 + logItemPrefab: {fileID: 11408050, guid: 391be5df5ef62f345bb76a1051c04da7, type: 2} + commandSuggestionPrefab: {fileID: 114169395487023046, guid: 5e66896448428cf46a1854dbdc014914, + type: 2} + infoLog: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + warningLog: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + errorLog: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + collapseButtonNormalColor: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + collapseButtonSelectedColor: {r: 0.44117647, g: 0.4346886, b: 0.4346886, a: 1} + filterButtonsNormalColor: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + filterButtonsSelectedColor: {r: 0.44117647, g: 0.4346886, b: 0.4346886, a: 1} + commandSuggestionHighlightStart: + commandSuggestionHighlightEnd: + logWindowTR: {fileID: 22477946} + logItemsContainer: {fileID: 22400762} + commandSuggestionsContainer: {fileID: 224982529675224150} + commandInputField: {fileID: 114000010993257018} + hideButton: {fileID: 11477250} + clearButton: {fileID: 114466839828933532} + collapseButton: {fileID: 11491814} + filterInfoButton: {fileID: 11400378} + filterWarningButton: {fileID: 11490350} + filterErrorButton: {fileID: 11406916} + infoEntryCountText: {fileID: 11400274} + warningEntryCountText: {fileID: 11496004} + errorEntryCountText: {fileID: 11450122} + searchbar: {fileID: 224927884203097686} + searchbarSlotTop: {fileID: 224619367409363176} + searchbarSlotBottom: {fileID: 224755787573573022} + snapToBottomButton: {fileID: 1486651836328188} + logWindowCanvasGroup: {fileID: 22509978} + popupManager: {fileID: 11491080} + logItemsScrollRect: {fileID: 11405548} + recycledListView: {fileID: 11453682} +--- !u!114 &11453682 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ce231987d32488f43b6fb798f7df43f6, type: 3} + m_Name: + m_EditorClassIdentifier: + transformComponent: {fileID: 22400762} + viewportTransform: {fileID: 22485076} + debugManager: {fileID: 11452418} + logItemNormalColor1: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697} + logItemNormalColor2: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.697} + logItemSelectedColor: {r: 0.32941177, g: 0.4862745, b: 0.7058824, a: 0.697} +--- !u!114 &11460786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 13 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11414998} + m_MethodName: OnScrollbarDragStart + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 14 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11414998} + m_MethodName: OnScrollbarDragEnd + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!114 &11466918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400378} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11471588 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -146154839, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11472314 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11490350} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11476740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11477250 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11448508} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11486984 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160714} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11490350 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11490438 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11491080 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05cc4b1999716644c9308528e38e7081, type: 3} + m_Name: + m_EditorClassIdentifier: + debugManager: {fileID: 11452418} + newInfoCountText: {fileID: 11476740} + newWarningCountText: {fileID: 11414436} + newErrorCountText: {fileID: 11411602} + alertColorInfo: {r: 0.050980393, g: 0.32941177, b: 0.5647059, a: 1} + alertColorWarning: {r: 0.59607846, g: 0.45490196, b: 0, a: 1} + alertColorError: {r: 0.5647059, g: 0.050980393, b: 0.050980393, a: 1} +--- !u!114 &11491814 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11492840 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &11495556 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 123548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11496004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!114 &11499344 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22207004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118212} +--- !u!222 &22209194 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160714} +--- !u!222 &22209426 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145092} +--- !u!222 &22213036 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135210} +--- !u!222 &22223402 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178532} +--- !u!222 &22230524 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183006} +--- !u!222 &22231690 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133140} +--- !u!222 &22235120 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176876} +--- !u!222 &22236120 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148506} +--- !u!222 &22236784 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142160} +--- !u!222 &22240830 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168792} +--- !u!222 &22242412 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176246} +--- !u!222 &22248262 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170186} +--- !u!222 &22255062 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} +--- !u!222 &22258478 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163938} +--- !u!222 &22260676 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166206} +--- !u!222 &22260966 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192924} +--- !u!222 &22261724 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164562} +--- !u!222 &22261918 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110786} +--- !u!222 &22270452 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 189604} +--- !u!222 &22273436 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173314} +--- !u!222 &22278414 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165242} +--- !u!222 &22288586 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 123548} +--- !u!222 &22290652 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161086} +--- !u!222 &22292746 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100406} +--- !u!223 &22331464 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 1001 + m_TargetDisplay: 0 +--- !u!224 &22400762 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187566} + 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: 22485076} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.00012207031} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22412306 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166206} + 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: 22414360} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.025} + m_AnchorMax: {x: 0.45, y: 0.325} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &22414360 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178532} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22439026} + - {fileID: 22435388} + - {fileID: 22412306} + - {fileID: 22478474} + - {fileID: 22436794} + - {fileID: 22431144} + m_Father: {fileID: 22457152} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -36, y: 0} + m_SizeDelta: {x: 72, y: 72} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22420992 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161086} + 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: 22460680} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22426080 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 189604} + 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: 22482970} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22427174 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176246} + 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: 22455554} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22428984 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133140} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22497984} + - {fileID: 22452314} + m_Father: {fileID: 22456566} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22429100 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 118212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22482970} + m_Father: {fileID: 22436850} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 28, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22431144 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168792} + 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: 22414360} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.025} + m_AnchorMax: {x: 1, y: 0.325} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22435388 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148506} + 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: 22414360} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.35} + m_AnchorMax: {x: 0.45, y: 0.65} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &22436794 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 192924} + 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: 22414360} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.35} + m_AnchorMax: {x: 1, y: 0.65} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22436850 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173314} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485076} + - {fileID: 22429100} + m_Father: {fileID: 22477946} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -72} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22439026 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 160714} + 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: 22414360} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.675} + m_AnchorMax: {x: 0.45, y: 0.975} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &22452256 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 165242} + 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: 22495692} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22452314 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 176876} + 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: 22428984} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22455554 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 163938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22466754} + - {fileID: 22427174} + m_Father: {fileID: 22456566} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22456566 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121708} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224856348943071238} + - {fileID: 22488670} + - {fileID: 224619367409363176} + - {fileID: 22428984} + - {fileID: 22455554} + - {fileID: 22495692} + - {fileID: 22468896} + m_Father: {fileID: 22477946} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 36} + m_Pivot: {x: 1, y: 1} +--- !u!224 &22457152 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 132536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22477946} + - {fileID: 22414360} + - {fileID: 437128} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22460680 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110786} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22420992} + m_Father: {fileID: 22477946} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 36} + m_Pivot: {x: 1, y: 0} +--- !u!224 &22466754 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 123548} + 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: 22455554} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22468896 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 133612} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22485120} + m_Father: {fileID: 22456566} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22477946 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22456566} + - {fileID: 224755787573573022} + - {fileID: 22436850} + - {fileID: 224175272648112170} + - {fileID: 224000011255372986} + - {fileID: 22460680} + m_Father: {fileID: 22457152} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22478474 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100406} + 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: 22414360} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.675} + m_AnchorMax: {x: 1, y: 0.975} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22482970 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22426080} + m_Father: {fileID: 22429100} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22485076 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22400762} + - {fileID: 224170087475393432} + m_Father: {fileID: 22436850} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -29, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!224 &22485120 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164562} + 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: 22468896} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22488670 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 142160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224781297716539566} + m_Father: {fileID: 22456566} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22495692 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 170186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22452256} + - {fileID: 22496878} + m_Father: {fileID: 22456566} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22496878 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 135210} + 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: 22495692} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22497984 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 145092} + 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: 22428984} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &22505754 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!225 &22509978 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 183006} + m_Enabled: 1 + m_Alpha: 0 + m_Interactable: 0 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 132536} + m_IsPrefabParent: 1 +--- !u!1 &1000010562689872 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000014081388310} + - component: {fileID: 222000011960742964} + - component: {fileID: 114000012764979206} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013017939458 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000014244241328} + - component: {fileID: 222000010368327546} + - component: {fileID: 114000013429243584} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013131456698 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011255372986} + - component: {fileID: 222000010912077860} + - component: {fileID: 114000013324539428} + - component: {fileID: 114000010993257018} + m_Layer: 5 + m_Name: CommandInputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1023677686285356 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224755787573573022} + - component: {fileID: 222554695212194500} + - component: {fileID: 114565304207243400} + m_Layer: 5 + m_Name: SearchbarSlotBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1046123681008450 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224757625655964314} + - component: {fileID: 222859164510105872} + - component: {fileID: 114958054160062352} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1065080943999816 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224982529675224150} + - component: {fileID: 222691170673863110} + - component: {fileID: 114095641519247160} + - component: {fileID: 114749866180229960} + m_Layer: 5 + m_Name: CommandSuggestionsContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1164238372139318 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224669170713768380} + - component: {fileID: 222006696964694420} + - component: {fileID: 114590115059802926} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1197649202466618 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224927884203097686} + - component: {fileID: 222677458225366564} + - component: {fileID: 114677982133495580} + - component: {fileID: 114664465529608634} + m_Layer: 5 + m_Name: Searchbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1316062289193744 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224781297716539566} + - component: {fileID: 222390805710412110} + - component: {fileID: 114375211676648468} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1419055185851692 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224175272648112170} + - component: {fileID: 114201206152803294} + m_Layer: 5 + m_Name: CommandSuggestions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1486651836328188 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224170087475393432} + - component: {fileID: 222255240242372310} + - component: {fileID: 114590956026916120} + - component: {fileID: 114786672304321734} + m_Layer: 5 + m_Name: SnapToBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1608527955020594 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224619367409363176} + - component: {fileID: 222199124140025852} + - component: {fileID: 114533172895795940} + - component: {fileID: 114425215294804516} + m_Layer: 5 + m_Name: SearchbarSlotTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1797932393879816 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224479789572691966} + - component: {fileID: 222428315485768352} + - component: {fileID: 114704198421030094} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1828058091608518 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224856348943071238} + - component: {fileID: 222172057957339964} + - component: {fileID: 114501864645789684} + - component: {fileID: 114466839828933532} + m_Layer: 5 + m_Name: ClearButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1837270565088688 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224726770285678000} + - component: {fileID: 222974975071271426} + - component: {fileID: 114796147118253168} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1926020646996780 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224332069547574292} + - component: {fileID: 222821544406435052} + - component: {fileID: 114187932873892064} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114000010993257018 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013131456698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114000013324539428} + m_TextComponent: {fileID: 114000012764979206} + m_Placeholder: {fileID: 114000013429243584} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 2 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &114000012764979206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010562689872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &114000013324539428 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013131456698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000013429243584 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013017939458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 0.653} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (type help for list of commands) +--- !u!114 &114095641519247160 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1065080943999816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.334, g: 0.3286984, b: 0.3286984, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114187932873892064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926020646996780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114201206152803294 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1419055185851692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114375211676648468 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1316062289193744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114425215294804516 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1608527955020594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 2 + m_FlexibleHeight: -1 +--- !u!114 &114435636144975300 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 164562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114466839828933532 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1828058091608518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114501864645789684} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114501864645789684 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1828058091608518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114533172895795940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1608527955020594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.24264705, g: 0.24443123, b: 0.24443123, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114538072837526774 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 110786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6565f2084f5aef44abe57c988745b9c3, type: 3} + m_Name: + m_EditorClassIdentifier: + debugManager: {fileID: 11452418} +--- !u!114 &114565304207243400 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1023677686285356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114575087663981696 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1327945023, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114590115059802926 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1164238372139318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 0.653} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Search... +--- !u!114 &114590956026916120 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486651836328188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30980393, g: 0.30980393, b: 0.30980393, a: 0.6862745} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b902f763d0e47364dae25207b7e47800, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114664465529608634 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197649202466618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114677982133495580} + m_TextComponent: {fileID: 114958054160062352} + m_Placeholder: {fileID: 114590115059802926} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &114677982133495580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197649202466618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114704198421030094 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797932393879816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114749866180229960 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1065080943999816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 6 + m_Spacing: 2 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114777798721274074 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114786672304321734 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486651836328188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114590956026916120} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &114796147118253168 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1837270565088688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114944715489184838 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114958054160062352 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1046123681008450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8392157, g: 0.84313726, b: 0.84313726, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &222000010368327546 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013017939458} +--- !u!222 &222000010912077860 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013131456698} +--- !u!222 &222000011960742964 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010562689872} +--- !u!222 &222006696964694420 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1164238372139318} +--- !u!222 &222172057957339964 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1828058091608518} +--- !u!222 &222199124140025852 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1608527955020594} +--- !u!222 &222255240242372310 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486651836328188} +--- !u!222 &222390805710412110 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1316062289193744} +--- !u!222 &222428315485768352 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797932393879816} +--- !u!222 &222466100300644746 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 121708} +--- !u!222 &222554695212194500 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1023677686285356} +--- !u!222 &222677458225366564 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197649202466618} +--- !u!222 &222691170673863110 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1065080943999816} +--- !u!222 &222821544406435052 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926020646996780} +--- !u!222 &222859164510105872 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1046123681008450} +--- !u!222 &222974975071271426 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1837270565088688} +--- !u!224 &224000011255372986 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013131456698} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000014244241328} + - {fileID: 224000014081388310} + m_Father: {fileID: 22477946} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: -64, y: 36} + m_Pivot: {x: 0.5, y: 0} +--- !u!224 &224000014081388310 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010562689872} + 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: 224000011255372986} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000014244241328 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013017939458} + 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: 224000011255372986} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224170087475393432 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1486651836328188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224726770285678000} + m_Father: {fileID: 22485076} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 8} + m_SizeDelta: {x: 42, y: 42} + m_Pivot: {x: 0.5, y: 0} +--- !u!224 &224175272648112170 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1419055185851692} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224982529675224150} + m_Father: {fileID: 22477946} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 36} + m_SizeDelta: {x: 0, y: 5000} + m_Pivot: {x: 0, y: 0} +--- !u!224 &224332069547574292 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926020646996780} + 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: 224927884203097686} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: 25, y: -6} + m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224479789572691966 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1797932393879816} + 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: 224856348943071238} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224619367409363176 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1608527955020594} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224927884203097686} + m_Father: {fileID: 22456566} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224669170713768380 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1164238372139318} + 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: 224927884203097686} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 15, y: -0.5} + m_SizeDelta: {x: -30, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224726770285678000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1837270565088688} + 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: 224170087475393432} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.2, y: 0.2} + m_AnchorMax: {x: 0.8, y: 0.8} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224755787573573022 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1023677686285356} + 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: 22477946} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -36} + m_SizeDelta: {x: 0, y: 36} + m_Pivot: {x: 0.5, y: 1} +--- !u!224 &224757625655964314 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1046123681008450} + 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: 224927884203097686} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 15, y: -0.5} + m_SizeDelta: {x: -30, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224781297716539566 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1316062289193744} + 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: 22488670} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224856348943071238 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1828058091608518} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224479789572691966} + m_Father: {fileID: 22456566} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224927884203097686 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1197649202466618} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224332069547574292} + - {fileID: 224669170713768380} + - {fileID: 224757625655964314} + m_Father: {fileID: 224619367409363176} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224982529675224150 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1065080943999816} + 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: 224175272648112170} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -0.00005340576} + m_SizeDelta: {x: 24, y: 24} + m_Pivot: {x: 0, y: 0} diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta new file mode 100644 index 00000000..cb0d55bc --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67117722a812a2e46ab8cb8eafbf5f5e +timeCreated: 1466014755 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs.meta b/Assets/Plugins/IngameDebugConsole/Prefabs.meta new file mode 100644 index 00000000..5eae9ada --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7dbc36665bc0d684db9a4447e27a7a4b +folderAsset: yes +timeCreated: 1520417401 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab new file mode 100644 index 00000000..0f8cf147 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1386426139070838} + m_IsPrefabParent: 1 +--- !u!1 &1386426139070838 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224955737853170496} + - component: {fileID: 222541766812100524} + - component: {fileID: 114169395487023046} + m_Layer: 5 + m_Name: CommandSuggestion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114169395487023046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: help +--- !u!222 &222541766812100524 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} +--- !u!224 &224955737853170496 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} + 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} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta new file mode 100644 index 00000000..44072226 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5e66896448428cf46a1854dbdc014914 +timeCreated: 1601390136 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab new file mode 100644 index 00000000..c80442f1 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab @@ -0,0 +1,640 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104862 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22461494} + - component: {fileID: 22233942} + - component: {fileID: 11411806} + m_Layer: 5 + m_Name: LogCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &151462 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22420350} + - component: {fileID: 22200920} + - component: {fileID: 11432936} + m_Layer: 5 + m_Name: LogCountText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152362 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22427300} + - component: {fileID: 22262284} + - component: {fileID: 11404142} + m_Layer: 5 + m_Name: LogType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166880 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22479264} + - component: {fileID: 22288988} + - component: {fileID: 11459012} + - component: {fileID: 11408050} + - component: {fileID: 11456372} + - component: {fileID: 225819852034701160} + m_Layer: 5 + m_Name: DebugLogItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &173670 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22457652} + - component: {fileID: 22240404} + - component: {fileID: 11465282} + m_Layer: 5 + m_Name: LogText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11404142 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 33b115bf5efdfa04d8e2e0b70a6643cd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11408050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2ea291be9de70a4abfec595203c96c1, type: 3} + m_Name: + m_EditorClassIdentifier: + transformComponent: {fileID: 22479264} + imageComponent: {fileID: 11459012} + canvasGroupComponent: {fileID: 225819852034701160} + logText: {fileID: 11465282} + logTypeImage: {fileID: 11404142} + logCountParent: {fileID: 104862} + logCountText: {fileID: 11432936} + copyLogButton: {fileID: 224006190298411330} +--- !u!114 &11411806 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11432936 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 1 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 1 +--- !u!114 &11456372 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11459012} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11459012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11465282 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Debug.Log summary +--- !u!222 &22200920 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} +--- !u!222 &22233942 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} +--- !u!222 &22240404 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173670} +--- !u!222 &22262284 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} +--- !u!222 &22288988 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} +--- !u!224 &22420350 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} + 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: 22461494} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22427300 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} + 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: 22479264} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 32, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22457652 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 173670} + 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: 22479264} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 22.5, y: 0} + m_SizeDelta: {x: -55, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22461494 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22420350} + m_Father: {fileID: 22479264} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -28, y: 0} + m_SizeDelta: {x: 38, y: 28} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22479264 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22427300} + - {fileID: 22457652} + - {fileID: 22461494} + - {fileID: 224006190298411330} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 40} + m_Pivot: {x: 0, y: 1} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 166880} + m_IsPrefabParent: 1 +--- !u!1 &1396836967994216 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224006190298411330} + - component: {fileID: 222870443111501910} + - component: {fileID: 114119781176956926} + - component: {fileID: 114694923173451186} + m_Layer: 5 + m_Name: CopyLogButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1503640463151286 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224887990600088790} + - component: {fileID: 222313182602304162} + - component: {fileID: 114549765989288124} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114119781176956926 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114549765989288124 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Copy +--- !u!114 &114694923173451186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114119781176956926} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408050} + m_MethodName: CopyLog + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &222313182602304162 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} +--- !u!222 &222870443111501910 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} +--- !u!224 &224006190298411330 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224887990600088790} + m_Father: {fileID: 22479264} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: -100, y: 36} + m_Pivot: {x: 0.5, y: 0} +--- !u!224 &224887990600088790 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} + 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: 224006190298411330} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &225819852034701160 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta new file mode 100644 index 00000000..b2a75778 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 391be5df5ef62f345bb76a1051c04da7 +timeCreated: 1465919887 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/README.txt b/Assets/Plugins/IngameDebugConsole/README.txt new file mode 100644 index 00000000..33c0498b --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/README.txt @@ -0,0 +1,10 @@ += In-game Debug Console = + +Online documentation available at: https://github.com/yasirkula/UnityIngameDebugConsole +E-mail: yasirkula@gmail.com + +1. ABOUT +This asset helps you see debug messages (logs, warnings, errors, exceptions) runtime in a build (also assertions in editor) and execute commands using its built-in console. + +2. HOW TO +You can simply place the IngameDebugConsole prefab to your scene. Hovering the cursor over its properties in the Inspector will reveal explanatory tooltips. \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/README.txt.meta b/Assets/Plugins/IngameDebugConsole/README.txt.meta new file mode 100644 index 00000000..21f8dae5 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/README.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: edf2ac73f7bc3064c96d53009106dc53 +timeCreated: 1563307881 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts.meta b/Assets/Plugins/IngameDebugConsole/Scripts.meta new file mode 100644 index 00000000..1040eb3e --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 860c08388401a6d4e858fe4910ea9337 +folderAsset: yes +timeCreated: 1465930645 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs new file mode 100644 index 00000000..86537b17 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs @@ -0,0 +1,116 @@ +// #define RESET_REMOVED_ELEMENTS + +namespace IngameDebugConsole +{ + public class CircularBuffer + { + private T[] arr; + private int startIndex; + + public int Count { get; private set; } + public T this[int index] { get { return arr[( startIndex + index ) % arr.Length]; } } + + public CircularBuffer( int capacity ) + { + arr = new T[capacity]; + } + + // Old elements are overwritten when capacity is reached + public void Add( T value ) + { + if( Count < arr.Length ) + arr[Count++] = value; + else + { + arr[startIndex] = value; + if( ++startIndex >= arr.Length ) + startIndex = 0; + } + } + } + + public class DynamicCircularBuffer + { + private T[] arr; + private int startIndex; + + public int Count { get; private set; } + public T this[int index] + { + get { return arr[( startIndex + index ) % arr.Length]; } + set { arr[( startIndex + index ) % arr.Length] = value; } + } + + public DynamicCircularBuffer( int initialCapacity = 2 ) + { + arr = new T[initialCapacity]; + } + + public void Add( T value ) + { + if( Count >= arr.Length ) + { + int prevSize = arr.Length; + int newSize = prevSize > 0 ? prevSize * 2 : 2; // Size must be doubled (at least), or the shift operation below must consider IndexOutOfRange situations + + System.Array.Resize( ref arr, newSize ); + + if( startIndex > 0 ) + { + if( startIndex <= ( prevSize - 1 ) / 2 ) + { + // Move elements [0,startIndex) to the end + for( int i = 0; i < startIndex; i++ ) + { + arr[i + prevSize] = arr[i]; +#if RESET_REMOVED_ELEMENTS + arr[i] = default( T ); +#endif + } + } + else + { + // Move elements [startIndex,prevSize) to the end + int delta = newSize - prevSize; + for( int i = prevSize - 1; i >= startIndex; i-- ) + { + arr[i + delta] = arr[i]; +#if RESET_REMOVED_ELEMENTS + arr[i] = default( T ); +#endif + } + + startIndex += delta; + } + } + } + + this[Count++] = value; + } + + public T RemoveFirst() + { + T element = arr[startIndex]; +#if RESET_REMOVED_ELEMENTS + arr[startIndex] = default( T ); +#endif + + if( ++startIndex >= arr.Length ) + startIndex = 0; + + Count--; + return element; + } + + public T RemoveLast() + { + T element = arr[Count - 1]; +#if RESET_REMOVED_ELEMENTS + arr[Count - 1] = default( T ); +#endif + + Count--; + return element; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta new file mode 100644 index 00000000..cbd5ebc8 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6136cb3c00eac0149901b8e7f2fecef8 +timeCreated: 1550943949 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs new file mode 100644 index 00000000..c1259d03 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace IngameDebugConsole +{ + [AttributeUsage( AttributeTargets.Method, Inherited = false, AllowMultiple = true )] + public class ConsoleMethodAttribute : Attribute + { + private string m_command; + private string m_description; + private string[] m_parameterNames; + + public string Command { get { return m_command; } } + public string Description { get { return m_description; } } + public string[] ParameterNames { get { return m_parameterNames; } } + + public ConsoleMethodAttribute( string command, string description, params string[] parameterNames ) + { + m_command = command; + m_description = description; + m_parameterNames = parameterNames; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta new file mode 100644 index 00000000..a55a26b2 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 324bb39c0bff0f74fa42f83e91f07e3a +timeCreated: 1520710946 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs new file mode 100644 index 00000000..2cbbe01b --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs @@ -0,0 +1,1431 @@ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Reflection; +using System.Text; +using Object = UnityEngine.Object; + +// Manages the console commands, parses console input and handles execution of commands +// Supported method parameter types: int, float, bool, string, Vector2, Vector3, Vector4 + +// Helper class to store important information about a command +namespace IngameDebugConsole +{ + public class ConsoleMethodInfo + { + public readonly MethodInfo method; + public readonly Type[] parameterTypes; + public readonly object instance; + + public readonly string command; + public readonly string signature; + public readonly string[] parameters; + + public ConsoleMethodInfo( MethodInfo method, Type[] parameterTypes, object instance, string command, string signature, string[] parameters ) + { + this.method = method; + this.parameterTypes = parameterTypes; + this.instance = instance; + this.command = command; + this.signature = signature; + this.parameters = parameters; + } + + public bool IsValid() + { + if( !method.IsStatic && ( instance == null || instance.Equals( null ) ) ) + return false; + + return true; + } + } + + public static class DebugLogConsole + { + public delegate bool ParseFunction( string input, out object output ); + + // All the commands + private static readonly List methods = new List(); + private static readonly List matchingMethods = new List( 4 ); + + // All the parse functions + private static readonly Dictionary parseFunctions = new Dictionary() + { + { typeof( string ), ParseString }, + { typeof( bool ), ParseBool }, + { typeof( int ), ParseInt }, + { typeof( uint ), ParseUInt }, + { typeof( long ), ParseLong }, + { typeof( ulong ), ParseULong }, + { typeof( byte ), ParseByte }, + { typeof( sbyte ), ParseSByte }, + { typeof( short ), ParseShort }, + { typeof( ushort ), ParseUShort }, + { typeof( char ), ParseChar }, + { typeof( float ), ParseFloat }, + { typeof( double ), ParseDouble }, + { typeof( decimal ), ParseDecimal }, + { typeof( Vector2 ), ParseVector2 }, + { typeof( Vector3 ), ParseVector3 }, + { typeof( Vector4 ), ParseVector4 }, + { typeof( Quaternion ), ParseQuaternion }, + { typeof( Color ), ParseColor }, + { typeof( Color32 ), ParseColor32 }, + { typeof( Rect ), ParseRect }, + { typeof( RectOffset ), ParseRectOffset }, + { typeof( Bounds ), ParseBounds }, + { typeof( GameObject ), ParseGameObject }, +#if UNITY_2017_2_OR_NEWER + { typeof( Vector2Int ), ParseVector2Int }, + { typeof( Vector3Int ), ParseVector3Int }, + { typeof( RectInt ), ParseRectInt }, + { typeof( BoundsInt ), ParseBoundsInt }, +#endif + }; + + // All the readable names of accepted types + private static readonly Dictionary typeReadableNames = new Dictionary() + { + { typeof( string ), "String" }, + { typeof( bool ), "Boolean" }, + { typeof( int ), "Integer" }, + { typeof( uint ), "Unsigned Integer" }, + { typeof( long ), "Long" }, + { typeof( ulong ), "Unsigned Long" }, + { typeof( byte ), "Byte" }, + { typeof( sbyte ), "Short Byte" }, + { typeof( short ), "Short" }, + { typeof( ushort ), "Unsigned Short" }, + { typeof( char ), "Char" }, + { typeof( float ), "Float" }, + { typeof( double ), "Double" }, + { typeof( decimal ), "Decimal" } + }; + + // Split arguments of an entered command + private static readonly List commandArguments = new List( 8 ); + + // Command parameter delimeter groups + private static readonly string[] inputDelimiters = new string[] { "\"\"", "''", "{}", "()", "[]" }; + + // CompareInfo used for case-insensitive command name comparison + private static readonly CompareInfo caseInsensitiveComparer = new CultureInfo( "en-US" ).CompareInfo; + + static DebugLogConsole() + { +#if UNITY_EDITOR || !NETFX_CORE + // Find all [ConsoleMethod] functions + // Don't search built-in assemblies for console methods since they can't have any + string[] ignoredAssemblies = new string[] + { + "Unity", + "System", + "Mono.", + "mscorlib", + "netstandard", + "TextMeshPro", + "Microsoft.GeneratedCode", + "I18N", + "Boo.", + "UnityScript.", + "ICSharpCode.", + "ExCSS.Unity", +#if UNITY_EDITOR + "Assembly-CSharp-Editor", + "Assembly-UnityScript-Editor", + "nunit.", + "SyntaxTree.", + "AssetStoreTools", +#endif + }; + + foreach( Assembly assembly in AppDomain.CurrentDomain.GetAssemblies() ) + { +#if NET_4_6 || NET_STANDARD_2_0 + if( assembly.IsDynamic ) + continue; +#endif + + string assemblyName = assembly.GetName().Name; + bool ignoreAssembly = false; + for( int i = 0; i < ignoredAssemblies.Length; i++ ) + { + if( caseInsensitiveComparer.IsPrefix( assemblyName, ignoredAssemblies[i], CompareOptions.IgnoreCase ) ) + { + ignoreAssembly = true; + break; + } + } + + if( ignoreAssembly ) + continue; + + try + { + foreach( Type type in assembly.GetExportedTypes() ) + { + foreach( MethodInfo method in type.GetMethods( BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly ) ) + { + foreach( object attribute in method.GetCustomAttributes( typeof( ConsoleMethodAttribute ), false ) ) + { + ConsoleMethodAttribute consoleMethod = attribute as ConsoleMethodAttribute; + if( consoleMethod != null ) + AddCommand( consoleMethod.Command, consoleMethod.Description, method, null, consoleMethod.ParameterNames ); + } + } + } + } + catch( NotSupportedException ) { } + catch( System.IO.FileNotFoundException ) { } + catch( Exception e ) + { + Debug.LogError( "Couldn't search assembly for [ConsoleMethod] attributes: " + assemblyName + "\n" + e.ToString() ); + } + } +#endif + + AddCommand( "help", "Prints all commands", LogAllCommands ); + AddCommand( "sysinfo", "Prints system information", LogSystemInfo ); + } + + // Logs the list of available commands + public static void LogAllCommands() + { + int length = 25; + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() ) + length += 3 + methods[i].signature.Length; + } + + StringBuilder stringBuilder = new StringBuilder( length ); + stringBuilder.Append( "Available commands:" ); + + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() ) + stringBuilder.Append( "\n- " ).Append( methods[i].signature ); + } + + Debug.Log( stringBuilder.ToString() ); + + // After typing help, the log that lists all the commands should automatically be expanded for better UX + if( DebugLogManager.Instance ) + { + DebugLogManager.Instance.ExpandLatestPendingLog(); + DebugLogManager.Instance.StripStackTraceFromLatestPendingLog(); + } + } + + // Logs system information + public static void LogSystemInfo() + { + StringBuilder stringBuilder = new StringBuilder( 1024 ); + stringBuilder.Append( "Rig: " ).AppendSysInfoIfPresent( SystemInfo.deviceModel ).AppendSysInfoIfPresent( SystemInfo.processorType ) + .AppendSysInfoIfPresent( SystemInfo.systemMemorySize, "MB RAM" ).Append( SystemInfo.processorCount ).Append( " cores\n" ); + stringBuilder.Append( "OS: " ).Append( SystemInfo.operatingSystem ).Append( "\n" ); + stringBuilder.Append( "GPU: " ).Append( SystemInfo.graphicsDeviceName ).Append( " " ).Append( SystemInfo.graphicsMemorySize ) + .Append( "MB " ).Append( SystemInfo.graphicsDeviceVersion ) + .Append( SystemInfo.graphicsMultiThreaded ? " multi-threaded\n" : "\n" ); + stringBuilder.Append( "Data Path: " ).Append( Application.dataPath ).Append( "\n" ); + stringBuilder.Append( "Persistent Data Path: " ).Append( Application.persistentDataPath ).Append( "\n" ); + stringBuilder.Append( "StreamingAssets Path: " ).Append( Application.streamingAssetsPath ).Append( "\n" ); + stringBuilder.Append( "Temporary Cache Path: " ).Append( Application.temporaryCachePath ).Append( "\n" ); + stringBuilder.Append( "Device ID: " ).Append( SystemInfo.deviceUniqueIdentifier ).Append( "\n" ); + stringBuilder.Append( "Max Texture Size: " ).Append( SystemInfo.maxTextureSize ).Append( "\n" ); +#if UNITY_5_6_OR_NEWER + stringBuilder.Append( "Max Cubemap Size: " ).Append( SystemInfo.maxCubemapSize ).Append( "\n" ); +#endif + stringBuilder.Append( "Accelerometer: " ).Append( SystemInfo.supportsAccelerometer ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Gyro: " ).Append( SystemInfo.supportsGyroscope ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Location Service: " ).Append( SystemInfo.supportsLocationService ? "supported\n" : "not supported\n" ); +#if !UNITY_2019_1_OR_NEWER + stringBuilder.Append( "Image Effects: " ).Append( SystemInfo.supportsImageEffects ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "RenderToCubemap: " ).Append( SystemInfo.supportsRenderToCubemap ? "supported\n" : "not supported\n" ); +#endif + stringBuilder.Append( "Compute Shaders: " ).Append( SystemInfo.supportsComputeShaders ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Shadows: " ).Append( SystemInfo.supportsShadows ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Instancing: " ).Append( SystemInfo.supportsInstancing ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Motion Vectors: " ).Append( SystemInfo.supportsMotionVectors ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "3D Textures: " ).Append( SystemInfo.supports3DTextures ? "supported\n" : "not supported\n" ); +#if UNITY_5_6_OR_NEWER + stringBuilder.Append( "3D Render Textures: " ).Append( SystemInfo.supports3DRenderTextures ? "supported\n" : "not supported\n" ); +#endif + stringBuilder.Append( "2D Array Textures: " ).Append( SystemInfo.supports2DArrayTextures ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Cubemap Array Textures: " ).Append( SystemInfo.supportsCubemapArrayTextures ? "supported" : "not supported" ); + + Debug.Log( stringBuilder.ToString() ); + + // After typing sysinfo, the log that lists system information should automatically be expanded for better UX + if( DebugLogManager.Instance ) + { + DebugLogManager.Instance.ExpandLatestPendingLog(); + DebugLogManager.Instance.StripStackTraceFromLatestPendingLog(); + } + } + + private static StringBuilder AppendSysInfoIfPresent( this StringBuilder sb, string info, string postfix = null ) + { + if( info != SystemInfo.unsupportedIdentifier ) + { + sb.Append( info ); + + if( postfix != null ) + sb.Append( postfix ); + + sb.Append( " " ); + } + + return sb; + } + + private static StringBuilder AppendSysInfoIfPresent( this StringBuilder sb, int info, string postfix = null ) + { + if( info > 0 ) + { + sb.Append( info ); + + if( postfix != null ) + sb.Append( postfix ); + + sb.Append( " " ); + } + + return sb; + } + + // Add a custom Type to the list of recognized command parameter Types + public static void AddCustomParameterType( Type type, ParseFunction parseFunction, string typeReadableName = null ) + { + if( type == null ) + { + Debug.LogError( "Parameter type can't be null!" ); + return; + } + else if( parseFunction == null ) + { + Debug.LogError( "Parameter parseFunction can't be null!" ); + return; + } + + parseFunctions[type] = parseFunction; + + if( !string.IsNullOrEmpty( typeReadableName ) ) + typeReadableNames[type] = typeReadableName; + } + + // Remove a custom Type from the list of recognized command parameter Types + public static void RemoveCustomParameterType( Type type ) + { + parseFunctions.Remove( type ); + typeReadableNames.Remove( type ); + } + + // Add a command related with an instance method (i.e. non static method) + public static void AddCommandInstance( string command, string description, string methodName, object instance, params string[] parameterNames ) + { + if( instance == null ) + { + Debug.LogError( "Instance can't be null!" ); + return; + } + + AddCommand( command, description, methodName, instance.GetType(), instance, parameterNames ); + } + + // Add a command related with a static method (i.e. no instance is required to call the method) + public static void AddCommandStatic( string command, string description, string methodName, Type ownerType, params string[] parameterNames ) + { + AddCommand( command, description, methodName, ownerType, null, parameterNames ); + } + + // Add a command that can be related to either a static or an instance method + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Delegate method ) { AddCommand( command, description, method.Method, method.Target, null ); } + + // Add a command with custom parameter names + public static void AddCommand( string command, string description, Action method, string parameterName ) { AddCommand( command, description, method.Method, method.Target, new string[1] { parameterName } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2 ) { AddCommand( command, description, method.Method, method.Target, new string[2] { parameterName1, parameterName2 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName ) { AddCommand( command, description, method.Method, method.Target, new string[1] { parameterName } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2, string parameterName3 ) { AddCommand( command, description, method.Method, method.Target, new string[3] { parameterName1, parameterName2, parameterName3 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2 ) { AddCommand( command, description, method.Method, method.Target, new string[2] { parameterName1, parameterName2 } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2, string parameterName3, string parameterName4 ) { AddCommand( command, description, method.Method, method.Target, new string[4] { parameterName1, parameterName2, parameterName3, parameterName4 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2, string parameterName3 ) { AddCommand( command, description, method.Method, method.Target, new string[3] { parameterName1, parameterName2, parameterName3 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2, string parameterName3, string parameterName4 ) { AddCommand( command, description, method.Method, method.Target, new string[4] { parameterName1, parameterName2, parameterName3, parameterName4 } ); } + public static void AddCommand( string command, string description, Delegate method, params string[] parameterNames ) { AddCommand( command, description, method.Method, method.Target, parameterNames ); } + + // Create a new command and set its properties + private static void AddCommand( string command, string description, string methodName, Type ownerType, object instance, string[] parameterNames ) + { + // Get the method from the class + MethodInfo method = ownerType.GetMethod( methodName, BindingFlags.Public | BindingFlags.NonPublic | ( instance != null ? BindingFlags.Instance : BindingFlags.Static ) ); + if( method == null ) + { + Debug.LogError( methodName + " does not exist in " + ownerType ); + return; + } + + AddCommand( command, description, method, instance, parameterNames ); + } + + private static void AddCommand( string command, string description, MethodInfo method, object instance, string[] parameterNames ) + { + if( string.IsNullOrEmpty( command ) ) + { + Debug.LogError( "Command name can't be empty!" ); + return; + } + + command = command.Trim(); + if( command.IndexOf( ' ' ) >= 0 ) + { + Debug.LogError( "Command name can't contain whitespace: " + command ); + return; + } + + // Fetch the parameters of the class + ParameterInfo[] parameters = method.GetParameters(); + if( parameters == null ) + parameters = new ParameterInfo[0]; + + // Store the parameter types in an array + Type[] parameterTypes = new Type[parameters.Length]; + for( int i = 0; i < parameters.Length; i++ ) + { + if( parameters[i].ParameterType.IsByRef ) + { + Debug.LogError( "Command can't have 'out' or 'ref' parameters" ); + return; + } + + Type parameterType = parameters[i].ParameterType; + if( parseFunctions.ContainsKey( parameterType ) || typeof( Component ).IsAssignableFrom( parameterType ) || parameterType.IsEnum || IsSupportedArrayType( parameterType ) ) + parameterTypes[i] = parameterType; + else + { + Debug.LogError( string.Concat( "Parameter ", parameters[i].Name, "'s Type ", parameterType, " isn't supported" ) ); + return; + } + } + + int commandIndex = FindCommandIndex( command ); + if( commandIndex < 0 ) + commandIndex = ~commandIndex; + else + { + int commandFirstIndex = commandIndex; + int commandLastIndex = commandIndex; + + while( commandFirstIndex > 0 && caseInsensitiveComparer.Compare( methods[commandFirstIndex - 1].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandFirstIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + + commandIndex = commandFirstIndex; + for( int i = commandFirstIndex; i <= commandLastIndex; i++ ) + { + int parameterCountDiff = methods[i].parameterTypes.Length - parameterTypes.Length; + if( parameterCountDiff <= 0 ) + { + // We are sorting the commands in 2 steps: + // 1: Sorting by their 'command' names which is handled by FindCommandIndex + // 2: Sorting by their parameter counts which is handled here (parameterCountDiff <= 0) + commandIndex = i + 1; + + // Check if this command has been registered before and if it is, overwrite that command + if( parameterCountDiff == 0 ) + { + int j = 0; + while( j < parameterTypes.Length && parameterTypes[j] == methods[i].parameterTypes[j] ) + j++; + + if( j >= parameterTypes.Length ) + { + commandIndex = i; + commandLastIndex--; + methods.RemoveAt( i-- ); + + continue; + } + } + } + } + } + + // Create the command + StringBuilder methodSignature = new StringBuilder( 256 ); + string[] parameterSignatures = new string[parameterTypes.Length]; + + methodSignature.Append( command ).Append( ": " ); + + if( !string.IsNullOrEmpty( description ) ) + methodSignature.Append( description ).Append( " -> " ); + + methodSignature.Append( method.DeclaringType.ToString() ).Append( "." ).Append( method.Name ).Append( "(" ); + for( int i = 0; i < parameterTypes.Length; i++ ) + { + int parameterSignatureStartIndex = methodSignature.Length; + + methodSignature.Append( GetTypeReadableName( parameterTypes[i] ) ).Append( " " ).Append( ( parameterNames != null && i < parameterNames.Length && !string.IsNullOrEmpty( parameterNames[i] ) ) ? parameterNames[i] : parameters[i].Name ); + + if( i < parameterTypes.Length - 1 ) + methodSignature.Append( ", " ); + + parameterSignatures[i] = methodSignature.ToString( parameterSignatureStartIndex, methodSignature.Length - parameterSignatureStartIndex ); + } + + methodSignature.Append( ")" ); + + Type returnType = method.ReturnType; + if( returnType != typeof( void ) ) + methodSignature.Append( " : " ).Append( GetTypeReadableName( returnType ) ); + + methods.Insert( commandIndex, new ConsoleMethodInfo( method, parameterTypes, instance, command, methodSignature.ToString(), parameterSignatures ) ); + } + + // Remove all commands with the matching command name from the console + public static void RemoveCommand( string command ) + { + if( !string.IsNullOrEmpty( command ) ) + { + for( int i = methods.Count - 1; i >= 0; i-- ) + { + if( caseInsensitiveComparer.Compare( methods[i].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + methods.RemoveAt( i ); + } + } + } + + // Remove all commands with the matching method from the console + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Delegate method ) { RemoveCommand( method.Method ); } + + public static void RemoveCommand( MethodInfo method ) + { + if( method != null ) + { + for( int i = methods.Count - 1; i >= 0; i-- ) + { + if( methods[i].method == method ) + methods.RemoveAt( i ); + } + } + } + + // Returns the first command that starts with the entered argument + public static string GetAutoCompleteCommand( string commandStart ) + { + int commandIndex = FindCommandIndex( commandStart ); + if( commandIndex < 0 ) + commandIndex = ~commandIndex; + + string result = null; + for( int i = commandIndex; i >= 0 && caseInsensitiveComparer.IsPrefix( methods[i].command, commandStart, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ); i-- ) + result = methods[i].command; + + if( result == null ) + { + for( int i = commandIndex + 1; i < methods.Count && caseInsensitiveComparer.IsPrefix( methods[i].command, commandStart, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ); i++ ) + result = methods[i].command; + } + + return result; + } + + // Parse the command and try to execute it + public static void ExecuteCommand( string command ) + { + if( command == null ) + return; + + command = command.Trim(); + + if( command.Length == 0 ) + return; + + // Split the command's arguments + commandArguments.Clear(); + FetchArgumentsFromCommand( command, commandArguments ); + + // Find all matching commands + matchingMethods.Clear(); + bool parameterCountMismatch = false; + int commandIndex = FindCommandIndex( commandArguments[0] ); + if( commandIndex >= 0 ) + { + string _command = commandArguments[0]; + + int commandLastIndex = commandIndex; + while( commandIndex > 0 && caseInsensitiveComparer.Compare( methods[commandIndex - 1].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + + while( commandIndex <= commandLastIndex ) + { + if( !methods[commandIndex].IsValid() ) + { + methods.RemoveAt( commandIndex ); + commandLastIndex--; + } + else + { + // Check if number of parameters match + if( methods[commandIndex].parameterTypes.Length == commandArguments.Count - 1 ) + matchingMethods.Add( methods[commandIndex] ); + else + parameterCountMismatch = true; + + commandIndex++; + } + } + } + + if( matchingMethods.Count == 0 ) + { + if( parameterCountMismatch ) + { + string _command = commandArguments[0]; + int commandsLength = _command.Length + 75; + for( int i = 0; i < methods.Count; i++ ) + { + if( caseInsensitiveComparer.Compare( methods[i].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandsLength += methods[i].signature.Length + 3; + } + + StringBuilder stringBuilder = new StringBuilder( commandsLength ); + stringBuilder.Append( "ERROR: " ).Append( _command ).Append( " doesn't take " ).Append( commandArguments.Count - 1 ).Append( " parameter(s). Available command(s):" ); + + for( int i = 0; i < methods.Count; i++ ) + { + if( caseInsensitiveComparer.Compare( methods[i].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + stringBuilder.Append( "\n- " ).Append( methods[i].signature ); + } + + Debug.LogWarning( stringBuilder.ToString() ); + + // The log that lists method signature(s) for this command should automatically be expanded for better UX + if( DebugLogManager.Instance ) + { + DebugLogManager.Instance.ExpandLatestPendingLog(); + DebugLogManager.Instance.StripStackTraceFromLatestPendingLog(); + } + } + else + Debug.LogWarning( "ERROR: can't find command: " + commandArguments[0] ); + + return; + } + + ConsoleMethodInfo methodToExecute = null; + object[] parameters = new object[commandArguments.Count - 1]; + string errorMessage = null; + for( int i = 0; i < matchingMethods.Count && methodToExecute == null; i++ ) + { + ConsoleMethodInfo methodInfo = matchingMethods[i]; + + // Parse the parameters into objects + bool success = true; + for( int j = 0; j < methodInfo.parameterTypes.Length && success; j++ ) + { + try + { + string argument = commandArguments[j + 1]; + Type parameterType = methodInfo.parameterTypes[j]; + + object val; + if( ParseArgument( argument, parameterType, out val ) ) + parameters[j] = val; + else + { + success = false; + errorMessage = string.Concat( "ERROR: couldn't parse ", argument, " to ", GetTypeReadableName( parameterType ) ); + } + } + catch( Exception e ) + { + success = false; + errorMessage = "ERROR: " + e.ToString(); + } + } + + if( success ) + methodToExecute = methodInfo; + } + + if( methodToExecute == null ) + Debug.LogWarning( !string.IsNullOrEmpty( errorMessage ) ? errorMessage : "ERROR: something went wrong" ); + else + { + Debug.Log( "Executing command: " + commandArguments[0] ); + + // Execute the method associated with the command + object result = methodToExecute.method.Invoke( methodToExecute.instance, parameters ); + if( methodToExecute.method.ReturnType != typeof( void ) ) + { + // Print the returned value to the console + if( result == null || result.Equals( null ) ) + Debug.Log( "Value returned: null" ); + else + Debug.Log( "Value returned: " + result.ToString() ); + } + } + } + + public static void FetchArgumentsFromCommand( string command, List commandArguments ) + { + for( int i = 0; i < command.Length; i++ ) + { + if( char.IsWhiteSpace( command[i] ) ) + continue; + + int delimiterIndex = IndexOfDelimiterGroup( command[i] ); + if( delimiterIndex >= 0 ) + { + int endIndex = IndexOfDelimiterGroupEnd( command, delimiterIndex, i + 1 ); + commandArguments.Add( command.Substring( i + 1, endIndex - i - 1 ) ); + i = ( endIndex < command.Length - 1 && command[endIndex + 1] == ',' ) ? endIndex + 1 : endIndex; + } + else + { + int endIndex = IndexOfChar( command, ' ', i + 1 ); + commandArguments.Add( command.Substring( i, command[endIndex - 1] == ',' ? endIndex - 1 - i : endIndex - i ) ); + i = endIndex; + } + } + } + + // Finds all commands that have a matching signature with command + // - caretIndexIncrements: indices inside "string command" that separate two arguments in the command. This is used to + // figure out which argument the caret is standing on + // - commandName: command's name (first argument) + internal static void GetCommandSuggestions( string command, List matchingCommands, List caretIndexIncrements, ref string commandName, out int numberOfParameters ) + { + bool commandNameCalculated = false; + bool commandNameFullyTyped = false; + numberOfParameters = -1; + for( int i = 0; i < command.Length; i++ ) + { + if( char.IsWhiteSpace( command[i] ) ) + continue; + + int delimiterIndex = IndexOfDelimiterGroup( command[i] ); + if( delimiterIndex >= 0 ) + { + int endIndex = IndexOfDelimiterGroupEnd( command, delimiterIndex, i + 1 ); + if( !commandNameCalculated ) + { + commandNameCalculated = true; + commandNameFullyTyped = command.Length > endIndex; + + int commandNameLength = endIndex - i - 1; + if( commandName == null || commandNameLength == 0 || commandName.Length != commandNameLength || caseInsensitiveComparer.IndexOf( command, commandName, i + 1, commandNameLength, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) != i + 1 ) + commandName = command.Substring( i + 1, commandNameLength ); + } + + i = ( endIndex < command.Length - 1 && command[endIndex + 1] == ',' ) ? endIndex + 1 : endIndex; + caretIndexIncrements.Add( i + 1 ); + } + else + { + int endIndex = IndexOfChar( command, ' ', i + 1 ); + if( !commandNameCalculated ) + { + commandNameCalculated = true; + commandNameFullyTyped = command.Length > endIndex; + + int commandNameLength = command[endIndex - 1] == ',' ? endIndex - 1 - i : endIndex - i; + if( commandName == null || commandNameLength == 0 || commandName.Length != commandNameLength || caseInsensitiveComparer.IndexOf( command, commandName, i, commandNameLength, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) != i ) + commandName = command.Substring( i, commandNameLength ); + } + + i = endIndex; + caretIndexIncrements.Add( i ); + } + + numberOfParameters++; + } + + if( !commandNameCalculated ) + commandName = string.Empty; + + if( !string.IsNullOrEmpty( commandName ) ) + { + int commandIndex = FindCommandIndex( commandName ); + if( commandIndex < 0 ) + commandIndex = ~commandIndex; + + int commandLastIndex = commandIndex; + if( !commandNameFullyTyped ) + { + // Match all commands that start with commandName + if( commandIndex < methods.Count && caseInsensitiveComparer.IsPrefix( methods[commandIndex].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + { + while( commandIndex > 0 && caseInsensitiveComparer.IsPrefix( methods[commandIndex - 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.IsPrefix( methods[commandLastIndex + 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + commandLastIndex++; + } + else + commandLastIndex = -1; + } + else + { + // Match only the commands that are equal to commandName + if( commandIndex < methods.Count && caseInsensitiveComparer.Compare( methods[commandIndex].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + { + while( commandIndex > 0 && caseInsensitiveComparer.Compare( methods[commandIndex - 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + } + else + commandLastIndex = -1; + } + + for( ; commandIndex <= commandLastIndex; commandIndex++ ) + { + if( methods[commandIndex].parameterTypes.Length >= numberOfParameters ) + matchingCommands.Add( methods[commandIndex] ); + } + } + } + + // Find the index of the delimiter group that 'c' belongs to + private static int IndexOfDelimiterGroup( char c ) + { + for( int i = 0; i < inputDelimiters.Length; i++ ) + { + if( c == inputDelimiters[i][0] ) + return i; + } + + return -1; + } + + private static int IndexOfDelimiterGroupEnd( string command, int delimiterIndex, int startIndex ) + { + char startChar = inputDelimiters[delimiterIndex][0]; + char endChar = inputDelimiters[delimiterIndex][1]; + + // Check delimiter's depth for array support (e.g. [[1 2] [3 4]] for Vector2 array) + int depth = 1; + + for( int i = startIndex; i < command.Length; i++ ) + { + char c = command[i]; + if( c == endChar && --depth <= 0 ) + return i; + else if( c == startChar ) + depth++; + } + + return command.Length; + } + + // Find the index of char in the string, or return the length of string instead of -1 + private static int IndexOfChar( string command, char c, int startIndex ) + { + int result = command.IndexOf( c, startIndex ); + if( result < 0 ) + result = command.Length; + + return result; + } + + // Find command's index in the list of registered commands using binary search + private static int FindCommandIndex( string command ) + { + int min = 0; + int max = methods.Count - 1; + while( min <= max ) + { + int mid = ( min + max ) / 2; + int comparison = caseInsensitiveComparer.Compare( command, methods[mid].command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ); + if( comparison == 0 ) + return mid; + else if( comparison < 0 ) + max = mid - 1; + else + min = mid + 1; + } + + return ~min; + } + + public static bool IsSupportedArrayType( Type type ) + { + if( type.IsArray ) + { + if( type.GetArrayRank() != 1 ) + return false; + + type = type.GetElementType(); + } + else if( type.IsGenericType ) + { + if( type.GetGenericTypeDefinition() != typeof( List<> ) ) + return false; + + type = type.GetGenericArguments()[0]; + } + else + return false; + + return parseFunctions.ContainsKey( type ) || typeof( Component ).IsAssignableFrom( type ) || type.IsEnum; + } + + public static string GetTypeReadableName( Type type ) + { + string result; + if( typeReadableNames.TryGetValue( type, out result ) ) + return result; + + if( IsSupportedArrayType( type ) ) + { + Type elementType = type.IsArray ? type.GetElementType() : type.GetGenericArguments()[0]; + if( typeReadableNames.TryGetValue( elementType, out result ) ) + return result + "[]"; + else + return elementType.Name + "[]"; + } + + return type.Name; + } + + public static bool ParseArgument( string input, Type argumentType, out object output ) + { + ParseFunction parseFunction; + if( parseFunctions.TryGetValue( argumentType, out parseFunction ) ) + return parseFunction( input, out output ); + else if( typeof( Component ).IsAssignableFrom( argumentType ) ) + return ParseComponent( input, argumentType, out output ); + else if( argumentType.IsEnum ) + return ParseEnum( input, argumentType, out output ); + else if( IsSupportedArrayType( argumentType ) ) + return ParseArray( input, argumentType, out output ); + else + { + output = null; + return false; + } + } + + public static bool ParseString( string input, out object output ) + { + output = input; + return true; + } + + public static bool ParseBool( string input, out object output ) + { + if( input == "1" || input.ToLowerInvariant() == "true" ) + { + output = true; + return true; + } + + if( input == "0" || input.ToLowerInvariant() == "false" ) + { + output = false; + return true; + } + + output = false; + return false; + } + + public static bool ParseInt( string input, out object output ) + { + int value; + bool result = int.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseUInt( string input, out object output ) + { + uint value; + bool result = uint.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseLong( string input, out object output ) + { + long value; + bool result = long.TryParse( !input.EndsWith( "L", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseULong( string input, out object output ) + { + ulong value; + bool result = ulong.TryParse( !input.EndsWith( "L", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseByte( string input, out object output ) + { + byte value; + bool result = byte.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseSByte( string input, out object output ) + { + sbyte value; + bool result = sbyte.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseShort( string input, out object output ) + { + short value; + bool result = short.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseUShort( string input, out object output ) + { + ushort value; + bool result = ushort.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseChar( string input, out object output ) + { + char value; + bool result = char.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseFloat( string input, out object output ) + { + float value; + bool result = float.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseDouble( string input, out object output ) + { + double value; + bool result = double.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseDecimal( string input, out object output ) + { + decimal value; + bool result = decimal.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseVector2( string input, out object output ) + { + return ParseVector( input, typeof( Vector2 ), out output ); + } + + public static bool ParseVector3( string input, out object output ) + { + return ParseVector( input, typeof( Vector3 ), out output ); + } + + public static bool ParseVector4( string input, out object output ) + { + return ParseVector( input, typeof( Vector4 ), out output ); + } + + public static bool ParseQuaternion( string input, out object output ) + { + return ParseVector( input, typeof( Quaternion ), out output ); + } + + public static bool ParseColor( string input, out object output ) + { + return ParseVector( input, typeof( Color ), out output ); + } + + public static bool ParseColor32( string input, out object output ) + { + return ParseVector( input, typeof( Color32 ), out output ); + } + + public static bool ParseRect( string input, out object output ) + { + return ParseVector( input, typeof( Rect ), out output ); + } + + public static bool ParseRectOffset( string input, out object output ) + { + return ParseVector( input, typeof( RectOffset ), out output ); + } + + public static bool ParseBounds( string input, out object output ) + { + return ParseVector( input, typeof( Bounds ), out output ); + } + +#if UNITY_2017_2_OR_NEWER + public static bool ParseVector2Int( string input, out object output ) + { + return ParseVector( input, typeof( Vector2Int ), out output ); + } + + public static bool ParseVector3Int( string input, out object output ) + { + return ParseVector( input, typeof( Vector3Int ), out output ); + } + + public static bool ParseRectInt( string input, out object output ) + { + return ParseVector( input, typeof( RectInt ), out output ); + } + + public static bool ParseBoundsInt( string input, out object output ) + { + return ParseVector( input, typeof( BoundsInt ), out output ); + } +#endif + + public static bool ParseGameObject( string input, out object output ) + { + output = input == "null" ? null : GameObject.Find( input ); + return true; + } + + public static bool ParseComponent( string input, Type componentType, out object output ) + { + GameObject gameObject = input == "null" ? null : GameObject.Find( input ); + output = gameObject ? gameObject.GetComponent( componentType ) : null; + return true; + } + + public static bool ParseEnum( string input, Type enumType, out object output ) + { + const int NONE = 0, OR = 1, AND = 2; + + int outputInt = 0; + int operation = 0; // 0: nothing, 1: OR with outputInt, 2: AND with outputInt + for( int i = 0; i < input.Length; i++ ) + { + string enumStr; + int orIndex = input.IndexOf( '|', i ); + int andIndex = input.IndexOf( '&', i ); + if( orIndex < 0 ) + enumStr = input.Substring( i, ( andIndex < 0 ? input.Length : andIndex ) - i ).Trim(); + else + enumStr = input.Substring( i, ( andIndex < 0 ? orIndex : Mathf.Min( andIndex, orIndex ) ) - i ).Trim(); + + int value; + if( !int.TryParse( enumStr, out value ) ) + { + if( Enum.IsDefined( enumType, enumStr ) ) + value = Convert.ToInt32( Enum.Parse( enumType, enumStr ) ); + else + { + output = null; + return false; + } + } + + if( operation == NONE ) + outputInt = value; + else if( operation == OR ) + outputInt |= value; + else + outputInt &= value; + + if( orIndex >= 0 ) + { + if( andIndex > orIndex ) + { + operation = AND; + i = andIndex; + } + else + { + operation = OR; + i = orIndex; + } + } + else if( andIndex >= 0 ) + { + operation = AND; + i = andIndex; + } + else + i = input.Length; + } + + output = Enum.ToObject( enumType, outputInt ); + return true; + } + + public static bool ParseArray( string input, Type arrayType, out object output ) + { + List valuesToParse = new List( 2 ); + FetchArgumentsFromCommand( input, valuesToParse ); + + IList result = (IList) Activator.CreateInstance( arrayType, new object[1] { valuesToParse.Count } ); + output = result; + + if( arrayType.IsArray ) + { + Type elementType = arrayType.GetElementType(); + for( int i = 0; i < valuesToParse.Count; i++ ) + { + object obj; + if( !ParseArgument( valuesToParse[i], elementType, out obj ) ) + return false; + + result[i] = obj; + } + } + else + { + Type elementType = arrayType.GetGenericArguments()[0]; + for( int i = 0; i < valuesToParse.Count; i++ ) + { + object obj; + if( !ParseArgument( valuesToParse[i], elementType, out obj ) ) + return false; + + result.Add( obj ); + } + } + + return true; + } + + // Create a vector of specified type (fill the blank slots with 0 or ignore unnecessary slots) + private static bool ParseVector( string input, Type vectorType, out object output ) + { + List tokens = new List( input.Replace( ',', ' ' ).Trim().Split( ' ' ) ); + for( int i = tokens.Count - 1; i >= 0; i-- ) + { + tokens[i] = tokens[i].Trim(); + if( tokens[i].Length == 0 ) + tokens.RemoveAt( i ); + } + + float[] tokenValues = new float[tokens.Count]; + for( int i = 0; i < tokens.Count; i++ ) + { + object val; + if( !ParseFloat( tokens[i], out val ) ) + { + if( vectorType == typeof( Vector3 ) ) + output = Vector3.zero; + else if( vectorType == typeof( Vector2 ) ) + output = Vector2.zero; + else + output = Vector4.zero; + + return false; + } + + tokenValues[i] = (float) val; + } + + if( vectorType == typeof( Vector3 ) ) + { + Vector3 result = Vector3.zero; + + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Vector2 ) ) + { + Vector2 result = Vector2.zero; + + for( int i = 0; i < tokenValues.Length && i < 2; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Vector4 ) ) + { + Vector4 result = Vector4.zero; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Quaternion ) ) + { + Quaternion result = Quaternion.identity; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Color ) ) + { + Color result = Color.black; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Color32 ) ) + { + Color32 result = new Color32( 0, 0, 0, 255 ); + + if( tokenValues.Length > 0 ) + result.r = (byte) Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.g = (byte) Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.b = (byte) Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.a = (byte) Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( Rect ) ) + { + Rect result = Rect.zero; + + if( tokenValues.Length > 0 ) + result.x = tokenValues[0]; + if( tokenValues.Length > 1 ) + result.y = tokenValues[1]; + if( tokenValues.Length > 2 ) + result.width = tokenValues[2]; + if( tokenValues.Length > 3 ) + result.height = tokenValues[3]; + + output = result; + } + else if( vectorType == typeof( RectOffset ) ) + { + RectOffset result = new RectOffset(); + + if( tokenValues.Length > 0 ) + result.left = Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.right = Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.top = Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.bottom = Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( Bounds ) ) + { + Vector3 center = Vector3.zero; + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + center[i] = tokenValues[i]; + + Vector3 size = Vector3.zero; + for( int i = 3; i < tokenValues.Length && i < 6; i++ ) + size[i - 3] = tokenValues[i]; + + output = new Bounds( center, size ); + } +#if UNITY_2017_2_OR_NEWER + else if( vectorType == typeof( Vector3Int ) ) + { + Vector3Int result = Vector3Int.zero; + + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + result[i] = Mathf.RoundToInt( tokenValues[i] ); + + output = result; + } + else if( vectorType == typeof( Vector2Int ) ) + { + Vector2Int result = Vector2Int.zero; + + for( int i = 0; i < tokenValues.Length && i < 2; i++ ) + result[i] = Mathf.RoundToInt( tokenValues[i] ); + + output = result; + } + else if( vectorType == typeof( RectInt ) ) + { + RectInt result = new RectInt(); + + if( tokenValues.Length > 0 ) + result.x = Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.y = Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.width = Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.height = Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( BoundsInt ) ) + { + Vector3Int center = Vector3Int.zero; + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + center[i] = Mathf.RoundToInt( tokenValues[i] ); + + Vector3Int size = Vector3Int.zero; + for( int i = 3; i < tokenValues.Length && i < 6; i++ ) + size[i - 3] = Mathf.RoundToInt( tokenValues[i] ); + + output = new BoundsInt( center, size ); + } +#endif + else + { + output = null; + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta new file mode 100644 index 00000000..756bdf78 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d15693a03d0d33b4892c6365a2a97e19 +timeCreated: 1472036503 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs new file mode 100644 index 00000000..cc582c4c --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs @@ -0,0 +1,92 @@ +using UnityEngine; + +// Container for a simple debug entry +namespace IngameDebugConsole +{ + public class DebugLogEntry : System.IEquatable + { + private const int HASH_NOT_CALCULATED = -623218; + + public string logString; + public string stackTrace; + + private string completeLog; + + // Sprite to show with this entry + public Sprite logTypeSpriteRepresentation; + + // Collapsed count + public int count; + + private int hashValue; + + public void Initialize( string logString, string stackTrace ) + { + this.logString = logString; + this.stackTrace = stackTrace; + + completeLog = null; + count = 1; + hashValue = HASH_NOT_CALCULATED; + } + + // Check if two entries have the same origin + public bool Equals( DebugLogEntry other ) + { + return this.logString == other.logString && this.stackTrace == other.stackTrace; + } + + // Checks if logString or stackTrace contains the search term + public bool MatchesSearchTerm( string searchTerm ) + { + return ( logString != null && logString.IndexOf( searchTerm, System.StringComparison.OrdinalIgnoreCase ) >= 0 ) || + ( stackTrace != null && stackTrace.IndexOf( searchTerm, System.StringComparison.OrdinalIgnoreCase ) >= 0 ); + } + + // Return a string containing complete information about this debug entry + public override string ToString() + { + if( completeLog == null ) + completeLog = string.Concat( logString, "\n", stackTrace ); + + return completeLog; + } + + // Credit: https://stackoverflow.com/a/19250516/2373034 + public override int GetHashCode() + { + if( hashValue == HASH_NOT_CALCULATED ) + { + unchecked + { + hashValue = 17; + hashValue = hashValue * 23 + ( logString == null ? 0 : logString.GetHashCode() ); + hashValue = hashValue * 23 + ( stackTrace == null ? 0 : stackTrace.GetHashCode() ); + } + } + + return hashValue; + } + } + + public struct QueuedDebugLogEntry + { + public readonly string logString; + public readonly string stackTrace; + public readonly LogType logType; + + public QueuedDebugLogEntry( string logString, string stackTrace, LogType logType ) + { + this.logString = logString; + this.stackTrace = stackTrace; + this.logType = logType; + } + + // Checks if logString or stackTrace contains the search term + public bool MatchesSearchTerm( string searchTerm ) + { + return ( logString != null && logString.IndexOf( searchTerm, System.StringComparison.OrdinalIgnoreCase ) >= 0 ) || + ( stackTrace != null && stackTrace.IndexOf( searchTerm, System.StringComparison.OrdinalIgnoreCase ) >= 0 ); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta new file mode 100644 index 00000000..3a1dd214 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e7b1a420c564be040bf73b8a377fc2c2 +timeCreated: 1466375168 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs new file mode 100644 index 00000000..95bb0697 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs @@ -0,0 +1,35 @@ +namespace IngameDebugConsole +{ + public class DebugLogIndexList + { + private int[] indices; + private int size; + + public int Count { get { return size; } } + public int this[int index] { get { return indices[index]; } } + + public DebugLogIndexList() + { + indices = new int[64]; + size = 0; + } + + public void Add( int index ) + { + if( size == indices.Length ) + System.Array.Resize( ref indices, size * 2 ); + + indices[size++] = index; + } + + public void Clear() + { + size = 0; + } + + public int IndexOf( int index ) + { + return System.Array.IndexOf( indices, index ); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta new file mode 100644 index 00000000..5f86ef52 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 37c6c91e5bfac6f499698c03f593bcbb +timeCreated: 1520627934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs new file mode 100644 index 00000000..ff1cf6d8 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs @@ -0,0 +1,217 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +#if UNITY_EDITOR +using UnityEditor; +using System.Text.RegularExpressions; +#endif + +// A UI element to show information about a debug entry +namespace IngameDebugConsole +{ + public class DebugLogItem : MonoBehaviour, IPointerClickHandler + { + #region Platform Specific Elements +#if !UNITY_2018_1_OR_NEWER +#if !UNITY_EDITOR && UNITY_ANDROID + private static AndroidJavaClass m_ajc = null; + private static AndroidJavaClass AJC + { + get + { + if( m_ajc == null ) + m_ajc = new AndroidJavaClass( "com.yasirkula.unity.DebugConsole" ); + + return m_ajc; + } + } + + private static AndroidJavaObject m_context = null; + private static AndroidJavaObject Context + { + get + { + if( m_context == null ) + { + using( AndroidJavaObject unityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) ) + { + m_context = unityClass.GetStatic( "currentActivity" ); + } + } + + return m_context; + } + } +#elif !UNITY_EDITOR && UNITY_IOS + [System.Runtime.InteropServices.DllImport( "__Internal" )] + private static extern void _DebugConsole_CopyText( string text ); +#endif +#endif + #endregion + +#pragma warning disable 0649 + // Cached components + [SerializeField] + private RectTransform transformComponent; + public RectTransform Transform { get { return transformComponent; } } + + [SerializeField] + private Image imageComponent; + public Image Image { get { return imageComponent; } } + + [SerializeField] + private CanvasGroup canvasGroupComponent; + public CanvasGroup CanvasGroup { get { return canvasGroupComponent; } } + + [SerializeField] + private Text logText; + [SerializeField] + private Image logTypeImage; + + // Objects related to the collapsed count of the debug entry + [SerializeField] + private GameObject logCountParent; + [SerializeField] + private Text logCountText; + + [SerializeField] + private RectTransform copyLogButton; +#pragma warning restore 0649 + + // Debug entry to show with this log item + private DebugLogEntry logEntry; + + // Index of the entry in the list of entries + private int entryIndex; + public int Index { get { return entryIndex; } } + + private Vector2 logTextOriginalPosition; + private Vector2 logTextOriginalSize; + private float copyLogButtonHeight; + + private DebugLogRecycledListView manager; + + public void Initialize( DebugLogRecycledListView manager ) + { + this.manager = manager; + + logTextOriginalPosition = logText.rectTransform.anchoredPosition; + logTextOriginalSize = logText.rectTransform.sizeDelta; + copyLogButtonHeight = copyLogButton.anchoredPosition.y + copyLogButton.sizeDelta.y + 2f; // 2f: space between text and button + } + + public void SetContent( DebugLogEntry logEntry, int entryIndex, bool isExpanded ) + { + this.logEntry = logEntry; + this.entryIndex = entryIndex; + + Vector2 size = transformComponent.sizeDelta; + if( isExpanded ) + { + logText.horizontalOverflow = HorizontalWrapMode.Wrap; + size.y = manager.SelectedItemHeight; + + if( !copyLogButton.gameObject.activeSelf ) + { + copyLogButton.gameObject.SetActive( true ); + + logText.rectTransform.anchoredPosition = new Vector2( logTextOriginalPosition.x, logTextOriginalPosition.y + copyLogButtonHeight * 0.5f ); + logText.rectTransform.sizeDelta = logTextOriginalSize - new Vector2( 0f, copyLogButtonHeight ); + } + } + else + { + logText.horizontalOverflow = HorizontalWrapMode.Overflow; + size.y = manager.ItemHeight; + + if( copyLogButton.gameObject.activeSelf ) + { + copyLogButton.gameObject.SetActive( false ); + + logText.rectTransform.anchoredPosition = logTextOriginalPosition; + logText.rectTransform.sizeDelta = logTextOriginalSize; + } + } + transformComponent.sizeDelta = size; + + logText.text = isExpanded ? logEntry.ToString() : logEntry.logString; + logTypeImage.sprite = logEntry.logTypeSpriteRepresentation; + } + + // Show the collapsed count of the debug entry + public void ShowCount() + { + logCountText.text = logEntry.count.ToString(); + + if( !logCountParent.activeSelf ) + logCountParent.SetActive( true ); + } + + // Hide the collapsed count of the debug entry + public void HideCount() + { + if( logCountParent.activeSelf ) + logCountParent.SetActive( false ); + } + + // This log item is clicked, show the debug entry's stack trace + public void OnPointerClick( PointerEventData eventData ) + { +#if UNITY_EDITOR + if( eventData.button == PointerEventData.InputButton.Right ) + { + Match regex = Regex.Match( logEntry.stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline ); + if( regex.Success ) + { + string line = logEntry.stackTrace.Substring( regex.Index + 4, regex.Length - 5 ); + int lineSeparator = line.IndexOf( ':' ); + MonoScript script = AssetDatabase.LoadAssetAtPath( line.Substring( 0, lineSeparator ) ); + if( script != null ) + AssetDatabase.OpenAsset( script, int.Parse( line.Substring( lineSeparator + 1 ) ) ); + } + } + else + manager.OnLogItemClicked( this ); +#else + manager.OnLogItemClicked( this ); +#endif + } + + public void CopyLog() + { + string log = logEntry.ToString(); + if( string.IsNullOrEmpty( log ) ) + return; + +#if UNITY_EDITOR || UNITY_2018_1_OR_NEWER || ( !UNITY_ANDROID && !UNITY_IOS ) + GUIUtility.systemCopyBuffer = log; +#elif UNITY_ANDROID + AJC.CallStatic( "CopyText", Context, log ); +#elif UNITY_IOS + _DebugConsole_CopyText( log ); +#endif + } + + public float CalculateExpandedHeight( string content ) + { + string text = logText.text; + HorizontalWrapMode wrapMode = logText.horizontalOverflow; + + logText.text = content; + logText.horizontalOverflow = HorizontalWrapMode.Wrap; + + float result = logText.preferredHeight + copyLogButtonHeight; + + logText.text = text; + logText.horizontalOverflow = wrapMode; + + return Mathf.Max( manager.ItemHeight, result ); + } + + // Return a string containing complete information about the debug entry + public override string ToString() + { + return logEntry.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta new file mode 100644 index 00000000..15a0f84c --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2ea291be9de70a4abfec595203c96c1 +timeCreated: 1465919949 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs new file mode 100644 index 00000000..d17993a4 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs @@ -0,0 +1,1318 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; + +// Receives debug entries and custom events (e.g. Clear, Collapse, Filter by Type) +// and notifies the recycled list view of changes to the list of debug entries +// +// - Vocabulary - +// Debug/Log entry: a Debug.Log/LogError/LogWarning/LogException/LogAssertion request made by +// the client and intercepted by this manager object +// Debug/Log item: a visual (uGUI) representation of a debug entry +// +// There can be a lot of debug entries in the system but there will only be a handful of log items +// to show their properties on screen (these log items are recycled as the list is scrolled) + +// An enum to represent filtered log types +namespace IngameDebugConsole +{ + public enum DebugLogFilter + { + None = 0, + Info = 1, + Warning = 2, + Error = 4, + All = 7 + } + + public class DebugLogManager : MonoBehaviour + { + public static DebugLogManager Instance { get; private set; } + +#pragma warning disable 0649 + [Header( "Properties" )] + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window will persist between scenes (i.e. not be destroyed when scene changes)" )] + private bool singleton = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Minimum height of the console window" )] + private float minimumHeight = 200f; + + [SerializeField] + [HideInInspector] + [Tooltip( "If disabled, no popup will be shown when the console window is hidden" )] + private bool enablePopup = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console will be initialized as a popup" )] + private bool startInPopupMode = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window will initially be invisible" )] + private bool startMinimized = false; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, pressing the Toggle Key will show/hide (i.e. toggle) the console window at runtime" )] + private bool toggleWithKey = false; + + [SerializeField] + [HideInInspector] + private KeyCode toggleKey = KeyCode.BackQuote; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the console window will have a searchbar" )] + private bool enableSearchbar = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Width of the canvas determines whether the searchbar will be located inside the menu bar or underneath the menu bar. This way, the menu bar doesn't get too crowded on narrow screens. This value determines the minimum width of the canvas for the searchbar to appear inside the menu bar" )] + private float topSearchbarMinWidth = 360f; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the command input field at the bottom of the console window will automatically be cleared after entering a command" )] + private bool clearCommandAfterExecution = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Console keeps track of the previously entered commands. This value determines the capacity of the command history (you can scroll through the history via up and down arrow keys while the command input field is focused)" )] + private int commandHistorySize = 15; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, while typing a command, all of the matching commands' signatures will be displayed in a popup" )] + private bool showCommandSuggestions = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, on Android platform, logcat entries of the application will also be logged to the console with the prefix \"LOGCAT: \". This may come in handy especially if you want to access the native logs of your Android plugins (like Admob)" )] + private bool receiveLogcatLogsInAndroid = false; + +#pragma warning disable 0414 + [SerializeField] + [HideInInspector] + [Tooltip( "Native logs will be filtered using these arguments. If left blank, all native logs of the application will be logged to the console. But if you want to e.g. see Admob's logs only, you can enter \"-s Ads\" (without quotes) here" )] + private string logcatArguments; +#pragma warning restore 0414 + + [SerializeField] + [Tooltip( "If enabled, on Android and iOS devices with notch screens, the console window will be repositioned so that the cutout(s) don't obscure it" )] + private bool avoidScreenCutout = true; + + [SerializeField] + [Tooltip( "If a log is longer than this limit, it will be truncated. This helps avoid reaching Unity's 65000 vertex limit for UI canvases" )] + private int maxLogLength = 10000; + +#if UNITY_EDITOR || UNITY_STANDALONE + [SerializeField] + [Tooltip( "If enabled, on standalone platforms, command input field will automatically be focused (start receiving keyboard input) after opening the console window" )] + private bool autoFocusOnCommandInputField = true; +#endif + + [Header( "Visuals" )] + [SerializeField] + private DebugLogItem logItemPrefab; + + [SerializeField] + private Text commandSuggestionPrefab; + + // Visuals for different log types + [SerializeField] + private Sprite infoLog; + [SerializeField] + private Sprite warningLog; + [SerializeField] + private Sprite errorLog; + + private Dictionary logSpriteRepresentations; + + [SerializeField] + private Color collapseButtonNormalColor; + [SerializeField] + private Color collapseButtonSelectedColor; + + [SerializeField] + private Color filterButtonsNormalColor; + [SerializeField] + private Color filterButtonsSelectedColor; + + [SerializeField] + private string commandSuggestionHighlightStart = ""; + [SerializeField] + private string commandSuggestionHighlightEnd = ""; + + [Header( "Internal References" )] + [SerializeField] + private RectTransform logWindowTR; + + private RectTransform canvasTR; + + [SerializeField] + private RectTransform logItemsContainer; + + [SerializeField] + private RectTransform commandSuggestionsContainer; + + [SerializeField] + private InputField commandInputField; + + [SerializeField] + private Button hideButton; + + [SerializeField] + private Button clearButton; + + [SerializeField] + private Image collapseButton; + + [SerializeField] + private Image filterInfoButton; + [SerializeField] + private Image filterWarningButton; + [SerializeField] + private Image filterErrorButton; + + [SerializeField] + private Text infoEntryCountText; + [SerializeField] + private Text warningEntryCountText; + [SerializeField] + private Text errorEntryCountText; + + [SerializeField] + private RectTransform searchbar; + [SerializeField] + private RectTransform searchbarSlotTop; + [SerializeField] + private RectTransform searchbarSlotBottom; + + [SerializeField] + private GameObject snapToBottomButton; + + // Canvas group to modify visibility of the log window + [SerializeField] + private CanvasGroup logWindowCanvasGroup; + + [SerializeField] + private DebugLogPopup popupManager; + + [SerializeField] + private ScrollRect logItemsScrollRect; + private RectTransform logItemsScrollRectTR; + private Vector2 logItemsScrollRectOriginalSize; + + // Recycled list view to handle the log items efficiently + [SerializeField] + private DebugLogRecycledListView recycledListView; +#pragma warning restore 0649 + + private bool isLogWindowVisible = true; + public bool IsLogWindowVisible { get { return isLogWindowVisible; } } + + public bool PopupEnabled + { + get { return popupManager.gameObject.activeSelf; } + set { popupManager.gameObject.SetActive( value ); } + } + + private bool screenDimensionsChanged = true; + + // Number of entries filtered by their types + private int infoEntryCount = 0, warningEntryCount = 0, errorEntryCount = 0; + + // Number of new entries received this frame + private int newInfoEntryCount = 0, newWarningEntryCount = 0, newErrorEntryCount = 0; + + // Filters to apply to the list of debug entries to show + private bool isCollapseOn = false; + private DebugLogFilter logFilter = DebugLogFilter.All; + + // Search filter + private string searchTerm; + private bool isInSearchMode; + + // If the last log item is completely visible (scrollbar is at the bottom), + // scrollbar will remain at the bottom when new debug entries are received + private bool snapToBottom = true; + + // List of unique debug entries (duplicates of entries are not kept) + private List collapsedLogEntries; + + // Dictionary to quickly find if a log already exists in collapsedLogEntries + private Dictionary collapsedLogEntriesMap; + + // The order the collapsedLogEntries are received + // (duplicate entries have the same index (value)) + private DebugLogIndexList uncollapsedLogEntriesIndices; + + // Filtered list of debug entries to show + private DebugLogIndexList indicesOfListEntriesToShow; + + // The log entry that must be focused this frame + private int indexOfLogEntryToSelectAndFocus = -1; + + // Whether or not logs list view should be updated this frame + private bool shouldUpdateRecycledListView = false; + + // Logs that should be registered in Update-loop + private DynamicCircularBuffer queuedLogEntries; + private object logEntriesLock; + private int pendingLogToAutoExpand; + + // Command suggestions that match the currently entered command + private List commandSuggestionInstances; + private int visibleCommandSuggestionInstances = 0; + private List matchingCommandSuggestions; + private List commandCaretIndexIncrements; + private StringBuilder commandSuggestionsStringBuilder; + private string commandInputFieldPrevCommand; + private string commandInputFieldPrevCommandName; + private int commandInputFieldPrevParamCount = -1; + private int commandInputFieldPrevCaretPos = -1; + private int commandInputFieldPrevCaretArgumentIndex = -1; + + // Pools for memory efficiency + private List pooledLogEntries; + private List pooledLogItems; + + // History of the previously entered commands + private CircularBuffer commandHistory; + private int commandHistoryIndex = -1; + private string unfinishedCommand; + + // Required in ValidateScrollPosition() function + private PointerEventData nullPointerEventData; + + // Callbacks for log window show/hide events + public System.Action OnLogWindowShown, OnLogWindowHidden; + +#if UNITY_EDITOR + private bool isQuittingApplication; +#endif + +#if !UNITY_EDITOR && UNITY_ANDROID + private DebugLogLogcatListener logcatListener; +#endif + + private void Awake() + { + // Only one instance of debug console is allowed + if( !Instance ) + { + Instance = this; + + // If it is a singleton object, don't destroy it between scene changes + if( singleton ) + DontDestroyOnLoad( gameObject ); + } + else if( Instance != this ) + { + Destroy( gameObject ); + return; + } + + pooledLogEntries = new List( 16 ); + pooledLogItems = new List( 16 ); + commandSuggestionInstances = new List( 8 ); + matchingCommandSuggestions = new List( 8 ); + commandCaretIndexIncrements = new List( 8 ); + queuedLogEntries = new DynamicCircularBuffer( 16 ); + commandHistory = new CircularBuffer( commandHistorySize ); + + logEntriesLock = new object(); + commandSuggestionsStringBuilder = new StringBuilder( 128 ); + + canvasTR = (RectTransform) transform; + logItemsScrollRectTR = (RectTransform) logItemsScrollRect.transform; + logItemsScrollRectOriginalSize = logItemsScrollRectTR.sizeDelta; + + // Associate sprites with log types + logSpriteRepresentations = new Dictionary() + { + { LogType.Log, infoLog }, + { LogType.Warning, warningLog }, + { LogType.Error, errorLog }, + { LogType.Exception, errorLog }, + { LogType.Assert, errorLog } + }; + + // Initially, all log types are visible + filterInfoButton.color = filterButtonsSelectedColor; + filterWarningButton.color = filterButtonsSelectedColor; + filterErrorButton.color = filterButtonsSelectedColor; + + collapsedLogEntries = new List( 128 ); + collapsedLogEntriesMap = new Dictionary( 128 ); + uncollapsedLogEntriesIndices = new DebugLogIndexList(); + indicesOfListEntriesToShow = new DebugLogIndexList(); + + recycledListView.Initialize( this, collapsedLogEntries, indicesOfListEntriesToShow, logItemPrefab.Transform.sizeDelta.y ); + recycledListView.UpdateItemsInTheList( true ); + + if( minimumHeight < 200f ) + minimumHeight = 200f; + + if( enableSearchbar ) + searchbar.GetComponent().onValueChanged.AddListener( SearchTermChanged ); + else + { + searchbar = null; + searchbarSlotTop.gameObject.SetActive( false ); + searchbarSlotBottom.gameObject.SetActive( false ); + } + + if( commandSuggestionsContainer.gameObject.activeSelf ) + commandSuggestionsContainer.gameObject.SetActive( false ); + + // Register to UI events + commandInputField.onValidateInput += OnValidateCommand; + commandInputField.onValueChanged.AddListener( RefreshCommandSuggestions ); + commandInputField.onEndEdit.AddListener( OnEndEditCommand ); + hideButton.onClick.AddListener( HideLogWindow ); + clearButton.onClick.AddListener( ClearLogs ); + collapseButton.GetComponent