├── .gitignore ├── Assets ├── External.meta ├── External │ ├── Demigiant.meta │ ├── Demigiant │ │ ├── DOTween.meta │ │ └── DOTween │ │ │ ├── DOTween.XML │ │ │ ├── DOTween.XML.meta │ │ │ ├── DOTween.dll │ │ │ ├── DOTween.dll.meta │ │ │ ├── Editor.meta │ │ │ ├── Editor │ │ │ ├── DOTweenEditor.XML │ │ │ ├── DOTweenEditor.XML.meta │ │ │ ├── DOTweenEditor.dll │ │ │ ├── DOTweenEditor.dll.meta │ │ │ ├── Imgs.meta │ │ │ └── Imgs │ │ │ │ ├── DOTweenIcon.png │ │ │ │ ├── DOTweenIcon.png.meta │ │ │ │ ├── Footer.png │ │ │ │ ├── Footer.png.meta │ │ │ │ ├── Footer_dark.png │ │ │ │ ├── Footer_dark.png.meta │ │ │ │ ├── Header.jpg │ │ │ │ └── Header.jpg.meta │ │ │ ├── Modules.meta │ │ │ ├── Modules │ │ │ ├── DOTweenModuleAudio.cs │ │ │ ├── DOTweenModuleAudio.cs.meta │ │ │ ├── DOTweenModulePhysics.cs │ │ │ ├── DOTweenModulePhysics.cs.meta │ │ │ ├── DOTweenModulePhysics2D.cs │ │ │ ├── DOTweenModulePhysics2D.cs.meta │ │ │ ├── DOTweenModuleSprite.cs │ │ │ ├── DOTweenModuleSprite.cs.meta │ │ │ ├── DOTweenModuleUI.cs │ │ │ ├── DOTweenModuleUI.cs.meta │ │ │ ├── DOTweenModuleUnityVersion.cs │ │ │ ├── DOTweenModuleUnityVersion.cs.meta │ │ │ ├── DOTweenModuleUtils.cs │ │ │ └── DOTweenModuleUtils.cs.meta │ │ │ ├── readme.txt │ │ │ └── readme.txt.meta │ ├── Signals.cs │ ├── Signals.cs.meta │ ├── TextMesh Pro.meta │ └── TextMesh Pro │ │ ├── Documentation.meta │ │ ├── Documentation │ │ ├── TextMesh Pro User Guide 2016.pdf │ │ └── TextMesh Pro User Guide 2016.pdf.meta │ │ ├── Resources.meta │ │ ├── Resources │ │ ├── Fonts & Materials.meta │ │ ├── Fonts & Materials │ │ │ ├── LiberationSans SDF - Drop Shadow.mat │ │ │ ├── LiberationSans SDF - Drop Shadow.mat.meta │ │ │ ├── LiberationSans SDF - Outline.mat │ │ │ ├── LiberationSans SDF - Outline.mat.meta │ │ │ ├── LiberationSans SDF.asset │ │ │ └── LiberationSans SDF.asset.meta │ │ ├── LineBreaking Following Characters.txt │ │ ├── LineBreaking Following Characters.txt.meta │ │ ├── LineBreaking Leading Characters.txt │ │ ├── LineBreaking Leading Characters.txt.meta │ │ ├── Shaders.meta │ │ ├── Shaders │ │ │ ├── TMP_Bitmap-Custom-Atlas.shader │ │ │ ├── TMP_Bitmap-Custom-Atlas.shader.meta │ │ │ ├── TMP_Bitmap-Mobile.shader │ │ │ ├── TMP_Bitmap-Mobile.shader.meta │ │ │ ├── TMP_Bitmap.shader │ │ │ ├── TMP_Bitmap.shader.meta │ │ │ ├── TMP_SDF Overlay.shader │ │ │ ├── TMP_SDF Overlay.shader.meta │ │ │ ├── TMP_SDF-Mobile Masking.shader │ │ │ ├── TMP_SDF-Mobile Masking.shader.meta │ │ │ ├── TMP_SDF-Mobile Overlay.shader │ │ │ ├── TMP_SDF-Mobile Overlay.shader.meta │ │ │ ├── TMP_SDF-Mobile.shader │ │ │ ├── TMP_SDF-Mobile.shader.meta │ │ │ ├── TMP_SDF-Surface-Mobile.shader │ │ │ ├── TMP_SDF-Surface-Mobile.shader.meta │ │ │ ├── TMP_SDF-Surface.shader │ │ │ ├── TMP_SDF-Surface.shader.meta │ │ │ ├── TMP_SDF.shader │ │ │ ├── TMP_SDF.shader.meta │ │ │ ├── TMP_Sprite.shader │ │ │ ├── TMP_Sprite.shader.meta │ │ │ ├── TMPro.cginc │ │ │ ├── TMPro.cginc.meta │ │ │ ├── TMPro_Properties.cginc │ │ │ ├── TMPro_Properties.cginc.meta │ │ │ ├── TMPro_Surface.cginc │ │ │ └── TMPro_Surface.cginc.meta │ │ ├── Sprite Assets.meta │ │ ├── Sprite Assets │ │ │ ├── EmojiOne.asset │ │ │ └── EmojiOne.asset.meta │ │ ├── Style Sheets.meta │ │ ├── Style Sheets │ │ │ ├── Default Style Sheet.asset │ │ │ └── Default Style Sheet.asset.meta │ │ ├── TMP Settings.asset │ │ └── TMP Settings.asset.meta │ │ ├── Sprites.meta │ │ └── Sprites │ │ ├── EmojiOne Attribution.txt │ │ ├── EmojiOne Attribution.txt.meta │ │ ├── EmojiOne.json │ │ ├── EmojiOne.json.meta │ │ ├── EmojiOne.png │ │ └── EmojiOne.png.meta ├── PlayerData.asset ├── PlayerData.asset.meta ├── Resources.meta ├── Resources │ ├── DOTweenSettings.asset │ └── DOTweenSettings.asset.meta ├── StartHere.unity ├── StartHere.unity.meta ├── UIFramework.meta ├── UIFramework │ ├── Core.meta │ ├── Core │ │ ├── AUILayer.cs │ │ ├── AUILayer.cs.meta │ │ ├── AUIScreenController.cs │ │ ├── AUIScreenController.cs.meta │ │ ├── ScreenControllerInterfaces.cs │ │ ├── ScreenControllerInterfaces.cs.meta │ │ ├── ScreenPropertyInterfaces.cs │ │ └── ScreenPropertyInterfaces.cs.meta │ ├── Editor.meta │ ├── Editor │ │ ├── UIFrameworkTools.cs │ │ └── UIFrameworkTools.cs.meta │ ├── MANUAL.md │ ├── MANUAL.md.meta │ ├── Panel.meta │ ├── Panel │ │ ├── APanelController.cs │ │ ├── APanelController.cs.meta │ │ ├── PanelPriority.cs │ │ ├── PanelPriority.cs.meta │ │ ├── PanelProperties.cs │ │ ├── PanelProperties.cs.meta │ │ ├── PanelUILayer.cs │ │ └── PanelUILayer.cs.meta │ ├── README.md │ ├── README.md.meta │ ├── ScreenTransitions.meta │ ├── ScreenTransitions │ │ ├── ATransitionComponent.cs │ │ ├── ATransitionComponent.cs.meta │ │ ├── LegacyAnimationScreenTransition.cs │ │ ├── LegacyAnimationScreenTransition.cs.meta │ │ ├── SimpleFadeTransition.cs │ │ └── SimpleFadeTransition.cs.meta │ ├── UIFrame.cs │ ├── UIFrame.cs.meta │ ├── UISettings.cs │ ├── UISettings.cs.meta │ ├── Window.meta │ └── Window │ │ ├── AWindowController.cs │ │ ├── AWindowController.cs.meta │ │ ├── WindowHistoryEntry.cs │ │ ├── WindowHistoryEntry.cs.meta │ │ ├── WindowParaLayer.cs │ │ ├── WindowParaLayer.cs.meta │ │ ├── WindowPriority.cs │ │ ├── WindowPriority.cs.meta │ │ ├── WindowProperties.cs │ │ ├── WindowProperties.cs.meta │ │ ├── WindowUILayer.cs │ │ └── WindowUILayer.cs.meta ├── UIFrameworkExamples.meta └── UIFrameworkExamples │ ├── Art.meta │ ├── Art │ ├── 3d.png │ ├── 3d.png.meta │ ├── 3dExample_FancyAnimatedTransition.anim │ ├── 3dExample_FancyAnimatedTransition.anim.meta │ ├── StarParticle.mat │ ├── StarParticle.mat.meta │ ├── Trail.mat │ ├── Trail.mat.meta │ ├── eye.png │ ├── eye.png.meta │ ├── home.png │ ├── home.png.meta │ ├── person.png │ ├── person.png.meta │ ├── smiley.png │ ├── smiley.png.meta │ ├── star.png │ ├── star.png.meta │ ├── warning.png │ └── warning.png.meta │ ├── DefaultUISettings.asset │ ├── DefaultUISettings.asset.meta │ ├── Prefabs.meta │ ├── Prefabs │ ├── Screens.meta │ ├── Screens │ │ ├── CameraProjectionWindow.prefab │ │ ├── CameraProjectionWindow.prefab.meta │ │ ├── ConfirmationPopup.prefab │ │ ├── ConfirmationPopup.prefab.meta │ │ ├── HomeWindow.prefab │ │ ├── HomeWindow.prefab.meta │ │ ├── NavigationPanel.prefab │ │ ├── NavigationPanel.prefab.meta │ │ ├── PlayerWindow.prefab │ │ ├── PlayerWindow.prefab.meta │ │ ├── PopupExampleWindow.prefab │ │ ├── PopupExampleWindow.prefab.meta │ │ ├── StartGameWindow.prefab │ │ ├── StartGameWindow.prefab.meta │ │ ├── ThreeDExample.prefab │ │ ├── ThreeDExample.prefab.meta │ │ ├── ToastPanel.prefab │ │ └── ToastPanel.prefab.meta │ ├── UIFrame.prefab │ └── UIFrame.prefab.meta │ ├── Scripts.meta │ ├── Scripts │ ├── Editor.meta │ ├── Editor │ │ ├── ScreenIdGenerator.cs │ │ └── ScreenIdGenerator.cs.meta │ ├── Extras.meta │ ├── Extras │ │ ├── FakePlayerData.cs │ │ └── FakePlayerData.cs.meta │ ├── ScreenControllers.meta │ ├── ScreenControllers │ │ ├── CameraProjectionWindowController.cs │ │ ├── CameraProjectionWindowController.cs.meta │ │ ├── ConfirmationPopupController.cs │ │ ├── ConfirmationPopupController.cs.meta │ │ ├── EmptyWindowController.cs │ │ ├── EmptyWindowController.cs.meta │ │ ├── NavigationPanelController.cs │ │ ├── NavigationPanelController.cs.meta │ │ ├── PlayerWindowController.cs │ │ ├── PlayerWindowController.cs.meta │ │ ├── PopupExampleWindowController.cs │ │ ├── PopupExampleWindowController.cs.meta │ │ ├── StartWindowController.cs │ │ ├── StartWindowController.cs.meta │ │ ├── ToastPanelController.cs │ │ └── ToastPanelController.cs.meta │ ├── ScreenIds.cs │ ├── ScreenIds.cs.meta │ ├── ScreenTransitions.meta │ ├── ScreenTransitions │ │ ├── ScaleScreenTransition.cs │ │ ├── ScaleScreenTransition.cs.meta │ │ ├── SlideScreenTransition.cs │ │ └── SlideScreenTransition.cs.meta │ ├── UIDemoController.cs │ ├── UIDemoController.cs.meta │ ├── Widgets.meta │ └── Widgets │ │ ├── AutoMove.cs │ │ ├── AutoMove.cs.meta │ │ ├── LevelProgressComponent.cs │ │ ├── LevelProgressComponent.cs.meta │ │ ├── NavigationPanelButton.cs │ │ ├── NavigationPanelButton.cs.meta │ │ ├── UIFollowComponent.cs │ │ └── UIFollowComponent.cs.meta │ ├── UIPrefabEnvironment.unity │ └── UIPrefabEnvironment.unity.meta ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset └── VFXManager.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | [Ll]ogs/ 7 | 8 | # Never ignore Asset meta data 9 | ![Aa]ssets/**/*.meta 10 | 11 | # Uncomment this line if you wish to ignore the asset store tools plugin 12 | # [Aa]ssets/AssetStoreTools* 13 | 14 | # TextMesh Pro files 15 | [Aa]ssets/TextMesh*Pro/ 16 | 17 | # Visual Studio cache directory 18 | .vs/ 19 | 20 | # Gradle cache directory 21 | .gradle/ 22 | 23 | # Autogenerated VS/MD/Consulo solution and project files 24 | ExportedObj/ 25 | .consulo/ 26 | *.csproj 27 | *.unityproj 28 | *.sln 29 | *.suo 30 | *.tmp 31 | *.user 32 | *.userprefs 33 | *.pidb 34 | *.booproj 35 | *.svd 36 | *.pdb 37 | *.mdb 38 | *.opendb 39 | *.VC.db 40 | 41 | # Unity3D generated meta files 42 | *.pidb.meta 43 | *.pdb.meta 44 | *.mdb.meta 45 | 46 | # Unity3D generated file on crash reports 47 | sysinfo.txt 48 | 49 | # Builds 50 | *.apk 51 | *.unitypackage 52 | 53 | # Crashlytics generated file 54 | crashlytics-build.properties 55 | -------------------------------------------------------------------------------- /Assets/External.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb228d7ad5a5c044db0b3afc4fb99551 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db750336266e41341881bb90ec6682dd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba150ee564f24b7458637a31d7a0f35d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/DOTween.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34192c5e0d14aee43a0e86cc4823268a 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/DOTween.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/DOTween.dll -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/DOTween.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a811bde74b26b53498b4f6d872b09b6d 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | - first: 19 | Editor: Editor 20 | second: 21 | enabled: 0 22 | settings: 23 | DefaultValueInitialized: true 24 | - first: 25 | Windows Store Apps: WindowsStoreApps 26 | second: 27 | enabled: 0 28 | settings: 29 | CPU: AnyCPU 30 | userData: 31 | assetBundleName: 32 | assetBundleVariant: 33 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 053c8ab184cdc5c41a6fc07fa444e278 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/DOTweenEditor.XML.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e2c6224d345d9249acfa6e8ef40bb2d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/DOTweenEditor.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/Editor/DOTweenEditor.dll -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/DOTweenEditor.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45d5034162d6cf04dbe46da84fc7d074 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | - first: 19 | Editor: Editor 20 | second: 21 | enabled: 1 22 | settings: 23 | DefaultValueInitialized: true 24 | - first: 25 | Windows Store Apps: WindowsStoreApps 26 | second: 27 | enabled: 0 28 | settings: 29 | CPU: AnyCPU 30 | userData: 31 | assetBundleName: 32 | assetBundleVariant: 33 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d2d80da4577cd5458cd0ea94e0e04bf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/DOTweenIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8da095e39e9b4df488dfd436f81116d6 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 1 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: -3 31 | maxTextureSize: 128 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 128 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 0 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/Editor/Imgs/Footer.png -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Footer.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7051dba417b3d53409f2918f1ea4938d 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 1 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: -3 31 | maxTextureSize: 256 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 0 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Footer_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/Editor/Imgs/Footer_dark.png -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Footer_dark.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 519694efe2bb2914788b151fbd8c01f4 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: -1 31 | maxTextureSize: 1024 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 256 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/Demigiant/DOTween/Editor/Imgs/Header.jpg -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78a59ca99f8987941adb61f9e14a06a7 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 1 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: -3 31 | maxTextureSize: 512 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: 1 35 | aniso: 1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 2 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 512 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 0 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 670b969bfee00fc43ad3a39db5131f84 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b766d08851589514b97afb23c6f30a70 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dae9aa560b4242648a3affa2bfabc365 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 230fe34542e175245ba74b4659dae700 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs: -------------------------------------------------------------------------------- 1 | // Author: Daniele Giardini - http://www.demigiant.com 2 | // Created: 2018/07/13 3 | 4 | #if true && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER 5 | using System; 6 | using UnityEngine; 7 | using DG.Tweening.Core; 8 | using DG.Tweening.Plugins.Options; 9 | 10 | #pragma warning disable 1591 11 | namespace DG.Tweening 12 | { 13 | public static class DOTweenModuleSprite 14 | { 15 | #region Shortcuts 16 | 17 | #region SpriteRenderer 18 | 19 | /// Tweens a SpriteRenderer's color to the given value. 20 | /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations 21 | /// The end value to reachThe duration of the tween 22 | public static TweenerCore DOColor(this SpriteRenderer target, Color endValue, float duration) 23 | { 24 | TweenerCore t = DOTween.To(() => target.color, x => target.color = x, endValue, duration); 25 | t.SetTarget(target); 26 | return t; 27 | } 28 | 29 | /// Tweens a Material's alpha color to the given value. 30 | /// Also stores the spriteRenderer as the tween's target so it can be used for filtered operations 31 | /// The end value to reachThe duration of the tween 32 | public static TweenerCore DOFade(this SpriteRenderer target, float endValue, float duration) 33 | { 34 | TweenerCore t = DOTween.ToAlpha(() => target.color, x => target.color = x, endValue, duration); 35 | t.SetTarget(target); 36 | return t; 37 | } 38 | 39 | /// Tweens a SpriteRenderer's color using the given gradient 40 | /// (NOTE 1: only uses the colors of the gradient, not the alphas - NOTE 2: creates a Sequence, not a Tweener). 41 | /// Also stores the image as the tween's target so it can be used for filtered operations 42 | /// The gradient to useThe duration of the tween 43 | public static Sequence DOGradientColor(this SpriteRenderer target, Gradient gradient, float duration) 44 | { 45 | Sequence s = DOTween.Sequence(); 46 | GradientColorKey[] colors = gradient.colorKeys; 47 | int len = colors.Length; 48 | for (int i = 0; i < len; ++i) { 49 | GradientColorKey c = colors[i]; 50 | if (i == 0 && c.time <= 0) { 51 | target.color = c.color; 52 | continue; 53 | } 54 | float colorDuration = i == len - 1 55 | ? duration - s.Duration(false) // Verifies that total duration is correct 56 | : duration * (i == 0 ? c.time : c.time - colors[i - 1].time); 57 | s.Append(target.DOColor(c.color, colorDuration).SetEase(Ease.Linear)); 58 | } 59 | return s; 60 | } 61 | 62 | #endregion 63 | 64 | #region Blendables 65 | 66 | #region SpriteRenderer 67 | 68 | /// Tweens a SpriteRenderer's color to the given value, 69 | /// in a way that allows other DOBlendableColor tweens to work together on the same target, 70 | /// instead than fight each other as multiple DOColor would do. 71 | /// Also stores the SpriteRenderer as the tween's target so it can be used for filtered operations 72 | /// The value to tween toThe duration of the tween 73 | public static Tweener DOBlendableColor(this SpriteRenderer target, Color endValue, float duration) 74 | { 75 | endValue = endValue - target.color; 76 | Color to = new Color(0, 0, 0, 0); 77 | return DOTween.To(() => to, x => { 78 | Color diff = x - to; 79 | to = x; 80 | target.color += diff; 81 | }, endValue, duration) 82 | .Blendable().SetTarget(target); 83 | } 84 | 85 | #endregion 86 | 87 | #endregion 88 | 89 | #endregion 90 | } 91 | } 92 | #endif 93 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 188918ab119d93148aa0de59ccf5286b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a060394c03331a64392db53a10e7f2d1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 63c02322328255542995bd02b47b0457 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7bcaf917d9cf5b84090421a5a2abe42e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/readme.txt: -------------------------------------------------------------------------------- 1 | DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant 2 | 3 | // IMPORTANT!!! ///////////////////////////////////////////// 4 | // Upgrading DOTween from versions older than 1.2.000 /////// 5 | // (or DOTween Pro older than 1.0.000) ////////////////////// 6 | ------------------------------------------------------------- 7 | If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully. 8 | 1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry 9 | 2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath 10 | 3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup 11 | 4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only) 12 | 13 | // GET STARTED ////////////////////////////////////////////// 14 | 15 | - After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween. 16 | - In your code, add "using DG.Tweening" to each class where you want to use DOTween. 17 | - You're ready to tween. Check out the links below for full documentation and license info. 18 | 19 | 20 | // LINKS /////////////////////////////////////////////////////// 21 | 22 | DOTween website (documentation, examples, etc): http://dotween.demigiant.com 23 | DOTween license: http://dotween.demigiant.com/license.php 24 | DOTween repository (Google Code): https://code.google.com/p/dotween/ 25 | Demigiant website (documentation, examples, etc): http://www.demigiant.com 26 | 27 | // NOTES ////////////////////////////////////////////////////// 28 | 29 | - DOTween's Utility Panel can be found under "Tools > Demigiant > DOTween Utility Panel" and also contains other useful options, plus a tab to set DOTween's preferences -------------------------------------------------------------------------------- /Assets/External/Demigiant/DOTween/readme.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fccfc62abf2eb0a4db614853430894fd 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/Signals.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3d56b039b7b4503b1ea26b3420fc4cf 3 | timeCreated: 1552848472 -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54d1bd14bd3ca042bd867b519fee8cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e7e8f5a82a3a134e91c54efd2274ea9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b8d251f9af63b746bf2f7ffe00ebb9b 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 243e06394e614e5d99fab26083b707fa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 731f1baa9d144a9897cb1d341c2092b8 3 | folderAsset: yes 4 | timeCreated: 1442040525 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: LiberationSans SDF - Drop Shadow 10 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 11 | m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON 12 | m_LightmapFlags: 5 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _Cube: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _FaceTex: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _MainTex: 34 | m_Texture: {fileID: 2846298, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _OutlineTex: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | m_Floats: 42 | - _Ambient: 0.5 43 | - _Bevel: 0.5 44 | - _BevelClamp: 0 45 | - _BevelOffset: 0 46 | - _BevelRoundness: 0 47 | - _BevelWidth: 0 48 | - _BumpFace: 0 49 | - _BumpOutline: 0 50 | - _ColorMask: 15 51 | - _Diffuse: 0.5 52 | - _DiffusePower: 1 53 | - _FaceDilate: 0.1 54 | - _FaceUVSpeedX: 0 55 | - _FaceUVSpeedY: 0 56 | - _GlowInner: 0.05 57 | - _GlowOffset: 0 58 | - _GlowOuter: 0.05 59 | - _GlowPower: 0.75 60 | - _GradientScale: 10 61 | - _LightAngle: 3.1416 62 | - _MaskSoftnessX: 0 63 | - _MaskSoftnessY: 0 64 | - _OutlineSoftness: 0 65 | - _OutlineUVSpeedX: 0 66 | - _OutlineUVSpeedY: 0 67 | - _OutlineWidth: 0.1 68 | - _PerspectiveFilter: 0.875 69 | - _Reflectivity: 10 70 | - _ScaleRatioA: 0.9 71 | - _ScaleRatioB: 0.73125 72 | - _ScaleRatioC: 0.64125 73 | - _ScaleX: 1 74 | - _ScaleY: 1 75 | - _ShaderFlags: 0 76 | - _SpecularPower: 2 77 | - _Stencil: 0 78 | - _StencilComp: 8 79 | - _StencilOp: 0 80 | - _StencilReadMask: 255 81 | - _StencilWriteMask: 255 82 | - _TextureHeight: 1024 83 | - _TextureWidth: 1024 84 | - _UnderlayDilate: 0 85 | - _UnderlayOffsetX: 0.5 86 | - _UnderlayOffsetY: -0.5 87 | - _UnderlaySoftness: 0.05 88 | - _VertexOffsetX: 0 89 | - _VertexOffsetY: 0 90 | - _WeightBold: 0.75 91 | - _WeightNormal: 0 92 | m_Colors: 93 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 94 | - _Color: {r: 1, g: 1, b: 1, a: 1} 95 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 96 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 97 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 98 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 99 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 100 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 101 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 102 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 103 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 104 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e73a58f6e2794ae7b1b7e50b7fb811b0 3 | timeCreated: 1484172806 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: LiberationSans SDF - Outline 10 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 11 | m_ShaderKeywords: OUTLINE_ON 12 | m_LightmapFlags: 5 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: 3000 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _Cube: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _FaceTex: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _MainTex: 34 | m_Texture: {fileID: 2846298, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _OutlineTex: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | m_Floats: 42 | - _Ambient: 0.5 43 | - _Bevel: 0.5 44 | - _BevelClamp: 0 45 | - _BevelOffset: 0 46 | - _BevelRoundness: 0 47 | - _BevelWidth: 0 48 | - _BumpFace: 0 49 | - _BumpOutline: 0 50 | - _ColorMask: 15 51 | - _Diffuse: 0.5 52 | - _FaceDilate: 0.1 53 | - _FaceUVSpeedX: 0 54 | - _FaceUVSpeedY: 0 55 | - _GlowInner: 0.05 56 | - _GlowOffset: 0 57 | - _GlowOuter: 0.05 58 | - _GlowPower: 0.75 59 | - _GradientScale: 10 60 | - _LightAngle: 3.1416 61 | - _MaskSoftnessX: 0 62 | - _MaskSoftnessY: 0 63 | - _OutlineSoftness: 0 64 | - _OutlineUVSpeedX: 0 65 | - _OutlineUVSpeedY: 0 66 | - _OutlineWidth: 0.1 67 | - _PerspectiveFilter: 0.875 68 | - _Reflectivity: 10 69 | - _ScaleRatioA: 0.9 70 | - _ScaleRatioB: 0.73125 71 | - _ScaleRatioC: 0.64125 72 | - _ScaleX: 1 73 | - _ScaleY: 1 74 | - _ShaderFlags: 0 75 | - _SpecularPower: 2 76 | - _Stencil: 0 77 | - _StencilComp: 8 78 | - _StencilOp: 0 79 | - _StencilReadMask: 255 80 | - _StencilWriteMask: 255 81 | - _TextureHeight: 1024 82 | - _TextureWidth: 1024 83 | - _UnderlayDilate: 0 84 | - _UnderlayOffsetX: 0 85 | - _UnderlayOffsetY: 0 86 | - _UnderlaySoftness: 0 87 | - _VertexOffsetX: 0 88 | - _VertexOffsetY: 0 89 | - _WeightBold: 0.75 90 | - _WeightNormal: 0 91 | m_Colors: 92 | - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} 93 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 94 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 95 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 96 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 97 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 98 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 100 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 101 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 102 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79459efec17a4d00a321bdcc27bbc385 3 | timeCreated: 1484172856 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f586378b4e144a9851e7b34d9b748ee 3 | timeCreated: 1484171803 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/LineBreaking Following Characters.txt: -------------------------------------------------------------------------------- 1 | )]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,. -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fade42e8bc714b018fac513c043d323b 3 | timeCreated: 1425440388 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/LineBreaking Leading Characters.txt: -------------------------------------------------------------------------------- 1 | ([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇〉》」$⦆¥₩ # -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d82c1b31c7e74239bff1220585707d2b 3 | timeCreated: 1425440388 4 | licenseType: Store 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99f836c9cb9345dba2e72c4a1f2d0695 3 | folderAsset: yes 4 | timeCreated: 1436068007 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Custom-Atlas.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Bitmap Custom Atlas" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | _FaceTex ("Font Texture", 2D) = "white" {} 6 | _FaceColor ("Text Color", Color) = (1,1,1,1) 7 | 8 | _VertexOffsetX ("Vertex OffsetX", float) = 0 9 | _VertexOffsetY ("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | _Padding ("Padding", float) = 0 15 | 16 | _StencilComp("Stencil Comparison", Float) = 8 17 | _Stencil("Stencil ID", Float) = 0 18 | _StencilOp("Stencil Operation", Float) = 0 19 | _StencilWriteMask("Stencil Write Mask", Float) = 255 20 | _StencilReadMask("Stencil Read Mask", Float) = 255 21 | 22 | _ColorMask("Color Mask", Float) = 15 23 | } 24 | 25 | SubShader{ 26 | 27 | Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 28 | 29 | Stencil 30 | { 31 | Ref[_Stencil] 32 | Comp[_StencilComp] 33 | Pass[_StencilOp] 34 | ReadMask[_StencilReadMask] 35 | WriteMask[_StencilWriteMask] 36 | } 37 | 38 | 39 | Lighting Off 40 | Cull [_CullMode] 41 | ZTest [unity_GUIZTestMode] 42 | ZWrite Off 43 | Fog { Mode Off } 44 | Blend SrcAlpha OneMinusSrcAlpha 45 | ColorMask[_ColorMask] 46 | 47 | Pass { 48 | CGPROGRAM 49 | #pragma vertex vert 50 | #pragma fragment frag 51 | 52 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 53 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 54 | 55 | 56 | #include "UnityCG.cginc" 57 | 58 | struct appdata_t { 59 | float4 vertex : POSITION; 60 | fixed4 color : COLOR; 61 | float2 texcoord0 : TEXCOORD0; 62 | float2 texcoord1 : TEXCOORD1; 63 | }; 64 | 65 | struct v2f { 66 | float4 vertex : SV_POSITION; 67 | fixed4 color : COLOR; 68 | float2 texcoord0 : TEXCOORD0; 69 | float2 texcoord1 : TEXCOORD1; 70 | float4 mask : TEXCOORD2; 71 | }; 72 | 73 | uniform sampler2D _MainTex; 74 | uniform sampler2D _FaceTex; 75 | uniform float4 _FaceTex_ST; 76 | uniform fixed4 _FaceColor; 77 | 78 | uniform float _VertexOffsetX; 79 | uniform float _VertexOffsetY; 80 | uniform float4 _ClipRect; 81 | uniform float _MaskSoftnessX; 82 | uniform float _MaskSoftnessY; 83 | 84 | float2 UnpackUV(float uv) 85 | { 86 | float2 output; 87 | output.x = floor(uv / 4096); 88 | output.y = uv - 4096 * output.x; 89 | 90 | return output * 0.001953125; 91 | } 92 | 93 | v2f vert (appdata_t v) 94 | { 95 | float4 vert = v.vertex; 96 | vert.x += _VertexOffsetX; 97 | vert.y += _VertexOffsetY; 98 | 99 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 100 | 101 | float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); 102 | 103 | fixed4 faceColor = v.color; 104 | faceColor *= _FaceColor; 105 | 106 | v2f OUT; 107 | OUT.vertex = vPosition; 108 | OUT.color = faceColor; 109 | OUT.texcoord0 = v.texcoord0; 110 | OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); 111 | float2 pixelSize = vPosition.w; 112 | pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 113 | 114 | // Clamp _ClipRect to 16bit. 115 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 116 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 117 | 118 | return OUT; 119 | } 120 | 121 | fixed4 frag (v2f IN) : SV_Target 122 | { 123 | fixed4 color = tex2D(_MainTex, IN.texcoord0) * tex2D(_FaceTex, IN.texcoord1) * IN.color; 124 | 125 | // Alternative implementation to UnityGet2DClipping with support for softness. 126 | #if UNITY_UI_CLIP_RECT 127 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 128 | color *= m.x * m.y; 129 | #endif 130 | 131 | #if UNITY_UI_ALPHACLIP 132 | clip(color.a - 0.001); 133 | #endif 134 | 135 | return color; 136 | } 137 | ENDCG 138 | } 139 | } 140 | 141 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 142 | } 143 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48bb5f55d8670e349b6e614913f9d910 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Mobile/Bitmap" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | _Color ("Text Color", Color) = (1,1,1,1) 6 | _DiffusePower ("Diffuse Power", Range(1.0,4.0)) = 1.0 7 | 8 | _VertexOffsetX("Vertex OffsetX", float) = 0 9 | _VertexOffsetY("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | 15 | _StencilComp("Stencil Comparison", Float) = 8 16 | _Stencil("Stencil ID", Float) = 0 17 | _StencilOp("Stencil Operation", Float) = 0 18 | _StencilWriteMask("Stencil Write Mask", Float) = 255 19 | _StencilReadMask("Stencil Read Mask", Float) = 255 20 | 21 | _ColorMask("Color Mask", Float) = 15 22 | } 23 | 24 | SubShader { 25 | 26 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 27 | 28 | Stencil 29 | { 30 | Ref[_Stencil] 31 | Comp[_StencilComp] 32 | Pass[_StencilOp] 33 | ReadMask[_StencilReadMask] 34 | WriteMask[_StencilWriteMask] 35 | } 36 | 37 | 38 | Lighting Off 39 | Cull Off 40 | ZTest [unity_GUIZTestMode] 41 | ZWrite Off 42 | Fog { Mode Off } 43 | Blend SrcAlpha OneMinusSrcAlpha 44 | ColorMask[_ColorMask] 45 | 46 | Pass { 47 | CGPROGRAM 48 | #pragma vertex vert 49 | #pragma fragment frag 50 | #pragma fragmentoption ARB_precision_hint_fastest 51 | 52 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 53 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 54 | 55 | 56 | #include "UnityCG.cginc" 57 | 58 | struct appdata_t { 59 | float4 vertex : POSITION; 60 | fixed4 color : COLOR; 61 | float2 texcoord0 : TEXCOORD0; 62 | float2 texcoord1 : TEXCOORD1; 63 | }; 64 | 65 | struct v2f { 66 | float4 vertex : POSITION; 67 | fixed4 color : COLOR; 68 | float2 texcoord0 : TEXCOORD0; 69 | float4 mask : TEXCOORD2; 70 | }; 71 | 72 | sampler2D _MainTex; 73 | fixed4 _Color; 74 | float _DiffusePower; 75 | 76 | uniform float _VertexOffsetX; 77 | uniform float _VertexOffsetY; 78 | uniform float4 _ClipRect; 79 | uniform float _MaskSoftnessX; 80 | uniform float _MaskSoftnessY; 81 | 82 | v2f vert (appdata_t v) 83 | { 84 | v2f OUT; 85 | float4 vert = v.vertex; 86 | vert.x += _VertexOffsetX; 87 | vert.y += _VertexOffsetY; 88 | 89 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 90 | 91 | OUT.vertex = UnityPixelSnap(UnityObjectToClipPos(vert)); 92 | OUT.color = v.color; 93 | OUT.color *= _Color; 94 | OUT.color.rgb *= _DiffusePower; 95 | OUT.texcoord0 = v.texcoord0; 96 | 97 | float2 pixelSize = OUT.vertex.w; 98 | //pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 99 | 100 | // Clamp _ClipRect to 16bit. 101 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 102 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 103 | 104 | return OUT; 105 | } 106 | 107 | fixed4 frag (v2f IN) : COLOR 108 | { 109 | fixed4 color = fixed4(IN.color.rgb, IN.color.a * tex2D(_MainTex, IN.texcoord0).a); 110 | 111 | // Alternative implementation to UnityGet2DClipping with support for softness. 112 | #if UNITY_UI_CLIP_RECT 113 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 114 | color *= m.x * m.y; 115 | #endif 116 | 117 | #if UNITY_UI_ALPHACLIP 118 | clip(color.a - 0.001); 119 | #endif 120 | 121 | return color; 122 | } 123 | ENDCG 124 | } 125 | } 126 | 127 | SubShader { 128 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 129 | Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off } 130 | Blend SrcAlpha OneMinusSrcAlpha 131 | BindChannels { 132 | Bind "Color", color 133 | Bind "Vertex", vertex 134 | Bind "TexCoord", texcoord0 135 | } 136 | Pass { 137 | SetTexture [_MainTex] { 138 | constantColor [_Color] combine constant * primary, constant * texture 139 | } 140 | } 141 | } 142 | 143 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 144 | } 145 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e3b057af24249748ff873be7fafee47 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Bitmap" { 2 | 3 | Properties { 4 | _MainTex ("Font Atlas", 2D) = "white" {} 5 | _FaceTex ("Font Texture", 2D) = "white" {} 6 | _FaceColor ("Text Color", Color) = (1,1,1,1) 7 | 8 | _VertexOffsetX ("Vertex OffsetX", float) = 0 9 | _VertexOffsetY ("Vertex OffsetY", float) = 0 10 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 11 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 12 | 13 | _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 14 | 15 | _StencilComp("Stencil Comparison", Float) = 8 16 | _Stencil("Stencil ID", Float) = 0 17 | _StencilOp("Stencil Operation", Float) = 0 18 | _StencilWriteMask("Stencil Write Mask", Float) = 255 19 | _StencilReadMask("Stencil Read Mask", Float) = 255 20 | 21 | _ColorMask("Color Mask", Float) = 15 22 | } 23 | 24 | SubShader{ 25 | 26 | Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } 27 | 28 | Stencil 29 | { 30 | Ref[_Stencil] 31 | Comp[_StencilComp] 32 | Pass[_StencilOp] 33 | ReadMask[_StencilReadMask] 34 | WriteMask[_StencilWriteMask] 35 | } 36 | 37 | 38 | Lighting Off 39 | Cull [_CullMode] 40 | ZTest [unity_GUIZTestMode] 41 | ZWrite Off 42 | Fog { Mode Off } 43 | Blend SrcAlpha OneMinusSrcAlpha 44 | ColorMask[_ColorMask] 45 | 46 | Pass { 47 | CGPROGRAM 48 | #pragma vertex vert 49 | #pragma fragment frag 50 | 51 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 52 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 53 | 54 | 55 | #include "UnityCG.cginc" 56 | 57 | struct appdata_t { 58 | float4 vertex : POSITION; 59 | fixed4 color : COLOR; 60 | float2 texcoord0 : TEXCOORD0; 61 | float2 texcoord1 : TEXCOORD1; 62 | }; 63 | 64 | struct v2f { 65 | float4 vertex : SV_POSITION; 66 | fixed4 color : COLOR; 67 | float2 texcoord0 : TEXCOORD0; 68 | float2 texcoord1 : TEXCOORD1; 69 | float4 mask : TEXCOORD2; 70 | }; 71 | 72 | uniform sampler2D _MainTex; 73 | uniform sampler2D _FaceTex; 74 | uniform float4 _FaceTex_ST; 75 | uniform fixed4 _FaceColor; 76 | 77 | uniform float _VertexOffsetX; 78 | uniform float _VertexOffsetY; 79 | uniform float4 _ClipRect; 80 | uniform float _MaskSoftnessX; 81 | uniform float _MaskSoftnessY; 82 | 83 | float2 UnpackUV(float uv) 84 | { 85 | float2 output; 86 | output.x = floor(uv / 4096); 87 | output.y = uv - 4096 * output.x; 88 | 89 | return output * 0.001953125; 90 | } 91 | 92 | v2f vert (appdata_t v) 93 | { 94 | float4 vert = v.vertex; 95 | vert.x += _VertexOffsetX; 96 | vert.y += _VertexOffsetY; 97 | 98 | vert.xy += (vert.w * 0.5) / _ScreenParams.xy; 99 | 100 | float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); 101 | 102 | fixed4 faceColor = v.color; 103 | faceColor *= _FaceColor; 104 | 105 | v2f OUT; 106 | OUT.vertex = vPosition; 107 | OUT.color = faceColor; 108 | OUT.texcoord0 = v.texcoord0; 109 | OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); 110 | float2 pixelSize = vPosition.w; 111 | pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); 112 | 113 | // Clamp _ClipRect to 16bit. 114 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 115 | OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); 116 | 117 | return OUT; 118 | } 119 | 120 | fixed4 frag (v2f IN) : SV_Target 121 | { 122 | fixed4 color = tex2D(_MainTex, IN.texcoord0); 123 | color = fixed4 (tex2D(_FaceTex, IN.texcoord1).rgb * IN.color.rgb, IN.color.a * color.a); 124 | 125 | // Alternative implementation to UnityGet2DClipping with support for softness. 126 | #if UNITY_UI_CLIP_RECT 127 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); 128 | color *= m.x * m.y; 129 | #endif 130 | 131 | #if UNITY_UI_ALPHACLIP 132 | clip(color.a - 0.001); 133 | #endif 134 | 135 | return color; 136 | } 137 | ENDCG 138 | } 139 | } 140 | 141 | CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" 142 | } 143 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Bitmap.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 128e987d567d4e2c824d754223b3f3b0 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd89cf5b9246416f84610a006f916af7 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc1ede39bf3643ee8e493720e4259791 3 | timeCreated: 1463704911 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a02a7d8c237544f1962732b55a9aebf1 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe393ace9b354375a9cb14cdbbc28be4 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader: -------------------------------------------------------------------------------- 1 | // Simplified version of the SDF Surface shader : 2 | // - No support for Bevel, Bump or envmap 3 | // - Diffuse only lighting 4 | // - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field (Surface)" { 7 | 8 | Properties { 9 | _FaceTex ("Fill Texture", 2D) = "white" {} 10 | _FaceColor ("Fill Color", Color) = (1,1,1,1) 11 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 12 | 13 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 14 | _OutlineTex ("Outline Texture", 2D) = "white" {} 15 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 16 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 17 | 18 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5) 19 | _GlowOffset ("Offset", Range(-1,1)) = 0 20 | _GlowInner ("Inner", Range(0,1)) = 0.05 21 | _GlowOuter ("Outer", Range(0,1)) = 0.05 22 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 23 | 24 | _WeightNormal ("Weight Normal", float) = 0 25 | _WeightBold ("Weight Bold", float) = 0.5 26 | 27 | // Should not be directly exposed to the user 28 | _ShaderFlags ("Flags", float) = 0 29 | _ScaleRatioA ("Scale RatioA", float) = 1 30 | _ScaleRatioB ("Scale RatioB", float) = 1 31 | _ScaleRatioC ("Scale RatioC", float) = 1 32 | 33 | _MainTex ("Font Atlas", 2D) = "white" {} 34 | _TextureWidth ("Texture Width", float) = 512 35 | _TextureHeight ("Texture Height", float) = 512 36 | _GradientScale ("Gradient Scale", float) = 5.0 37 | _ScaleX ("Scale X", float) = 1.0 38 | _ScaleY ("Scale Y", float) = 1.0 39 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 40 | 41 | _VertexOffsetX ("Vertex OffsetX", float) = 0 42 | _VertexOffsetY ("Vertex OffsetY", float) = 0 43 | 44 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) 45 | //_MaskSoftness ("Mask Softness", float) = 0 46 | } 47 | 48 | SubShader { 49 | 50 | Tags { 51 | "Queue"="Transparent" 52 | "IgnoreProjector"="True" 53 | "RenderType"="Transparent" 54 | } 55 | 56 | LOD 300 57 | Cull [_CullMode] 58 | 59 | CGPROGRAM 60 | #pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap 61 | #pragma target 3.0 62 | #pragma shader_feature __ GLOW_ON 63 | 64 | #include "TMPro_Properties.cginc" 65 | #include "TMPro.cginc" 66 | 67 | half _FaceShininess; 68 | half _OutlineShininess; 69 | 70 | struct Input 71 | { 72 | fixed4 color : COLOR; 73 | float2 uv_MainTex; 74 | float2 uv2_FaceTex; 75 | float2 uv2_OutlineTex; 76 | float2 param; // Weight, Scale 77 | float3 viewDirEnv; 78 | }; 79 | 80 | #include "TMPro_Surface.cginc" 81 | 82 | ENDCG 83 | 84 | // Pass to render object as a shadow caster 85 | Pass 86 | { 87 | Name "Caster" 88 | Tags { "LightMode" = "ShadowCaster" } 89 | Offset 1, 1 90 | 91 | Fog {Mode Off} 92 | ZWrite On ZTest LEqual Cull Off 93 | 94 | CGPROGRAM 95 | #pragma vertex vert 96 | #pragma fragment frag 97 | #pragma multi_compile_shadowcaster 98 | #include "UnityCG.cginc" 99 | 100 | struct v2f { 101 | V2F_SHADOW_CASTER; 102 | float2 uv : TEXCOORD1; 103 | float2 uv2 : TEXCOORD3; 104 | float alphaClip : TEXCOORD2; 105 | }; 106 | 107 | uniform float4 _MainTex_ST; 108 | uniform float4 _OutlineTex_ST; 109 | float _OutlineWidth; 110 | float _FaceDilate; 111 | float _ScaleRatioA; 112 | 113 | v2f vert( appdata_base v ) 114 | { 115 | v2f o; 116 | TRANSFER_SHADOW_CASTER(o) 117 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 118 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); 119 | o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; 120 | return o; 121 | } 122 | 123 | uniform sampler2D _MainTex; 124 | 125 | float4 frag(v2f i) : COLOR 126 | { 127 | fixed4 texcol = tex2D(_MainTex, i.uv).a; 128 | clip(texcol.a - i.alphaClip); 129 | SHADOW_CASTER_FRAGMENT(i) 130 | } 131 | ENDCG 132 | } 133 | } 134 | 135 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 136 | } 137 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface-Mobile.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 85187c2149c549c5b33f0cdb02836b17 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7ada0af4f174f0694ca6a487b8f543d 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_SDF.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68e6db2ebdc24f95958faec2be5558d6 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Sprite" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Sprite Texture", 2D) = "white" {} 6 | _Color ("Tint", Color) = (1,1,1,1) 7 | 8 | _StencilComp ("Stencil Comparison", Float) = 8 9 | _Stencil ("Stencil ID", Float) = 0 10 | _StencilOp ("Stencil Operation", Float) = 0 11 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 12 | _StencilReadMask ("Stencil Read Mask", Float) = 255 13 | 14 | _ColorMask ("Color Mask", Float) = 15 15 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 16 | 17 | [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 18 | } 19 | 20 | SubShader 21 | { 22 | Tags 23 | { 24 | "Queue"="Transparent" 25 | "IgnoreProjector"="True" 26 | "RenderType"="Transparent" 27 | "PreviewType"="Plane" 28 | "CanUseSpriteAtlas"="True" 29 | } 30 | 31 | Stencil 32 | { 33 | Ref [_Stencil] 34 | Comp [_StencilComp] 35 | Pass [_StencilOp] 36 | ReadMask [_StencilReadMask] 37 | WriteMask [_StencilWriteMask] 38 | } 39 | 40 | Cull Off 41 | Lighting Off 42 | ZWrite Off 43 | ZTest [unity_GUIZTestMode] 44 | Blend SrcAlpha OneMinusSrcAlpha 45 | ColorMask [_ColorMask] 46 | 47 | Pass 48 | { 49 | CGPROGRAM 50 | #pragma vertex vert 51 | #pragma fragment frag 52 | 53 | #include "UnityCG.cginc" 54 | #include "UnityUI.cginc" 55 | 56 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 57 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 58 | 59 | struct appdata_t 60 | { 61 | float4 vertex : POSITION; 62 | float4 color : COLOR; 63 | float2 texcoord : TEXCOORD0; 64 | }; 65 | 66 | struct v2f 67 | { 68 | float4 vertex : SV_POSITION; 69 | fixed4 color : COLOR; 70 | half2 texcoord : TEXCOORD0; 71 | float4 worldPosition : TEXCOORD1; 72 | }; 73 | 74 | fixed4 _Color; 75 | fixed4 _TextureSampleAdd; 76 | float4 _ClipRect; 77 | 78 | v2f vert(appdata_t IN) 79 | { 80 | v2f OUT; 81 | OUT.worldPosition = IN.vertex; 82 | OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); 83 | 84 | OUT.texcoord = IN.texcoord; 85 | 86 | #ifdef UNITY_HALF_TEXEL_OFFSET 87 | OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 88 | #endif 89 | 90 | OUT.color = IN.color * _Color; 91 | return OUT; 92 | } 93 | 94 | sampler2D _MainTex; 95 | 96 | fixed4 frag(v2f IN) : SV_Target 97 | { 98 | half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; 99 | 100 | #if UNITY_UI_CLIP_RECT 101 | color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); 102 | #endif 103 | 104 | #ifdef UNITY_UI_ALPHACLIP 105 | clip (color.a - 0.001); 106 | #endif 107 | 108 | return color; 109 | } 110 | ENDCG 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMP_Sprite.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf81c85f95fe47e1a27f6ae460cf182c 3 | timeCreated: 1450517184 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMPro.cginc: -------------------------------------------------------------------------------- 1 | float2 UnpackUV(float uv) 2 | { 3 | float2 output; 4 | output.x = floor(uv / 4096); 5 | output.y = uv - 4096 * output.x; 6 | 7 | return output * 0.001953125; 8 | } 9 | 10 | fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness) 11 | { 12 | half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); 13 | half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline)); 14 | 15 | faceColor.rgb *= faceColor.a; 16 | outlineColor.rgb *= outlineColor.a; 17 | 18 | faceColor = lerp(faceColor, outlineColor, outlineAlpha); 19 | 20 | faceColor *= faceAlpha; 21 | 22 | return faceColor; 23 | } 24 | 25 | float3 GetSurfaceNormal(float4 h, float bias) 26 | { 27 | bool raisedBevel = step(1, fmod(_ShaderFlags, 2)); 28 | 29 | h += bias+_BevelOffset; 30 | 31 | float bevelWidth = max(.01, _OutlineWidth+_BevelWidth); 32 | 33 | // Track outline 34 | h -= .5; 35 | h /= bevelWidth; 36 | h = saturate(h+.5); 37 | 38 | if(raisedBevel) h = 1 - abs(h*2.0 - 1.0); 39 | h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness); 40 | h = min(h, 1.0-_BevelClamp); 41 | h *= _Bevel * bevelWidth * _GradientScale * -2.0; 42 | 43 | float3 va = normalize(float3(1.0, 0.0, h.y - h.x)); 44 | float3 vb = normalize(float3(0.0, -1.0, h.w - h.z)); 45 | 46 | return cross(va, vb); 47 | } 48 | 49 | float3 GetSurfaceNormal(float2 uv, float bias, float3 delta) 50 | { 51 | // Read "height field" 52 | float4 h = {tex2D(_MainTex, uv - delta.xz).a, 53 | tex2D(_MainTex, uv + delta.xz).a, 54 | tex2D(_MainTex, uv - delta.zy).a, 55 | tex2D(_MainTex, uv + delta.zy).a}; 56 | 57 | return GetSurfaceNormal(h, bias); 58 | } 59 | 60 | float3 GetSpecular(float3 n, float3 l) 61 | { 62 | float spec = pow(max(0.0, dot(n, l)), _Reflectivity); 63 | return _SpecularColor.rgb * spec * _SpecularPower; 64 | } 65 | 66 | float4 GetGlowColor(float d, float scale) 67 | { 68 | float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale; 69 | float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale; 70 | glow = saturate(abs(glow/(1.0 + t))); 71 | glow = 1.0-pow(glow, _GlowPower); 72 | glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel 73 | return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2)); 74 | } 75 | 76 | float4 BlendARGB(float4 overlying, float4 underlying) 77 | { 78 | overlying.rgb *= overlying.a; 79 | underlying.rgb *= underlying.a; 80 | float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb); 81 | float alpha = underlying.a + (1-underlying.a)*overlying.a; 82 | return float4(blended, alpha); 83 | } 84 | 85 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMPro.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 407bc68d299748449bbf7f48ee690f8d 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc: -------------------------------------------------------------------------------- 1 | // UI Editable properties 2 | uniform sampler2D _FaceTex; // Alpha : Signed Distance 3 | uniform float _FaceUVSpeedX; 4 | uniform float _FaceUVSpeedY; 5 | uniform fixed4 _FaceColor; // RGBA : Color + Opacity 6 | uniform float _FaceDilate; // v[ 0, 1] 7 | uniform float _OutlineSoftness; // v[ 0, 1] 8 | 9 | uniform sampler2D _OutlineTex; // RGBA : Color + Opacity 10 | uniform float _OutlineUVSpeedX; 11 | uniform float _OutlineUVSpeedY; 12 | uniform fixed4 _OutlineColor; // RGBA : Color + Opacity 13 | uniform float _OutlineWidth; // v[ 0, 1] 14 | 15 | uniform float _Bevel; // v[ 0, 1] 16 | uniform float _BevelOffset; // v[-1, 1] 17 | uniform float _BevelWidth; // v[-1, 1] 18 | uniform float _BevelClamp; // v[ 0, 1] 19 | uniform float _BevelRoundness; // v[ 0, 1] 20 | 21 | uniform sampler2D _BumpMap; // Normal map 22 | uniform float _BumpOutline; // v[ 0, 1] 23 | uniform float _BumpFace; // v[ 0, 1] 24 | 25 | uniform samplerCUBE _Cube; // Cube / sphere map 26 | uniform fixed4 _ReflectFaceColor; // RGB intensity 27 | uniform fixed4 _ReflectOutlineColor; 28 | //uniform float _EnvTiltX; // v[-1, 1] 29 | //uniform float _EnvTiltY; // v[-1, 1] 30 | uniform float3 _EnvMatrixRotation; 31 | uniform float4x4 _EnvMatrix; 32 | 33 | uniform fixed4 _SpecularColor; // RGB intensity 34 | uniform float _LightAngle; // v[ 0,Tau] 35 | uniform float _SpecularPower; // v[ 0, 1] 36 | uniform float _Reflectivity; // v[ 5, 15] 37 | uniform float _Diffuse; // v[ 0, 1] 38 | uniform float _Ambient; // v[ 0, 1] 39 | 40 | uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity 41 | uniform float _UnderlayOffsetX; // v[-1, 1] 42 | uniform float _UnderlayOffsetY; // v[-1, 1] 43 | uniform float _UnderlayDilate; // v[-1, 1] 44 | uniform float _UnderlaySoftness; // v[ 0, 1] 45 | 46 | uniform fixed4 _GlowColor; // RGBA : Color + Intesity 47 | uniform float _GlowOffset; // v[-1, 1] 48 | uniform float _GlowOuter; // v[ 0, 1] 49 | uniform float _GlowInner; // v[ 0, 1] 50 | uniform float _GlowPower; // v[ 1, 1/(1+4*4)] 51 | 52 | // API Editable properties 53 | uniform float _ShaderFlags; 54 | uniform float _WeightNormal; 55 | uniform float _WeightBold; 56 | 57 | uniform float _ScaleRatioA; 58 | uniform float _ScaleRatioB; 59 | uniform float _ScaleRatioC; 60 | 61 | uniform float _VertexOffsetX; 62 | uniform float _VertexOffsetY; 63 | 64 | //uniform float _UseClipRect; 65 | uniform float _MaskID; 66 | uniform sampler2D _MaskTex; 67 | uniform float4 _MaskCoord; 68 | uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) 69 | //uniform float _MaskWipeControl; 70 | //uniform float _MaskEdgeSoftness; 71 | //uniform fixed4 _MaskEdgeColor; 72 | //uniform bool _MaskInverse; 73 | 74 | uniform float _MaskSoftnessX; 75 | uniform float _MaskSoftnessY; 76 | 77 | // Font Atlas properties 78 | uniform sampler2D _MainTex; 79 | uniform float _TextureWidth; 80 | uniform float _TextureHeight; 81 | uniform float _GradientScale; 82 | uniform float _ScaleX; 83 | uniform float _ScaleY; 84 | uniform float _PerspectiveFilter; 85 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMPro_Properties.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3997e2241185407d80309a82f9148466 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d930090c0cd643c7b55f19a38538c162 3 | ShaderImporter: 4 | defaultTextures: [] 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Sprite Assets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 512a49d95c0c4332bdd98131869c23c9 3 | folderAsset: yes 4 | timeCreated: 1441876896 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c41005c129ba4d66911b75229fd70b45 3 | timeCreated: 1480316912 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Style Sheets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4aecb92fff08436c8303b10eab8da368 3 | folderAsset: yes 4 | timeCreated: 1441876950 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f952c082cb03451daed3ee968ac6c63e 3 | timeCreated: 1432805430 4 | licenseType: Store 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/TMP Settings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_GameObject: {fileID: 0} 9 | m_Enabled: 1 10 | m_EditorHideFlags: 0 11 | m_Script: {fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391, type: 3} 12 | m_Name: TMP Settings 13 | m_EditorClassIdentifier: 14 | m_enableWordWrapping: 1 15 | m_enableKerning: 1 16 | m_enableExtraPadding: 0 17 | m_enableTintAllSprites: 0 18 | m_enableParseEscapeCharacters: 1 19 | m_missingGlyphCharacter: 0 20 | m_warningsDisabled: 0 21 | m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 22 | m_defaultFontAssetPath: Fonts & Materials/ 23 | m_defaultFontSize: 36 24 | m_defaultAutoSizeMinRatio: 0.5 25 | m_defaultAutoSizeMaxRatio: 2 26 | m_defaultTextMeshProTextContainerSize: {x: 20, y: 5} 27 | m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50} 28 | m_autoSizeTextContainer: 0 29 | m_fallbackFontAssets: [] 30 | m_matchMaterialPreset: 1 31 | m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45, 32 | type: 2} 33 | m_defaultSpriteAssetPath: Sprite Assets/ 34 | m_defaultColorGradientPresetsPath: Color Gradient Presets/ 35 | m_enableEmojiSupport: 1 36 | m_defaultStyleSheet: {fileID: 11400000, guid: f952c082cb03451daed3ee968ac6c63e, 37 | type: 2} 38 | m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3} 39 | m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b, 40 | type: 3} 41 | m_FontCreatorRecentSettings: 42 | - sourceFontFileName: 43 | sourceFontFileGUID: edcaa01543603ae4cb6b2edf25967e21 44 | pointSizeSamplingMode: 1 45 | pointSize: 109 46 | padding: 12 47 | packingMode: 0 48 | atlasWidth: 128 49 | atlasHeight: 128 50 | characterSetSelectionMode: 5 51 | characterSequence: 64 52 | fontStyle: 0 53 | fontStyleModifier: 2 54 | renderMode: 281 55 | includeFontFeatures: 0 56 | referenceFontAssetGUID: 903613a9fe4b65946aa20dfcce07abec 57 | - sourceFontFileName: 58 | sourceFontFileGUID: edcaa01543603ae4cb6b2edf25967e21 59 | pointSizeSamplingMode: 0 60 | pointSize: 108 61 | padding: 12 62 | packingMode: 0 63 | atlasWidth: 128 64 | atlasHeight: 128 65 | characterSetSelectionMode: 5 66 | characterSequence: 64 67 | fontStyle: 0 68 | fontStyleModifier: 2 69 | renderMode: 2090 70 | includeFontFeatures: 0 71 | referenceFontAssetGUID: 70cf10c1d306ada42aa6cd7268db990d 72 | - sourceFontFileName: 73 | sourceFontFileGUID: edcaa01543603ae4cb6b2edf25967e21 74 | pointSizeSamplingMode: 1 75 | pointSize: 109 76 | padding: 12 77 | packingMode: 0 78 | atlasWidth: 128 79 | atlasHeight: 128 80 | characterSetSelectionMode: 5 81 | characterSequence: 64 82 | fontStyle: 0 83 | fontStyleModifier: 2 84 | renderMode: 329 85 | includeFontFeatures: 0 86 | referenceFontAssetGUID: 396d465a5821ead47b589b228da7e980 87 | - sourceFontFileName: 88 | sourceFontFileGUID: edcaa01543603ae4cb6b2edf25967e21 89 | pointSizeSamplingMode: 1 90 | pointSize: 338 91 | padding: 36 92 | packingMode: 0 93 | atlasWidth: 4096 94 | atlasHeight: 4096 95 | characterSetSelectionMode: 1 96 | characterSequence: 32 - 126, 160 - 255, 8192 - 8303, 8364, 8482, 9633 97 | fontStyle: 0 98 | fontStyleModifier: 2 99 | renderMode: 329 100 | includeFontFeatures: 0 101 | referenceFontAssetGUID: 3a4171c252e1112499af739474d9f48e 102 | m_CreationSettingsSelectionIndex: 0 103 | m_CreationSettingsIndex: 0 104 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Resources/TMP Settings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f5b5dff67a942289a9defa416b206f3 3 | timeCreated: 1436653997 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0603b6d5186471b96c778c3949c7ce2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Sprites/EmojiOne Attribution.txt: -------------------------------------------------------------------------------- 1 | This sample of beautiful emojis are provided by EmojiOne https://www.emojione.com/ 2 | 3 | Please visit their website to view the complete set of their emojis and review their licensing terms. -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 381dcb09d5029d14897e55f98031fca5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Sprites/EmojiOne.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f05276190cf498a8153f6cbe761d4e6 3 | timeCreated: 1480316860 4 | licenseType: Pro 5 | TextScriptImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/External/TextMesh Pro/Sprites/EmojiOne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/External/TextMesh Pro/Sprites/EmojiOne.png -------------------------------------------------------------------------------- /Assets/PlayerData.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: b11b6e8c98789024f8399c1d2ea4e995, type: 3} 13 | m_Name: PlayerData 14 | m_EditorClassIdentifier: 15 | levelProgress: 16 | - LevelName: Commando Chaos 17 | Stars: 2 18 | - LevelName: Citadel Complex 19 | Stars: 2 20 | - LevelName: Azure Oubliette 21 | Stars: 1 22 | - LevelName: Gun Vortex 23 | Stars: 0 24 | -------------------------------------------------------------------------------- /Assets/PlayerData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3df7728a16d6e643b12a51a42b3d074 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a249e1ef524fcd49ae3bdaa270183bc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Resources/DOTweenSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 16995157, guid: a811bde74b26b53498b4f6d872b09b6d, type: 3} 13 | m_Name: DOTweenSettings 14 | m_EditorClassIdentifier: 15 | useSafeMode: 1 16 | safeModeOptions: 17 | nestedTweenFailureBehaviour: 0 18 | timeScale: 1 19 | useSmoothDeltaTime: 0 20 | maxSmoothUnscaledTime: 0.15 21 | rewindCallbackMode: 0 22 | showUnityEditorReport: 0 23 | logBehaviour: 0 24 | drawGizmos: 1 25 | defaultRecyclable: 0 26 | defaultAutoPlay: 3 27 | defaultUpdateType: 0 28 | defaultTimeScaleIndependent: 0 29 | defaultEaseType: 6 30 | defaultEaseOvershootOrAmplitude: 1.70158 31 | defaultEasePeriod: 0 32 | defaultAutoKill: 1 33 | defaultLoopType: 0 34 | showPreviewPanel: 1 35 | storeSettingsLocation: 0 36 | modules: 37 | showPanel: 0 38 | audioEnabled: 0 39 | physicsEnabled: 0 40 | physics2DEnabled: 0 41 | spriteEnabled: 1 42 | uiEnabled: 1 43 | textMeshProEnabled: 0 44 | tk2DEnabled: 0 45 | showPlayingTweens: 0 46 | showPausedTweens: 0 47 | -------------------------------------------------------------------------------- /Assets/Resources/DOTweenSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9103e9261ac9e0544beaf4923610af56 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/StartHere.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbcea6b69932d0d47a10c2cc60f5e164 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFramework.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45881f9202dcb12448c4f6c6356d76f9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aad81f4b464f8cd4aa7eeb2dbfdb4f50 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/AUILayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a93f138be96272e4b8311ae28b9aac54 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/AUIScreenController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6ec9ebe91abca44daa8263178a8e3bd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/ScreenControllerInterfaces.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace deVoid.UIFramework { 4 | /// 5 | /// Interface that all UI Screens must implement directly or indirectly 6 | /// 7 | public interface IUIScreenController { 8 | string ScreenId { get; set; } 9 | bool IsVisible { get; } 10 | 11 | void Show(IScreenProperties props = null); 12 | void Hide(bool animate = true); 13 | 14 | Action InTransitionFinished { get; set; } 15 | Action OutTransitionFinished { get; set; } 16 | Action CloseRequest { get; set; } 17 | Action ScreenDestroyed { get; set; } 18 | } 19 | 20 | /// 21 | /// Interface that all Windows must implement 22 | /// 23 | public interface IWindowController : IUIScreenController { 24 | bool HideOnForegroundLost { get; } 25 | bool IsPopup { get; } 26 | WindowPriority WindowPriority { get; } 27 | } 28 | 29 | /// 30 | /// Interface that all Panels must implement 31 | /// 32 | public interface IPanelController : IUIScreenController { 33 | PanelPriority Priority { get; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/ScreenControllerInterfaces.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95d1d3dfa4d4e7f468bff24445d68bcd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/ScreenPropertyInterfaces.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework 2 | { 3 | /// 4 | /// Base interface for all the screen properties 5 | /// 6 | public interface IScreenProperties { } 7 | 8 | /// 9 | /// Base interface for all Panel properties 10 | /// 11 | public interface IPanelProperties : IScreenProperties 12 | { 13 | PanelPriority Priority { get; set; } 14 | } 15 | 16 | /// 17 | /// Base interface for Window properties. 18 | /// 19 | public interface IWindowProperties : IScreenProperties 20 | { 21 | WindowPriority WindowQueuePriority { get; set; } 22 | bool HideOnForegroundLost { get; set; } 23 | bool IsPopup { get; set; } 24 | bool SuppressPrefabProperties { get; set; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/UIFramework/Core/ScreenPropertyInterfaces.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58c4b0eeea4655d4ba2491b198400441 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69d45d361a7fc2e48a68675569d59381 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/Editor/UIFrameworkTools.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf58572716e1f644a9bd72a4eeeb2264 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/MANUAL.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42d065c557635534cb0dd4c08548e8c6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d28989458f4606541b8f3afdab43a1c8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/APanelController.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework { 2 | /// 3 | /// Base class for panels that need no special Properties 4 | /// 5 | public abstract class APanelController : APanelController { } 6 | 7 | /// 8 | /// Base class for Panels 9 | /// 10 | public abstract class APanelController : AUIScreenController, IPanelController where T : IPanelProperties { 11 | public PanelPriority Priority { 12 | get { 13 | if (Properties != null) { 14 | return Properties.Priority; 15 | } 16 | else { 17 | return PanelPriority.None; 18 | } 19 | } 20 | } 21 | 22 | protected sealed override void SetProperties(T props) { 23 | base.SetProperties(props); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/APanelController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 933ea2239ce61f84e90669c3cc06c3cb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelPriority.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace deVoid.UIFramework 5 | { 6 | /// 7 | /// Defines to which para-layer 8 | /// the panel is going to be parented to 9 | /// 10 | public enum PanelPriority { 11 | None = 0, 12 | Prioritary = 1, 13 | Tutorial = 2, 14 | Blocker = 3, 15 | } 16 | 17 | [System.Serializable] 18 | public class PanelPriorityLayerListEntry { 19 | [SerializeField] 20 | [Tooltip("The panel priority type for a given target para-layer")] 21 | private PanelPriority priority; 22 | [SerializeField] 23 | [Tooltip("The GameObject that should house all Panels tagged with this priority")] 24 | private Transform targetParent; 25 | 26 | public Transform TargetParent { 27 | get { return targetParent; } 28 | set { targetParent = value; } 29 | } 30 | 31 | public PanelPriority Priority { 32 | get { return priority; } 33 | set { priority = value; } 34 | } 35 | 36 | public PanelPriorityLayerListEntry(PanelPriority prio, Transform parent) { 37 | priority = prio; 38 | targetParent = parent; 39 | } 40 | } 41 | 42 | [System.Serializable] 43 | public class PanelPriorityLayerList { 44 | [SerializeField] 45 | [Tooltip("A lookup of GameObjects to store panels depending on their Priority. Render priority is set by the hierarchy order of these GameObjects")] 46 | private List paraLayers = null; 47 | 48 | private Dictionary lookup; 49 | 50 | public Dictionary ParaLayerLookup { 51 | get { 52 | if (lookup == null || lookup.Count == 0) { 53 | CacheLookup(); 54 | } 55 | 56 | return lookup; 57 | } 58 | } 59 | 60 | private void CacheLookup() { 61 | lookup = new Dictionary(); 62 | for (int i = 0; i < paraLayers.Count; i++) { 63 | lookup.Add(paraLayers[i].Priority, paraLayers[i].TargetParent); 64 | } 65 | } 66 | 67 | public PanelPriorityLayerList(List entries) { 68 | paraLayers = entries; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelPriority.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90c6a81fca344ec69e812dd54d6af9ae 3 | timeCreated: 1552756429 -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelProperties.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace deVoid.UIFramework { 4 | /// 5 | /// Properties common to all panels 6 | /// 7 | [System.Serializable] 8 | public class PanelProperties : IPanelProperties { 9 | [SerializeField] 10 | [Tooltip("Panels go to different para-layers depending on their priority. You can set up para-layers in the Panel Layer.")] 11 | private PanelPriority priority; 12 | 13 | public PanelPriority Priority { 14 | get { return priority; } 15 | set { priority = value; } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelProperties.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5e7b052a1d3f054697c1d84445f71ab 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelUILayer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | 5 | namespace deVoid.UIFramework { 6 | /// 7 | /// This Layer controls Panels. 8 | /// Panels are Screens that have no history or queuing, 9 | /// they are simply shown and hidden in the Frame 10 | /// eg: a HUD, an energy bar, a mini map etc. 11 | /// 12 | public class PanelUILayer : AUILayer { 13 | [SerializeField] 14 | [Tooltip("Settings for the priority para-layers. A Panel registered to this layer will be reparented to a different para-layer object depending on its Priority.")] 15 | private PanelPriorityLayerList priorityLayers = null; 16 | 17 | public override void ReparentScreen(IUIScreenController controller, Transform screenTransform) { 18 | var ctl = controller as IPanelController; 19 | if (ctl != null) { 20 | ReparentToParaLayer(ctl.Priority, screenTransform); 21 | } 22 | else { 23 | base.ReparentScreen(controller, screenTransform); 24 | } 25 | } 26 | 27 | public override void ShowScreen(IPanelController screen) { 28 | screen.Show(); 29 | } 30 | 31 | public override void ShowScreen(IPanelController screen, TProps properties) { 32 | screen.Show(properties); 33 | } 34 | 35 | public override void HideScreen(IPanelController screen) { 36 | screen.Hide(); 37 | } 38 | 39 | public bool IsPanelVisible(string panelId) { 40 | IPanelController panel; 41 | if (registeredScreens.TryGetValue(panelId, out panel)) { 42 | return panel.IsVisible; 43 | } 44 | 45 | return false; 46 | } 47 | 48 | private void ReparentToParaLayer(PanelPriority priority, Transform screenTransform) { 49 | Transform trans; 50 | if (!priorityLayers.ParaLayerLookup.TryGetValue(priority, out trans)) { 51 | trans = transform; 52 | } 53 | 54 | screenTransform.SetParent(trans, false); 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Assets/UIFramework/Panel/PanelUILayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3192e4f9ae2f1d7468c1a8b4ec79c8df 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/README.md: -------------------------------------------------------------------------------- 1 | # deVoid UI Framework 2 | **TL;DR:** 3 | *Step 1:* 4 | 5 | Right click on project view 6 | `Create -> deVoid UI -> UIFrame Prefab` 7 | then drag the Prefab onto your scene 8 | 9 | *Step 2:* 10 | Get a reference to your UI Frame and register some screens 11 | `uiFrame.RegisterScreen("YourScreenId", yourScreenPrefab);` 12 | 13 | *Step 3:* 14 | Show your screens 15 | `uiFrame.OpenWindow("YourWindowId");` 16 | `uiFrame.ShowPanel("YourPanelId");` 17 | 18 | Or, if you have some data payload 19 | 20 | `uiFrame.OpenWindow("YourWindowId", yourWindowProperties);` 21 | `uiFrame.ShowPanel("YourPanelId", yourPanelProperties);` 22 | 23 | *Step 4:* 24 | Now that you're familiar with the API, right click on project view 25 | `Create -> deVoid UI -> UI Settings` 26 | 27 | Rig your UI Frame prefab as the UI Template, drag all your screens in the Screens To Register list and simply do 28 | 29 | `uiFrame = yourUiSettings.CreateUIInstance();` 30 | 31 | Which will give you a new UI Frame instance and automatically do *Step 2* for you. 32 | 33 | Make sure to check out [the examples repo](https://github.com/yankooliveira/uiframework_examples) and read [the manual](https://github.com/yankooliveira/uiframework/blob/master/MANUAL.md)! 34 | 35 | ## What? 36 | The *deVoid UI Framework* (or **devUI** for short) is a simple architecture for UI handling and navigation in Unity. It enforces one simple rule: *you can **never** directly access the internals of your UI code from external code*, but anything else is fair game. You want to read data from Singletons from inside your UI? Sure. You want to sandwich mediators, views and controllers and do MVC by the book? Go for it. You want to skip the data passing functionalities and use your own MVVM framework? Power to you. Do whatever floats your boat and works best for your needs. 37 | 38 | ## Why? 39 | Having worked with mobile F2P games for years, I've done my fair share of UI. And I *hate* doing UI. 40 | So I figured the more people learn how to do it, the smaller the chances that I ever have to do it again 🌈 41 | 42 | *(Also, sharing is caring and I'm secretly a hippie)* 43 | 44 | ### Features 45 | * Simple to extend and customize 46 | * Support for navigation history and queuing 47 | * Transition animations 48 | * Blocking user input while screens transition (especially handy for touch input) 49 | * Priority and layering 50 | * Focus on type safety and flexibility 51 | 52 | ### Known Limitations 53 | * No built in support for controller navigation 54 | 55 | ### Disclaimer: 56 | This is **A** solution to work with UI - I don't believe in perfect, one-size-fits-all solutions (and nor should you in anyone who tells you otherwise). But this architecture was battle tested in more than one game over the last few years (from game jams to medium and bigger sized games), and it ticked all the boxes for me so far. 57 | 58 | While I tried to keep this it as flexible and as easy to deal with as possible, there is still some structure to be followed. I recommend checking out [the examples repo](https://github.com/yankooliveira/uiframework_examples) and taking a look at [the manual](https://github.com/yankooliveira/uiframework/blob/master/MANUAL.md) before using. 59 | 60 | Although the architecture itself is sound and was tested in live environments, this implementation was made from scratch on my free time. I have been using it for a few months now and did some cleanup and bugfixes for the public release, so it *Should Work(TM)*. 61 | 62 | ### Acknowledgements 63 | A lot of the structure is inspired by a design used by [Renan Rennó](https://www.linkedin.com/in/renanrenno/) when we worked together. Special thanks to everyone who I made use this architecture through the years and to [Sylvain Cornillon](https://www.bossastudios.com/the-team/), who allowed me to open source it and helped me find more proper names for the classes, or I'd be still calling it *"UIManagerOrWhatevs"* cause I'm a rebel. 64 | 65 | You can read my original (even more) verbose post about this architecture [in my blog](http://yankooliveira.com/index.php/2017/12/27/uisystem/) and poke me on twitter [@yankooliveira](https://twitter.com/yankooliveira). 66 | -------------------------------------------------------------------------------- /Assets/UIFramework/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a2bb4a6b9c909c4d8854576f9495dee 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2dbf7136f3b050d43b74d2712c1a2d2d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/ATransitionComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System; 3 | 4 | namespace deVoid.UIFramework { 5 | /// 6 | /// Screens use ATransitionComponents to animate their in and out transitions. 7 | /// This can be extended to use Lerps, animations etc. 8 | /// 9 | public abstract class ATransitionComponent : MonoBehaviour { 10 | /// 11 | /// Animate the specified target transform and execute CallWhenFinished when the animation is done. 12 | /// 13 | /// Target transform. 14 | /// Delegate to be called when animation is finished. 15 | public abstract void Animate(Transform target, Action callWhenFinished); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/ATransitionComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c20ef95ae53cf444990bc58f023d0ff6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/LegacyAnimationScreenTransition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using UnityEngine; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | /// 8 | /// I have avoided using the Legacy Animation system for ages, but since I know people 9 | /// will want to have hand-authored animations on their UI and I highly recommend 10 | /// *not* using Animator for that, both for workflow and performance reasons 11 | /// (ref: https://www.youtube.com/watch?v=_wxitgdx-UI&t=2883s ), 12 | /// I decided to add this example using the Legacy system. An alternative you can 13 | /// look into is the SimpleAnimationComponent 14 | /// (ref: https://blogs.unity3d.com/2017/11/28/introducing-the-simple-animation-component/ ) 15 | /// Although it still runs on top of Animator, at least it might have a simpler workflow. 16 | /// 17 | /// Word of warning: this seems to work, but was barely tested. Be careful if taking it into 18 | /// production :D 19 | /// 20 | public class LegacyAnimationScreenTransition : ATransitionComponent 21 | { 22 | [SerializeField] private AnimationClip clip = null; 23 | [SerializeField] private bool playReverse = false; 24 | 25 | private Action previousCallbackWhenFinished; 26 | 27 | public override void Animate(Transform target, Action callWhenFinished) { 28 | FinishPrevious(); 29 | var targetAnimation = target.GetComponent(); 30 | if (targetAnimation == null) { 31 | Debug.LogError("[LegacyAnimationScreenTransition] No Animation component in " + target); 32 | if (callWhenFinished != null) { 33 | callWhenFinished(); 34 | } 35 | 36 | return; 37 | } 38 | 39 | targetAnimation.clip = clip; 40 | StartCoroutine(PlayAnimationRoutine(targetAnimation, callWhenFinished)); 41 | } 42 | 43 | private IEnumerator PlayAnimationRoutine(Animation targetAnimation, Action callWhenFinished) { 44 | previousCallbackWhenFinished = callWhenFinished; 45 | foreach (AnimationState state in targetAnimation) { 46 | state.time = playReverse ? state.clip.length : 0f; 47 | state.speed = playReverse ? -1f : 1f; 48 | } 49 | 50 | targetAnimation.Play(PlayMode.StopAll); 51 | yield return new WaitForSeconds(targetAnimation.clip.length); 52 | FinishPrevious(); 53 | } 54 | 55 | private void FinishPrevious() { 56 | if (previousCallbackWhenFinished != null) { 57 | previousCallbackWhenFinished(); 58 | previousCallbackWhenFinished = null; 59 | } 60 | 61 | StopAllCoroutines(); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/LegacyAnimationScreenTransition.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09bbc675c80bb4a4c81b3a98d595de4f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/SimpleFadeTransition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace deVoid.UIFramework 5 | { 6 | /// 7 | /// This is a simple fade transition implemented as a built-in example. 8 | /// I recommend using a free tweening library like DOTween (http://dotween.demigiant.com/) 9 | /// or rolling out your own. 10 | /// Check the Examples project for more robust and battle-tested options: 11 | /// https://github.com/yankooliveira/uiframework_examples 12 | /// 13 | public class SimpleFadeTransition : ATransitionComponent 14 | { 15 | [SerializeField] private float fadeDuration = 0.5f; 16 | [SerializeField] private bool fadeOut = false; 17 | 18 | private CanvasGroup canvasGroup; 19 | private float timer; 20 | private Action currentAction; 21 | private Transform currentTarget; 22 | 23 | private float startValue; 24 | private float endValue; 25 | 26 | private bool shouldAnimate; 27 | 28 | public override void Animate(Transform target, Action callWhenFinished) { 29 | if (currentAction != null) { 30 | canvasGroup.alpha = endValue; 31 | currentAction(); 32 | } 33 | 34 | canvasGroup = target.GetComponent(); 35 | if (canvasGroup == null) { 36 | canvasGroup = target.gameObject.AddComponent(); 37 | } 38 | 39 | if (fadeOut) { 40 | startValue = 1f; 41 | endValue = 0f; 42 | } 43 | else { 44 | startValue = 0f; 45 | endValue = 1f; 46 | } 47 | 48 | currentAction = callWhenFinished; 49 | timer = fadeDuration; 50 | 51 | canvasGroup.alpha = startValue; 52 | shouldAnimate = true; 53 | } 54 | 55 | private void Update() { 56 | if (!shouldAnimate) { 57 | return; 58 | } 59 | 60 | if (timer > 0f) { 61 | timer -= Time.deltaTime; 62 | canvasGroup.alpha = Mathf.Lerp(endValue, startValue, timer / fadeDuration); 63 | } 64 | else { 65 | canvasGroup.alpha = 1f; 66 | if (currentAction != null) { 67 | currentAction(); 68 | } 69 | 70 | currentAction = null; 71 | shouldAnimate = false; 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /Assets/UIFramework/ScreenTransitions/SimpleFadeTransition.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f9739af8e894b7b8db28faf4bb2114d 3 | timeCreated: 1552782789 -------------------------------------------------------------------------------- /Assets/UIFramework/UIFrame.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cdc8dba95123fb24c805dbd32dc633ad 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/UISettings.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace deVoid.UIFramework 5 | { 6 | /// 7 | /// Template for an UI. You can rig the prefab for the UI Frame itself and all the screens that should 8 | /// be instanced and registered upon instantiating a new UI Frame. 9 | /// 10 | 11 | [CreateAssetMenu(fileName = "UISettings", menuName = "deVoid UI/UI Settings")] 12 | public class UISettings : ScriptableObject 13 | { 14 | [Tooltip("Prefab for the UI Frame structure itself")] 15 | [SerializeField] private UIFrame templateUIPrefab = null; 16 | [Tooltip("Prefabs for all the screens (both Panels and Windows) that are to be instanced and registered when the UI is instantiated")] 17 | [SerializeField] private List screensToRegister = null; 18 | [Tooltip("In case a screen prefab is not deactivated, should the system automatically deactivate its GameObject upon instantiation? If false, the screen will be at a visible state upon instantiation.")] 19 | [SerializeField] private bool deactivateScreenGOs = true; 20 | 21 | /// 22 | /// Creates an instance of the UI Frame Prefab. By default, also instantiates 23 | /// all the screens listed and registers them. If the deactivateScreenGOs flag is 24 | /// true, it will deactivate all Screen GameObjects in case they're active. 25 | /// 26 | /// Should the screens listed in the Settings file be instanced and registered? 27 | /// A new UI Frame 28 | public UIFrame CreateUIInstance(bool instanceAndRegisterScreens = true) { 29 | var newUI = Instantiate(templateUIPrefab); 30 | 31 | if (instanceAndRegisterScreens) { 32 | foreach (var screen in screensToRegister) { 33 | var screenInstance = Instantiate(screen); 34 | var screenController = screenInstance.GetComponent(); 35 | 36 | if (screenController != null) { 37 | newUI.RegisterScreen(screen.name, screenController, screenInstance.transform); 38 | if (deactivateScreenGOs && screenInstance.activeSelf) { 39 | screenInstance.SetActive(false); 40 | } 41 | } 42 | else { 43 | Debug.LogError("[UIConfig] Screen doesn't contain a ScreenController! Skipping " + screen.name); 44 | } 45 | } 46 | } 47 | 48 | return newUI; 49 | } 50 | 51 | private void OnValidate() { 52 | List objectsToRemove = new List(); 53 | for(int i = 0; i < screensToRegister.Count; i++) { 54 | var screenCtl = screensToRegister[i].GetComponent(); 55 | if (screenCtl == null) { 56 | objectsToRemove.Add(screensToRegister[i]); 57 | } 58 | } 59 | 60 | if (objectsToRemove.Count > 0) { 61 | Debug.LogError("[UISettings] Some GameObjects that were added to the Screen Prefab List didn't have ScreenControllers attached to them! Removing."); 62 | foreach (var obj in objectsToRemove) { 63 | Debug.LogError("[UISettings] Removed " + obj.name + " from " + name + " as it has no Screen Controller attached!"); 64 | screensToRegister.Remove(obj); 65 | } 66 | } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/UIFramework/UISettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 414062f9d9180b24eb66136c31c0fe4c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 060eefe3929d6d74c99bfaa02f6d51ab 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/AWindowController.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework 2 | { 3 | /// 4 | /// Base implementation for Window ScreenControllers that need no special Properties 5 | /// 6 | public abstract class AWindowController : AWindowController { } 7 | 8 | /// 9 | /// Base implementation for Window ScreenControllers. Its parameter is a specific type of IWindowProperties. 10 | /// In case your window doesn't need special properties, inherit from AWindowScreenController, without Generic param. 11 | /// 12 | /// 13 | /// 14 | public abstract class AWindowController : AUIScreenController, IWindowController 15 | where TProps : IWindowProperties 16 | { 17 | public bool HideOnForegroundLost { 18 | get { return Properties.HideOnForegroundLost; } 19 | } 20 | 21 | public bool IsPopup { 22 | get { return Properties.IsPopup; } 23 | } 24 | 25 | public WindowPriority WindowPriority { 26 | get { return Properties.WindowQueuePriority; } 27 | } 28 | 29 | /// 30 | /// Requests this Window to be closed, handy for rigging it directly in the Editor. 31 | /// I use the UI_ prefix to group all the methods that should be rigged in the Editor so that it's 32 | /// easy to find the screen-specific methods. It breaks naming convention, but does more good than harm as 33 | /// the amount of methods grow. 34 | /// This is *not* called every time it is closed, just upon user input - for that behaviour, see 35 | /// WhileHiding(); 36 | /// 37 | public virtual void UI_Close() { 38 | CloseRequest(this); 39 | } 40 | 41 | protected sealed override void SetProperties(TProps props) { 42 | if (props != null) { 43 | // If the Properties set on the prefab should not be overwritten, 44 | // copy the default values to the passed in properties 45 | if (!props.SuppressPrefabProperties) { 46 | props.HideOnForegroundLost = Properties.HideOnForegroundLost; 47 | props.WindowQueuePriority = Properties.WindowQueuePriority; 48 | props.IsPopup = Properties.IsPopup; 49 | } 50 | 51 | Properties = props; 52 | } 53 | } 54 | 55 | protected override void HierarchyFixOnShow() { 56 | transform.SetAsLastSibling(); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/AWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aed99ba45b466234fa100e177aba2b8a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowHistoryEntry.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework { 2 | /// 3 | /// An entry for controlling window history and queue 4 | /// 5 | public struct WindowHistoryEntry 6 | { 7 | public readonly IWindowController Screen; 8 | public readonly IWindowProperties Properties; 9 | 10 | public WindowHistoryEntry(IWindowController screen, IWindowProperties properties) { 11 | Screen = screen; 12 | Properties = properties; 13 | } 14 | 15 | public void Show() { 16 | Screen.Show(Properties); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowHistoryEntry.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e46a9a8cfa1c5b47a7924f92d20d1e4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowParaLayer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | namespace deVoid.UIFramework { 5 | /// 6 | /// This is a "helper" layer so Windows with higher priority can be displayed. 7 | /// By default, it contains any window tagged as a Popup. It is controlled by the WindowUILayer. 8 | /// 9 | public class WindowParaLayer : MonoBehaviour { 10 | [SerializeField] 11 | private GameObject darkenBgObject = null; 12 | 13 | private List containedScreens = new List(); 14 | 15 | public void AddScreen(Transform screenRectTransform) { 16 | screenRectTransform.SetParent(transform, false); 17 | containedScreens.Add(screenRectTransform.gameObject); 18 | } 19 | 20 | public void RefreshDarken() { 21 | for (int i = 0; i < containedScreens.Count; i++) { 22 | if (containedScreens[i] != null) { 23 | if (containedScreens[i].activeSelf) { 24 | darkenBgObject.SetActive(true); 25 | return; 26 | } 27 | } 28 | } 29 | 30 | darkenBgObject.SetActive(false); 31 | } 32 | 33 | public void DarkenBG() { 34 | darkenBgObject.SetActive(true); 35 | darkenBgObject.transform.SetAsLastSibling(); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowParaLayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a90c3299e98eab34bb731538858f57e7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowPriority.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework { 2 | /// 3 | /// Enum to define behaviour of Windows 4 | /// upon opening, in the history and queue 5 | /// 6 | public enum WindowPriority { 7 | ForceForeground = 0, 8 | Enqueue = 1, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowPriority.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fba6c1846acd2f24e87bf68bca5e7af3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowProperties.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace deVoid.UIFramework { 4 | /// 5 | /// Properties common to all windows 6 | /// 7 | [System.Serializable] 8 | public class WindowProperties : IWindowProperties { 9 | [SerializeField] 10 | protected bool hideOnForegroundLost = true; 11 | 12 | [SerializeField] 13 | protected WindowPriority windowQueuePriority = WindowPriority.ForceForeground; 14 | 15 | [SerializeField] 16 | protected bool isPopup = false; 17 | 18 | public WindowProperties() { 19 | hideOnForegroundLost = true; 20 | windowQueuePriority = WindowPriority.ForceForeground; 21 | isPopup = false; 22 | } 23 | 24 | /// 25 | /// How should this window behave in case another window 26 | /// is already opened? 27 | /// 28 | /// Force Foreground opens it immediately, Enqueue queues it so that it's opened as soon as 29 | /// the current one is closed. 30 | public WindowPriority WindowQueuePriority { 31 | get { return windowQueuePriority; } 32 | set { windowQueuePriority = value; } 33 | } 34 | 35 | /// 36 | /// Should this window be hidden when other window takes its foreground? 37 | /// 38 | /// true if hide on foreground lost; otherwise, false. 39 | public bool HideOnForegroundLost { 40 | get { return hideOnForegroundLost; } 41 | set { hideOnForegroundLost = value; } 42 | } 43 | 44 | /// 45 | /// When properties are passed in the Open() call, should the ones 46 | /// configured in the viewPrefab be overwritten? 47 | /// 48 | /// true if suppress viewPrefab properties; otherwise, false. 49 | public bool SuppressPrefabProperties { get; set; } 50 | 51 | /// 52 | /// Popups are displayed with a black background behind them and 53 | /// in front of all other Windows 54 | /// 55 | /// true if this window is a popup; otherwise, false. 56 | public bool IsPopup { 57 | get { return isPopup; } 58 | set { isPopup = value; } 59 | } 60 | 61 | public WindowProperties(bool suppressPrefabProperties = false) { 62 | WindowQueuePriority = WindowPriority.ForceForeground; 63 | HideOnForegroundLost = false; 64 | SuppressPrefabProperties = suppressPrefabProperties; 65 | } 66 | 67 | public WindowProperties(WindowPriority priority, bool hideOnForegroundLost = false, bool suppressPrefabProperties = false) { 68 | WindowQueuePriority = priority; 69 | HideOnForegroundLost = hideOnForegroundLost; 70 | SuppressPrefabProperties = suppressPrefabProperties; 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowProperties.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f422d78763364ff4bb71d84ef242b8e6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFramework/Window/WindowUILayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e58584fae0250804580bdeaee2c0a479 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ac30472955ca3845862445fb795afc1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cfa2cf4eb76afa1409080e7ac225d39d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/3d.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/3d.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb78cfb5c22903d40b2ccea7b662ecff 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 8b554541f3e2cf24cb6bbea3816c4c48 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/3dExample_FancyAnimatedTransition.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c57e754a0613a714584cc84ba36b9850 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 7400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/StarParticle.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: StarParticle 11 | m_Shader: {fileID: 210, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _ALPHATEST_ON 13 | m_LightmapFlags: 0 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2450 17 | stringTagMap: 18 | RenderType: TransparentCutout 19 | disabledShaderPasses: 20 | - ALWAYS 21 | m_SavedProperties: 22 | serializedVersion: 3 23 | m_TexEnvs: 24 | - _BumpMap: 25 | m_Texture: {fileID: 0} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _DetailAlbedoMap: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _DetailMask: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _DetailNormalMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _EmissionMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _MainTex: 45 | m_Texture: {fileID: 2800000, guid: 744ca399348c4294f82e8bd827fa35d5, type: 3} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MetallicGlossMap: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _OcclusionMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _ParallaxMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | m_Floats: 61 | - _BlendOp: 0 62 | - _BumpScale: 1 63 | - _CameraFadingEnabled: 0 64 | - _CameraFarFadeDistance: 2 65 | - _CameraNearFadeDistance: 1 66 | - _Cull: 2 67 | - _Cutoff: 0.5 68 | - _DetailNormalMapScale: 1 69 | - _DistortionBlend: 0.5 70 | - _DistortionEnabled: 0 71 | - _DistortionStrength: 1 72 | - _DistortionStrengthScaled: 0 73 | - _DstBlend: 0 74 | - _EmissionEnabled: 0 75 | - _FlipbookMode: 0 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0.5 78 | - _GlossyReflections: 1 79 | - _LightingEnabled: 1 80 | - _Metallic: 0 81 | - _Mode: 1 82 | - _OcclusionStrength: 1 83 | - _Parallax: 0.02 84 | - _SmoothnessTextureChannel: 0 85 | - _SoftParticlesEnabled: 0 86 | - _SoftParticlesFarFadeDistance: 1 87 | - _SoftParticlesNearFadeDistance: 0 88 | - _SpecularHighlights: 1 89 | - _SrcBlend: 1 90 | - _UVSec: 0 91 | - _ZWrite: 1 92 | m_Colors: 93 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} 94 | - _Color: {r: 1, g: 1, b: 1, a: 1} 95 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 96 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 97 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/StarParticle.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf1b8bb369da6a44d8bd4265254615d0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/Trail.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Trail 11 | m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 0 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: 19 | - ALWAYS 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BumpMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _DetailAlbedoMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailMask: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailNormalMap: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _EmissionMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _MainTex: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MetallicGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _OcclusionMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _ParallaxMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | m_Floats: 60 | - _BlendOp: 0 61 | - _BumpScale: 1 62 | - _CameraFadingEnabled: 0 63 | - _CameraFarFadeDistance: 2 64 | - _CameraNearFadeDistance: 1 65 | - _ColorMode: 0 66 | - _Cull: 2 67 | - _Cutoff: 0.5 68 | - _DetailNormalMapScale: 1 69 | - _DistortionBlend: 0.5 70 | - _DistortionEnabled: 0 71 | - _DistortionStrength: 1 72 | - _DistortionStrengthScaled: 0 73 | - _DstBlend: 0 74 | - _EmissionEnabled: 0 75 | - _FlipbookMode: 0 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0.5 78 | - _GlossyReflections: 1 79 | - _LightingEnabled: 0 80 | - _Metallic: 0 81 | - _Mode: 0 82 | - _OcclusionStrength: 1 83 | - _Parallax: 0.02 84 | - _SmoothnessTextureChannel: 0 85 | - _SoftParticlesEnabled: 0 86 | - _SoftParticlesFarFadeDistance: 1 87 | - _SoftParticlesNearFadeDistance: 0 88 | - _SpecularHighlights: 1 89 | - _SrcBlend: 1 90 | - _UVSec: 0 91 | - _ZWrite: 1 92 | m_Colors: 93 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} 94 | - _Color: {r: 1, g: 1, b: 1, a: 1} 95 | - _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 96 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 97 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 98 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/Trail.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07392310de2491d4a902ee93d342ba79 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/eye.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/eye.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5bef3a0aed901a240aab4d0e45f717ba 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 2f9d25f3d5a5b5a48bf3f8e08372c650 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/home.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/home.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e0aafccc644fcc40a0ff98e641cf4ae 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 49d44c5eeceb5a64bb7ea199f20d3017 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/person.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/person.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6785b2af006c0554c8176dfb7ae21ee1 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 68ae5dfff367fea4e8500d88d630da42 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/smiley.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/smiley.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/smiley.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fe371a3d11c56d4b877ee4f70d9117e 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: c74010edffc2201438a733939139ffc6 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/star.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/star.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 744ca399348c4294f82e8bd827fa35d5 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: d6d2c02c396c94d49925642ff6eb7b8d 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yankooliveira/uiframework_examples/e8d9d72e580dad8825d208d7a4ed97a6c24af725/Assets/UIFrameworkExamples/Art/warning.png -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Art/warning.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c5ff6b53e8f2d649ba2a5487952cbca 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 9 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: 1 38 | wrapV: 1 39 | wrapW: 1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 1 53 | spriteTessellationDetail: -1 54 | textureType: 8 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | platformSettings: 61 | - serializedVersion: 2 62 | buildTarget: DefaultTexturePlatform 63 | maxTextureSize: 2048 64 | resizeAlgorithm: 0 65 | textureFormat: -1 66 | textureCompression: 1 67 | compressionQuality: 50 68 | crunchedCompression: 0 69 | allowsAlphaSplitting: 0 70 | overridden: 0 71 | androidETC2FallbackOverride: 0 72 | spriteSheet: 73 | serializedVersion: 2 74 | sprites: [] 75 | outline: [] 76 | physicsShape: [] 77 | bones: [] 78 | spriteID: 64e8d71f899619c499a18733810da47c 79 | vertices: [] 80 | indices: 81 | edges: [] 82 | weights: [] 83 | spritePackingTag: 84 | pSDRemoveMatte: 0 85 | pSDShowRemoveMatteOption: 0 86 | userData: 87 | assetBundleName: 88 | assetBundleVariant: 89 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/DefaultUISettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 414062f9d9180b24eb66136c31c0fe4c, type: 3} 13 | m_Name: DefaultUISettings 14 | m_EditorClassIdentifier: 15 | templateUIPrefab: {fileID: 358001020665244776, guid: 8ff5283766dd8614a8838c8489cb528c, 16 | type: 3} 17 | screensToRegister: 18 | - {fileID: 7617306793594988998, guid: 0a680a728e2bff444bd5b6b236aac4ee, type: 3} 19 | - {fileID: 3955197997429667027, guid: 45f336f4b18fc084db012ee283bb1be4, type: 3} 20 | - {fileID: 3354577186298565417, guid: 3a68b7318cee11343af713222804c704, type: 3} 21 | - {fileID: 3672568053856412771, guid: fb86aca5b5eaebe4bb3058576a1beadc, type: 3} 22 | - {fileID: 8890043933281423490, guid: e7d17039446a5ac41afee18e47ffc57f, type: 3} 23 | - {fileID: 2592118604778629170, guid: 88f2f76f2f0c8c640930f0bc9d5974c7, type: 3} 24 | - {fileID: 3354577186298565417, guid: 80be0c317fa558843b7df437ee48c2ae, type: 3} 25 | - {fileID: 3354577186298565417, guid: 98220a950995ef343bb8df2130378dda, type: 3} 26 | - {fileID: 2198531993298414313, guid: 5637ec63a9899c340abe04789b5fa363, type: 3} 27 | deactivateScreenGOs: 1 28 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/DefaultUISettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ec55674dad24fa459cb72abf8798b47 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 527c565c1edb482438c61bdde0ad91ae 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d904e81fb147194ca299c7a8c262276 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/CameraProjectionWindow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 98220a950995ef343bb8df2130378dda 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/ConfirmationPopup.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb86aca5b5eaebe4bb3058576a1beadc 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/HomeWindow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a68b7318cee11343af713222804c704 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/NavigationPanel.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45f336f4b18fc084db012ee283bb1be4 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/PlayerWindow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88f2f76f2f0c8c640930f0bc9d5974c7 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/PopupExampleWindow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7d17039446a5ac41afee18e47ffc57f 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/StartGameWindow.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a680a728e2bff444bd5b6b236aac4ee 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/ThreeDExample.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80be0c317fa558843b7df437ee48c2ae 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/Screens/ToastPanel.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5637ec63a9899c340abe04789b5fa363 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Prefabs/UIFrame.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ff5283766dd8614a8838c8489cb528c 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9b5aaa3eac56b0e40b1fa7c6b345dc46 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94d3c2c64a33df64e956e17c3c1be1d0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Editor/ScreenIdGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e199115da2f5bb049881978738afa5ee 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Extras.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8581e14894a270e4c9f4f1aa48ca0b8b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Extras/FakePlayerData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using deVoid.Utils; 4 | using UnityEngine; 5 | 6 | namespace deVoid.UIFramework.Examples 7 | { 8 | public class PlayerDataUpdatedSignal : ASignal> { } 9 | 10 | [Serializable] 11 | public class PlayerDataEntry 12 | { 13 | public string LevelName; 14 | [Range(0,3)] 15 | public int Stars; 16 | } 17 | 18 | [CreateAssetMenu(fileName = "PlayerData", menuName = "deVoid UI/Fake Player Data")] 19 | public class FakePlayerData : ScriptableObject 20 | { 21 | [SerializeField] 22 | private List levelProgress = null; 23 | 24 | public List LevelProgress { 25 | get { return levelProgress; } 26 | } 27 | 28 | /// 29 | /// This is called by the Unity Editor in MonoBehaviours and 30 | /// ScriptableObjects whenever a value is changed in the inspector. 31 | /// Here I'm using it to propagate the changes for the example, 32 | /// but in practice, you could implement the same kind of behaviour 33 | /// by having an observable variable passed into the screen via its 34 | /// properties, or other forms of data-binding data to the controller. 35 | /// 36 | private void OnValidate() { 37 | Signals.Get().Dispatch(levelProgress); 38 | } 39 | } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Extras/FakePlayerData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b11b6e8c98789024f8399c1d2ea4e995 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7ff28458e9fdd8842aeed2d0afaaaebc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/CameraProjectionWindowController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | [Serializable] 8 | public class CameraProjectionWindowProperties : WindowProperties 9 | { 10 | public readonly Camera WorldCamera; 11 | public readonly Transform TransformToFollow; 12 | 13 | public CameraProjectionWindowProperties(Camera worldCamera, Transform toFollow) { 14 | WorldCamera = worldCamera; 15 | TransformToFollow = toFollow; 16 | } 17 | } 18 | 19 | public class CameraProjectionWindowController : AWindowController 20 | { 21 | [SerializeField] 22 | private UIFollowComponent followTemplate = null; 23 | 24 | private List allElements = new List(); 25 | 26 | protected override void OnPropertiesSet() { 27 | CreateNewLabel(Properties.TransformToFollow,"Look at me!", null); 28 | } 29 | 30 | protected override void WhileHiding() { 31 | foreach (var element in allElements) { 32 | Destroy(element.gameObject); 33 | } 34 | allElements.Clear(); 35 | // This is the kind of thing you *COULD* do, but you usually wouldn't 36 | // want to - in theory this is UI code, so it shouldn't control external things. 37 | // This is an example of "with great power comes great responsibility": 38 | // the UI Framework enforces very few rules, but the rest is up to you. 39 | Properties.TransformToFollow.parent.gameObject.SetActive(false); 40 | } 41 | 42 | private void LateUpdate() { 43 | for (int i = 0; i < allElements.Count; i++) { 44 | allElements[i].UpdatePosition(Properties.WorldCamera); 45 | } 46 | } 47 | 48 | private void CreateNewLabel(Transform target, string label, Sprite icon) { 49 | var followComponent = Instantiate(followTemplate, followTemplate.transform.parent, false); 50 | followComponent.LabelDestroyed += OnLabelDestroyed; 51 | followComponent.gameObject.SetActive(true); 52 | followComponent.SetFollow(target); 53 | followComponent.SetText(label); 54 | 55 | if (icon != null) { 56 | followComponent.SetIcon(icon); 57 | } 58 | 59 | allElements.Add(followComponent); 60 | } 61 | 62 | private void OnLabelDestroyed(UIFollowComponent destroyedLabel) { 63 | allElements.Remove(destroyedLabel); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/CameraProjectionWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f62375b573ca1174b94825b05482e166 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/ConfirmationPopupController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using deVoid.Utils; 3 | using TMPro; 4 | using UnityEngine; 5 | using UnityEngine.UI; 6 | 7 | namespace deVoid.UIFramework.Examples 8 | { 9 | public class ShowConfirmationPopupSignal : ASignal { } 10 | 11 | [Serializable] 12 | public class ConfirmationPopupController: AWindowController 13 | { 14 | [SerializeField] public TextMeshProUGUI titleLabel; 15 | [SerializeField] public TextMeshProUGUI messageLabel; 16 | [SerializeField] public TextMeshProUGUI confirmButtonLabel; 17 | [SerializeField] public TextMeshProUGUI cancelButtonLabel; 18 | [SerializeField] public GameObject cancelButtonObject; 19 | protected override void OnPropertiesSet() { 20 | titleLabel.text = Properties.Title; 21 | messageLabel.text = Properties.Message; 22 | confirmButtonLabel.text = Properties.ConfirmButtonText; 23 | cancelButtonLabel.text = Properties.CancelButtonText; 24 | 25 | cancelButtonObject.SetActive(Properties.CancelAction != null); 26 | 27 | } 28 | 29 | public void UI_Confirm() { 30 | UI_Close(); 31 | if (Properties.ConfirmAction != null) { 32 | Properties.ConfirmAction(); 33 | } 34 | } 35 | 36 | public void UI_Cancel() { 37 | UI_Close(); 38 | if (Properties.CancelAction != null) { 39 | Properties.CancelAction(); 40 | } 41 | } 42 | } 43 | 44 | [Serializable] 45 | public class ConfirmationPopupProperties : WindowProperties 46 | { 47 | public readonly string Title; 48 | public readonly string Message; 49 | public readonly string ConfirmButtonText; 50 | public readonly string CancelButtonText; 51 | public readonly Action CancelAction; 52 | public readonly Action ConfirmAction; 53 | 54 | public ConfirmationPopupProperties(string title, string message, 55 | string confirmButtonText = "Confirm", Action confirmAction = null, 56 | string cancelButtonText = "Cancel", Action cancelAction = null) { 57 | Title = title; 58 | Message = message; 59 | ConfirmButtonText = confirmButtonText; 60 | CancelButtonText = cancelButtonText; 61 | CancelAction = cancelAction; 62 | ConfirmAction = confirmAction; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/ConfirmationPopupController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6913d1a1cc99c44f80bf003a9cf820e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/EmptyWindowController.cs: -------------------------------------------------------------------------------- 1 | namespace deVoid.UIFramework.Examples 2 | { 3 | /// 4 | /// You usually won't have empty windows, as you'll almost always have 5 | /// data to be passed onto them for set up. However, you may have multiple 6 | /// windows that use the same controller, you just need them to have different 7 | /// ids. More than one window in this demo is totally static and defined by 8 | /// its prefab, and they are all using this empty window. 9 | /// Even though it has no implementation, it still provides the functionality 10 | /// for animation/priority etc. 11 | /// 12 | public class EmptyWindowController : AWindowController { } 13 | } 14 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/EmptyWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfde723a98b24660a740ac83905f195e 3 | timeCreated: 1552851288 -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/NavigationPanelController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using deVoid.UIFramework; 4 | using deVoid.UIFramework.Examples; 5 | using deVoid.Utils; 6 | using UnityEngine; 7 | 8 | [Serializable] 9 | public class NavigationPanelEntry 10 | { 11 | [SerializeField] private Sprite sprite = null; 12 | [SerializeField] private string buttonText = ""; 13 | [SerializeField] private string targetScreen = ""; 14 | 15 | public Sprite Sprite { 16 | get { return sprite; } 17 | } 18 | 19 | public string ButtonText { 20 | get { return buttonText; } 21 | } 22 | 23 | public string TargetScreen { 24 | get { return targetScreen; } 25 | } 26 | } 27 | 28 | public class NavigateToWindowSignal : ASignal { } 29 | public class NavigationPanelController : APanelController 30 | { 31 | [SerializeField] 32 | private List navigationTargets = new List(); 33 | [SerializeField] 34 | private NavigationPanelButton templateButton = null; 35 | 36 | private readonly List currentButtons = new List(); 37 | 38 | // I usually always place AddListeners and RemoveListeners together 39 | // to reduce the chances of adding a listener and not removing it. 40 | protected override void AddListeners() { 41 | Signals.Get().AddListener(OnExternalNavigation); 42 | } 43 | 44 | protected override void RemoveListeners() { 45 | Signals.Get().RemoveListener(OnExternalNavigation); 46 | } 47 | 48 | /// 49 | /// This is called whenever this screen is opened 50 | /// be it for the first time or coming from the history/queue 51 | /// 52 | protected override void OnPropertiesSet() { 53 | ClearEntries(); 54 | foreach (var target in navigationTargets) { 55 | var newBtn = Instantiate(templateButton); 56 | // When using UI, never forget to pass the parameter 57 | // worldPositionStays as FALSE, otherwise your RectTransform 58 | // won't layout properly after reparenting. 59 | // This is the cause for the most common head-scratching issues 60 | // when starting to deal with Unity UI: adding objects via the editor 61 | // working fine but objects instanced via code having broken sizes/positions 62 | newBtn.transform.SetParent(templateButton.transform.parent, false); 63 | newBtn.SetData(target); 64 | newBtn.gameObject.SetActive(true); 65 | newBtn.ButtonClicked += OnNavigationButtonClicked; 66 | currentButtons.Add(newBtn); 67 | } 68 | 69 | // The first button is selected by default 70 | OnNavigationButtonClicked(currentButtons[0]); 71 | } 72 | 73 | private void OnNavigationButtonClicked(NavigationPanelButton currentlyClickedButton) { 74 | Signals.Get().Dispatch(currentlyClickedButton.Target); 75 | foreach (var button in currentButtons) { 76 | button.SetCurrentNavigationTarget(currentlyClickedButton); 77 | } 78 | } 79 | 80 | private void OnExternalNavigation(string screenId) { 81 | foreach (var button in currentButtons) { 82 | button.SetCurrentNavigationTarget(screenId); 83 | } 84 | } 85 | 86 | private void ClearEntries() { 87 | foreach (var button in currentButtons) { 88 | button.ButtonClicked -= OnNavigationButtonClicked; 89 | Destroy(button.gameObject); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/NavigationPanelController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 800b00f1adb3ccb42bb2cfee5cf1af23 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/PlayerWindowController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using deVoid.Utils; 4 | using UnityEngine; 5 | 6 | namespace deVoid.UIFramework.Examples 7 | { 8 | /// 9 | /// This is the Properties class for this specific window. 10 | /// It carries the payload which will be used to fill up this 11 | /// window upon opening. 12 | /// 13 | [Serializable] 14 | public class PlayerWindowProperties : WindowProperties 15 | { 16 | public readonly List PlayerData; 17 | 18 | public PlayerWindowProperties(List data) { 19 | PlayerData = data; 20 | } 21 | } 22 | 23 | public class PlayerWindowController : AWindowController 24 | { 25 | [SerializeField] 26 | private LevelProgressComponent templateLevelEntry = null; 27 | 28 | private List currentLevels = new List(); 29 | 30 | /// 31 | /// Here I'm listening to a global signal that is fired by the ScriptableObject 32 | /// itself as a way of exemplifying how you could do this in your codebase. 33 | /// I could optionally carry the ScriptableObject itself, store a reference to it 34 | /// and do the same process via direct event hooks. 35 | /// 36 | protected override void AddListeners() { 37 | Signals.Get().AddListener(OnDataUpdated); 38 | } 39 | 40 | protected override void RemoveListeners() { 41 | Signals.Get().RemoveListener(OnDataUpdated); 42 | } 43 | 44 | protected override void OnPropertiesSet() { 45 | OnDataUpdated(Properties.PlayerData); 46 | } 47 | 48 | private void OnDataUpdated(List data) { 49 | VerifyElementCount(data.Count); 50 | RefreshElementData(data); 51 | } 52 | 53 | private void VerifyElementCount(int levelCount) { 54 | if (currentLevels.Count == levelCount) { 55 | return; 56 | } 57 | 58 | if (currentLevels.Count < levelCount) { 59 | while (currentLevels.Count < levelCount) { 60 | var newLevel = Instantiate(templateLevelEntry, 61 | templateLevelEntry.transform.parent, 62 | false); // Never forget to pass worldPositionStays as false for UI! 63 | newLevel.gameObject.SetActive(true); 64 | currentLevels.Add(newLevel); 65 | } 66 | } 67 | else { 68 | while (currentLevels.Count > levelCount) { 69 | var levelToRemove = currentLevels[currentLevels.Count - 1]; 70 | currentLevels.Remove(levelToRemove); 71 | Destroy(levelToRemove.gameObject); 72 | } 73 | } 74 | } 75 | 76 | private void RefreshElementData(List playerLevelProgress) { 77 | for (int i = 0; i < currentLevels.Count; i++) { 78 | currentLevels[i].SetData(playerLevelProgress[i], i); 79 | } 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/PlayerWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7340a46b47324d80b4367278fc02a3b1 3 | timeCreated: 1552944131 -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/PopupExampleWindowController.cs: -------------------------------------------------------------------------------- 1 | using deVoid.Utils; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | public class PopupExampleWindowController : AWindowController 8 | { 9 | [SerializeField] 10 | private Image exampleImage = null; 11 | 12 | private int currentPopupExample; 13 | private Color originalColor; 14 | 15 | /// 16 | /// You can use all of Unity's regular functions, as Screens 17 | /// are all MonoBehaviours, but don't forget that many of them 18 | /// have important operations being called in their base methods 19 | /// 20 | protected override void Awake() { 21 | base.Awake(); 22 | originalColor = exampleImage.color; 23 | } 24 | 25 | public void UI_ShowPopup() { 26 | Signals.Get().Dispatch(GetPopupData()); 27 | } 28 | 29 | private ConfirmationPopupProperties GetPopupData() { 30 | ConfirmationPopupProperties testProps = null; 31 | 32 | switch (currentPopupExample) { 33 | case 0: 34 | testProps = new ConfirmationPopupProperties("Uh-oh!", 35 | "You were curious and clicked the button! Try a few more times.", 36 | "Got it!"); 37 | break; 38 | case 1: 39 | testProps = new ConfirmationPopupProperties("Question:", 40 | "What is your favourite color?", 41 | "Blue", OnBlueSelected, 42 | "Red", OnRedSelected); 43 | break; 44 | case 2: 45 | testProps = new ConfirmationPopupProperties("Pretty cool huh?", 46 | "Let's return our buddy to its original color.", 47 | "Fine.", OnRevertColors); 48 | break; 49 | case 3: 50 | testProps = new ConfirmationPopupProperties("YOU DIED", 51 | "The Dark Souls of Pop-Ups", "Respawn"); 52 | break; 53 | } 54 | 55 | currentPopupExample++; 56 | if (currentPopupExample > 3) { 57 | currentPopupExample = 0; 58 | } 59 | 60 | return testProps; 61 | } 62 | 63 | private void OnRevertColors() { 64 | exampleImage.color = originalColor; 65 | } 66 | 67 | private void OnRedSelected() { 68 | exampleImage.color = Color.red; 69 | } 70 | 71 | private void OnBlueSelected() { 72 | exampleImage.color = Color.blue; 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/PopupExampleWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bdb359b15cef456c87b9d85d0d8a9239 3 | timeCreated: 1552866528 -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/StartWindowController.cs: -------------------------------------------------------------------------------- 1 | using deVoid.Utils; 2 | 3 | namespace deVoid.UIFramework.Examples 4 | { 5 | public class StartDemoSignal : ASignal { } 6 | 7 | public class StartWindowController : AWindowController 8 | { 9 | public void UI_Start() { 10 | Signals.Get().Dispatch(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/StartWindowController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18cc5984687341548acdac6ef7ea7e6b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/ToastPanelController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using deVoid.Utils; 4 | using DG.Tweening; 5 | using UnityEngine; 6 | 7 | namespace deVoid.UIFramework.Examples 8 | { 9 | /// 10 | /// Yes, this panel is there, all the time, just waiting for its moment to shine 11 | /// 12 | public class ToastPanelController : APanelController 13 | { 14 | [SerializeField] private RectTransform toastRect = null; 15 | [SerializeField] private float toastDuration = 0.5f; 16 | [SerializeField] private float toastPause = 2f; 17 | [SerializeField] private Ease toastEase = Ease.Linear; 18 | 19 | private bool isToasting; 20 | 21 | /// 22 | /// We're making this respond to the same signal as the PlayerWindow does. 23 | /// This allows us to have the toast if it's present, but there's no issues if 24 | /// it's not present for any reason. 25 | /// 26 | protected override void AddListeners() { 27 | Signals.Get().AddListener(OnDataUpdated); 28 | } 29 | 30 | protected override void RemoveListeners() { 31 | Signals.Get().RemoveListener(OnDataUpdated); 32 | } 33 | 34 | private void OnDataUpdated(List data) { 35 | if (isToasting) { 36 | return; 37 | } 38 | 39 | // HACK: more info below 40 | StartCoroutine(YieldForDOTween()); 41 | } 42 | 43 | /// 44 | /// TIL: DOTween uses AddComponent internally, which means 45 | /// it can't be called OnValidate. 46 | /// Since I've used that to avoid having a custom inspector 47 | /// just for the FakePlayerData, I'll allow myself this 48 | /// hack, otherwise I'll be stuck writing custom inspectors 49 | /// instead of writing documentation :D 50 | /// It just emits a harmless warning and wouldn't happen 51 | /// in a real-life situation as OnValidate is only called 52 | /// in the Editor. 53 | /// 54 | private IEnumerator YieldForDOTween() { 55 | yield return null; 56 | 57 | isToasting = true; 58 | Sequence seq = DOTween.Sequence(); 59 | seq.Append(toastRect.DOAnchorPosY(0f, toastDuration).SetEase(toastEase)); 60 | seq.AppendInterval(toastPause); 61 | seq.Append(toastRect.DOAnchorPosY(toastRect.rect.height, toastDuration).SetEase(toastEase)); 62 | seq.OnComplete(() => isToasting = false); 63 | 64 | seq.Play(); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenControllers/ToastPanelController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f8605f786ebb9fa438c790fd56239290 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenIds.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Mono Runtime Version: 2.0.50727.1433 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | // ------------------------------------------------------------------------------ 10 | 11 | namespace deVoid.UIFramework.Examples { 12 | 13 | 14 | public sealed class ScreenIds { 15 | 16 | public const string CameraProjectionWindow = "CameraProjectionWindow"; 17 | 18 | public const string ConfirmationPopup = "ConfirmationPopup"; 19 | 20 | public const string HomeWindow = "HomeWindow"; 21 | 22 | public const string NavigationPanel = "NavigationPanel"; 23 | 24 | public const string PlayerWindow = "PlayerWindow"; 25 | 26 | public const string PopupExampleWindow = "PopupExampleWindow"; 27 | 28 | public const string StartGameWindow = "StartGameWindow"; 29 | 30 | public const string ThreeDExample = "ThreeDExample"; 31 | 32 | public const string ToastPanel = "ToastPanel"; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenIds.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 141738f766781504a879b1eed120a1ff 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenTransitions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa502d0ef331d52469b273533283b66c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenTransitions/ScaleScreenTransition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using DG.Tweening; 3 | using UnityEngine; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | public class ScaleScreenTransition : ATransitionComponent 8 | { 9 | [SerializeField] protected bool isOutAnimation; 10 | [SerializeField] protected float duration = 0.5f; 11 | [SerializeField] protected bool doFade; 12 | [SerializeField] protected float fadeDurationPercent = 0.5f; 13 | [SerializeField] protected Ease ease = Ease.Linear; 14 | [SerializeField] [Range(0f, 1f)] 15 | protected float xYSplit = 0.25f; 16 | 17 | public override void Animate(Transform target, Action callWhenFinished) { 18 | RectTransform rTransform = target as RectTransform; 19 | CanvasGroup canvasGroup = null; 20 | if (doFade) { 21 | canvasGroup = rTransform.GetComponent(); 22 | if (canvasGroup == null) { 23 | canvasGroup = rTransform.gameObject.AddComponent(); 24 | } 25 | 26 | canvasGroup.DOFade(isOutAnimation ? 0f : 1f, duration * fadeDurationPercent); 27 | } 28 | 29 | rTransform.DOKill(); 30 | if (isOutAnimation) { 31 | rTransform.DOScale(0f, duration).SetEase(ease) 32 | .OnComplete(() => Cleanup(callWhenFinished, rTransform, canvasGroup)) 33 | .SetUpdate(true); 34 | } 35 | else { 36 | Sequence scaleSequence = DOTween.Sequence(); 37 | scaleSequence.SetUpdate(true); 38 | rTransform.localScale = new Vector3(0f, 0.02f, 0f); 39 | 40 | var xScale = rTransform.DOScaleX(1f, duration * xYSplit).SetEase(ease); 41 | var yScale = rTransform.DOScaleY(1f, duration * 1f - xYSplit).SetEase(ease); 42 | scaleSequence.Append(xScale).Append(yScale).OnComplete( 43 | () => Cleanup(callWhenFinished, rTransform, canvasGroup) 44 | ).SetUpdate(true); 45 | 46 | scaleSequence.Play(); 47 | } 48 | } 49 | 50 | private void Cleanup(Action callWhenFinished, RectTransform rTransform, CanvasGroup canvasGroup) { 51 | callWhenFinished(); 52 | rTransform.localScale = Vector3.one; 53 | if (canvasGroup != null) { 54 | canvasGroup.alpha = 1f; 55 | } 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenTransitions/ScaleScreenTransition.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fba1e145d32ecc1418c1b103ff6a7b8b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenTransitions/SlideScreenTransition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using DG.Tweening; 3 | using UnityEngine; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | public class SlideScreenTransition : ATransitionComponent 8 | { 9 | public enum Position 10 | { 11 | None = 0, 12 | Left = 1, 13 | Right = 2, 14 | Top = 3, 15 | Bottom = 4, 16 | } 17 | 18 | [SerializeField] protected Position origin = Position.Left; 19 | [SerializeField] protected bool isOutAnimation; 20 | [SerializeField] protected float duration = 0.5f; 21 | [SerializeField] protected bool doFade; 22 | [SerializeField] protected float fadeDurationPercent = 0.5f; 23 | [SerializeField] protected Ease ease = Ease.Linear; 24 | 25 | public Position Origin { 26 | get { return origin; } 27 | set { origin = value; } 28 | } 29 | 30 | public override void Animate(Transform target, Action callWhenFinished) { 31 | RectTransform rTransform = target as RectTransform; 32 | var origAnchoredPos = rTransform.anchoredPosition; 33 | Vector3 startPosition = Vector3.zero; 34 | 35 | switch (origin) { 36 | case Position.Left: 37 | startPosition = new Vector3(-rTransform.rect.width, 0.0f, 0.0f); 38 | break; 39 | case Position.Right: 40 | startPosition = new Vector3(rTransform.rect.width, 0.0f, 0.0f); 41 | break; 42 | case Position.Top: 43 | startPosition = new Vector3(0.0f, rTransform.rect.height, 0.0f); 44 | break; 45 | case Position.Bottom: 46 | startPosition = new Vector3(0.0f, -rTransform.rect.height, 0.0f); 47 | break; 48 | } 49 | 50 | rTransform.anchoredPosition = isOutAnimation ? Vector3.zero : startPosition; 51 | 52 | rTransform.DOKill(); 53 | 54 | CanvasGroup canvasGroup = null; 55 | if (doFade) { 56 | canvasGroup = rTransform.GetComponent(); 57 | if (canvasGroup == null) { 58 | canvasGroup = rTransform.gameObject.AddComponent(); 59 | } 60 | 61 | canvasGroup.DOFade(isOutAnimation ? 0f : 1f, duration * fadeDurationPercent); 62 | } 63 | 64 | rTransform.DOAnchorPos(isOutAnimation ? startPosition : Vector3.zero, duration, true) 65 | .SetEase(ease).OnComplete( 66 | () => { 67 | callWhenFinished(); 68 | rTransform.anchoredPosition = origAnchoredPos; 69 | if (canvasGroup != null) { 70 | canvasGroup.alpha = 1f; 71 | } 72 | }).SetUpdate(true); 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/ScreenTransitions/SlideScreenTransition.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f0ffd164e4450f439d7c219e6c88ce7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/UIDemoController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using deVoid.Utils; 4 | using UnityEngine; 5 | 6 | namespace deVoid.UIFramework.Examples 7 | { 8 | public class UIDemoController : MonoBehaviour 9 | { 10 | [SerializeField] private UISettings defaultUISettings = null; 11 | [SerializeField] private FakePlayerData fakePlayerData = null; 12 | [SerializeField] private Camera cam = null; 13 | [SerializeField] private Transform transformToFollow = null; 14 | 15 | private UIFrame uiFrame; 16 | 17 | private void Awake() { 18 | uiFrame = defaultUISettings.CreateUIInstance(); 19 | Signals.Get().AddListener(OnStartDemo); 20 | Signals.Get().AddListener(OnNavigateToWindow); 21 | Signals.Get().AddListener(OnShowConfirmationPopup); 22 | } 23 | 24 | private void OnDestroy() { 25 | Signals.Get().RemoveListener(OnStartDemo); 26 | Signals.Get().RemoveListener(OnNavigateToWindow); 27 | Signals.Get().RemoveListener(OnShowConfirmationPopup); 28 | } 29 | 30 | private void Start() { 31 | uiFrame.OpenWindow(ScreenIds.StartGameWindow); 32 | } 33 | 34 | private void OnStartDemo() { 35 | // The navigation panel will automatically navigate 36 | // to the first screen upon opening 37 | uiFrame.ShowPanel(ScreenIds.NavigationPanel); 38 | uiFrame.ShowPanel(ScreenIds.ToastPanel); 39 | } 40 | 41 | private void OnNavigateToWindow(string windowId) { 42 | // You usually don't have to do this as the system takes care of everything 43 | // automatically, but since we're dealing with navigation and the Window layer 44 | // has a history stack, this way we can make sure we're not just adding 45 | // entries to the stack indefinitely 46 | uiFrame.CloseCurrentWindow(); 47 | 48 | switch (windowId) { 49 | case ScreenIds.PlayerWindow: 50 | uiFrame.OpenWindow(windowId, new PlayerWindowProperties(fakePlayerData.LevelProgress)); 51 | break; 52 | case ScreenIds.CameraProjectionWindow: 53 | transformToFollow.parent.gameObject.SetActive(true); 54 | uiFrame.OpenWindow(windowId, new CameraProjectionWindowProperties(cam, transformToFollow)); 55 | break; 56 | default: 57 | uiFrame.OpenWindow(windowId); 58 | break; 59 | } 60 | } 61 | 62 | private void OnShowConfirmationPopup(ConfirmationPopupProperties popupPayload) { 63 | uiFrame.OpenWindow(ScreenIds.ConfirmationPopup, popupPayload); 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/UIDemoController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ea977a77c0032e458147f6d2e676e01 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9b743a1e258bf14ea6bd2629919e4e8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets/AutoMove.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | public class AutoMove : MonoBehaviour 8 | { 9 | [SerializeField] private Vector2 minMaxPosition = Vector2.zero; 10 | [SerializeField] private float speed = 0f; 11 | [SerializeField] private Vector2 minMaxPositionY = Vector2.zero; 12 | [SerializeField] private float speedY = 0f; 13 | [SerializeField] private Vector3 rotationSpeed = Vector3.zero; 14 | 15 | private void Update() { 16 | transform.Rotate(rotationSpeed * Time.deltaTime, Space.Self); 17 | float x = Mathf.Lerp(minMaxPosition.x, minMaxPosition.y, (Mathf.Sin(Time.time*speed)+1)/2f); 18 | float y = Mathf.Lerp(minMaxPositionY.x, minMaxPositionY.y, (Mathf.Sin(Time.time*speedY)+1)/2f); 19 | transform.localPosition = new Vector3(x, y, transform.position.z); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets/AutoMove.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 190344ed5d8d33b42951e2311f8aad96 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets/LevelProgressComponent.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | 5 | namespace deVoid.UIFramework.Examples 6 | { 7 | public class LevelProgressComponent : MonoBehaviour 8 | { 9 | [SerializeField] private TextMeshProUGUI levelCounter = null; 10 | [SerializeField] private TextMeshProUGUI levelName = null; 11 | [SerializeField] private Image[] stars = null; 12 | [SerializeField] private Color starOn = Color.yellow; 13 | [SerializeField] private Color starOff = Color.black; 14 | 15 | public void SetData(PlayerDataEntry entry, int levelNumber) { 16 | levelCounter.text = "Level " + (levelNumber + 1); 17 | levelName.text = entry.LevelName; 18 | for (int i = 0; i < stars.Length; i++) { 19 | if (i + 1 <= entry.Stars) { 20 | stars[i].color = starOn; 21 | } 22 | else { 23 | stars[i].color = starOff; 24 | } 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets/LevelProgressComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3c8348a523d4f90a0152195738c1913 3 | timeCreated: 1553028290 -------------------------------------------------------------------------------- /Assets/UIFrameworkExamples/Scripts/Widgets/NavigationPanelButton.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using TMPro; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | namespace deVoid.UIFramework.Examples 7 | { 8 | [RequireComponent(typeof(Button))] 9 | public class NavigationPanelButton : MonoBehaviour 10 | { 11 | [SerializeField] 12 | private TextMeshProUGUI buttonLabel = null; 13 | [SerializeField] 14 | private Image icon = null; 15 | 16 | public event Action ButtonClicked; 17 | 18 | private NavigationPanelEntry navigationData = null; 19 | private Button _button = null; 20 | private Button button { 21 | get { 22 | if (_button == null) { 23 | _button = GetComponent