├── .gitignore ├── Assets ├── Game.meta ├── Game │ ├── Scripts.meta │ ├── Scripts │ │ ├── SlowlyRotate.cs │ │ ├── SlowlyRotate.cs.meta │ │ ├── Systems.meta │ │ ├── Systems │ │ │ ├── ControlSystem.cs │ │ │ └── ControlSystem.cs.meta │ │ ├── TwoPmLogoViewController.cs │ │ ├── TwoPmLogoViewController.cs.meta │ │ ├── UI.meta │ │ ├── UI │ │ │ ├── PointerViewController.cs │ │ │ ├── PointerViewController.cs.meta │ │ │ ├── ReactToPointer.cs │ │ │ ├── ReactToPointer.cs.meta │ │ │ ├── TextPanelViewController.cs │ │ │ ├── TextPanelViewController.cs.meta │ │ │ ├── Tooltip.cs │ │ │ └── Tooltip.cs.meta │ │ ├── View.cs │ │ └── View.cs.meta │ ├── Sprites.meta │ ├── Sprites │ │ ├── FooterLogo@2x.png │ │ ├── FooterLogo@2x.png.meta │ │ ├── pointers.meta │ │ └── pointers │ │ │ ├── pointer.png │ │ │ ├── pointer.png.meta │ │ │ ├── pointer_locked.png │ │ │ └── pointer_locked.png.meta │ ├── TooltipDemo.unity │ ├── TooltipDemo.unity.meta │ ├── UI.meta │ └── UI │ │ ├── Fonts.meta │ │ ├── Fonts │ │ ├── Dosis.meta │ │ └── Dosis │ │ │ ├── Dosis-Bold.otf │ │ │ ├── Dosis-Bold.otf.meta │ │ │ ├── Dosis-ExtraBold.otf │ │ │ ├── Dosis-ExtraBold.otf.meta │ │ │ ├── Dosis-ExtraLight.otf │ │ │ ├── Dosis-ExtraLight.otf.meta │ │ │ ├── Dosis-Light.otf │ │ │ ├── Dosis-Light.otf.meta │ │ │ ├── Dosis-Medium.otf │ │ │ ├── Dosis-Medium.otf.meta │ │ │ ├── Dosis-Regular.otf │ │ │ ├── Dosis-Regular.otf.meta │ │ │ ├── Dosis-SemiBold SDF.asset │ │ │ ├── Dosis-SemiBold SDF.asset.meta │ │ │ ├── Dosis-SemiBold.otf │ │ │ ├── Dosis-SemiBold.otf.meta │ │ │ ├── SIL Open Font License.txt │ │ │ └── SIL Open Font License.txt.meta │ │ ├── Pointer.prefab │ │ ├── Pointer.prefab.meta │ │ ├── TextPanel.prefab │ │ └── TextPanel.prefab.meta ├── Lib.meta ├── Lib │ ├── TextMesh Pro.meta │ └── TextMesh Pro │ │ ├── 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 ├── RenderPipeline.meta ├── RenderPipeline │ ├── ForwardRenderer.asset │ ├── ForwardRenderer.asset.meta │ ├── GameRenderer.asset │ └── GameRenderer.asset.meta ├── TMP StyleSheet.asset └── TMP StyleSheet.asset.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 └── XRSettings.asset ├── README.md └── tooltip-example.sln /.gitignore: -------------------------------------------------------------------------------- 1 | # =============== # 2 | # Unity generated # 3 | # =============== # 4 | [Tt]emp/ 5 | [Oo]bj/ 6 | [Bb]uild 7 | [Ll]ibrary/ 8 | sysinfo.txt 9 | *.stackdump 10 | 11 | 12 | # ============================================= # 13 | # Visual Studio / MonoDevelop / Rider generated # 14 | # ============================================= # 15 | [Ee]xported[Oo]bj/ 16 | .vs/ 17 | /*.userprefs 18 | /*.csproj 19 | /*.pidb 20 | /*.suo 21 | /*/*.sln* 22 | /*.user 23 | /*.unityproj 24 | /*.booproj 25 | /.idea*/ 26 | 27 | # ============ # 28 | # OS generated # 29 | # ============ # 30 | .DS_Store* 31 | ._* 32 | .Spotlight-V100 33 | .Trashes 34 | ehthumbs.db 35 | [Tt]humbs.db 36 | [Dd]esktop.ini 37 | *.user 38 | *.ncrunchproject 39 | /*/*.csproj 40 | .ionide 41 | builds 42 | node_modules 43 | GridBased.Lib/.idea 44 | GridBased.Lib/bin 45 | -------------------------------------------------------------------------------- /Assets/Game.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf07cdb65200943e4bcf81b4083b9d7e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c5b45d82938a419d818f3c66a32648b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/SlowlyRotate.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class SlowlyRotate : MonoBehaviour 6 | { 7 | public float Speed = 1; 8 | 9 | // Start is called before the first frame update 10 | void Start() 11 | { 12 | 13 | } 14 | 15 | // Update is called once per frame 16 | void Update() 17 | { 18 | var speed = Time.deltaTime * Speed; 19 | var rot = transform.eulerAngles; 20 | transform.eulerAngles = new Vector3(speed + rot.x, speed + rot.y, speed + rot.z); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/SlowlyRotate.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e01834037fc054496ab4356faee4d4af 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/Systems.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e0f9b9f7b5e7f471682b9739395d2b4a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/Systems/ControlSystem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEngine.EventSystems; 6 | using UnityEngine.UI; 7 | using UnityEngine.Assertions; 8 | using System.Linq; 9 | 10 | namespace TwoPm.TooltipDemo 11 | { 12 | public class ObjectPrimaryClicked 13 | { 14 | public GameObject Object { get; set; } 15 | } 16 | 17 | public delegate void PointerEvent(T data); 18 | public delegate void PointerAction(); 19 | 20 | public class ControlSystem : MonoBehaviour 21 | { 22 | public GraphicRaycaster Raycaster; 23 | public EventSystem EventSystem; 24 | private PointerEventData _pointerEventData; 25 | 26 | public Camera Camera; 27 | public PointerViewController Pointer; 28 | 29 | public List HoveredObjects { get; private set; } 30 | public GameObject PrimaryHoveredObject => HoveredObjects.FirstOrDefault(); 31 | public List HoveredUiObjects { get; private set; } 32 | public GameObject PrimaryHoveredUiObject => HoveredUiObjects.FirstOrDefault(); 33 | 34 | public List DebugList; 35 | 36 | public PointerEvent PointerTooltipUpdated; 37 | public PointerEvent PointerDisplayModeChanged; 38 | public PointerAction PointerDisplayModeReset; 39 | public PointerAction PrimaryMouseClicked; 40 | public PointerAction SecondaryMouseClicked; 41 | 42 | public PointerEvent ObjectPrimaryClicked; 43 | 44 | // Start is called before the first frame update 45 | void Start() { 46 | Assert.IsNotNull(Pointer); 47 | Assert.IsNotNull(Camera); 48 | Assert.IsNotNull(Raycaster); 49 | Assert.IsNotNull(EventSystem); 50 | 51 | HoveredObjects = new List(); 52 | HoveredUiObjects = new List(); 53 | 54 | PrimaryMouseClicked += () => { 55 | RaycastHit hit; 56 | Ray ray = Camera.main.ScreenPointToRay(Pointer.Position); 57 | 58 | if (Physics.Raycast(ray, out hit, 100)) { 59 | var objectHit = hit.transform; 60 | 61 | ObjectPrimaryClicked?.Invoke(new ObjectPrimaryClicked() 62 | { 63 | Object = objectHit.gameObject 64 | }); 65 | }; 66 | }; 67 | } 68 | 69 | public void OnPointerTooltipUpdated(string msg) { 70 | PointerTooltipUpdated?.Invoke(msg); 71 | } 72 | 73 | public void OnPointerDisplayModeChanged(PointerDisplayModeChanged e) { 74 | PointerDisplayModeChanged?.Invoke(e); 75 | } 76 | 77 | public void OnPointerDisplayModeReset() { 78 | PointerDisplayModeReset?.Invoke(); 79 | } 80 | 81 | void FixedUpdate() { 82 | HoveredObjects.Clear(); 83 | HoveredUiObjects.Clear(); 84 | 85 | // Scene objects 86 | 87 | RaycastHit hit; 88 | Ray ray = Camera.main.ScreenPointToRay(Pointer.Position); 89 | 90 | if (Physics.Raycast(ray, out hit, 100)) { 91 | HoveredObjects.Add(hit.transform.gameObject); 92 | }; 93 | 94 | // UI objects 95 | 96 | _pointerEventData = new PointerEventData(EventSystem) 97 | { 98 | position = Pointer.Position 99 | }; 100 | 101 | //Create a list of Raycast Results 102 | List results = new List(); 103 | 104 | //Raycast using the Graphics Raycaster and mouse click position 105 | Raycaster.Raycast(_pointerEventData, results); 106 | 107 | //For every result returned, output the name of the GameObject on the Canvas hit by the Ray 108 | foreach (UnityEngine.EventSystems.RaycastResult result in results) { 109 | HoveredUiObjects.Add(result.gameObject); 110 | } 111 | 112 | DebugList = HoveredUiObjects; 113 | } 114 | 115 | // Update is called once per frame 116 | void Update() { 117 | if (Input.GetMouseButtonUp(0)) { 118 | PrimaryMouseClicked?.Invoke(); 119 | } 120 | 121 | if (Input.GetMouseButtonUp(1)) { 122 | SecondaryMouseClicked?.Invoke(); 123 | } 124 | } 125 | } 126 | 127 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/Systems/ControlSystem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b21f023143d86477ea57bb44b54d3ee9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/TwoPmLogoViewController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using TwoPm.TooltipDemo; 4 | using UnityEngine; 5 | using UnityEngine.Assertions; 6 | 7 | public class TwoPmLogoViewController : MonoBehaviour 8 | { 9 | public ReactToPointer ReactToPointer; 10 | 11 | // Start is called before the first frame update 12 | void Start() 13 | { 14 | Assert.IsNotNull(ReactToPointer); 15 | 16 | ReactToPointer.OnPointerSelected += () => { 17 | Application.OpenURL("https://twopm.studio"); 18 | }; 19 | } 20 | 21 | // Update is called once per frame 22 | void Update() 23 | { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/TwoPmLogoViewController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f2bccbb9fb79404685797806132ce18 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9254a99e436d14970892d3ed073a9249 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/PointerViewController.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using UnityEngine.Assertions; 4 | 5 | namespace TwoPm.TooltipDemo 6 | { 7 | public enum PointerMode 8 | { 9 | Mouse, 10 | Controller 11 | } 12 | 13 | public enum PointerDisplayMode 14 | { 15 | Normal, 16 | Locked 17 | } 18 | 19 | public class PointerTooltipUpdated 20 | { 21 | public string Message { get; set; } 22 | } 23 | 24 | public class PointerDisplayModeChanged 25 | { 26 | public PointerDisplayMode Mode { get; set; } 27 | } 28 | 29 | public class PointerDisplayModeReset { } 30 | 31 | public class PointerViewController : MonoBehaviour 32 | { 33 | public PointerMode Mode; 34 | public ControlSystem Control; 35 | 36 | public PointerDisplayMode DisplayMode = PointerDisplayMode.Normal; 37 | public GameObject NormalPointerDisplay; 38 | public GameObject LockedPointerDisplay; 39 | public float PointerSpeed; 40 | public Vector3 Offset; 41 | public string TooltipMessage; 42 | public TMP_Text TooltipText; 43 | public GameObject TooltipDisplay; 44 | 45 | private Vector3 _pointerPosition; 46 | 47 | public Vector2 Position => _pointerPosition; 48 | private PointerDisplayModeChanged _defaultConfig = new PointerDisplayModeChanged() 49 | { 50 | Mode = PointerDisplayMode.Normal, 51 | }; 52 | 53 | // Start is called before the first frame update 54 | void Start() { 55 | Assert.IsNotNull(Control); 56 | Assert.IsNotNull(TooltipText); 57 | Assert.IsNotNull(TooltipDisplay); 58 | Assert.IsNotNull(NormalPointerDisplay); 59 | Assert.IsNotNull(LockedPointerDisplay); 60 | 61 | Control.PointerTooltipUpdated += (msg) => { 62 | TooltipMessage = msg; 63 | }; 64 | 65 | Control.PointerDisplayModeChanged += ChangeDisplayMode; 66 | Control.PointerDisplayModeReset += () => { 67 | ChangeDisplayMode(_defaultConfig); 68 | }; 69 | 70 | ChangeDisplayMode(_defaultConfig); 71 | } 72 | 73 | private void ChangeDisplayMode(PointerDisplayModeChanged change) { 74 | View.Hide(NormalPointerDisplay); 75 | View.Hide(LockedPointerDisplay); 76 | 77 | switch (change.Mode) { 78 | case PointerDisplayMode.Normal: 79 | View.Show(NormalPointerDisplay); 80 | break; 81 | case PointerDisplayMode.Locked: 82 | View.Show(LockedPointerDisplay); 83 | break; 84 | } 85 | } 86 | 87 | // Update is called once per frame 88 | void LateUpdate() { 89 | switch (Mode) { 90 | case PointerMode.Mouse: 91 | _pointerPosition = Input.mousePosition; 92 | Cursor.visible = false; 93 | break; 94 | case PointerMode.Controller: 95 | _pointerPosition += Time.deltaTime * PointerSpeed * new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0); 96 | Cursor.visible = true; 97 | break; 98 | } 99 | 100 | transform.position = _pointerPosition + Offset; // TODO: consider * _settings.Settings.UiScale here 101 | 102 | if (!string.IsNullOrEmpty(TooltipMessage)) { 103 | View.Show(TooltipDisplay); 104 | TooltipText.text = TooltipMessage; 105 | } 106 | else { 107 | View.Hide(TooltipDisplay); 108 | } 109 | } 110 | } 111 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/PointerViewController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e48599a10353403a8e377561dc313c9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/ReactToPointer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System; 5 | using UnityEngine.Assertions; 6 | 7 | namespace TwoPm.TooltipDemo 8 | { 9 | public delegate void PointerReactor(); 10 | 11 | public class ReactToPointer : MonoBehaviour 12 | { 13 | // public EventManager2 Events; 14 | public ControlSystem Control; 15 | public PointerReactor OnPointerEntered; 16 | public PointerReactor OnPointerExited; 17 | public PointerReactor OnPointerSelected; 18 | 19 | public string TooltipMessage; 20 | public bool Disabled = false; 21 | 22 | public bool _focused = false; 23 | public bool HasFocus => _focused; 24 | 25 | private float _hoverDelayTimer = 0; 26 | 27 | public float HoverDelay = 0; 28 | private bool _delayElapsed; 29 | private bool _focusTriggered = false; 30 | 31 | // Start is called before the first frame update 32 | void Start() { 33 | Assert.IsNotNull(Control); 34 | 35 | Control.PrimaryMouseClicked += () => { 36 | if (!_focused || !gameObject.activeInHierarchy) return; 37 | OnPointerSelected?.Invoke(); 38 | }; 39 | } 40 | 41 | void OnDisable() { 42 | OnPointerExited?.Invoke(); 43 | Control.OnPointerTooltipUpdated(""); 44 | } 45 | 46 | // Update is called once per frame 47 | void Update() { 48 | var focused = false; 49 | if (Control.PrimaryHoveredUiObject == null && Control.PrimaryHoveredObject == gameObject) { 50 | focused = true; 51 | } 52 | 53 | if (Control.HoveredUiObjects.Contains(gameObject)) { 54 | focused = true; 55 | } 56 | 57 | // Gained focus 58 | if (_delayElapsed && focused && !_focusTriggered) { 59 | _focusTriggered = true; 60 | OnPointerEntered?.Invoke(); 61 | 62 | if (!string.IsNullOrEmpty(TooltipMessage)) { 63 | Control.OnPointerTooltipUpdated(TooltipMessage); 64 | } 65 | 66 | if (Disabled) { 67 | Control.OnPointerDisplayModeChanged(new PointerDisplayModeChanged() { 68 | Mode = PointerDisplayMode.Locked 69 | }); 70 | } 71 | } 72 | 73 | 74 | // Lost focus 75 | if (_focused && !focused) { 76 | OnPointerExited?.Invoke(); 77 | 78 | if (!string.IsNullOrEmpty(TooltipMessage)) { 79 | Control.OnPointerTooltipUpdated(""); 80 | } 81 | 82 | Control.OnPointerDisplayModeReset(); 83 | } 84 | 85 | if (focused) { 86 | _hoverDelayTimer += Time.deltaTime; 87 | 88 | if (_hoverDelayTimer >= HoverDelay) { 89 | _delayElapsed = true; 90 | } 91 | } 92 | else { 93 | _hoverDelayTimer = 0; 94 | _delayElapsed = false; 95 | _focusTriggered = false; 96 | } 97 | 98 | _focused = focused; 99 | } 100 | } 101 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/ReactToPointer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 003a079c803e14eecb7ea9cf47c7b1ab 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/TextPanelViewController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using TMPro; 4 | using UnityEngine; 5 | using UnityEngine.Assertions; 6 | 7 | namespace TwoPm.TooltipDemo { 8 | public class TextPanelViewController : MonoBehaviour 9 | { 10 | public TMP_Text Text; 11 | public UnityEngine.UI.Image Image; 12 | 13 | public string Label 14 | { 15 | get 16 | { 17 | return Text.text; 18 | } 19 | 20 | set 21 | { 22 | Text.text = value; 23 | } 24 | } 25 | 26 | public float Padding = 10f; 27 | 28 | public bool Center = false; 29 | private Vector2 _initialPosition; 30 | private Vector2 _initialSize; 31 | 32 | 33 | // Start is called before the first frame update 34 | void Start() { 35 | Assert.IsNotNull(Text); 36 | Assert.IsNotNull(Image); 37 | 38 | _initialPosition = (transform as RectTransform).anchoredPosition; 39 | _initialSize = Image.rectTransform.sizeDelta - Vector2.right * Padding; 40 | } 41 | 42 | // Update is called once per frame 43 | void Update() { 44 | Image.rectTransform.sizeDelta = new Vector2(Text.renderedWidth + Padding, 30); 45 | 46 | if (Center) { 47 | var sizeDiff = Image.rectTransform.sizeDelta - _initialSize; 48 | (transform as RectTransform).anchoredPosition = _initialPosition - new Vector2(sizeDiff.x / 2f, 0); 49 | } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/TextPanelViewController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa23ce95fc7b04598a856762cee19cb5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/Tooltip.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace TwoPm.TooltipDemo 6 | { 7 | public class Tooltip : MonoBehaviour 8 | { 9 | public Vector2 Offset; 10 | public PointerViewController Pointer; 11 | 12 | // Start is called before the first frame update 13 | void Start() { 14 | 15 | } 16 | 17 | // Update is called once per frame 18 | void LateUpdate() { 19 | transform.position = Pointer.Position + Offset; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/UI/Tooltip.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aa24f14feef0b46a1aed64cb6f568c50 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Scripts/View.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace TwoPm.TooltipDemo 5 | { 6 | public static class View 7 | { 8 | public static void Hide(GameObject o) { 9 | if (o.activeSelf) { 10 | o.SetActive(false); 11 | } 12 | } 13 | 14 | public static void Hide(MonoBehaviour o) { 15 | Hide(o.gameObject); 16 | } 17 | 18 | public static void Show(GameObject o) { 19 | if (!o.activeSelf) { 20 | o.SetActive(true); 21 | } 22 | } 23 | 24 | public static void Show(MonoBehaviour o) { 25 | Show(o.gameObject); 26 | } 27 | 28 | public static void Destroy(MonoBehaviour o) { 29 | GameObject.Destroy(o.gameObject); 30 | } 31 | 32 | public static void ForEachChild(GameObject o, Action action) { 33 | for (var i = 0; i < o.transform.childCount; i++) { 34 | var child = o.transform.GetChild(i); 35 | action(i, child.gameObject); 36 | } 37 | } 38 | 39 | public static void ForEachChild(MonoBehaviour mb, Action action) { 40 | ForEachChild(mb.gameObject, action); 41 | } 42 | 43 | public static void ForEachChildComponent(GameObject o, Action action) { 44 | var components = o.gameObject.GetComponentsInChildren(); 45 | 46 | for (var i = 0; i < components.Length; i++) { 47 | action(i, components[i]); 48 | } 49 | } 50 | 51 | public static void ForEachChildComponent(MonoBehaviour mb, Action action) { 52 | ForEachChildComponent(mb.gameObject, action); 53 | } 54 | 55 | public static void ForEachChildComponent(GameObject o, Action action, bool includeInactive) { 56 | var components = o.gameObject.GetComponentsInChildren(includeInactive); 57 | 58 | for (var i = 0; i < components.Length; i++) { 59 | action(i, components[i]); 60 | } 61 | } 62 | 63 | public static void ForEachChildComponent(MonoBehaviour mb, Action action, bool includeInactive) { 64 | var o = mb.gameObject; 65 | ForEachChildComponent(o, action, includeInactive); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Assets/Game/Scripts/View.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d75cd9a3a2a247baa98f499ecb86c15 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Game/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bdcfe6206df8c4ff2abe4c4865a6d183 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Sprites/FooterLogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/Sprites/FooterLogo@2x.png -------------------------------------------------------------------------------- /Assets/Game/Sprites/FooterLogo@2x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6759f80756adf4072b5e8afe1cf89020 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 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 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | spriteSheet: 87 | serializedVersion: 2 88 | sprites: [] 89 | outline: [] 90 | physicsShape: [] 91 | bones: [] 92 | spriteID: 5e97eb03825dee720800000000000000 93 | internalID: 0 94 | vertices: [] 95 | indices: 96 | edges: [] 97 | weights: [] 98 | secondaryTextures: [] 99 | spritePackingTag: 100 | pSDRemoveMatte: 0 101 | pSDShowRemoveMatteOption: 0 102 | userData: 103 | assetBundleName: 104 | assetBundleVariant: 105 | -------------------------------------------------------------------------------- /Assets/Game/Sprites/pointers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 712375be49b644b228073a9402365758 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/Sprites/pointers/pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/Sprites/pointers/pointer.png -------------------------------------------------------------------------------- /Assets/Game/Sprites/pointers/pointer.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 705019399cdf44c5094de4ab3bdb9f72 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 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: 0 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: 50 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 | applyGammaDecoding: 1 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | spriteSheet: 87 | serializedVersion: 2 88 | sprites: [] 89 | outline: [] 90 | physicsShape: [] 91 | bones: [] 92 | spriteID: 5e97eb03825dee720800000000000000 93 | internalID: 0 94 | vertices: [] 95 | indices: 96 | edges: [] 97 | weights: [] 98 | secondaryTextures: [] 99 | spritePackingTag: 100 | pSDRemoveMatte: 0 101 | pSDShowRemoveMatteOption: 0 102 | userData: 103 | assetBundleName: 104 | assetBundleVariant: 105 | -------------------------------------------------------------------------------- /Assets/Game/Sprites/pointers/pointer_locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/Sprites/pointers/pointer_locked.png -------------------------------------------------------------------------------- /Assets/Game/Sprites/pointers/pointer_locked.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9e9b414c52ae4492a28bdf2ef5fd797 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 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: 0 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: 50 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 | applyGammaDecoding: 1 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | spriteSheet: 87 | serializedVersion: 2 88 | sprites: [] 89 | outline: [] 90 | physicsShape: [] 91 | bones: [] 92 | spriteID: 5e97eb03825dee720800000000000000 93 | internalID: 0 94 | vertices: [] 95 | indices: 96 | edges: [] 97 | weights: [] 98 | secondaryTextures: [] 99 | spritePackingTag: 100 | pSDRemoveMatte: 0 101 | pSDShowRemoveMatteOption: 0 102 | userData: 103 | assetBundleName: 104 | assetBundleVariant: 105 | -------------------------------------------------------------------------------- /Assets/Game/TooltipDemo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc9a46615fbe24694afca0fe4a6bcdfd 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Game/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 001e7641ab27a450f98fe5d5a2f78386 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab87277aaec934d92842611ba54c622a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51c14b3b7ee7b4b348e8faf45d5300d5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-Bold.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Bold.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e30f19b9e96eb4006bc6cbddd5bcf18f 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | - {fileID: 12800000, guid: e1edb1296063c4bddbd2043d7036d5f8, type: 3} 17 | customCharacters: 18 | fontRenderingMode: 0 19 | ascentCalculationMode: 1 20 | useLegacyBoundsCalculation: 0 21 | shouldRoundAdvanceValue: 1 22 | userData: 23 | assetBundleName: 24 | assetBundleVariant: 25 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-ExtraBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-ExtraBold.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-ExtraBold.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f83a91172efad400186c491fbe9f72c8 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | - {fileID: 12800000, guid: f36f35e6d3fb749df9fbcb27756aed99, type: 3} 17 | - {fileID: 12800000, guid: e1edb1296063c4bddbd2043d7036d5f8, type: 3} 18 | - {fileID: 12800000, guid: e30f19b9e96eb4006bc6cbddd5bcf18f, type: 3} 19 | - {fileID: 12800000, guid: 7567543eaa7194b7a88db35b6448c52b, type: 3} 20 | customCharacters: 21 | fontRenderingMode: 0 22 | ascentCalculationMode: 1 23 | useLegacyBoundsCalculation: 0 24 | shouldRoundAdvanceValue: 1 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-ExtraLight.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-ExtraLight.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ede10b1ae21644bfaa05f3468edf227 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | - {fileID: 12800000, guid: f36f35e6d3fb749df9fbcb27756aed99, type: 3} 17 | - {fileID: 12800000, guid: f83a91172efad400186c491fbe9f72c8, type: 3} 18 | - {fileID: 12800000, guid: e1edb1296063c4bddbd2043d7036d5f8, type: 3} 19 | - {fileID: 12800000, guid: e30f19b9e96eb4006bc6cbddd5bcf18f, type: 3} 20 | - {fileID: 12800000, guid: 7567543eaa7194b7a88db35b6448c52b, type: 3} 21 | customCharacters: 22 | fontRenderingMode: 0 23 | ascentCalculationMode: 1 24 | useLegacyBoundsCalculation: 0 25 | shouldRoundAdvanceValue: 1 26 | userData: 27 | assetBundleName: 28 | assetBundleVariant: 29 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-Light.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Light.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7567543eaa7194b7a88db35b6448c52b 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | - {fileID: 12800000, guid: f36f35e6d3fb749df9fbcb27756aed99, type: 3} 17 | - {fileID: 12800000, guid: e1edb1296063c4bddbd2043d7036d5f8, type: 3} 18 | - {fileID: 12800000, guid: e30f19b9e96eb4006bc6cbddd5bcf18f, type: 3} 19 | customCharacters: 20 | fontRenderingMode: 0 21 | ascentCalculationMode: 1 22 | useLegacyBoundsCalculation: 0 23 | shouldRoundAdvanceValue: 1 24 | userData: 25 | assetBundleName: 26 | assetBundleVariant: 27 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-Medium.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Medium.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e1edb1296063c4bddbd2043d7036d5f8 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | customCharacters: 17 | fontRenderingMode: 0 18 | ascentCalculationMode: 1 19 | useLegacyBoundsCalculation: 0 20 | shouldRoundAdvanceValue: 1 21 | userData: 22 | assetBundleName: 23 | assetBundleVariant: 24 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-Regular.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-Regular.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f36f35e6d3fb749df9fbcb27756aed99 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: 15 | - {fileID: 12800000, guid: 90b73f03186494ccc8881230edd927af, type: 3} 16 | - {fileID: 12800000, guid: e1edb1296063c4bddbd2043d7036d5f8, type: 3} 17 | - {fileID: 12800000, guid: e30f19b9e96eb4006bc6cbddd5bcf18f, type: 3} 18 | customCharacters: 19 | fontRenderingMode: 0 20 | ascentCalculationMode: 1 21 | useLegacyBoundsCalculation: 0 22 | shouldRoundAdvanceValue: 1 23 | userData: 24 | assetBundleName: 25 | assetBundleVariant: 26 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-SemiBold SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 651f2780524684351996138daba92e8b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-SemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Game/UI/Fonts/Dosis/Dosis-SemiBold.otf -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/Dosis-SemiBold.otf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90b73f03186494ccc8881230edd927af 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontName: Dosis 12 | fontNames: 13 | - Dosis 14 | fallbackFontReferences: [] 15 | customCharacters: 16 | fontRenderingMode: 0 17 | ascentCalculationMode: 1 18 | useLegacyBoundsCalculation: 0 19 | shouldRoundAdvanceValue: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/SIL Open Font License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011, Edgar Tolentino and Pablo Impallari (www.impallari.com|impallari@gmail.com), 2 | Copyright (c) 2011, Igino Marini. (www.ikern.com|mail@iginomarini.com), 3 | with Reserved Font Names &amp;quot;Dosis&amp;quot;. 4 | 5 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 6 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. 14 | 15 | The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. 16 | 17 | DEFINITIONS 18 | "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. 19 | 20 | "Reserved Font Name" refers to any names specified as such after the copyright statement(s). 21 | 22 | "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). 23 | 24 | "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. 25 | 26 | "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. 27 | 28 | PERMISSION & CONDITIONS 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 30 | 31 | 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 32 | 33 | 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 34 | 35 | 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 36 | 37 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 38 | 39 | 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. 40 | 41 | TERMINATION 42 | This license becomes null and void if any of the above conditions are not met. 43 | 44 | DISCLAIMER 45 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. -------------------------------------------------------------------------------- /Assets/Game/UI/Fonts/Dosis/SIL Open Font License.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 749d45cffd62b41d6a5800f3a86aa7b2 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Game/UI/Pointer.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8230110977b7a49f1a5062e6c1690550 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Game/UI/TextPanel.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &5695602745354375734 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 5695602745354375737} 12 | - component: {fileID: 5695602745354375739} 13 | - component: {fileID: 5695602745354375736} 14 | m_Layer: 5 15 | m_Name: BG 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!224 &5695602745354375737 22 | RectTransform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 5695602745354375734} 28 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0, z: 0.000060202787} 30 | m_LocalScale: {x: 1, y: 1, z: 1} 31 | m_Children: [] 32 | m_Father: {fileID: 5695602746276052305} 33 | m_RootOrder: 0 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | m_AnchorMin: {x: 0, y: 0.5} 36 | m_AnchorMax: {x: 0, y: 0.5} 37 | m_AnchoredPosition: {x: 0.03515625, y: -14.980194} 38 | m_SizeDelta: {x: 123.96, y: 29.96} 39 | m_Pivot: {x: 0, y: 0} 40 | --- !u!222 &5695602745354375739 41 | CanvasRenderer: 42 | m_ObjectHideFlags: 0 43 | m_CorrespondingSourceObject: {fileID: 0} 44 | m_PrefabInstance: {fileID: 0} 45 | m_PrefabAsset: {fileID: 0} 46 | m_GameObject: {fileID: 5695602745354375734} 47 | m_CullTransparentMesh: 0 48 | --- !u!114 &5695602745354375736 49 | MonoBehaviour: 50 | m_ObjectHideFlags: 0 51 | m_CorrespondingSourceObject: {fileID: 0} 52 | m_PrefabInstance: {fileID: 0} 53 | m_PrefabAsset: {fileID: 0} 54 | m_GameObject: {fileID: 5695602745354375734} 55 | m_Enabled: 1 56 | m_EditorHideFlags: 0 57 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 58 | m_Name: 59 | m_EditorClassIdentifier: 60 | m_Material: {fileID: 0} 61 | m_Color: {r: 0.23584908, g: 0.23584908, b: 0.23584908, a: 1} 62 | m_RaycastTarget: 1 63 | m_OnCullStateChanged: 64 | m_PersistentCalls: 65 | m_Calls: [] 66 | m_Sprite: {fileID: 21300000, guid: 1864c3a34a00e444296e054365b07244, type: 3} 67 | m_Type: 1 68 | m_PreserveAspect: 0 69 | m_FillCenter: 1 70 | m_FillMethod: 4 71 | m_FillAmount: 1 72 | m_FillClockwise: 1 73 | m_FillOrigin: 0 74 | m_UseSpriteMesh: 0 75 | m_PixelsPerUnitMultiplier: 1 76 | --- !u!1 &5695602746276052398 77 | GameObject: 78 | m_ObjectHideFlags: 0 79 | m_CorrespondingSourceObject: {fileID: 0} 80 | m_PrefabInstance: {fileID: 0} 81 | m_PrefabAsset: {fileID: 0} 82 | serializedVersion: 6 83 | m_Component: 84 | - component: {fileID: 5695602746276052305} 85 | - component: {fileID: 5695602746276052304} 86 | m_Layer: 5 87 | m_Name: BgText 88 | m_TagString: Untagged 89 | m_Icon: {fileID: 0} 90 | m_NavMeshLayer: 0 91 | m_StaticEditorFlags: 0 92 | m_IsActive: 1 93 | --- !u!224 &5695602746276052305 94 | RectTransform: 95 | m_ObjectHideFlags: 0 96 | m_CorrespondingSourceObject: {fileID: 0} 97 | m_PrefabInstance: {fileID: 0} 98 | m_PrefabAsset: {fileID: 0} 99 | m_GameObject: {fileID: 5695602746276052398} 100 | m_LocalRotation: {x: -0, y: 0.000000029802315, z: 0.000000014901158, w: 1} 101 | m_LocalPosition: {x: 0, y: 0, z: 0} 102 | m_LocalScale: {x: 1, y: 1, z: 1} 103 | m_Children: 104 | - {fileID: 5695602745354375737} 105 | - {fileID: 5695602746578500046} 106 | m_Father: {fileID: 0} 107 | m_RootOrder: 0 108 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 109 | m_AnchorMin: {x: 0.5, y: 0.5} 110 | m_AnchorMax: {x: 0.5, y: 0.5} 111 | m_AnchoredPosition: {x: 439.91, y: -335.71} 112 | m_SizeDelta: {x: 40, y: 31.41} 113 | m_Pivot: {x: 0.5, y: 0.5} 114 | --- !u!114 &5695602746276052304 115 | MonoBehaviour: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 5695602746276052398} 121 | m_Enabled: 1 122 | m_EditorHideFlags: 0 123 | m_Script: {fileID: 11500000, guid: aa23ce95fc7b04598a856762cee19cb5, type: 3} 124 | m_Name: 125 | m_EditorClassIdentifier: 126 | Text: {fileID: 5695602746578500081} 127 | Image: {fileID: 5695602745354375736} 128 | Padding: 12 129 | Center: 0 130 | --- !u!1 &5695602746578500047 131 | GameObject: 132 | m_ObjectHideFlags: 0 133 | m_CorrespondingSourceObject: {fileID: 0} 134 | m_PrefabInstance: {fileID: 0} 135 | m_PrefabAsset: {fileID: 0} 136 | serializedVersion: 6 137 | m_Component: 138 | - component: {fileID: 5695602746578500046} 139 | - component: {fileID: 5695602746578500080} 140 | - component: {fileID: 5695602746578500081} 141 | m_Layer: 5 142 | m_Name: Text 143 | m_TagString: Untagged 144 | m_Icon: {fileID: 0} 145 | m_NavMeshLayer: 0 146 | m_StaticEditorFlags: 0 147 | m_IsActive: 1 148 | --- !u!224 &5695602746578500046 149 | RectTransform: 150 | m_ObjectHideFlags: 0 151 | m_CorrespondingSourceObject: {fileID: 0} 152 | m_PrefabInstance: {fileID: 0} 153 | m_PrefabAsset: {fileID: 0} 154 | m_GameObject: {fileID: 5695602746578500047} 155 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 156 | m_LocalPosition: {x: 0, y: 0, z: -0} 157 | m_LocalScale: {x: 1, y: 1, z: 1} 158 | m_Children: [] 159 | m_Father: {fileID: 5695602746276052305} 160 | m_RootOrder: 1 161 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 162 | m_AnchorMin: {x: 0, y: 0.5} 163 | m_AnchorMax: {x: 1, y: 0.5} 164 | m_AnchoredPosition: {x: -4.7, y: 0} 165 | m_SizeDelta: {x: -20.45, y: 29.96} 166 | m_Pivot: {x: 0.5, y: 0.5} 167 | --- !u!222 &5695602746578500080 168 | CanvasRenderer: 169 | m_ObjectHideFlags: 0 170 | m_CorrespondingSourceObject: {fileID: 0} 171 | m_PrefabInstance: {fileID: 0} 172 | m_PrefabAsset: {fileID: 0} 173 | m_GameObject: {fileID: 5695602746578500047} 174 | m_CullTransparentMesh: 0 175 | --- !u!114 &5695602746578500081 176 | MonoBehaviour: 177 | m_ObjectHideFlags: 0 178 | m_CorrespondingSourceObject: {fileID: 0} 179 | m_PrefabInstance: {fileID: 0} 180 | m_PrefabAsset: {fileID: 0} 181 | m_GameObject: {fileID: 5695602746578500047} 182 | m_Enabled: 1 183 | m_EditorHideFlags: 0 184 | m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} 185 | m_Name: 186 | m_EditorClassIdentifier: 187 | m_Material: {fileID: 0} 188 | m_Color: {r: 1, g: 1, b: 1, a: 1} 189 | m_RaycastTarget: 1 190 | m_OnCullStateChanged: 191 | m_PersistentCalls: 192 | m_Calls: [] 193 | m_text: Conflicted 194 | m_isRightToLeft: 0 195 | m_fontAsset: {fileID: 11400000, guid: 651f2780524684351996138daba92e8b, type: 2} 196 | m_sharedMaterial: {fileID: -9146114846802978183, guid: 651f2780524684351996138daba92e8b, 197 | type: 2} 198 | m_fontSharedMaterials: [] 199 | m_fontMaterial: {fileID: 0} 200 | m_fontMaterials: [] 201 | m_fontColor32: 202 | serializedVersion: 2 203 | rgba: 4278190080 204 | m_fontColor: {r: 0, g: 0, b: 0, a: 1} 205 | m_enableVertexGradient: 0 206 | m_colorMode: 3 207 | m_fontColorGradient: 208 | topLeft: {r: 1, g: 1, b: 1, a: 1} 209 | topRight: {r: 1, g: 1, b: 1, a: 1} 210 | bottomLeft: {r: 1, g: 1, b: 1, a: 1} 211 | bottomRight: {r: 1, g: 1, b: 1, a: 1} 212 | m_fontColorGradientPreset: {fileID: 0} 213 | m_spriteAsset: {fileID: 0} 214 | m_tintAllSprites: 0 215 | m_overrideHtmlColors: 0 216 | m_faceColor: 217 | serializedVersion: 2 218 | rgba: 4294967295 219 | m_outlineColor: 220 | serializedVersion: 2 221 | rgba: 4278190080 222 | m_fontSize: 20 223 | m_fontSizeBase: 20 224 | m_fontWeight: 400 225 | m_enableAutoSizing: 0 226 | m_fontSizeMin: 18 227 | m_fontSizeMax: 72 228 | m_fontStyle: 0 229 | m_textAlignment: 513 230 | m_characterSpacing: 0 231 | m_wordSpacing: 0 232 | m_lineSpacing: 0 233 | m_lineSpacingMax: 0 234 | m_paragraphSpacing: 0 235 | m_charWidthMaxAdj: 0 236 | m_enableWordWrapping: 0 237 | m_wordWrappingRatios: 0.4 238 | m_overflowMode: 0 239 | m_firstOverflowCharacterIndex: -1 240 | m_linkedTextComponent: {fileID: 0} 241 | m_isLinkedTextComponent: 0 242 | m_isTextTruncated: 0 243 | m_enableKerning: 1 244 | m_enableExtraPadding: 1 245 | checkPaddingRequired: 0 246 | m_isRichText: 1 247 | m_parseCtrlCharacters: 1 248 | m_isOrthographic: 1 249 | m_isCullingEnabled: 0 250 | m_ignoreRectMaskCulling: 0 251 | m_ignoreCulling: 1 252 | m_horizontalMapping: 0 253 | m_verticalMapping: 0 254 | m_uvLineOffset: 0 255 | m_geometrySortingOrder: 0 256 | m_VertexBufferAutoSizeReduction: 1 257 | m_firstVisibleCharacter: 0 258 | m_useMaxVisibleDescender: 1 259 | m_pageToDisplay: 1 260 | m_margin: {x: 0, y: 0, z: -101.62637, w: 0} 261 | m_textInfo: 262 | textComponent: {fileID: 5695602746578500081} 263 | characterCount: 10 264 | spriteCount: 0 265 | spaceCount: 0 266 | wordCount: 1 267 | linkCount: 0 268 | lineCount: 1 269 | pageCount: 1 270 | materialCount: 1 271 | m_isUsingLegacyAnimationComponent: 0 272 | m_isVolumetricText: 0 273 | m_spriteAnimator: {fileID: 0} 274 | m_hasFontAssetChanged: 0 275 | m_subTextObjects: 276 | - {fileID: 0} 277 | - {fileID: 0} 278 | - {fileID: 0} 279 | - {fileID: 0} 280 | - {fileID: 0} 281 | - {fileID: 0} 282 | - {fileID: 0} 283 | - {fileID: 0} 284 | m_baseMaterial: {fileID: 0} 285 | m_maskOffset: {x: 0, y: 0, z: 0, w: 0} 286 | -------------------------------------------------------------------------------- /Assets/Game/UI/TextPanel.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aadbb60774f3746899f3a602d0416ea1 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Lib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86dcd8bf2c84743ceba9c65c28807bc0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Lib/TextMesh Pro.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f54d1bd14bd3ca042bd867b519fee8cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: LiberationSans SDF - Outline 11 | m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} 12 | m_ShaderKeywords: ETC1_EXTERNAL_ALPHA OUTLINE_ON 13 | m_LightmapFlags: 5 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 3000 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _Cube: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _FaceTex: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _MainTex: 35 | m_Texture: {fileID: 2846298, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _OutlineTex: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | m_Floats: 43 | - _Ambient: 0.5 44 | - _Bevel: 0.5 45 | - _BevelClamp: 0 46 | - _BevelOffset: 0 47 | - _BevelRoundness: 0 48 | - _BevelWidth: 0 49 | - _BumpFace: 0 50 | - _BumpOutline: 0 51 | - _ColorMask: 15 52 | - _Diffuse: 0.5 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 86 | - _UnderlayOffsetY: 0 87 | - _UnderlaySoftness: 0 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 | - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} 95 | - _FaceColor: {r: 1, g: 1, b: 1, a: 1} 96 | - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} 97 | - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} 98 | - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} 99 | - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} 100 | - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} 101 | - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} 102 | - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} 103 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/TextMesh Pro/Resources/LineBreaking Following Characters.txt: -------------------------------------------------------------------------------- 1 | )]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,. -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Resources/LineBreaking Leading Characters.txt: -------------------------------------------------------------------------------- 1 | ([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇〉》」$⦆¥₩ # -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF Overlay.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Distance Field Overlay" { 2 | 3 | Properties { 4 | _FaceTex ("Face Texture", 2D) = "white" {} 5 | _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 6 | _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 7 | _FaceColor ("Face Color", Color) = (1,1,1,1) 8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 9 | 10 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 11 | _OutlineTex ("Outline Texture", 2D) = "white" {} 12 | _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 13 | _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 14 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 15 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 16 | 17 | _Bevel ("Bevel", Range(0,1)) = 0.5 18 | _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 19 | _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 20 | _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 21 | _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 22 | 23 | _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 24 | _SpecularColor ("Specular", Color) = (1,1,1,1) 25 | _SpecularPower ("Specular", Range(0,4)) = 2.0 26 | _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 27 | _Diffuse ("Diffuse", Range(0,1)) = 0.5 28 | _Ambient ("Ambient", Range(1,0)) = 0.5 29 | 30 | _BumpMap ("Normal map", 2D) = "bump" {} 31 | _BumpOutline ("Bump Outline", Range(0,1)) = 0 32 | _BumpFace ("Bump Face", Range(0,1)) = 0 33 | 34 | _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) 35 | _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) 36 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } 37 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) 38 | 39 | 40 | _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) 41 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 42 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 43 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 44 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 45 | 46 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5) 47 | _GlowOffset ("Offset", Range(-1,1)) = 0 48 | _GlowInner ("Inner", Range(0,1)) = 0.05 49 | _GlowOuter ("Outer", Range(0,1)) = 0.05 50 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 51 | 52 | _WeightNormal ("Weight Normal", float) = 0 53 | _WeightBold ("Weight Bold", float) = 0.5 54 | 55 | _ShaderFlags ("Flags", float) = 0 56 | _ScaleRatioA ("Scale RatioA", float) = 1 57 | _ScaleRatioB ("Scale RatioB", float) = 1 58 | _ScaleRatioC ("Scale RatioC", float) = 1 59 | 60 | _MainTex ("Font Atlas", 2D) = "white" {} 61 | _TextureWidth ("Texture Width", float) = 512 62 | _TextureHeight ("Texture Height", float) = 512 63 | _GradientScale ("Gradient Scale", float) = 5.0 64 | _ScaleX ("Scale X", float) = 1.0 65 | _ScaleY ("Scale Y", float) = 1.0 66 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 67 | 68 | _VertexOffsetX ("Vertex OffsetX", float) = 0 69 | _VertexOffsetY ("Vertex OffsetY", float) = 0 70 | 71 | _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) 72 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 73 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 74 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 75 | 76 | _StencilComp ("Stencil Comparison", Float) = 8 77 | _Stencil ("Stencil ID", Float) = 0 78 | _StencilOp ("Stencil Operation", Float) = 0 79 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 80 | _StencilReadMask ("Stencil Read Mask", Float) = 255 81 | 82 | _ColorMask ("Color Mask", Float) = 15 83 | } 84 | 85 | SubShader { 86 | 87 | Tags 88 | { 89 | "Queue"="Overlay" 90 | "IgnoreProjector"="True" 91 | "RenderType"="Transparent" 92 | } 93 | 94 | Stencil 95 | { 96 | Ref [_Stencil] 97 | Comp [_StencilComp] 98 | Pass [_StencilOp] 99 | ReadMask [_StencilReadMask] 100 | WriteMask [_StencilWriteMask] 101 | } 102 | 103 | Cull [_CullMode] 104 | ZWrite Off 105 | Lighting Off 106 | Fog { Mode Off } 107 | ZTest Always 108 | Blend One OneMinusSrcAlpha 109 | ColorMask [_ColorMask] 110 | 111 | Pass { 112 | CGPROGRAM 113 | #pragma target 3.0 114 | #pragma vertex VertShader 115 | #pragma fragment PixShader 116 | #pragma shader_feature __ BEVEL_ON 117 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 118 | #pragma shader_feature __ GLOW_ON 119 | 120 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 121 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 122 | 123 | 124 | #include "UnityCG.cginc" 125 | #include "UnityUI.cginc" 126 | #include "TMPro_Properties.cginc" 127 | #include "TMPro.cginc" 128 | 129 | struct vertex_t { 130 | float4 position : POSITION; 131 | float3 normal : NORMAL; 132 | fixed4 color : COLOR; 133 | float2 texcoord0 : TEXCOORD0; 134 | float2 texcoord1 : TEXCOORD1; 135 | }; 136 | 137 | 138 | struct pixel_t { 139 | float4 position : SV_POSITION; 140 | fixed4 color : COLOR; 141 | float2 atlas : TEXCOORD0; // Atlas 142 | float4 param : TEXCOORD1; // alphaClip, scale, bias, weight 143 | float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) 144 | float3 viewDir : TEXCOORD3; 145 | 146 | #if (UNDERLAY_ON || UNDERLAY_INNER) 147 | float4 texcoord2 : TEXCOORD4; // u,v, scale, bias 148 | fixed4 underlayColor : COLOR1; 149 | #endif 150 | float4 textures : TEXCOORD5; 151 | }; 152 | 153 | // Used by Unity internally to handle Texture Tiling and Offset. 154 | float4 _FaceTex_ST; 155 | float4 _OutlineTex_ST; 156 | 157 | pixel_t VertShader(vertex_t input) 158 | { 159 | float bold = step(input.texcoord1.y, 0); 160 | 161 | float4 vert = input.position; 162 | vert.x += _VertexOffsetX; 163 | vert.y += _VertexOffsetY; 164 | float4 vPosition = UnityObjectToClipPos(vert); 165 | 166 | float2 pixelSize = vPosition.w; 167 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 168 | float scale = rsqrt(dot(pixelSize, pixelSize)); 169 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; 170 | if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 171 | 172 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 173 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 174 | 175 | float bias =(.5 - weight) + (.5 / scale); 176 | 177 | float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA); 178 | 179 | #if GLOW_ON 180 | alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); 181 | #endif 182 | 183 | alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; 184 | 185 | #if (UNDERLAY_ON || UNDERLAY_INNER) 186 | float4 underlayColor = _UnderlayColor; 187 | underlayColor.rgb *= underlayColor.a; 188 | 189 | float bScale = scale; 190 | bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); 191 | float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); 192 | 193 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 194 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 195 | float2 bOffset = float2(x, y); 196 | #endif 197 | 198 | // Generate UV for the Masking Texture 199 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 200 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 201 | 202 | // Support for texture tiling and offset 203 | float2 textureUV = UnpackUV(input.texcoord1.x); 204 | float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); 205 | float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); 206 | 207 | pixel_t output = { 208 | vPosition, 209 | input.color, 210 | input.texcoord0, 211 | float4(alphaClip, scale, bias, weight), 212 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 213 | mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz), 214 | #if (UNDERLAY_ON || UNDERLAY_INNER) 215 | float4(input.texcoord0 + bOffset, bScale, bBias), 216 | underlayColor, 217 | #endif 218 | float4(faceUV, outlineUV), 219 | }; 220 | 221 | return output; 222 | } 223 | 224 | 225 | fixed4 PixShader(pixel_t input) : SV_Target 226 | { 227 | float c = tex2D(_MainTex, input.atlas).a; 228 | 229 | #ifndef UNDERLAY_ON 230 | clip(c - input.param.x); 231 | #endif 232 | 233 | float scale = input.param.y; 234 | float bias = input.param.z; 235 | float weight = input.param.w; 236 | float sd = (bias - c) * scale; 237 | 238 | float outline = (_OutlineWidth * _ScaleRatioA) * scale; 239 | float softness = (_OutlineSoftness * _ScaleRatioA) * scale; 240 | 241 | half4 faceColor = _FaceColor; 242 | half4 outlineColor = _OutlineColor; 243 | 244 | faceColor.rgb *= input.color.rgb; 245 | 246 | faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); 247 | outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); 248 | 249 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); 250 | 251 | #if BEVEL_ON 252 | float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); 253 | float3 n = GetSurfaceNormal(input.atlas, weight, dxy); 254 | 255 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; 256 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); 257 | n = normalize(n- bump); 258 | 259 | float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); 260 | 261 | float3 col = GetSpecular(n, light); 262 | faceColor.rgb += col*faceColor.a; 263 | faceColor.rgb *= 1-(dot(n, light)*_Diffuse); 264 | faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); 265 | 266 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); 267 | faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; 268 | #endif 269 | 270 | #if UNDERLAY_ON 271 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; 272 | faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); 273 | #endif 274 | 275 | #if UNDERLAY_INNER 276 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; 277 | faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); 278 | #endif 279 | 280 | #if GLOW_ON 281 | float4 glowColor = GetGlowColor(sd, scale); 282 | faceColor.rgb += glowColor.rgb * glowColor.a; 283 | #endif 284 | 285 | // Alternative implementation to UnityGet2DClipping with support for softness. 286 | #if UNITY_UI_CLIP_RECT 287 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 288 | faceColor *= m.x * m.y; 289 | #endif 290 | 291 | #if UNITY_UI_ALPHACLIP 292 | clip(faceColor.a - 0.001); 293 | #endif 294 | 295 | return faceColor * input.color.a; 296 | } 297 | 298 | ENDCG 299 | } 300 | } 301 | 302 | Fallback "TextMeshPro/Mobile/Distance Field" 303 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 304 | } 305 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Masking.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field - Masking" { 7 | 8 | Properties { 9 | _FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | _UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | 38 | _VertexOffsetX ("Vertex OffsetX", float) = 0 39 | _VertexOffsetY ("Vertex OffsetY", float) = 0 40 | 41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 44 | _MaskTex ("Mask Texture", 2D) = "white" {} 45 | _MaskInverse ("Inverse", float) = 0 46 | _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) 47 | _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 48 | _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 49 | 50 | _StencilComp ("Stencil Comparison", Float) = 8 51 | _Stencil ("Stencil ID", Float) = 0 52 | _StencilOp ("Stencil Operation", Float) = 0 53 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 54 | _StencilReadMask ("Stencil Read Mask", Float) = 255 55 | 56 | _ColorMask ("Color Mask", Float) = 15 57 | } 58 | 59 | SubShader { 60 | Tags 61 | { 62 | "Queue"="Transparent" 63 | "IgnoreProjector"="True" 64 | "RenderType"="Transparent" 65 | } 66 | 67 | 68 | Stencil 69 | { 70 | Ref [_Stencil] 71 | Comp [_StencilComp] 72 | Pass [_StencilOp] 73 | ReadMask [_StencilReadMask] 74 | WriteMask [_StencilWriteMask] 75 | } 76 | 77 | Cull [_CullMode] 78 | ZWrite Off 79 | Lighting Off 80 | Fog { Mode Off } 81 | ZTest [unity_GUIZTestMode] 82 | Blend One OneMinusSrcAlpha 83 | ColorMask [_ColorMask] 84 | 85 | Pass { 86 | CGPROGRAM 87 | #pragma vertex VertShader 88 | #pragma fragment PixShader 89 | #pragma shader_feature __ OUTLINE_ON 90 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 91 | 92 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 93 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 94 | 95 | 96 | #include "UnityCG.cginc" 97 | #include "UnityUI.cginc" 98 | #include "TMPro_Properties.cginc" 99 | 100 | struct vertex_t { 101 | float4 vertex : POSITION; 102 | float3 normal : NORMAL; 103 | fixed4 color : COLOR; 104 | float2 texcoord0 : TEXCOORD0; 105 | float2 texcoord1 : TEXCOORD1; 106 | }; 107 | 108 | struct pixel_t { 109 | float4 vertex : SV_POSITION; 110 | fixed4 faceColor : COLOR; 111 | fixed4 outlineColor : COLOR1; 112 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 113 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 114 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 115 | #if (UNDERLAY_ON | UNDERLAY_INNER) 116 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 117 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 118 | #endif 119 | }; 120 | 121 | float _MaskWipeControl; 122 | float _MaskEdgeSoftness; 123 | fixed4 _MaskEdgeColor; 124 | bool _MaskInverse; 125 | 126 | pixel_t VertShader(vertex_t input) 127 | { 128 | float bold = step(input.texcoord1.y, 0); 129 | 130 | float4 vert = input.vertex; 131 | vert.x += _VertexOffsetX; 132 | vert.y += _VertexOffsetY; 133 | float4 vPosition = UnityObjectToClipPos(vert); 134 | 135 | float2 pixelSize = vPosition.w; 136 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 137 | 138 | float scale = rsqrt(dot(pixelSize, pixelSize)); 139 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; 140 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 141 | 142 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 143 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 144 | 145 | float layerScale = scale; 146 | 147 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 148 | float bias = (0.5 - weight) * scale - 0.5; 149 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 150 | 151 | float opacity = input.color.a; 152 | #if (UNDERLAY_ON | UNDERLAY_INNER) 153 | opacity = 1.0; 154 | #endif 155 | 156 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 157 | faceColor.rgb *= faceColor.a; 158 | 159 | fixed4 outlineColor = _OutlineColor; 160 | outlineColor.a *= opacity; 161 | outlineColor.rgb *= outlineColor.a; 162 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 163 | 164 | #if (UNDERLAY_ON | UNDERLAY_INNER) 165 | 166 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 167 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 168 | 169 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 170 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 171 | float2 layerOffset = float2(x, y); 172 | #endif 173 | 174 | // Generate UV for the Masking Texture 175 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 176 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 177 | 178 | // Structure for pixel shader 179 | pixel_t output = { 180 | vPosition, 181 | faceColor, 182 | outlineColor, 183 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), 184 | half4(scale, bias - outline, bias + outline, bias), 185 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 186 | #if (UNDERLAY_ON | UNDERLAY_INNER) 187 | float4(input.texcoord0 + layerOffset, input.color.a, 0), 188 | half2(layerScale, layerBias), 189 | #endif 190 | }; 191 | 192 | return output; 193 | } 194 | 195 | 196 | // PIXEL SHADER 197 | fixed4 PixShader(pixel_t input) : SV_Target 198 | { 199 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 200 | half4 c = input.faceColor * saturate(d - input.param.w); 201 | 202 | #ifdef OUTLINE_ON 203 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 204 | c *= saturate(d - input.param.y); 205 | #endif 206 | 207 | #if UNDERLAY_ON 208 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 209 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 210 | #endif 211 | 212 | #if UNDERLAY_INNER 213 | half sd = saturate(d - input.param.z); 214 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 215 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 216 | #endif 217 | 218 | // Alternative implementation to UnityGet2DClipping with support for softness. 219 | #if UNITY_UI_CLIP_RECT 220 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 221 | c *= m.x * m.y; 222 | #endif 223 | 224 | float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); 225 | float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; 226 | a = saturate(t / _MaskEdgeSoftness); 227 | c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a); 228 | c *= a; 229 | 230 | #if (UNDERLAY_ON | UNDERLAY_INNER) 231 | c *= input.texcoord1.z; 232 | #endif 233 | 234 | #if UNITY_UI_ALPHACLIP 235 | clip(c.a - 0.001); 236 | #endif 237 | 238 | return c; 239 | } 240 | ENDCG 241 | } 242 | } 243 | 244 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 245 | } 246 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile Overlay.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field Overlay" { 7 | 8 | Properties { 9 | _FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | _UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | 38 | _VertexOffsetX ("Vertex OffsetX", float) = 0 39 | _VertexOffsetY ("Vertex OffsetY", float) = 0 40 | 41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 44 | 45 | _StencilComp ("Stencil Comparison", Float) = 8 46 | _Stencil ("Stencil ID", Float) = 0 47 | _StencilOp ("Stencil Operation", Float) = 0 48 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 49 | _StencilReadMask ("Stencil Read Mask", Float) = 255 50 | 51 | _ColorMask ("Color Mask", Float) = 15 52 | } 53 | 54 | SubShader { 55 | Tags 56 | { 57 | "Queue"="Overlay" 58 | "IgnoreProjector"="True" 59 | "RenderType"="Transparent" 60 | } 61 | 62 | 63 | Stencil 64 | { 65 | Ref [_Stencil] 66 | Comp [_StencilComp] 67 | Pass [_StencilOp] 68 | ReadMask [_StencilReadMask] 69 | WriteMask [_StencilWriteMask] 70 | } 71 | 72 | Cull [_CullMode] 73 | ZWrite Off 74 | Lighting Off 75 | Fog { Mode Off } 76 | ZTest Always 77 | Blend One OneMinusSrcAlpha 78 | ColorMask [_ColorMask] 79 | 80 | Pass { 81 | CGPROGRAM 82 | #pragma vertex VertShader 83 | #pragma fragment PixShader 84 | #pragma shader_feature __ OUTLINE_ON 85 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 86 | 87 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 88 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 89 | 90 | #include "UnityCG.cginc" 91 | #include "UnityUI.cginc" 92 | #include "TMPro_Properties.cginc" 93 | 94 | struct vertex_t { 95 | float4 vertex : POSITION; 96 | float3 normal : NORMAL; 97 | fixed4 color : COLOR; 98 | float2 texcoord0 : TEXCOORD0; 99 | float2 texcoord1 : TEXCOORD1; 100 | }; 101 | 102 | struct pixel_t { 103 | float4 vertex : SV_POSITION; 104 | fixed4 faceColor : COLOR; 105 | fixed4 outlineColor : COLOR1; 106 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 107 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 108 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 109 | #if (UNDERLAY_ON | UNDERLAY_INNER) 110 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 111 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 112 | #endif 113 | }; 114 | 115 | 116 | pixel_t VertShader(vertex_t input) 117 | { 118 | float bold = step(input.texcoord1.y, 0); 119 | 120 | float4 vert = input.vertex; 121 | vert.x += _VertexOffsetX; 122 | vert.y += _VertexOffsetY; 123 | float4 vPosition = UnityObjectToClipPos(vert); 124 | 125 | float2 pixelSize = vPosition.w; 126 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 127 | 128 | float scale = rsqrt(dot(pixelSize, pixelSize)); 129 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; 130 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 131 | 132 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 133 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 134 | 135 | float layerScale = scale; 136 | 137 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 138 | float bias = (0.5 - weight) * scale - 0.5; 139 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 140 | 141 | float opacity = input.color.a; 142 | #if (UNDERLAY_ON | UNDERLAY_INNER) 143 | opacity = 1.0; 144 | #endif 145 | 146 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 147 | faceColor.rgb *= faceColor.a; 148 | 149 | fixed4 outlineColor = _OutlineColor; 150 | outlineColor.a *= opacity; 151 | outlineColor.rgb *= outlineColor.a; 152 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 153 | 154 | #if (UNDERLAY_ON | UNDERLAY_INNER) 155 | 156 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 157 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 158 | 159 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 160 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 161 | float2 layerOffset = float2(x, y); 162 | #endif 163 | 164 | // Generate UV for the Masking Texture 165 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 166 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 167 | 168 | // Structure for pixel shader 169 | pixel_t output = { 170 | vPosition, 171 | faceColor, 172 | outlineColor, 173 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), 174 | half4(scale, bias - outline, bias + outline, bias), 175 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 176 | #if (UNDERLAY_ON | UNDERLAY_INNER) 177 | float4(input.texcoord0 + layerOffset, input.color.a, 0), 178 | half2(layerScale, layerBias), 179 | #endif 180 | }; 181 | 182 | return output; 183 | } 184 | 185 | 186 | // PIXEL SHADER 187 | fixed4 PixShader(pixel_t input) : SV_Target 188 | { 189 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 190 | half4 c = input.faceColor * saturate(d - input.param.w); 191 | 192 | #ifdef OUTLINE_ON 193 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 194 | c *= saturate(d - input.param.y); 195 | #endif 196 | 197 | #if UNDERLAY_ON 198 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 199 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 200 | #endif 201 | 202 | #if UNDERLAY_INNER 203 | half sd = saturate(d - input.param.z); 204 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 205 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 206 | #endif 207 | 208 | // Alternative implementation to UnityGet2DClipping with support for softness. 209 | #if UNITY_UI_CLIP_RECT 210 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 211 | c *= m.x * m.y; 212 | #endif 213 | 214 | #if (UNDERLAY_ON | UNDERLAY_INNER) 215 | c *= input.texcoord1.z; 216 | #endif 217 | 218 | #if UNITY_UI_ALPHACLIP 219 | clip(c.a - 0.001); 220 | #endif 221 | 222 | return c; 223 | } 224 | ENDCG 225 | } 226 | } 227 | 228 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 229 | } 230 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF-Mobile.shader: -------------------------------------------------------------------------------- 1 | // Simplified SDF shader: 2 | // - No Shading Option (bevel / bump / env map) 3 | // - No Glow Option 4 | // - Softness is applied on both side of the outline 5 | 6 | Shader "TextMeshPro/Mobile/Distance Field" { 7 | 8 | Properties { 9 | _FaceColor ("Face Color", Color) = (1,1,1,1) 10 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 11 | 12 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 13 | _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 14 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 15 | 16 | _UnderlayColor ("Border Color", Color) = (0,0,0,.5) 17 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 18 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 19 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 20 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 21 | 22 | _WeightNormal ("Weight Normal", float) = 0 23 | _WeightBold ("Weight Bold", float) = .5 24 | 25 | _ShaderFlags ("Flags", float) = 0 26 | _ScaleRatioA ("Scale RatioA", float) = 1 27 | _ScaleRatioB ("Scale RatioB", float) = 1 28 | _ScaleRatioC ("Scale RatioC", float) = 1 29 | 30 | _MainTex ("Font Atlas", 2D) = "white" {} 31 | _TextureWidth ("Texture Width", float) = 512 32 | _TextureHeight ("Texture Height", float) = 512 33 | _GradientScale ("Gradient Scale", float) = 5 34 | _ScaleX ("Scale X", float) = 1 35 | _ScaleY ("Scale Y", float) = 1 36 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 37 | 38 | _VertexOffsetX ("Vertex OffsetX", float) = 0 39 | _VertexOffsetY ("Vertex OffsetY", float) = 0 40 | 41 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 42 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 43 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 44 | 45 | _StencilComp ("Stencil Comparison", Float) = 8 46 | _Stencil ("Stencil ID", Float) = 0 47 | _StencilOp ("Stencil Operation", Float) = 0 48 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 49 | _StencilReadMask ("Stencil Read Mask", Float) = 255 50 | 51 | _ColorMask ("Color Mask", Float) = 15 52 | } 53 | 54 | SubShader { 55 | Tags 56 | { 57 | "Queue"="Transparent" 58 | "IgnoreProjector"="True" 59 | "RenderType"="Transparent" 60 | } 61 | 62 | 63 | Stencil 64 | { 65 | Ref [_Stencil] 66 | Comp [_StencilComp] 67 | Pass [_StencilOp] 68 | ReadMask [_StencilReadMask] 69 | WriteMask [_StencilWriteMask] 70 | } 71 | 72 | Cull [_CullMode] 73 | ZWrite Off 74 | Lighting Off 75 | Fog { Mode Off } 76 | ZTest [unity_GUIZTestMode] 77 | Blend One OneMinusSrcAlpha 78 | ColorMask [_ColorMask] 79 | 80 | Pass { 81 | CGPROGRAM 82 | #pragma vertex VertShader 83 | #pragma fragment PixShader 84 | #pragma shader_feature __ OUTLINE_ON 85 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 86 | 87 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 88 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 89 | 90 | #include "UnityCG.cginc" 91 | #include "UnityUI.cginc" 92 | #include "TMPro_Properties.cginc" 93 | 94 | struct vertex_t { 95 | float4 vertex : POSITION; 96 | float3 normal : NORMAL; 97 | fixed4 color : COLOR; 98 | float2 texcoord0 : TEXCOORD0; 99 | float2 texcoord1 : TEXCOORD1; 100 | }; 101 | 102 | struct pixel_t { 103 | float4 vertex : SV_POSITION; 104 | fixed4 faceColor : COLOR; 105 | fixed4 outlineColor : COLOR1; 106 | float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV 107 | half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) 108 | half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) 109 | #if (UNDERLAY_ON | UNDERLAY_INNER) 110 | float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved 111 | half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) 112 | #endif 113 | }; 114 | 115 | 116 | pixel_t VertShader(vertex_t input) 117 | { 118 | float bold = step(input.texcoord1.y, 0); 119 | 120 | float4 vert = input.vertex; 121 | vert.x += _VertexOffsetX; 122 | vert.y += _VertexOffsetY; 123 | float4 vPosition = UnityObjectToClipPos(vert); 124 | 125 | float2 pixelSize = vPosition.w; 126 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 127 | 128 | float scale = rsqrt(dot(pixelSize, pixelSize)); 129 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; 130 | if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 131 | 132 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 133 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 134 | 135 | float layerScale = scale; 136 | 137 | scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); 138 | float bias = (0.5 - weight) * scale - 0.5; 139 | float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; 140 | 141 | float opacity = input.color.a; 142 | #if (UNDERLAY_ON | UNDERLAY_INNER) 143 | opacity = 1.0; 144 | #endif 145 | 146 | fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; 147 | faceColor.rgb *= faceColor.a; 148 | 149 | fixed4 outlineColor = _OutlineColor; 150 | outlineColor.a *= opacity; 151 | outlineColor.rgb *= outlineColor.a; 152 | outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); 153 | 154 | #if (UNDERLAY_ON | UNDERLAY_INNER) 155 | 156 | layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); 157 | float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); 158 | 159 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 160 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 161 | float2 layerOffset = float2(x, y); 162 | #endif 163 | 164 | // Generate UV for the Masking Texture 165 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 166 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 167 | 168 | // Structure for pixel shader 169 | pixel_t output = { 170 | vPosition, 171 | faceColor, 172 | outlineColor, 173 | float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), 174 | half4(scale, bias - outline, bias + outline, bias), 175 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 176 | #if (UNDERLAY_ON | UNDERLAY_INNER) 177 | float4(input.texcoord0 + layerOffset, input.color.a, 0), 178 | half2(layerScale, layerBias), 179 | #endif 180 | }; 181 | 182 | return output; 183 | } 184 | 185 | 186 | // PIXEL SHADER 187 | fixed4 PixShader(pixel_t input) : SV_Target 188 | { 189 | half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; 190 | half4 c = input.faceColor * saturate(d - input.param.w); 191 | 192 | #ifdef OUTLINE_ON 193 | c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); 194 | c *= saturate(d - input.param.y); 195 | #endif 196 | 197 | #if UNDERLAY_ON 198 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 199 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); 200 | #endif 201 | 202 | #if UNDERLAY_INNER 203 | half sd = saturate(d - input.param.z); 204 | d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; 205 | c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); 206 | #endif 207 | 208 | // Alternative implementation to UnityGet2DClipping with support for softness. 209 | #if UNITY_UI_CLIP_RECT 210 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 211 | c *= m.x * m.y; 212 | #endif 213 | 214 | #if (UNDERLAY_ON | UNDERLAY_INNER) 215 | c *= input.texcoord1.z; 216 | #endif 217 | 218 | #if UNITY_UI_ALPHACLIP 219 | clip(c.a - 0.001); 220 | #endif 221 | 222 | return c; 223 | } 224 | ENDCG 225 | } 226 | } 227 | 228 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 229 | } 230 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF-Surface.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Distance Field (Surface)" { 2 | 3 | Properties { 4 | _FaceTex ("Fill Texture", 2D) = "white" {} 5 | _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 6 | _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 7 | _FaceColor ("Fill Color", Color) = (1,1,1,1) 8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 9 | 10 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 11 | _OutlineTex ("Outline Texture", 2D) = "white" {} 12 | _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 13 | _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 14 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 15 | _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 16 | 17 | _Bevel ("Bevel", Range(0,1)) = 0.5 18 | _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 19 | _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 20 | _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 21 | _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 22 | 23 | _BumpMap ("Normalmap", 2D) = "bump" {} 24 | _BumpOutline ("Bump Outline", Range(0,1)) = 0.5 25 | _BumpFace ("Bump Face", Range(0,1)) = 0.5 26 | 27 | _ReflectFaceColor ("Face Color", Color) = (0,0,0,1) 28 | _ReflectOutlineColor ("Outline Color", Color) = (0,0,0,1) 29 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } 30 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) 31 | _SpecColor ("Specular Color", Color) = (0,0,0,1) 32 | 33 | _FaceShininess ("Face Shininess", Range(0,1)) = 0 34 | _OutlineShininess ("Outline Shininess", Range(0,1)) = 0 35 | 36 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5) 37 | _GlowOffset ("Offset", Range(-1,1)) = 0 38 | _GlowInner ("Inner", Range(0,1)) = 0.05 39 | _GlowOuter ("Outer", Range(0,1)) = 0.05 40 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 41 | 42 | _WeightNormal ("Weight Normal", float) = 0 43 | _WeightBold ("Weight Bold", float) = 0.5 44 | 45 | // Should not be directly exposed to the user 46 | _ShaderFlags ("Flags", float) = 0 47 | _ScaleRatioA ("Scale RatioA", float) = 1 48 | _ScaleRatioB ("Scale RatioB", float) = 1 49 | _ScaleRatioC ("Scale RatioC", float) = 1 50 | 51 | _MainTex ("Font Atlas", 2D) = "white" {} 52 | _TextureWidth ("Texture Width", float) = 512 53 | _TextureHeight ("Texture Height", float) = 512 54 | _GradientScale ("Gradient Scale", float) = 5.0 55 | _ScaleX ("Scale X", float) = 1.0 56 | _ScaleY ("Scale Y", float) = 1.0 57 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 58 | 59 | _VertexOffsetX ("Vertex OffsetX", float) = 0 60 | _VertexOffsetY ("Vertex OffsetY", float) = 0 61 | //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) 62 | //_MaskSoftness ("Mask Softness", float) = 0 63 | } 64 | 65 | SubShader { 66 | 67 | Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 68 | 69 | LOD 300 70 | Cull [_CullMode] 71 | 72 | CGPROGRAM 73 | #pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap 74 | #pragma target 3.0 75 | #pragma shader_feature __ GLOW_ON 76 | #pragma glsl 77 | 78 | #include "TMPro_Properties.cginc" 79 | #include "TMPro.cginc" 80 | 81 | half _FaceShininess; 82 | half _OutlineShininess; 83 | 84 | struct Input 85 | { 86 | fixed4 color : COLOR; 87 | float2 uv_MainTex; 88 | float2 uv2_FaceTex; 89 | float2 uv2_OutlineTex; 90 | float2 param; // Weight, Scale 91 | float3 viewDirEnv; 92 | }; 93 | 94 | 95 | #define BEVEL_ON 1 96 | #include "TMPro_Surface.cginc" 97 | 98 | ENDCG 99 | 100 | // Pass to render object as a shadow caster 101 | Pass 102 | { 103 | Name "Caster" 104 | Tags { "LightMode" = "ShadowCaster" } 105 | Offset 1, 1 106 | 107 | Fog {Mode Off} 108 | ZWrite On 109 | ZTest LEqual 110 | Cull Off 111 | 112 | CGPROGRAM 113 | #pragma vertex vert 114 | #pragma fragment frag 115 | #pragma multi_compile_shadowcaster 116 | #include "UnityCG.cginc" 117 | 118 | struct v2f { 119 | V2F_SHADOW_CASTER; 120 | float2 uv : TEXCOORD1; 121 | float2 uv2 : TEXCOORD3; 122 | float alphaClip : TEXCOORD2; 123 | }; 124 | 125 | uniform float4 _MainTex_ST; 126 | uniform float4 _OutlineTex_ST; 127 | float _OutlineWidth; 128 | float _FaceDilate; 129 | float _ScaleRatioA; 130 | 131 | v2f vert( appdata_base v ) 132 | { 133 | v2f o; 134 | TRANSFER_SHADOW_CASTER(o) 135 | o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); 136 | o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); 137 | o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; 138 | return o; 139 | } 140 | 141 | uniform sampler2D _MainTex; 142 | 143 | float4 frag(v2f i) : COLOR 144 | { 145 | fixed4 texcol = tex2D(_MainTex, i.uv).a; 146 | clip(texcol.a - i.alphaClip); 147 | SHADOW_CASTER_FRAGMENT(i) 148 | } 149 | ENDCG 150 | } 151 | } 152 | 153 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 154 | } 155 | 156 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMP_SDF.shader: -------------------------------------------------------------------------------- 1 | Shader "TextMeshPro/Distance Field" { 2 | 3 | Properties { 4 | _FaceTex ("Face Texture", 2D) = "white" {} 5 | _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 6 | _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 7 | _FaceColor ("Face Color", Color) = (1,1,1,1) 8 | _FaceDilate ("Face Dilate", Range(-1,1)) = 0 9 | 10 | _OutlineColor ("Outline Color", Color) = (0,0,0,1) 11 | _OutlineTex ("Outline Texture", 2D) = "white" {} 12 | _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 13 | _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 14 | _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 15 | _OutlineSoftness ("Outline Softness", Range(-1,1)) = 0 16 | 17 | _Bevel ("Bevel", Range(0,1)) = 0.5 18 | _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 19 | _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 20 | _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 21 | _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 22 | 23 | _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 24 | _SpecularColor ("Specular", Color) = (1,1,1,1) 25 | _SpecularPower ("Specular", Range(0,4)) = 2.0 26 | _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 27 | _Diffuse ("Diffuse", Range(0,1)) = 0.5 28 | _Ambient ("Ambient", Range(1,0)) = 0.5 29 | 30 | _BumpMap ("Normal map", 2D) = "bump" {} 31 | _BumpOutline ("Bump Outline", Range(0,1)) = 0 32 | _BumpFace ("Bump Face", Range(0,1)) = 0 33 | 34 | _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) 35 | _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) 36 | _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } 37 | _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) 38 | 39 | 40 | _UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) 41 | _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 42 | _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 43 | _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 44 | _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 45 | 46 | _GlowColor ("Color", Color) = (0, 1, 0, 0.5) 47 | _GlowOffset ("Offset", Range(-1,1)) = 0 48 | _GlowInner ("Inner", Range(0,1)) = 0.05 49 | _GlowOuter ("Outer", Range(0,1)) = 0.05 50 | _GlowPower ("Falloff", Range(1, 0)) = 0.75 51 | 52 | _WeightNormal ("Weight Normal", float) = 0 53 | _WeightBold ("Weight Bold", float) = 0.5 54 | 55 | _ShaderFlags ("Flags", float) = 0 56 | _ScaleRatioA ("Scale RatioA", float) = 1 57 | _ScaleRatioB ("Scale RatioB", float) = 1 58 | _ScaleRatioC ("Scale RatioC", float) = 1 59 | 60 | _MainTex ("Font Atlas", 2D) = "white" {} 61 | _TextureWidth ("Texture Width", float) = 512 62 | _TextureHeight ("Texture Height", float) = 512 63 | _GradientScale ("Gradient Scale", float) = 5.0 64 | _ScaleX ("Scale X", float) = 1.0 65 | _ScaleY ("Scale Y", float) = 1.0 66 | _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 67 | 68 | _VertexOffsetX ("Vertex OffsetX", float) = 0 69 | _VertexOffsetY ("Vertex OffsetY", float) = 0 70 | 71 | _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) 72 | _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) 73 | _MaskSoftnessX ("Mask SoftnessX", float) = 0 74 | _MaskSoftnessY ("Mask SoftnessY", float) = 0 75 | 76 | _StencilComp ("Stencil Comparison", Float) = 8 77 | _Stencil ("Stencil ID", Float) = 0 78 | _StencilOp ("Stencil Operation", Float) = 0 79 | _StencilWriteMask ("Stencil Write Mask", Float) = 255 80 | _StencilReadMask ("Stencil Read Mask", Float) = 255 81 | 82 | _ColorMask ("Color Mask", Float) = 15 83 | } 84 | 85 | SubShader { 86 | 87 | Tags 88 | { 89 | "Queue"="Transparent" 90 | "IgnoreProjector"="True" 91 | "RenderType"="Transparent" 92 | } 93 | 94 | Stencil 95 | { 96 | Ref [_Stencil] 97 | Comp [_StencilComp] 98 | Pass [_StencilOp] 99 | ReadMask [_StencilReadMask] 100 | WriteMask [_StencilWriteMask] 101 | } 102 | 103 | Cull [_CullMode] 104 | ZWrite Off 105 | Lighting Off 106 | Fog { Mode Off } 107 | ZTest [unity_GUIZTestMode] 108 | Blend One OneMinusSrcAlpha 109 | ColorMask [_ColorMask] 110 | 111 | Pass { 112 | CGPROGRAM 113 | #pragma target 3.0 114 | #pragma vertex VertShader 115 | #pragma fragment PixShader 116 | #pragma shader_feature __ BEVEL_ON 117 | #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER 118 | #pragma shader_feature __ GLOW_ON 119 | 120 | #pragma multi_compile __ UNITY_UI_CLIP_RECT 121 | #pragma multi_compile __ UNITY_UI_ALPHACLIP 122 | 123 | 124 | #include "UnityCG.cginc" 125 | #include "UnityUI.cginc" 126 | #include "TMPro_Properties.cginc" 127 | #include "TMPro.cginc" 128 | 129 | struct vertex_t { 130 | float4 position : POSITION; 131 | float3 normal : NORMAL; 132 | fixed4 color : COLOR; 133 | float2 texcoord0 : TEXCOORD0; 134 | float2 texcoord1 : TEXCOORD1; 135 | }; 136 | 137 | 138 | struct pixel_t { 139 | float4 position : SV_POSITION; 140 | fixed4 color : COLOR; 141 | float2 atlas : TEXCOORD0; // Atlas 142 | float4 param : TEXCOORD1; // alphaClip, scale, bias, weight 143 | float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) 144 | float3 viewDir : TEXCOORD3; 145 | 146 | #if (UNDERLAY_ON || UNDERLAY_INNER) 147 | float4 texcoord2 : TEXCOORD4; // u,v, scale, bias 148 | fixed4 underlayColor : COLOR1; 149 | #endif 150 | float4 textures : TEXCOORD5; 151 | }; 152 | 153 | // Used by Unity internally to handle Texture Tiling and Offset. 154 | float4 _FaceTex_ST; 155 | float4 _OutlineTex_ST; 156 | 157 | pixel_t VertShader(vertex_t input) 158 | { 159 | float bold = step(input.texcoord1.y, 0); 160 | 161 | float4 vert = input.position; 162 | vert.x += _VertexOffsetX; 163 | vert.y += _VertexOffsetY; 164 | 165 | float4 vPosition = UnityObjectToClipPos(vert); 166 | 167 | float2 pixelSize = vPosition.w; 168 | pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); 169 | float scale = rsqrt(dot(pixelSize, pixelSize)); 170 | scale *= abs(input.texcoord1.y) * _GradientScale * 1.5; 171 | if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 172 | 173 | float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; 174 | weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; 175 | 176 | float bias =(.5 - weight) + (.5 / scale); 177 | 178 | float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA); 179 | 180 | #if GLOW_ON 181 | alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); 182 | #endif 183 | 184 | alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; 185 | 186 | #if (UNDERLAY_ON || UNDERLAY_INNER) 187 | float4 underlayColor = _UnderlayColor; 188 | underlayColor.rgb *= underlayColor.a; 189 | 190 | float bScale = scale; 191 | bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); 192 | float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); 193 | 194 | float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; 195 | float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; 196 | float2 bOffset = float2(x, y); 197 | #endif 198 | 199 | // Generate UV for the Masking Texture 200 | float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); 201 | float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); 202 | 203 | // Support for texture tiling and offset 204 | float2 textureUV = UnpackUV(input.texcoord1.x); 205 | float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); 206 | float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); 207 | 208 | pixel_t output = { 209 | vPosition, 210 | input.color, 211 | input.texcoord0, 212 | float4(alphaClip, scale, bias, weight), 213 | half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), 214 | mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz), 215 | #if (UNDERLAY_ON || UNDERLAY_INNER) 216 | float4(input.texcoord0 + bOffset, bScale, bBias), 217 | underlayColor, 218 | #endif 219 | float4(faceUV, outlineUV), 220 | }; 221 | 222 | return output; 223 | } 224 | 225 | 226 | fixed4 PixShader(pixel_t input) : SV_Target 227 | { 228 | float c = tex2D(_MainTex, input.atlas).a; 229 | 230 | #ifndef UNDERLAY_ON 231 | clip(c - input.param.x); 232 | #endif 233 | 234 | float scale = input.param.y; 235 | float bias = input.param.z; 236 | float weight = input.param.w; 237 | float sd = (bias - c) * scale; 238 | 239 | float outline = (_OutlineWidth * _ScaleRatioA) * scale; 240 | float softness = (_OutlineSoftness * _ScaleRatioA) * scale; 241 | 242 | half4 faceColor = _FaceColor; 243 | half4 outlineColor = _OutlineColor; 244 | 245 | faceColor.rgb *= input.color.rgb; 246 | 247 | faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); 248 | outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); 249 | 250 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); 251 | 252 | #if BEVEL_ON 253 | float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); 254 | float3 n = GetSurfaceNormal(input.atlas, weight, dxy); 255 | 256 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; 257 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); 258 | n = normalize(n- bump); 259 | 260 | float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); 261 | 262 | float3 col = GetSpecular(n, light); 263 | faceColor.rgb += col*faceColor.a; 264 | faceColor.rgb *= 1-(dot(n, light)*_Diffuse); 265 | faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); 266 | 267 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); 268 | faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; 269 | #endif 270 | 271 | #if UNDERLAY_ON 272 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; 273 | faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); 274 | #endif 275 | 276 | #if UNDERLAY_INNER 277 | float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; 278 | faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); 279 | #endif 280 | 281 | #if GLOW_ON 282 | float4 glowColor = GetGlowColor(sd, scale); 283 | faceColor.rgb += glowColor.rgb * glowColor.a; 284 | #endif 285 | 286 | // Alternative implementation to UnityGet2DClipping with support for softness. 287 | #if UNITY_UI_CLIP_RECT 288 | half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); 289 | faceColor *= m.x * m.y; 290 | #endif 291 | 292 | #if UNITY_UI_ALPHACLIP 293 | clip(faceColor.a - 0.001); 294 | #endif 295 | 296 | return faceColor * input.color.a; 297 | } 298 | 299 | ENDCG 300 | } 301 | } 302 | 303 | Fallback "TextMeshPro/Mobile/Distance Field" 304 | CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" 305 | } 306 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/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/Lib/TextMesh Pro/Resources/Shaders/TMPro_Surface.cginc: -------------------------------------------------------------------------------- 1 | void VertShader(inout appdata_full v, out Input data) 2 | { 3 | v.vertex.x += _VertexOffsetX; 4 | v.vertex.y += _VertexOffsetY; 5 | 6 | UNITY_INITIALIZE_OUTPUT(Input, data); 7 | 8 | float bold = step(v.texcoord1.y, 0); 9 | 10 | // Generate normal for backface 11 | float3 view = ObjSpaceViewDir(v.vertex); 12 | v.normal *= sign(dot(v.normal, view)); 13 | 14 | #if USE_DERIVATIVE 15 | data.param.y = 1; 16 | #else 17 | float4 vert = v.vertex; 18 | float4 vPosition = UnityObjectToClipPos(vert); 19 | float2 pixelSize = vPosition.w; 20 | 21 | pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy); 22 | float scale = rsqrt(dot(pixelSize, pixelSize)); 23 | scale *= abs(v.texcoord1.y) * _GradientScale * 1.5; 24 | scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert))))); 25 | data.param.y = scale; 26 | #endif 27 | 28 | //float opacity = v.color.a; 29 | 30 | data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; // 31 | 32 | v.texcoord1.xy = UnpackUV(v.texcoord1.x); 33 | data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex)); 34 | } 35 | 36 | void PixShader(Input input, inout SurfaceOutput o) 37 | { 38 | 39 | #if USE_DERIVATIVE | BEVEL_ON 40 | float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); 41 | 42 | float4 smp4x = { tex2D(_MainTex, input.uv_MainTex - delta.xz).a, 43 | tex2D(_MainTex, input.uv_MainTex + delta.xz).a, 44 | tex2D(_MainTex, input.uv_MainTex - delta.zy).a, 45 | tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; 46 | #endif 47 | 48 | #if USE_DERIVATIVE 49 | // Screen space scaling reciprocal with anisotropic correction 50 | float2 edgeNormal = Normalize(float2(smp4x.x - smp4x.y, smp4x.z - smp4x.w)); 51 | float2 res = float2(_TextureWidth * input.param.y, _TextureHeight); 52 | float2 tdx = ddx(input.uv_MainTex)*res; 53 | float2 tdy = ddy(input.uv_MainTex)*res; 54 | float lx = length(tdx); 55 | float ly = length(tdy); 56 | float s = sqrt(min(lx, ly) / max(lx, ly)); 57 | s = lerp(1, s, abs(dot(normalize(tdx + tdy), edgeNormal))); 58 | float scale = rsqrt(abs(tdx.x * tdy.y - tdx.y * tdy.x)) * (_GradientScale * 2) * s; 59 | #else 60 | float scale = input.param.y; 61 | #endif 62 | 63 | // Signed distance 64 | float c = tex2D(_MainTex, input.uv_MainTex).a; 65 | float sd = (.5 - c - input.param.x) * scale + .5; 66 | float outline = _OutlineWidth*_ScaleRatioA * scale; 67 | float softness = _OutlineSoftness*_ScaleRatioA * scale; 68 | 69 | // Color & Alpha 70 | float4 faceColor = _FaceColor; 71 | float4 outlineColor = _OutlineColor; 72 | faceColor *= input.color; 73 | outlineColor.a *= input.color.a; 74 | faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y)); 75 | outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y)); 76 | faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); 77 | faceColor.rgb /= max(faceColor.a, 0.0001); 78 | 79 | 80 | #if BEVEL_ON 81 | // Face Normal 82 | float3 n = GetSurfaceNormal(smp4x, input.param.x); 83 | 84 | // Bumpmap 85 | float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz; 86 | bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); 87 | bump = lerp(float3(0, 0, 1), bump, faceColor.a); 88 | n = normalize(n - bump); 89 | 90 | // Cubemap reflection 91 | fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n))); 92 | float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; 93 | #else 94 | float3 n = float3(0, 0, -1); 95 | float3 emission = float3(0, 0, 0); 96 | #endif 97 | 98 | 99 | 100 | #if GLOW_ON 101 | float4 glowColor = GetGlowColor(sd, scale); 102 | glowColor.a *= input.color.a; 103 | emission += glowColor.rgb*glowColor.a; 104 | faceColor = BlendARGB(glowColor, faceColor); 105 | faceColor.rgb /= max(faceColor.a, 0.0001); 106 | #endif 107 | 108 | // Set Standard output structure 109 | o.Albedo = faceColor.rgb; 110 | o.Normal = -n; 111 | o.Emission = emission; 112 | o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5)); 113 | o.Gloss = 1; 114 | o.Alpha = faceColor.a; 115 | } 116 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/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/Lib/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.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: ab2114bdc8544297b417dfefe9f1e410, type: 3} 12 | m_Name: Default Style Sheet 13 | m_EditorClassIdentifier: 14 | m_StyleList: 15 | - m_Name: H1 16 | m_HashCode: 2425 17 | m_OpeningDefinition: <#40ff80>* 18 | m_ClosingDefinition: '*' 19 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d00000032000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000660000006600000038000000300000003e0000002a000000 20 | m_ClosingTagArray: 2a0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 21 | - m_Name: Quote 22 | m_HashCode: 92254330 23 | m_OpeningDefinition: 24 | m_ClosingDefinition: 25 | m_OpeningTagArray: 3c000000690000003e0000003c00000073000000690000007a000000650000003d0000003700000035000000250000003e0000003c0000006d000000610000007200000067000000690000006e0000003d0000003100000030000000250000003e000000 26 | m_ClosingTagArray: 3c0000002f000000690000003e0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f00000077000000690000006400000074000000680000003e0000003c0000002f0000006d000000610000007200000067000000690000006e0000003e000000 27 | - m_Name: Link 28 | m_HashCode: 2687968 29 | m_OpeningDefinition: <#40a0ff> 30 | m_ClosingDefinition: 31 | m_OpeningTagArray: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f0000003000000031000000220000003e000000 32 | m_ClosingTagArray: 3c0000002f000000750000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f0000006c000000690000006e0000006b0000003e000000 33 | - m_Name: Title 34 | m_HashCode: 98732960 35 | m_OpeningDefinition: 36 | m_ClosingDefinition: 37 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e0000003c000000620000003e0000003c000000610000006c00000069000000670000006e0000003d00000063000000650000006e0000007400000065000000720000003e000000 38 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000610000006c00000069000000670000006e0000003e000000 39 | - m_Name: H2 40 | m_HashCode: 2426 41 | m_OpeningDefinition: <#4080FF> 42 | m_ClosingDefinition: 43 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e00000035000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000380000003000000046000000460000003e000000 44 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 45 | - m_Name: H3 46 | m_HashCode: 2427 47 | m_OpeningDefinition: <#FF8040> 48 | m_ClosingDefinition: 49 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e0000003100000037000000650000006d0000003e0000003c000000620000003e0000003c000000230000004600000046000000380000003000000034000000300000003e000000 50 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 51 | - m_Name: C1 52 | m_HashCode: 2194 53 | m_OpeningDefinition: 54 | m_ClosingDefinition: 55 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000660000006600000034000000300000003e000000 56 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000 57 | - m_Name: C2 58 | m_HashCode: 2193 59 | m_OpeningDefinition: 60 | m_ClosingDefinition: 61 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000340000003000000046000000460000003e0000003c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e000000 62 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f00000073000000690000007a000000650000003e000000 63 | - m_Name: C3 64 | m_HashCode: 2192 65 | m_OpeningDefinition: 66 | m_ClosingDefinition: 67 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000003800000030000000410000003000000046000000460000003e0000003c000000620000003e000000 68 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f000000620000003e000000 69 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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_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: 2705215ac5b84b70bacc50632be6e391, type: 3} 13 | m_Name: TMP Settings 14 | m_EditorClassIdentifier: 15 | m_enableWordWrapping: 1 16 | m_enableKerning: 1 17 | m_enableExtraPadding: 0 18 | m_enableTintAllSprites: 0 19 | m_enableParseEscapeCharacters: 1 20 | m_EnableRaycastTarget: 1 21 | m_GetFontFeaturesAtRuntime: 1 22 | m_missingGlyphCharacter: 0 23 | m_warningsDisabled: 0 24 | m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} 25 | m_defaultFontAssetPath: Fonts & Materials/ 26 | m_defaultFontSize: 36 27 | m_defaultAutoSizeMinRatio: 0.5 28 | m_defaultAutoSizeMaxRatio: 2 29 | m_defaultTextMeshProTextContainerSize: {x: 20, y: 5} 30 | m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50} 31 | m_autoSizeTextContainer: 0 32 | m_fallbackFontAssets: [] 33 | m_matchMaterialPreset: 1 34 | m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45, 35 | type: 2} 36 | m_defaultSpriteAssetPath: Sprite Assets/ 37 | m_defaultColorGradientPresetsPath: Color Gradient Presets/ 38 | m_enableEmojiSupport: 1 39 | m_defaultStyleSheet: {fileID: 11400000, guid: 4ed105a2859cb4d2b9a5d99dbca454e0, 40 | type: 2} 41 | m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3} 42 | m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b, 43 | type: 3} 44 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/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/Lib/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/Lib/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/Lib/TextMesh Pro/Sprites/EmojiOne.json: -------------------------------------------------------------------------------- 1 | {"frames": [ 2 | 3 | { 4 | "filename": "1f60a.png", 5 | "frame": {"x":0,"y":0,"w":128,"h":128}, 6 | "rotated": false, 7 | "trimmed": false, 8 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 9 | "sourceSize": {"w":128,"h":128}, 10 | "pivot": {"x":0.5,"y":0.5} 11 | }, 12 | { 13 | "filename": "1f60b.png", 14 | "frame": {"x":128,"y":0,"w":128,"h":128}, 15 | "rotated": false, 16 | "trimmed": false, 17 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 18 | "sourceSize": {"w":128,"h":128}, 19 | "pivot": {"x":0.5,"y":0.5} 20 | }, 21 | { 22 | "filename": "1f60d.png", 23 | "frame": {"x":256,"y":0,"w":128,"h":128}, 24 | "rotated": false, 25 | "trimmed": false, 26 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 27 | "sourceSize": {"w":128,"h":128}, 28 | "pivot": {"x":0.5,"y":0.5} 29 | }, 30 | { 31 | "filename": "1f60e.png", 32 | "frame": {"x":384,"y":0,"w":128,"h":128}, 33 | "rotated": false, 34 | "trimmed": false, 35 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 36 | "sourceSize": {"w":128,"h":128}, 37 | "pivot": {"x":0.5,"y":0.5} 38 | }, 39 | { 40 | "filename": "1f600.png", 41 | "frame": {"x":0,"y":128,"w":128,"h":128}, 42 | "rotated": false, 43 | "trimmed": false, 44 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 45 | "sourceSize": {"w":128,"h":128}, 46 | "pivot": {"x":0.5,"y":0.5} 47 | }, 48 | { 49 | "filename": "1f601.png", 50 | "frame": {"x":128,"y":128,"w":128,"h":128}, 51 | "rotated": false, 52 | "trimmed": false, 53 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 54 | "sourceSize": {"w":128,"h":128}, 55 | "pivot": {"x":0.5,"y":0.5} 56 | }, 57 | { 58 | "filename": "1f602.png", 59 | "frame": {"x":256,"y":128,"w":128,"h":128}, 60 | "rotated": false, 61 | "trimmed": false, 62 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 63 | "sourceSize": {"w":128,"h":128}, 64 | "pivot": {"x":0.5,"y":0.5} 65 | }, 66 | { 67 | "filename": "1f603.png", 68 | "frame": {"x":384,"y":128,"w":128,"h":128}, 69 | "rotated": false, 70 | "trimmed": false, 71 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 72 | "sourceSize": {"w":128,"h":128}, 73 | "pivot": {"x":0.5,"y":0.5} 74 | }, 75 | { 76 | "filename": "1f604.png", 77 | "frame": {"x":0,"y":256,"w":128,"h":128}, 78 | "rotated": false, 79 | "trimmed": false, 80 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 81 | "sourceSize": {"w":128,"h":128}, 82 | "pivot": {"x":0.5,"y":0.5} 83 | }, 84 | { 85 | "filename": "1f605.png", 86 | "frame": {"x":128,"y":256,"w":128,"h":128}, 87 | "rotated": false, 88 | "trimmed": false, 89 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 90 | "sourceSize": {"w":128,"h":128}, 91 | "pivot": {"x":0.5,"y":0.5} 92 | }, 93 | { 94 | "filename": "1f606.png", 95 | "frame": {"x":256,"y":256,"w":128,"h":128}, 96 | "rotated": false, 97 | "trimmed": false, 98 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 99 | "sourceSize": {"w":128,"h":128}, 100 | "pivot": {"x":0.5,"y":0.5} 101 | }, 102 | { 103 | "filename": "1f609.png", 104 | "frame": {"x":384,"y":256,"w":128,"h":128}, 105 | "rotated": false, 106 | "trimmed": false, 107 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 108 | "sourceSize": {"w":128,"h":128}, 109 | "pivot": {"x":0.5,"y":0.5} 110 | }, 111 | { 112 | "filename": "1f618.png", 113 | "frame": {"x":0,"y":384,"w":128,"h":128}, 114 | "rotated": false, 115 | "trimmed": false, 116 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 117 | "sourceSize": {"w":128,"h":128}, 118 | "pivot": {"x":0.5,"y":0.5} 119 | }, 120 | { 121 | "filename": "1f923.png", 122 | "frame": {"x":128,"y":384,"w":128,"h":128}, 123 | "rotated": false, 124 | "trimmed": false, 125 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 126 | "sourceSize": {"w":128,"h":128}, 127 | "pivot": {"x":0.5,"y":0.5} 128 | }, 129 | { 130 | "filename": "263a.png", 131 | "frame": {"x":256,"y":384,"w":128,"h":128}, 132 | "rotated": false, 133 | "trimmed": false, 134 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 135 | "sourceSize": {"w":128,"h":128}, 136 | "pivot": {"x":0.5,"y":0.5} 137 | }, 138 | { 139 | "filename": "2639.png", 140 | "frame": {"x":384,"y":384,"w":128,"h":128}, 141 | "rotated": false, 142 | "trimmed": false, 143 | "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, 144 | "sourceSize": {"w":128,"h":128}, 145 | "pivot": {"x":0.5,"y":0.5} 146 | }], 147 | "meta": { 148 | "app": "http://www.codeandweb.com/texturepacker", 149 | "version": "1.0", 150 | "image": "EmojiOne.png", 151 | "format": "RGBA8888", 152 | "size": {"w":512,"h":512}, 153 | "scale": "1", 154 | "smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$" 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /Assets/Lib/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/Lib/TextMesh Pro/Sprites/EmojiOne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/Assets/Lib/TextMesh Pro/Sprites/EmojiOne.png -------------------------------------------------------------------------------- /Assets/Lib/TextMesh Pro/Sprites/EmojiOne.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dffef66376be4fa480fb02b19edbe903 3 | TextureImporter: 4 | fileIDToRecycleName: 5 | 21300000: EmojiOne_0 6 | 21300002: EmojiOne_1 7 | 21300004: EmojiOne_2 8 | 21300006: EmojiOne_3 9 | 21300008: EmojiOne_4 10 | 21300010: EmojiOne_6 11 | 21300012: EmojiOne_7 12 | 21300014: EmojiOne_8 13 | 21300016: EmojiOne_9 14 | 21300018: EmojiOne_10 15 | 21300020: EmojiOne_11 16 | 21300022: EmojiOne_12 17 | 21300024: EmojiOne_13 18 | 21300026: EmojiOne_5 19 | 21300028: EmojiOne_14 20 | externalObjects: {} 21 | serializedVersion: 5 22 | mipmaps: 23 | mipMapMode: 0 24 | enableMipMap: 1 25 | sRGBTexture: 1 26 | linearTexture: 0 27 | fadeOut: 0 28 | borderMipMap: 0 29 | mipMapsPreserveCoverage: 0 30 | alphaTestReferenceValue: 0.5 31 | mipMapFadeDistanceStart: 1 32 | mipMapFadeDistanceEnd: 3 33 | bumpmap: 34 | convertToNormalMap: 0 35 | externalNormalMap: 0 36 | heightScale: 0.25 37 | normalMapFilter: 0 38 | isReadable: 0 39 | grayScaleToAlpha: 0 40 | generateCubemap: 6 41 | cubemapConvolution: 0 42 | seamlessCubemap: 0 43 | textureFormat: -1 44 | maxTextureSize: 2048 45 | textureSettings: 46 | serializedVersion: 2 47 | filterMode: -1 48 | aniso: -1 49 | mipBias: -1 50 | wrapU: 1 51 | wrapV: 1 52 | wrapW: 1 53 | nPOTScale: 0 54 | lightmap: 0 55 | compressionQuality: 50 56 | spriteMode: 2 57 | spriteExtrude: 1 58 | spriteMeshType: 1 59 | alignment: 0 60 | spritePivot: {x: 0.5, y: 0.5} 61 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 62 | spritePixelsToUnits: 100 63 | alphaUsage: 1 64 | alphaIsTransparency: 1 65 | spriteTessellationDetail: -1 66 | textureType: 0 67 | textureShape: 1 68 | singleChannelComponent: 0 69 | maxTextureSizeSet: 0 70 | compressionQualitySet: 0 71 | textureFormatSet: 0 72 | platformSettings: 73 | - serializedVersion: 2 74 | buildTarget: DefaultTexturePlatform 75 | maxTextureSize: 512 76 | resizeAlgorithm: 0 77 | textureFormat: -1 78 | textureCompression: 1 79 | compressionQuality: 50 80 | crunchedCompression: 0 81 | allowsAlphaSplitting: 0 82 | overridden: 0 83 | androidETC2FallbackOverride: 0 84 | - serializedVersion: 2 85 | buildTarget: Standalone 86 | maxTextureSize: 512 87 | resizeAlgorithm: 0 88 | textureFormat: -1 89 | textureCompression: 1 90 | compressionQuality: 50 91 | crunchedCompression: 0 92 | allowsAlphaSplitting: 0 93 | overridden: 0 94 | androidETC2FallbackOverride: 0 95 | - serializedVersion: 2 96 | buildTarget: iPhone 97 | maxTextureSize: 512 98 | resizeAlgorithm: 0 99 | textureFormat: -1 100 | textureCompression: 1 101 | compressionQuality: 50 102 | crunchedCompression: 0 103 | allowsAlphaSplitting: 0 104 | overridden: 0 105 | androidETC2FallbackOverride: 0 106 | - serializedVersion: 2 107 | buildTarget: Android 108 | maxTextureSize: 512 109 | resizeAlgorithm: 0 110 | textureFormat: -1 111 | textureCompression: 1 112 | compressionQuality: 50 113 | crunchedCompression: 0 114 | allowsAlphaSplitting: 0 115 | overridden: 0 116 | androidETC2FallbackOverride: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: 120 | - serializedVersion: 2 121 | name: EmojiOne_0 122 | rect: 123 | serializedVersion: 2 124 | x: 0 125 | y: 384 126 | width: 128 127 | height: 128 128 | alignment: 0 129 | pivot: {x: 0.5, y: 0.5} 130 | border: {x: 0, y: 0, z: 0, w: 0} 131 | outline: [] 132 | physicsShape: [] 133 | tessellationDetail: 0 134 | bones: [] 135 | spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c 136 | vertices: [] 137 | indices: 138 | edges: [] 139 | weights: [] 140 | - serializedVersion: 2 141 | name: EmojiOne_1 142 | rect: 143 | serializedVersion: 2 144 | x: 128 145 | y: 384 146 | width: 128 147 | height: 128 148 | alignment: 0 149 | pivot: {x: 0.5, y: 0.5} 150 | border: {x: 0, y: 0, z: 0, w: 0} 151 | outline: [] 152 | physicsShape: [] 153 | tessellationDetail: 0 154 | bones: [] 155 | spriteID: e9eea8093eaeaee4d901c4553f572c22 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | - serializedVersion: 2 161 | name: EmojiOne_2 162 | rect: 163 | serializedVersion: 2 164 | x: 256 165 | y: 384 166 | width: 128 167 | height: 128 168 | alignment: 0 169 | pivot: {x: 0.5, y: 0.5} 170 | border: {x: 0, y: 0, z: 0, w: 0} 171 | outline: [] 172 | physicsShape: [] 173 | tessellationDetail: 0 174 | bones: [] 175 | spriteID: 49451da35411dcc42a3692e39b0fde70 176 | vertices: [] 177 | indices: 178 | edges: [] 179 | weights: [] 180 | - serializedVersion: 2 181 | name: EmojiOne_3 182 | rect: 183 | serializedVersion: 2 184 | x: 384 185 | y: 384 186 | width: 128 187 | height: 128 188 | alignment: 0 189 | pivot: {x: 0.5, y: 0.5} 190 | border: {x: 0, y: 0, z: 0, w: 0} 191 | outline: [] 192 | physicsShape: [] 193 | tessellationDetail: 0 194 | bones: [] 195 | spriteID: f65709664b924904790c850a50ca82bc 196 | vertices: [] 197 | indices: 198 | edges: [] 199 | weights: [] 200 | - serializedVersion: 2 201 | name: EmojiOne_4 202 | rect: 203 | serializedVersion: 2 204 | x: 0 205 | y: 256 206 | width: 128 207 | height: 128 208 | alignment: 0 209 | pivot: {x: 0.5, y: 0.5} 210 | border: {x: 0, y: 0, z: 0, w: 0} 211 | outline: [] 212 | physicsShape: [] 213 | tessellationDetail: 0 214 | bones: [] 215 | spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8 216 | vertices: [] 217 | indices: 218 | edges: [] 219 | weights: [] 220 | - serializedVersion: 2 221 | name: EmojiOne_6 222 | rect: 223 | serializedVersion: 2 224 | x: 256 225 | y: 256 226 | width: 128 227 | height: 128 228 | alignment: 0 229 | pivot: {x: 0.5, y: 0.5} 230 | border: {x: 0, y: 0, z: 0, w: 0} 231 | outline: [] 232 | physicsShape: [] 233 | tessellationDetail: 0 234 | bones: [] 235 | spriteID: b10f2b48b7281594bb8a24a6511a35af 236 | vertices: [] 237 | indices: 238 | edges: [] 239 | weights: [] 240 | - serializedVersion: 2 241 | name: EmojiOne_7 242 | rect: 243 | serializedVersion: 2 244 | x: 384 245 | y: 256 246 | width: 128 247 | height: 128 248 | alignment: 0 249 | pivot: {x: 0.5, y: 0.5} 250 | border: {x: 0, y: 0, z: 0, w: 0} 251 | outline: [] 252 | physicsShape: [] 253 | tessellationDetail: 0 254 | bones: [] 255 | spriteID: 10a600f9329dc2246a897e89f4d283cd 256 | vertices: [] 257 | indices: 258 | edges: [] 259 | weights: [] 260 | - serializedVersion: 2 261 | name: EmojiOne_8 262 | rect: 263 | serializedVersion: 2 264 | x: 0 265 | y: 128 266 | width: 128 267 | height: 128 268 | alignment: 0 269 | pivot: {x: 0.5, y: 0.5} 270 | border: {x: 0, y: 0, z: 0, w: 0} 271 | outline: [] 272 | physicsShape: [] 273 | tessellationDetail: 0 274 | bones: [] 275 | spriteID: 66cffa363b90ab14787d8a5b90cf4502 276 | vertices: [] 277 | indices: 278 | edges: [] 279 | weights: [] 280 | - serializedVersion: 2 281 | name: EmojiOne_9 282 | rect: 283 | serializedVersion: 2 284 | x: 128 285 | y: 128 286 | width: 128 287 | height: 128 288 | alignment: 0 289 | pivot: {x: 0.5, y: 0.5} 290 | border: {x: 0, y: 0, z: 0, w: 0} 291 | outline: [] 292 | physicsShape: [] 293 | tessellationDetail: 0 294 | bones: [] 295 | spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad 296 | vertices: [] 297 | indices: 298 | edges: [] 299 | weights: [] 300 | - serializedVersion: 2 301 | name: EmojiOne_10 302 | rect: 303 | serializedVersion: 2 304 | x: 256 305 | y: 128 306 | width: 128 307 | height: 128 308 | alignment: 0 309 | pivot: {x: 0.5, y: 0.5} 310 | border: {x: 0, y: 0, z: 0, w: 0} 311 | outline: [] 312 | physicsShape: [] 313 | tessellationDetail: 0 314 | bones: [] 315 | spriteID: 2a9e58eaf96feef42bcefa1cf257193f 316 | vertices: [] 317 | indices: 318 | edges: [] 319 | weights: [] 320 | - serializedVersion: 2 321 | name: EmojiOne_11 322 | rect: 323 | serializedVersion: 2 324 | x: 384 325 | y: 128 326 | width: 128 327 | height: 128 328 | alignment: 0 329 | pivot: {x: 0.5, y: 0.5} 330 | border: {x: 0, y: 0, z: 0, w: 0} 331 | outline: [] 332 | physicsShape: [] 333 | tessellationDetail: 0 334 | bones: [] 335 | spriteID: 2489120affc155840ae6a7be2e93ce19 336 | vertices: [] 337 | indices: 338 | edges: [] 339 | weights: [] 340 | - serializedVersion: 2 341 | name: EmojiOne_12 342 | rect: 343 | serializedVersion: 2 344 | x: 0 345 | y: 0 346 | width: 128 347 | height: 128 348 | alignment: 0 349 | pivot: {x: 0.5, y: 0.5} 350 | border: {x: 0, y: 0, z: 0, w: 0} 351 | outline: [] 352 | physicsShape: [] 353 | tessellationDetail: 0 354 | bones: [] 355 | spriteID: 412349a150598d14da4d7140df5c0286 356 | vertices: [] 357 | indices: 358 | edges: [] 359 | weights: [] 360 | - serializedVersion: 2 361 | name: EmojiOne_13 362 | rect: 363 | serializedVersion: 2 364 | x: 128 365 | y: 0 366 | width: 128 367 | height: 128 368 | alignment: 0 369 | pivot: {x: 0.5, y: 0.5} 370 | border: {x: 0, y: 0, z: 0, w: 0} 371 | outline: [] 372 | physicsShape: [] 373 | tessellationDetail: 0 374 | bones: [] 375 | spriteID: a937464b42bb3634782dea34c6becb6c 376 | vertices: [] 377 | indices: 378 | edges: [] 379 | weights: [] 380 | - serializedVersion: 2 381 | name: EmojiOne_5 382 | rect: 383 | serializedVersion: 2 384 | x: 256 385 | y: 0 386 | width: 128 387 | height: 128 388 | alignment: 0 389 | pivot: {x: 0, y: 0} 390 | border: {x: 0, y: 0, z: 0, w: 0} 391 | outline: [] 392 | physicsShape: [] 393 | tessellationDetail: 0 394 | bones: [] 395 | spriteID: b0f933b217682124dbfc5e6b89abe3d0 396 | vertices: [] 397 | indices: 398 | edges: [] 399 | weights: [] 400 | - serializedVersion: 2 401 | name: EmojiOne_14 402 | rect: 403 | serializedVersion: 2 404 | x: 128 405 | y: 256 406 | width: 128 407 | height: 128 408 | alignment: 0 409 | pivot: {x: 0, y: 0} 410 | border: {x: 0, y: 0, z: 0, w: 0} 411 | outline: [] 412 | physicsShape: [] 413 | tessellationDetail: 0 414 | bones: [] 415 | spriteID: f7235c763afe4434e8bb666750a41096 416 | vertices: [] 417 | indices: 418 | edges: [] 419 | weights: [] 420 | outline: [] 421 | physicsShape: [] 422 | bones: [] 423 | spriteID: 3e32d8f5477abfc43b19066e8ad5032e 424 | vertices: [] 425 | indices: 426 | edges: [] 427 | weights: [] 428 | spritePackingTag: 429 | userData: 430 | assetBundleName: 431 | assetBundleVariant: 432 | -------------------------------------------------------------------------------- /Assets/RenderPipeline.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2609f7c1c7caa49e79ab5df5ccf4eb5e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/RenderPipeline/ForwardRenderer.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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: ForwardRenderer 14 | m_EditorClassIdentifier: 15 | m_RendererFeatures: [] 16 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 17 | shaders: 18 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 19 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 20 | screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, 21 | type: 3} 22 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 23 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 24 | m_OpaqueLayerMask: 25 | serializedVersion: 2 26 | m_Bits: 4294967295 27 | m_TransparentLayerMask: 28 | serializedVersion: 2 29 | m_Bits: 4294967295 30 | m_DefaultStencilState: 31 | overrideStencilState: 0 32 | stencilReference: 0 33 | stencilCompareFunction: 8 34 | passOperation: 0 35 | failOperation: 0 36 | zFailOperation: 0 37 | -------------------------------------------------------------------------------- /Assets/RenderPipeline/ForwardRenderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7adb3dda8139c42e1ba753c44590d3ab 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/RenderPipeline/GameRenderer.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: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: GameRenderer 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 5 16 | k_AssetPreviousVersion: 5 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: 7adb3dda8139c42e1ba753c44590d3ab, type: 2} 21 | - {fileID: 11400000, guid: 7adb3dda8139c42e1ba753c44590d3ab, type: 2} 22 | m_DefaultRendererIndex: 1 23 | m_RequireDepthTexture: 0 24 | m_RequireOpaqueTexture: 0 25 | m_OpaqueDownsampling: 1 26 | m_SupportsTerrainHoles: 1 27 | m_SupportsHDR: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_MainLightRenderingMode: 1 31 | m_MainLightShadowsSupported: 1 32 | m_MainLightShadowmapResolution: 2048 33 | m_AdditionalLightsRenderingMode: 1 34 | m_AdditionalLightsPerObjectLimit: 4 35 | m_AdditionalLightShadowsSupported: 0 36 | m_AdditionalLightsShadowmapResolution: 512 37 | m_ShadowDistance: 50 38 | m_ShadowCascades: 0 39 | m_Cascade2Split: 0.25 40 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 41 | m_ShadowDepthBias: 1 42 | m_ShadowNormalBias: 1 43 | m_SoftShadowsSupported: 0 44 | m_UseSRPBatcher: 1 45 | m_SupportsDynamicBatching: 0 46 | m_MixedLightingSupported: 1 47 | m_DebugLevel: 0 48 | m_ColorGradingMode: 0 49 | m_ColorGradingLutSize: 32 50 | m_ShadowType: 1 51 | m_LocalShadowsSupported: 0 52 | m_LocalShadowsAtlasResolution: 256 53 | m_MaxPixelLights: 0 54 | m_ShadowAtlasResolution: 256 55 | m_ShaderVariantLogLevel: 0 56 | -------------------------------------------------------------------------------- /Assets/RenderPipeline/GameRenderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6c7a1da8533a4fe49d7272620046ed6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TMP StyleSheet.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: ab2114bdc8544297b417dfefe9f1e410, type: 3} 13 | m_Name: TMP StyleSheet 14 | m_EditorClassIdentifier: 15 | m_StyleList: 16 | - m_Name: whispering 17 | m_HashCode: 158920898 18 | m_OpeningDefinition: 19 | m_ClosingDefinition: 20 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d0000003500000030000000250000003e000000 21 | m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e000000 22 | - m_Name: yelling 23 | m_HashCode: 1103929052 24 | m_OpeningDefinition: 25 | m_ClosingDefinition: 26 | m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003500000030000000250000003e0000003c0000007500000070000000700000006500000072000000630000006100000073000000650000003e000000 27 | m_ClosingTagArray: 3c0000002f0000007500000070000000700000006500000072000000630000006100000073000000650000003e0000003c0000002f00000073000000690000007a000000650000003e000000 28 | - m_Name: key 29 | m_HashCode: 115479 30 | m_OpeningDefinition: 31 | m_ClosingDefinition: 32 | m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000300000003000000030000000300000003e000000 33 | m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000 34 | -------------------------------------------------------------------------------- /Assets/TMP StyleSheet.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ed105a2859cb4d2b9a5d99dbca454e0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Ben Follington 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": "1.0.0", 4 | "com.unity.2d.tilemap": "1.0.0", 5 | "com.unity.ide.vscode": "1.1.4", 6 | "com.unity.render-pipelines.universal": "7.1.8", 7 | "com.unity.test-framework": "1.1.11", 8 | "com.unity.textmeshpro": "2.0.1", 9 | "com.unity.timeline": "1.2.10", 10 | "com.unity.ugui": "1.0.0", 11 | "com.unity.modules.ai": "1.0.0", 12 | "com.unity.modules.androidjni": "1.0.0", 13 | "com.unity.modules.animation": "1.0.0", 14 | "com.unity.modules.assetbundle": "1.0.0", 15 | "com.unity.modules.audio": "1.0.0", 16 | "com.unity.modules.cloth": "1.0.0", 17 | "com.unity.modules.director": "1.0.0", 18 | "com.unity.modules.imageconversion": "1.0.0", 19 | "com.unity.modules.imgui": "1.0.0", 20 | "com.unity.modules.jsonserialize": "1.0.0", 21 | "com.unity.modules.particlesystem": "1.0.0", 22 | "com.unity.modules.physics": "1.0.0", 23 | "com.unity.modules.physics2d": "1.0.0", 24 | "com.unity.modules.screencapture": "1.0.0", 25 | "com.unity.modules.terrain": "1.0.0", 26 | "com.unity.modules.terrainphysics": "1.0.0", 27 | "com.unity.modules.tilemap": "1.0.0", 28 | "com.unity.modules.ui": "1.0.0", 29 | "com.unity.modules.uielements": "1.0.0", 30 | "com.unity.modules.umbra": "1.0.0", 31 | "com.unity.modules.unityanalytics": "1.0.0", 32 | "com.unity.modules.unitywebrequest": "1.0.0", 33 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 34 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 35 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 36 | "com.unity.modules.unitywebrequestwww": "1.0.0", 37 | "com.unity.modules.vehicles": "1.0.0", 38 | "com.unity.modules.video": "1.0.0", 39 | "com.unity.modules.vr": "1.0.0", 40 | "com.unity.modules.wind": "1.0.0", 41 | "com.unity.modules.xr": "1.0.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 10 7 | m_Gravity: {x: 0, y: -30, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: d926ceffc800c0ffc800c0ffffffffffc903c0ffc800c0ffffffffffffffffffd82fceffd92fceffc92bc7ffc827c4ffc800c0ffc92fdeffc800c0ffc800c0ffc804deffc927dfffc92fdbffc923d7ffc820dfffc800c0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ReuseCollisionCallbacks: 0 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 0 9 | path: 10 | guid: 00000000000000000000000000000000 11 | - enabled: 1 12 | path: Assets/GridBased/Game/PreviewIntro.unity 13 | guid: 27c1f8cff9f1b4c28999b922b066eedf 14 | - enabled: 1 15 | path: Assets/GridBased/Game/Overworld.unity 16 | guid: 8cc85216937d84bdf9f01db408b60ea5 17 | - enabled: 1 18 | path: Assets/GridBased/Game/Encounter.unity 19 | guid: e54c3904610514d36b9e81acab88faf8 20 | - enabled: 1 21 | path: Assets/GridBased/Game/GameOver.unity 22 | guid: 7a1b838306a914041bc6efb3ebaf64ed 23 | m_configObjects: {} 24 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 4 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 0 16 | m_EtcTextureFastCompressor: 2 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 5 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 1 27 | m_EnterPlayModeOptions: 2 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 11400000, guid: d6c7a1da8533a4fe49d7272620046ed6, 45 | type: 2} 46 | m_TransparencySortMode: 3 47 | m_TransparencySortAxis: {x: 0, y: 1, z: 0} 48 | m_DefaultRenderingPath: 1 49 | m_DefaultMobileRenderingPath: 1 50 | m_TierSettings: 51 | - serializedVersion: 5 52 | m_BuildTarget: 1 53 | m_Tier: 2 54 | m_Settings: 55 | standardShaderQuality: 2 56 | renderingPath: 1 57 | hdrMode: 1 58 | realtimeGICPUUsage: 50 59 | useReflectionProbeBoxProjection: 1 60 | useReflectionProbeBlending: 1 61 | useHDR: 1 62 | useDetailNormalMap: 1 63 | useCascadedShadowMaps: 1 64 | prefer32BitShadowMaps: 0 65 | enableLPPV: 1 66 | useDitherMaskForAlphaBlendedShadows: 1 67 | m_Automatic: 1 68 | - serializedVersion: 5 69 | m_BuildTarget: 1 70 | m_Tier: 1 71 | m_Settings: 72 | standardShaderQuality: 2 73 | renderingPath: 1 74 | hdrMode: 1 75 | realtimeGICPUUsage: 25 76 | useReflectionProbeBoxProjection: 1 77 | useReflectionProbeBlending: 1 78 | useHDR: 1 79 | useDetailNormalMap: 1 80 | useCascadedShadowMaps: 1 81 | prefer32BitShadowMaps: 0 82 | enableLPPV: 1 83 | useDitherMaskForAlphaBlendedShadows: 1 84 | m_Automatic: 1 85 | - serializedVersion: 5 86 | m_BuildTarget: 1 87 | m_Tier: 0 88 | m_Settings: 89 | standardShaderQuality: 2 90 | renderingPath: 3 91 | hdrMode: 1 92 | realtimeGICPUUsage: 25 93 | useReflectionProbeBoxProjection: 1 94 | useReflectionProbeBlending: 1 95 | useHDR: 1 96 | useDetailNormalMap: 1 97 | useCascadedShadowMaps: 1 98 | prefer32BitShadowMaps: 0 99 | enableLPPV: 1 100 | useDitherMaskForAlphaBlendedShadows: 1 101 | m_Automatic: 1 102 | - serializedVersion: 5 103 | m_BuildTarget: 4 104 | m_Tier: 0 105 | m_Settings: 106 | standardShaderQuality: 0 107 | renderingPath: 1 108 | hdrMode: 2 109 | realtimeGICPUUsage: 25 110 | useReflectionProbeBoxProjection: 0 111 | useReflectionProbeBlending: 0 112 | useHDR: 1 113 | useDetailNormalMap: 0 114 | useCascadedShadowMaps: 0 115 | prefer32BitShadowMaps: 0 116 | enableLPPV: 0 117 | useDitherMaskForAlphaBlendedShadows: 0 118 | m_Automatic: 0 119 | - serializedVersion: 5 120 | m_BuildTarget: 4 121 | m_Tier: 1 122 | m_Settings: 123 | standardShaderQuality: 1 124 | renderingPath: 1 125 | hdrMode: 2 126 | realtimeGICPUUsage: 25 127 | useReflectionProbeBoxProjection: 0 128 | useReflectionProbeBlending: 0 129 | useHDR: 1 130 | useDetailNormalMap: 0 131 | useCascadedShadowMaps: 0 132 | prefer32BitShadowMaps: 0 133 | enableLPPV: 0 134 | useDitherMaskForAlphaBlendedShadows: 0 135 | m_Automatic: 0 136 | - serializedVersion: 5 137 | m_BuildTarget: 4 138 | m_Tier: 2 139 | m_Settings: 140 | standardShaderQuality: 2 141 | renderingPath: 1 142 | hdrMode: 2 143 | realtimeGICPUUsage: 25 144 | useReflectionProbeBoxProjection: 0 145 | useReflectionProbeBlending: 0 146 | useHDR: 1 147 | useDetailNormalMap: 0 148 | useCascadedShadowMaps: 0 149 | prefer32BitShadowMaps: 0 150 | enableLPPV: 0 151 | useDitherMaskForAlphaBlendedShadows: 0 152 | m_Automatic: 0 153 | - serializedVersion: 5 154 | m_BuildTarget: 13 155 | m_Tier: 2 156 | m_Settings: 157 | standardShaderQuality: 2 158 | renderingPath: 1 159 | hdrMode: 1 160 | realtimeGICPUUsage: 75 161 | useReflectionProbeBoxProjection: 1 162 | useReflectionProbeBlending: 1 163 | useHDR: 1 164 | useDetailNormalMap: 1 165 | useCascadedShadowMaps: 1 166 | prefer32BitShadowMaps: 0 167 | enableLPPV: 1 168 | useDitherMaskForAlphaBlendedShadows: 1 169 | m_Automatic: 1 170 | m_LightmapStripping: 0 171 | m_FogStripping: 0 172 | m_InstancingStripping: 0 173 | m_LightmapKeepPlain: 1 174 | m_LightmapKeepDirCombined: 1 175 | m_LightmapKeepDynamicPlain: 1 176 | m_LightmapKeepDynamicDirCombined: 1 177 | m_LightmapKeepShadowMask: 1 178 | m_LightmapKeepSubtractive: 1 179 | m_FogKeepLinear: 1 180 | m_FogKeepExp: 1 181 | m_FogKeepExp2: 1 182 | m_AlbedoSwatchInfos: [] 183 | m_LightsUseLinearIntensity: 1 184 | m_LightsUseColorTemperature: 0 185 | m_LogWhenShaderIsCompiled: 0 186 | m_AllowEnlightenSupportForUpgradedProject: 1 187 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.75 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfollington/unity-tooltip-system/3523257c5a0873302c6747054948756b454f7f56/ProjectSettings/NetworkManager.asset -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 0 46 | m_AutoSyncTransforms: 1 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: c924ccffc800c0ffc800c0ffffffffffc800c0ffc800c0ffffffffffffffffffc825ccffc800c0ffc9a5cfffc800c0ffc800c0ffc9a5cfffc800c0ffc824c0ffc824c8ffc824c8ffc925ccffc925cfffc800f0ffc800f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.3.7f1 2 | m_EditorVersionWithRevision: 2019.3.7f1 (6437fd74d35d) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Fastest 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 4 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | customRenderPipeline: {fileID: 0} 44 | excludedTargetPlatforms: [] 45 | - serializedVersion: 2 46 | name: Fast 47 | pixelLightCount: 0 48 | shadows: 0 49 | shadowResolution: 0 50 | shadowProjection: 1 51 | shadowCascades: 1 52 | shadowDistance: 20 53 | shadowNearPlaneOffset: 3 54 | shadowCascade2Split: 0.33333334 55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 56 | shadowmaskMode: 0 57 | skinWeights: 2 58 | textureQuality: 0 59 | anisotropicTextures: 0 60 | antiAliasing: 0 61 | softParticles: 0 62 | softVegetation: 0 63 | realtimeReflectionProbes: 0 64 | billboardsFaceCameraPosition: 0 65 | vSyncCount: 1 66 | lodBias: 0.4 67 | maximumLODLevel: 0 68 | streamingMipmapsActive: 0 69 | streamingMipmapsAddAllCameras: 1 70 | streamingMipmapsMemoryBudget: 512 71 | streamingMipmapsRenderersPerFrame: 512 72 | streamingMipmapsMaxLevelReduction: 2 73 | streamingMipmapsMaxFileIORequests: 1024 74 | particleRaycastBudget: 16 75 | asyncUploadTimeSlice: 2 76 | asyncUploadBufferSize: 4 77 | asyncUploadPersistentBuffer: 1 78 | resolutionScalingFixedDPIFactor: 1 79 | customRenderPipeline: {fileID: 0} 80 | excludedTargetPlatforms: [] 81 | - serializedVersion: 2 82 | name: Simple 83 | pixelLightCount: 1 84 | shadows: 1 85 | shadowResolution: 0 86 | shadowProjection: 1 87 | shadowCascades: 1 88 | shadowDistance: 20 89 | shadowNearPlaneOffset: 3 90 | shadowCascade2Split: 0.33333334 91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 92 | shadowmaskMode: 0 93 | skinWeights: 2 94 | textureQuality: 0 95 | anisotropicTextures: 1 96 | antiAliasing: 0 97 | softParticles: 0 98 | softVegetation: 0 99 | realtimeReflectionProbes: 0 100 | billboardsFaceCameraPosition: 0 101 | vSyncCount: 0 102 | lodBias: 0.7 103 | maximumLODLevel: 0 104 | streamingMipmapsActive: 0 105 | streamingMipmapsAddAllCameras: 1 106 | streamingMipmapsMemoryBudget: 512 107 | streamingMipmapsRenderersPerFrame: 512 108 | streamingMipmapsMaxLevelReduction: 2 109 | streamingMipmapsMaxFileIORequests: 1024 110 | particleRaycastBudget: 64 111 | asyncUploadTimeSlice: 2 112 | asyncUploadBufferSize: 4 113 | asyncUploadPersistentBuffer: 1 114 | resolutionScalingFixedDPIFactor: 1 115 | customRenderPipeline: {fileID: 0} 116 | excludedTargetPlatforms: [] 117 | - serializedVersion: 2 118 | name: Good 119 | pixelLightCount: 2 120 | shadows: 1 121 | shadowResolution: 1 122 | shadowProjection: 1 123 | shadowCascades: 2 124 | shadowDistance: 40 125 | shadowNearPlaneOffset: 3 126 | shadowCascade2Split: 0.33333334 127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 128 | shadowmaskMode: 1 129 | skinWeights: 2 130 | textureQuality: 0 131 | anisotropicTextures: 1 132 | antiAliasing: 0 133 | softParticles: 0 134 | softVegetation: 1 135 | realtimeReflectionProbes: 1 136 | billboardsFaceCameraPosition: 1 137 | vSyncCount: 1 138 | lodBias: 1 139 | maximumLODLevel: 0 140 | streamingMipmapsActive: 0 141 | streamingMipmapsAddAllCameras: 1 142 | streamingMipmapsMemoryBudget: 512 143 | streamingMipmapsRenderersPerFrame: 512 144 | streamingMipmapsMaxLevelReduction: 2 145 | streamingMipmapsMaxFileIORequests: 1024 146 | particleRaycastBudget: 256 147 | asyncUploadTimeSlice: 2 148 | asyncUploadBufferSize: 4 149 | asyncUploadPersistentBuffer: 1 150 | resolutionScalingFixedDPIFactor: 1 151 | customRenderPipeline: {fileID: 0} 152 | excludedTargetPlatforms: [] 153 | - serializedVersion: 2 154 | name: Beautiful 155 | pixelLightCount: 3 156 | shadows: 2 157 | shadowResolution: 2 158 | shadowProjection: 1 159 | shadowCascades: 2 160 | shadowDistance: 70 161 | shadowNearPlaneOffset: 3 162 | shadowCascade2Split: 0.33333334 163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 164 | shadowmaskMode: 1 165 | skinWeights: 4 166 | textureQuality: 0 167 | anisotropicTextures: 2 168 | antiAliasing: 2 169 | softParticles: 1 170 | softVegetation: 1 171 | realtimeReflectionProbes: 1 172 | billboardsFaceCameraPosition: 1 173 | vSyncCount: 1 174 | lodBias: 1.5 175 | maximumLODLevel: 0 176 | streamingMipmapsActive: 0 177 | streamingMipmapsAddAllCameras: 1 178 | streamingMipmapsMemoryBudget: 512 179 | streamingMipmapsRenderersPerFrame: 512 180 | streamingMipmapsMaxLevelReduction: 2 181 | streamingMipmapsMaxFileIORequests: 1024 182 | particleRaycastBudget: 1024 183 | asyncUploadTimeSlice: 2 184 | asyncUploadBufferSize: 4 185 | asyncUploadPersistentBuffer: 1 186 | resolutionScalingFixedDPIFactor: 1 187 | customRenderPipeline: {fileID: 0} 188 | excludedTargetPlatforms: [] 189 | - serializedVersion: 2 190 | name: Fantastic 191 | pixelLightCount: 20 192 | shadows: 2 193 | shadowResolution: 3 194 | shadowProjection: 1 195 | shadowCascades: 4 196 | shadowDistance: 1000 197 | shadowNearPlaneOffset: 3 198 | shadowCascade2Split: 0.33333334 199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 200 | shadowmaskMode: 1 201 | skinWeights: 4 202 | textureQuality: 0 203 | anisotropicTextures: 2 204 | antiAliasing: 0 205 | softParticles: 0 206 | softVegetation: 1 207 | realtimeReflectionProbes: 1 208 | billboardsFaceCameraPosition: 1 209 | vSyncCount: 1 210 | lodBias: 2 211 | maximumLODLevel: 0 212 | streamingMipmapsActive: 0 213 | streamingMipmapsAddAllCameras: 1 214 | streamingMipmapsMemoryBudget: 512 215 | streamingMipmapsRenderersPerFrame: 512 216 | streamingMipmapsMaxLevelReduction: 2 217 | streamingMipmapsMaxFileIORequests: 1024 218 | particleRaycastBudget: 4096 219 | asyncUploadTimeSlice: 2 220 | asyncUploadBufferSize: 4 221 | asyncUploadPersistentBuffer: 1 222 | resolutionScalingFixedDPIFactor: 1 223 | customRenderPipeline: {fileID: 0} 224 | excludedTargetPlatforms: [] 225 | - serializedVersion: 2 226 | name: _custom 227 | pixelLightCount: 20 228 | shadows: 2 229 | shadowResolution: 3 230 | shadowProjection: 1 231 | shadowCascades: 4 232 | shadowDistance: 1000 233 | shadowNearPlaneOffset: 3 234 | shadowCascade2Split: 0.33333334 235 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 236 | shadowmaskMode: 1 237 | skinWeights: 1 238 | textureQuality: 0 239 | anisotropicTextures: 0 240 | antiAliasing: 0 241 | softParticles: 0 242 | softVegetation: 1 243 | realtimeReflectionProbes: 0 244 | billboardsFaceCameraPosition: 0 245 | vSyncCount: 2 246 | lodBias: 0.3 247 | maximumLODLevel: 0 248 | streamingMipmapsActive: 0 249 | streamingMipmapsAddAllCameras: 1 250 | streamingMipmapsMemoryBudget: 512 251 | streamingMipmapsRenderersPerFrame: 512 252 | streamingMipmapsMaxLevelReduction: 2 253 | streamingMipmapsMaxFileIORequests: 1024 254 | particleRaycastBudget: 4 255 | asyncUploadTimeSlice: 2 256 | asyncUploadBufferSize: 4 257 | asyncUploadPersistentBuffer: 1 258 | resolutionScalingFixedDPIFactor: 1 259 | customRenderPipeline: {fileID: 0} 260 | excludedTargetPlatforms: [] 261 | m_PerPlatformDefaultQuality: 262 | Standalone: 5 263 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: 7 | - LevelBounds 8 | - FX 9 | - Enemy 10 | - World 11 | - asteroid 12 | - ship 13 | layers: 14 | - Default 15 | - TransparentFX 16 | - Ignore Raycast 17 | - 18 | - Water 19 | - UI 20 | - 21 | - 22 | - Obstacles 23 | - Ground 24 | - Player 25 | - ObstaclesDoors 26 | - NoPathfinding 27 | - Enemies 28 | - NoCollisions 29 | - Hole 30 | - MovingPlatform 31 | - FallingPlatform 32 | - Projectile 33 | - Triggers 34 | - Hitbox 35 | - Hurtbox 36 | - 37 | - Floor 38 | - 39 | - 40 | - 41 | - 42 | - 43 | - 44 | - 45 | - 46 | m_SortingLayers: 47 | - name: Default 48 | uniqueID: 0 49 | locked: 0 50 | - name: Background 51 | uniqueID: 1798043625 52 | locked: 0 53 | - name: Ground 54 | uniqueID: 2296623839 55 | locked: 0 56 | - name: Foreground 57 | uniqueID: 1603220759 58 | locked: 0 59 | - name: Characters 60 | uniqueID: 47421343 61 | locked: 0 62 | - name: Above 63 | uniqueID: 961700441 64 | locked: 0 65 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity Tooltip System 2 | 3 | [![Twitter](https://img.shields.io/twitter/follow/vivavolt?label=%40vivavolt&style=flat&colorA=000000&colorB=000000&logo=twitter&logoColor=000000)](https://twitter.com/vivavolt) 4 | [![Donate (ETH)](https://img.shields.io/badge/Donate-(ETH)-f5f5f5?style=flat&colorA=000000&colorB=000000)](https://blockchain.com/eth/address/0x981e493b795A7a28c43Bf8d7a8E125C419435Fa7) 5 | [![Donate ($)](https://img.shields.io/badge/Donate-($)-f5f5f5?style=flat&colorA=000000&colorB=000000)](https://ko-fi.com/vivavolt) 6 | ![Language](https://img.shields.io/github/languages/top/bfollington/unity-tooltip-system?style=flat&colorA=000000&colorB=000000) 7 | ![License](https://img.shields.io/github/license/bfollington/unity-tooltip-system?style=flat&colorA=000000&colorB=000000) 8 | 9 | A simple but flexible tooltip system for Unity3d 10 | 11 |

12 | 13 |

14 | 15 | This is cut-down and isolated version of the tooltip system we built for [The Song of the Fae](https://twopm.studio/sotf). 16 | 17 | The most important files are: 18 | 19 | - `ReactToPointer.cs` 20 | - `ControlSystem.cs` 21 | 22 | But there are some other handy scripts in here for resizing UI elements to fit text etc. 23 | 24 | Feel free to reach out with any questions about how this works or how to extends it on twitter (@vivavolt). 25 | 26 | --- 27 | 28 |

29 | 30 |

31 | -------------------------------------------------------------------------------- /tooltip-example.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{35bfcea9-b36b-4abb-3a35-d85a58ff36c8}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {35bfcea9-b36b-4abb-3a35-d85a58ff36c8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {35bfcea9-b36b-4abb-3a35-d85a58ff36c8}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {35bfcea9-b36b-4abb-3a35-d85a58ff36c8}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {35bfcea9-b36b-4abb-3a35-d85a58ff36c8}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | --------------------------------------------------------------------------------