diff options
author | chai <chaifix@163.com> | 2021-04-07 21:13:03 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-04-07 21:13:03 +0800 |
commit | d69611d66431e28ea35477c6781a00d57ae04fa3 (patch) | |
tree | c76b3147642a6d1749406f25f2fdacce4ba7a272 /Assets/Test/UIEffect/Program | |
parent | c7e2d8f773baa3955f17402b842eb43329c5f3a0 (diff) |
*因为没有meta,导致missing,删除UIEffect
Diffstat (limited to 'Assets/Test/UIEffect/Program')
65 files changed, 0 insertions, 4791 deletions
diff --git a/Assets/Test/UIEffect/Program/Common.meta b/Assets/Test/UIEffect/Program/Common.meta deleted file mode 100644 index 36580c4..0000000 --- a/Assets/Test/UIEffect/Program/Common.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 04feaefc7cdee4c13abcd553a1a6e3a9 -folderAsset: yes -timeCreated: 1528368324 -licenseType: Pro -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs b/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs deleted file mode 100644 index 0cf2d7a..0000000 --- a/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs +++ /dev/null @@ -1,193 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Abstract effect base for UI. - /// </summary> - [DisallowMultipleComponent] - public abstract class BaseMaterialEffect : BaseMeshEffect, IParameterTexture, IMaterialModifier - { - protected static readonly Hash128 k_InvalidHash = new Hash128(); - protected static readonly List<UIVertex> s_TempVerts = new List<UIVertex>(); - private static readonly StringBuilder s_StringBuilder = new StringBuilder(); - - Hash128 _effectMaterialHash; - - /// <summary> - /// Gets or sets the parameter index. - /// </summary> - public int parameterIndex { get; set; } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public virtual ParameterTexture paramTex - { - get { return null; } - } - - /// <summary> - /// Mark the vertices as dirty. - /// </summary> - public void SetMaterialDirty() - { - connector.SetMaterialDirty(graphic); - - foreach (var effect in syncEffects) - { - effect.SetMaterialDirty(); - } - } - - public virtual Hash128 GetMaterialHash(Material baseMaterial) - { - return k_InvalidHash; - } - - public Material GetModifiedMaterial(Material baseMaterial) - { - return GetModifiedMaterial(baseMaterial, graphic); - } - - public virtual Material GetModifiedMaterial(Material baseMaterial, Graphic graphic) - { - if (!isActiveAndEnabled) return baseMaterial; - - var oldHash = _effectMaterialHash; - _effectMaterialHash = GetMaterialHash(baseMaterial); - var modifiedMaterial = baseMaterial; - if (_effectMaterialHash.isValid) - { - modifiedMaterial = MaterialCache.Register(baseMaterial, _effectMaterialHash, ModifyMaterial, graphic); - } - - MaterialCache.Unregister(oldHash); - - return modifiedMaterial; - } - - // protected bool isTMProMobile (Material material) - // { - // return material && material.shader && material.shader.name.StartsWith ("TextMeshPro/Mobile/", StringComparison.Ordinal); - // } - - public virtual void ModifyMaterial(Material newMaterial, Graphic graphic) - { - if (isActiveAndEnabled && paramTex != null) - paramTex.RegisterMaterial(newMaterial); - } - - protected void SetShaderVariants(Material newMaterial, params object[] variants) - { - // Set shader keywords as variants - var keywords = variants.Where(x => 0 < (int) x) - .Select(x => x.ToString().ToUpper()) - .Concat(newMaterial.shaderKeywords) - .Distinct() - .ToArray(); - newMaterial.shaderKeywords = keywords; - - // Add variant name - s_StringBuilder.Length = 0; - s_StringBuilder.Append(Path.GetFileName(newMaterial.shader.name)); - foreach (var keyword in keywords) - { - s_StringBuilder.Append("-"); - s_StringBuilder.Append(keyword); - } - - newMaterial.name = s_StringBuilder.ToString(); - } - -#if UNITY_EDITOR - protected override void Reset() - { - if (!isActiveAndEnabled) return; - SetMaterialDirty(); - SetVerticesDirty(); - SetEffectParamsDirty(); - } - - protected override void OnValidate() - { - if (!isActiveAndEnabled) return; - SetVerticesDirty(); - SetEffectParamsDirty(); - } -#endif - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected override void OnEnable() - { - base.OnEnable(); - - if (paramTex != null) - { - paramTex.Register(this); - } - - SetMaterialDirty(); - SetEffectParamsDirty(); - - // foreach (var mr in GetComponentsInChildren<UIEffectMaterialResolver> ()) - // { - // mr.GetComponent<Graphic> ().SetMaterialDirty (); - // mr.GetComponent<Graphic> ().SetVerticesDirty (); - // } - } - - /// <summary> - /// This function is called when the behaviour becomes disabled () or inactive. - /// </summary> - protected override void OnDisable() - { - base.OnDisable(); - - SetMaterialDirty(); - - if (paramTex != null) - { - paramTex.Unregister(this); - } - - MaterialCache.Unregister(_effectMaterialHash); - _effectMaterialHash = k_InvalidHash; - } - - // protected override void OnDidApplyAnimationProperties() - // { - // SetEffectParamsDirty(); - // } - - // protected override void OnTextChanged (UnityEngine.Object obj) - // { - // base.OnTextChanged (obj); - // - // - // foreach (var sm in GetComponentsInChildren<TMPro.TMP_SubMeshUI> ()) - // { - // if(!sm.GetComponent<UIEffectMaterialResolver>()) - // { - // var mr = sm.gameObject.AddComponent<UIEffectMaterialResolver> (); - // - // targetGraphic.SetAllDirty (); - // //targetGraphic.SetVerticesDirty (); - // - // //mr.GetComponent<Graphic> ().SetMaterialDirty (); - // //mr.GetComponent<Graphic> ().SetVerticesDirty (); - // - // - // } - // } - // } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs.meta b/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs.meta deleted file mode 100644 index 7b7e351..0000000 --- a/Assets/Test/UIEffect/Program/Common/BaseMaterialEffect.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e8b7ed62cf1444b4ebfc5e5338bc6682 -timeCreated: 1485321967 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs b/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs deleted file mode 100644 index 40d4e66..0000000 --- a/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs +++ /dev/null @@ -1,229 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.EventSystems; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Base class for effects that modify the generated Mesh. - /// It works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI. - /// </summary> - [RequireComponent(typeof(Graphic))] - [RequireComponent(typeof(RectTransform))] - [ExecuteInEditMode] - public abstract class BaseMeshEffect : UIBehaviour, IMeshModifier - { - RectTransform _rectTransform; - Graphic _graphic; - GraphicConnector _connector; - - /// <summary> - /// The Graphic attached to this GameObject. - /// </summary> - protected GraphicConnector connector - { - get { return _connector ?? (_connector = GraphicConnector.FindConnector(graphic)); } - } - - /// <summary> - /// The Graphic attached to this GameObject. - /// </summary> - public Graphic graphic - { - get { return _graphic ? _graphic : _graphic = GetComponent<Graphic>(); } - } - - /// <summary> - /// The RectTransform attached to this GameObject. - /// </summary> - protected RectTransform rectTransform - { - get { return _rectTransform ? _rectTransform : _rectTransform = GetComponent<RectTransform>(); } - } - - internal readonly List<UISyncEffect> syncEffects = new List<UISyncEffect>(0); - - /// <summary> - /// Call used to modify mesh. (legacy) - /// </summary> - /// <param name="mesh">Mesh.</param> - public virtual void ModifyMesh(Mesh mesh) - { - } - - /// <summary> - /// Call used to modify mesh. - /// </summary> - /// <param name="vh">VertexHelper.</param> - public virtual void ModifyMesh(VertexHelper vh) - { - ModifyMesh(vh, graphic); - } - - public virtual void ModifyMesh(VertexHelper vh, Graphic graphic) - { - } - - /// <summary> - /// Mark the vertices as dirty. - /// </summary> - protected virtual void SetVerticesDirty() - { - connector.SetVerticesDirty(graphic); - - foreach (var effect in syncEffects) - { - effect.SetVerticesDirty(); - } - -// #if TMP_PRESENT -// if (textMeshPro) -// { -// foreach (var info in textMeshPro.textInfo.meshInfo) -// { -// var mesh = info.mesh; -// if (mesh) -// { -// mesh.Clear(); -// mesh.vertices = info.vertices; -// mesh.uv = info.uvs0; -// mesh.uv2 = info.uvs2; -// mesh.colors32 = info.colors32; -// mesh.normals = info.normals; -// mesh.tangents = info.tangents; -// mesh.triangles = info.triangles; -// } -// } -// -// if (canvasRenderer) -// { -// canvasRenderer.SetMesh(textMeshPro.mesh); -// -// GetComponentsInChildren(false, s_SubMeshUIs); -// foreach (var sm in s_SubMeshUIs) -// { -// sm.canvasRenderer.SetMesh(sm.mesh); -// } -// -// s_SubMeshUIs.Clear(); -// } -// -// textMeshPro.havePropertiesChanged = true; -// } -// else -// #endif -// if (graphic) -// { -// graphic.SetVerticesDirty(); -// } - } - - - //################################ - // Protected Members. - //################################ - /// <summary> - /// Should the effect modify the mesh directly for TMPro? - /// </summary> - // protected virtual bool isLegacyMeshModifier - // { - // get { return false; } - // } -// protected virtual void Initialize() -// { -// if (_initialized) return; -// -// _initialized = true; -// _graphic = _graphic ? _graphic : GetComponent<Graphic>(); -// -// _connector = GraphicConnector.FindConnector(_graphic); -// -// // _canvasRenderer = _canvasRenderer ?? GetComponent<CanvasRenderer> (); -// _rectTransform = _rectTransform ? _rectTransform : GetComponent<RectTransform>(); -// // #if TMP_PRESENT -// // _textMeshPro = _textMeshPro ?? GetComponent<TMP_Text> (); -// // #endif -// } - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected override void OnEnable() - { - connector.OnEnable(graphic); - SetVerticesDirty(); - - // SetVerticesDirty(); -// #if TMP_PRESENT - // if (textMeshPro) - // { - // TMPro_EventManager.TEXT_CHANGED_EVENT.Add (OnTextChanged); - // } - // #endif - // - // #if UNITY_EDITOR && TMP_PRESENT - // if (graphic && textMeshPro) - // { - // GraphicRebuildTracker.TrackGraphic (graphic); - // } - // #endif - // - // #if UNITY_5_6_OR_NEWER - // if (graphic) - // { - // AdditionalCanvasShaderChannels channels = requiredChannels; - // var canvas = graphic.canvas; - // if (canvas && (canvas.additionalShaderChannels & channels) != channels) - // { - // Debug.LogWarningFormat (this, "Enable {1} of Canvas.additionalShaderChannels to use {0}.", GetType ().Name, channels); - // } - // } - // #endif - } - - /// <summary> - /// This function is called when the behaviour becomes disabled () or inactive. - /// </summary> - protected override void OnDisable() - { - connector.OnDisable(graphic); - SetVerticesDirty(); - } - - /// <summary> - /// Mark the effect parameters as dirty. - /// </summary> - protected virtual void SetEffectParamsDirty() - { - if (!isActiveAndEnabled) return; - SetVerticesDirty(); - } - - /// <summary> - /// Callback for when properties have been changed by animation. - /// </summary> - protected override void OnDidApplyAnimationProperties() - { - if (!isActiveAndEnabled) return; - SetEffectParamsDirty(); - } - -#if UNITY_EDITOR - protected override void Reset() - { - if (!isActiveAndEnabled) return; - SetVerticesDirty(); - } - - /// <summary> - /// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only). - /// </summary> - protected override void OnValidate() - { - if (!isActiveAndEnabled) return; - SetEffectParamsDirty(); - } -#endif - } -} diff --git a/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs.meta b/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs.meta deleted file mode 100644 index 1d3c8d1..0000000 --- a/Assets/Test/UIEffect/Program/Common/BaseMeshEffect.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 229ee7044e2514b0e9bd9fd40a2baa3a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs b/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs deleted file mode 100644 index f60165a..0000000 --- a/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs +++ /dev/null @@ -1,154 +0,0 @@ -using UnityEngine; -using System; -using System.Collections.Generic; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Effect player. - /// </summary> - [Serializable] - public class EffectPlayer - { - //################################ - // Public Members. - //################################ - /// <summary> - /// Gets or sets a value indicating whether is playing. - /// </summary> - [Header("Effect Player")] [Tooltip("Playing.")] - public bool play = false; - - /// <summary> - /// Gets or sets the delay before looping. - /// </summary> - [Tooltip("Initial play delay.")] [Range(0f, 10f)] - public float initialPlayDelay = 0; - - /// <summary> - /// Gets or sets the duration. - /// </summary> - [Tooltip("Duration.")] [Range(0.01f, 10f)] - public float duration = 1; - - /// <summary> - /// Gets or sets a value indicating whether can loop. - /// </summary> - [Tooltip("Loop.")] public bool loop = false; - - /// <summary> - /// Gets or sets the delay before looping. - /// </summary> - [Tooltip("Delay before looping.")] [Range(0f, 10f)] - public float loopDelay = 0; - - /// <summary> - /// Gets or sets the update mode. - /// </summary> - [Tooltip("Update mode")] public AnimatorUpdateMode updateMode = AnimatorUpdateMode.Normal; - - static List<Action> s_UpdateActions; - - /// <summary> - /// Register player. - /// </summary> - public void OnEnable(Action<float> callback = null) - { - if (s_UpdateActions == null) - { - s_UpdateActions = new List<Action>(); - Canvas.willRenderCanvases += () => - { - var count = s_UpdateActions.Count; - for (int i = 0; i < count; i++) - { - s_UpdateActions[i].Invoke(); - } - }; - } - - s_UpdateActions.Add(OnWillRenderCanvases); - - if (play) - { - _time = -initialPlayDelay; - } - else - { - _time = 0; - } - - _callback = callback; - } - - /// <summary> - /// Unregister player. - /// </summary> - public void OnDisable() - { - _callback = null; - s_UpdateActions.Remove(OnWillRenderCanvases); - } - - /// <summary> - /// Start playing. - /// </summary> - public void Play(bool reset, Action<float> callback = null) - { - if (reset) - { - _time = 0; - } - - play = true; - if (callback != null) - { - _callback = callback; - } - } - - /// <summary> - /// Stop playing. - /// </summary> - public void Stop(bool reset) - { - if (reset) - { - _time = 0; - if (_callback != null) - { - _callback(_time); - } - } - - play = false; - } - - //################################ - // Private Members. - //################################ - float _time = 0; - Action<float> _callback; - - void OnWillRenderCanvases() - { - if (!play || !Application.isPlaying || _callback == null) - { - return; - } - - _time += updateMode == AnimatorUpdateMode.UnscaledTime - ? Time.unscaledDeltaTime - : Time.deltaTime; - var current = _time / duration; - - if (duration <= _time) - { - play = loop; - _time = loop ? -loopDelay : 0; - } - - _callback(current); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs.meta b/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs.meta deleted file mode 100644 index 661e073..0000000 --- a/Assets/Test/UIEffect/Program/Common/EffectPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 1656fb67110cd44298010d95c324e87a -timeCreated: 1528296875 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs b/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs deleted file mode 100644 index 3046297..0000000 --- a/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs +++ /dev/null @@ -1,151 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; -using System; -using System.Collections.Generic; - -namespace Coffee.UIEffects -{ - public class GraphicConnector - { - private static readonly List<GraphicConnector> s_Connectors = new List<GraphicConnector>(); - - private static readonly Dictionary<Type, GraphicConnector> s_ConnectorMap = - new Dictionary<Type, GraphicConnector>(); - - private static readonly GraphicConnector s_EmptyConnector = new GraphicConnector(); - -#if UNITY_EDITOR - [UnityEditor.InitializeOnLoadMethod] -#endif - [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] - private static void Init() - { - AddConnector(new GraphicConnector()); - } - - protected static void AddConnector(GraphicConnector connector) - { - s_Connectors.Add(connector); - s_Connectors.Sort((x, y) => y.priority - x.priority); - } - - public static GraphicConnector FindConnector(Graphic graphic) - { - if (!graphic) return s_EmptyConnector; - - var type = graphic.GetType(); - GraphicConnector connector = null; - if (s_ConnectorMap.TryGetValue(type, out connector)) return connector; - - foreach (var c in s_Connectors) - { - if (!c.IsValid(graphic)) continue; - - s_ConnectorMap.Add(type, c); - return c; - } - - return s_EmptyConnector; - } - - /// <summary> - /// Connector priority. - /// </summary> - protected virtual int priority - { - get { return -1; } - } - - /// <summary> - /// Extra channel. - /// </summary> - public virtual AdditionalCanvasShaderChannels extraChannel - { - get { return AdditionalCanvasShaderChannels.TexCoord1; } - } - - /// <summary> - /// The connector is valid for the component. - /// </summary> - protected virtual bool IsValid(Graphic graphic) - { - return true; - } - - /// <summary> - /// Find effect shader. - /// </summary> - public virtual Shader FindShader(string shaderName) - { - return Shader.Find("Hidden/" + shaderName); - } - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - public virtual void OnEnable(Graphic graphic) - { - } - - /// <summary> - /// This function is called when the behaviour becomes disabled () or inactive. - /// </summary> - public virtual void OnDisable(Graphic graphic) - { - } - - /// <summary> - /// Mark the vertices as dirty. - /// </summary> - public virtual void SetVerticesDirty(Graphic graphic) - { - if (graphic) - graphic.SetVerticesDirty(); - } - - /// <summary> - /// Mark the material as dirty. - /// </summary> - public virtual void SetMaterialDirty(Graphic graphic) - { - if (graphic) - graphic.SetMaterialDirty(); - } - - /// <summary> - /// Gets position factor for area. - /// </summary> - public virtual void GetPositionFactor(EffectArea area, int index, Rect rect, Vector2 position, out float x, out float y) - { - if (area == EffectArea.Fit) - { - x = Mathf.Clamp01((position.x - rect.xMin) / rect.width); - y = Mathf.Clamp01((position.y - rect.yMin) / rect.height); - } - else - { - x = Mathf.Clamp01(position.x / rect.width + 0.5f); - y = Mathf.Clamp01(position.y / rect.height + 0.5f); - } - } - - public virtual bool IsText(Graphic graphic) - { - return graphic && graphic is Text; - } - - public virtual void SetExtraChannel(ref UIVertex vertex, Vector2 value) - { - vertex.uv1 = value; - } - - /// <summary> - /// Normalize vertex position by local matrix. - /// </summary> - public virtual void GetNormalizedFactor(EffectArea area, int index, Matrix2x3 matrix, Vector2 position, - out Vector2 normalizedPos) - { - normalizedPos = matrix * position; - } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs.meta b/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs.meta deleted file mode 100644 index 5652017..0000000 --- a/Assets/Test/UIEffect/Program/Common/GraphicConnector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 66636f82e05e6453781a33c8b7da8b93 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/MaterialCache.cs b/Assets/Test/UIEffect/Program/Common/MaterialCache.cs deleted file mode 100644 index 8d8ed93..0000000 --- a/Assets/Test/UIEffect/Program/Common/MaterialCache.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System; -using UnityEngine; -using System.Text; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - public class MaterialCache - { - static Dictionary<Hash128, MaterialEntry> materialMap = new Dictionary<Hash128, MaterialEntry>(); - - private class MaterialEntry - { - public Material material; - public int referenceCount; - - public void Release() - { - if (material) - { - UnityEngine.Object.DestroyImmediate(material, false); - } - - material = null; - } - } - -#if UNITY_EDITOR - [UnityEditor.InitializeOnLoadMethod] - private static void ClearCache() - { - foreach (var entry in materialMap.Values) - { - entry.Release(); - } - - materialMap.Clear(); - } -#endif - - public static Material Register(Material baseMaterial, Hash128 hash, - System.Action<Material, Graphic> onModifyMaterial, Graphic graphic) - { - if (!hash.isValid) return null; - - MaterialEntry entry; - if (!materialMap.TryGetValue(hash, out entry)) - { - entry = new MaterialEntry() - { - material = new Material(baseMaterial) - { - hideFlags = HideFlags.HideAndDontSave, - }, - }; - - onModifyMaterial(entry.material, graphic); - materialMap.Add(hash, entry); - } - - entry.referenceCount++; - return entry.material; - } - - public static void Unregister(Hash128 hash) - { - MaterialEntry entry; - if (!hash.isValid || !materialMap.TryGetValue(hash, out entry)) return; - if (--entry.referenceCount > 0) return; - - entry.Release(); - materialMap.Remove(hash); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/MaterialCache.cs.meta b/Assets/Test/UIEffect/Program/Common/MaterialCache.cs.meta deleted file mode 100644 index 434e1ff..0000000 --- a/Assets/Test/UIEffect/Program/Common/MaterialCache.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 2160d2c55a6100642b6c7ba09df935da -timeCreated: 1528509206 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs b/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs deleted file mode 100644 index ec2cb69..0000000 --- a/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs +++ /dev/null @@ -1,33 +0,0 @@ -using UnityEngine; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Matrix2x3. - /// </summary> - public struct Matrix2x3 - { - public float m00, m01, m02, m10, m11, m12; - - public Matrix2x3(Rect rect, float cos, float sin) - { - const float center = 0.5f; - float dx = -rect.xMin / rect.width - center; - float dy = -rect.yMin / rect.height - center; - m00 = cos / rect.width; - m01 = -sin / rect.height; - m02 = dx * cos - dy * sin + center; - m10 = sin / rect.width; - m11 = cos / rect.height; - m12 = dx * sin + dy * cos + center; - } - - public static Vector2 operator *(Matrix2x3 m, Vector2 v) - { - return new Vector2( - (m.m00 * v.x) + (m.m01 * v.y) + m.m02, - (m.m10 * v.x) + (m.m11 * v.y) + m.m12 - ); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs.meta b/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs.meta deleted file mode 100644 index 70ee757..0000000 --- a/Assets/Test/UIEffect/Program/Common/Matrix2x3.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 5a9b962044ca64867b713425f7e5daab -timeCreated: 1527590245 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/Packer.cs b/Assets/Test/UIEffect/Program/Common/Packer.cs deleted file mode 100644 index ffdb64f..0000000 --- a/Assets/Test/UIEffect/Program/Common/Packer.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public static class Packer -{ - /// <summary> - /// Pack 4 low-precision [0-1] floats values to a float. - /// Each value [0-1] has 64 steps(6 bits). - /// </summary> - public static float ToFloat(float x, float y, float z, float w) - { - x = x < 0 ? 0 : 1 < x ? 1 : x; - y = y < 0 ? 0 : 1 < y ? 1 : y; - z = z < 0 ? 0 : 1 < z ? 1 : z; - w = w < 0 ? 0 : 1 < w ? 1 : w; - const int PRECISION = (1 << 6) - 1; - return (Mathf.FloorToInt(w * PRECISION) << 18) - + (Mathf.FloorToInt(z * PRECISION) << 12) - + (Mathf.FloorToInt(y * PRECISION) << 6) - + Mathf.FloorToInt(x * PRECISION); - } - - /// <summary> - /// Pack 4 low-precision [0-1] floats values to a float. - /// Each value [0-1] has 64 steps(6 bits). - /// </summary> - public static float ToFloat(Vector4 factor) - { - return ToFloat(Mathf.Clamp01(factor.x), Mathf.Clamp01(factor.y), Mathf.Clamp01(factor.z), - Mathf.Clamp01(factor.w)); - } - - /// <summary> - /// Pack 1 middle-precision & 2 low-precision [0-1] floats values to a float. - /// z value [0-1] has 4096 steps(12 bits) and xy value [0-1] has 64 steps(6 bits). - /// </summary> - public static float ToFloat(float x, float y, float z) - { - x = x < 0 ? 0 : 1 < x ? 1 : x; - y = y < 0 ? 0 : 1 < y ? 1 : y; - z = z < 0 ? 0 : 1 < z ? 1 : z; - const int PRECISION = (1 << 8) - 1; - return (Mathf.FloorToInt(z * PRECISION) << 16) - + (Mathf.FloorToInt(y * PRECISION) << 8) - + Mathf.FloorToInt(x * PRECISION); - } - - /// <summary> - /// Pack 2 low-precision [0-1] floats values to a float. - /// Each value [0-1] has 4096 steps(12 bits). - /// </summary> - public static float ToFloat(float x, float y) - { - x = x < 0 ? 0 : 1 < x ? 1 : x; - y = y < 0 ? 0 : 1 < y ? 1 : y; - const int PRECISION = (1 << 12) - 1; - return (Mathf.FloorToInt(y * PRECISION) << 12) - + Mathf.FloorToInt(x * PRECISION); - } -} diff --git a/Assets/Test/UIEffect/Program/Common/Packer.cs.meta b/Assets/Test/UIEffect/Program/Common/Packer.cs.meta deleted file mode 100644 index 4105720..0000000 --- a/Assets/Test/UIEffect/Program/Common/Packer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: b4970b3a69d3b472b8d66c1d92ec7bad -timeCreated: 1527590285 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs b/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs deleted file mode 100644 index 3249828..0000000 --- a/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; -using System; - -namespace Coffee.UIEffects -{ - public interface IParameterTexture - { - int parameterIndex { get; set; } - - ParameterTexture paramTex { get; } - } - - /// <summary> - /// Parameter texture. - /// </summary> - [System.Serializable] - public class ParameterTexture - { - //################################ - // Public Members. - //################################ - - /// <summary> - /// Initializes a new instance of the <see cref="Coffee.UIEffects.ParameterTexture"/> class. - /// </summary> - /// <param name="channels">Channels.</param> - /// <param name="instanceLimit">Instance limit.</param> - /// <param name="propertyName">Property name.</param> - public ParameterTexture(int channels, int instanceLimit, string propertyName) - { - _propertyName = propertyName; - _channels = ((channels - 1) / 4 + 1) * 4; - _instanceLimit = ((instanceLimit - 1) / 2 + 1) * 2; - _data = new byte[_channels * _instanceLimit]; - - _stack = new Stack<int>(_instanceLimit); - for (int i = 1; i < _instanceLimit + 1; i++) - { - _stack.Push(i); - } - } - - - /// <summary> - /// Register the specified target. - /// </summary> - /// <param name="target">Target.</param> - public void Register(IParameterTexture target) - { - Initialize(); - if (target.parameterIndex <= 0 && 0 < _stack.Count) - { - target.parameterIndex = _stack.Pop(); -// Debug.LogFormat("<color=green>@@@ Register {0} : {1}</color>", target, target.parameterIndex); - } - } - - /// <summary> - /// Unregister the specified target. - /// </summary> - /// <param name="target">Target.</param> - public void Unregister(IParameterTexture target) - { - if (0 < target.parameterIndex) - { -// Debug.LogFormat("<color=red>@@@ Unregister {0} : {1}</color>", target, target.parameterIndex); - _stack.Push(target.parameterIndex); - target.parameterIndex = 0; - } - } - - /// <summary> - /// Sets the data. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="channelId">Channel identifier.</param> - /// <param name="value">Value.</param> - public void SetData(IParameterTexture target, int channelId, byte value) - { - int index = (target.parameterIndex - 1) * _channels + channelId; - if (0 < target.parameterIndex && _data[index] != value) - { - _data[index] = value; - _needUpload = true; - } - } - - /// <summary> - /// Sets the data. - /// </summary> - /// <param name="target">Target.</param> - /// <param name="channelId">Channel identifier.</param> - /// <param name="value">Value.</param> - public void SetData(IParameterTexture target, int channelId, float value) - { - SetData(target, channelId, (byte) (Mathf.Clamp01(value) * 255)); - } - - /// <summary> - /// Registers the material. - /// </summary> - /// <param name="mat">Mat.</param> - public void RegisterMaterial(Material mat) - { - if (_propertyId == 0) - { - _propertyId = Shader.PropertyToID(_propertyName); - } - - if (mat) - { - mat.SetTexture(_propertyId, _texture); - } - } - - /// <summary> - /// Gets the index of the normalized. - /// </summary> - /// <returns>The normalized index.</returns> - /// <param name="target">Target.</param> - public float GetNormalizedIndex(IParameterTexture target) - { - return ((float) target.parameterIndex - 0.5f) / _instanceLimit; - } - - - //################################ - // Private Members. - //################################ - - Texture2D _texture; - bool _needUpload; - int _propertyId; - readonly string _propertyName; - readonly int _channels; - readonly int _instanceLimit; - readonly byte[] _data; - readonly Stack<int> _stack; - static List<Action> updates; - - /// <summary> - /// Initialize this instance. - /// </summary> - void Initialize() - { -#if UNITY_EDITOR - if (!UnityEditor.EditorApplication.isPlaying && UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) - { - return; - } -#endif - if (updates == null) - { - updates = new List<Action>(); - Canvas.willRenderCanvases += () => - { - var count = updates.Count; - for (int i = 0; i < count; i++) - { - updates[i].Invoke(); - } - }; - } - - if (!_texture) - { - bool isLinear = QualitySettings.activeColorSpace == ColorSpace.Linear; - _texture = new Texture2D(_channels / 4, _instanceLimit, TextureFormat.RGBA32, false, isLinear); - _texture.filterMode = FilterMode.Point; - _texture.wrapMode = TextureWrapMode.Clamp; - - updates.Add(UpdateParameterTexture); - _needUpload = true; - } - } - - void UpdateParameterTexture() - { - if (_needUpload && _texture) - { - _needUpload = false; - _texture.LoadRawTextureData(_data); - _texture.Apply(false, false); - } - } - } -} diff --git a/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs.meta b/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs.meta deleted file mode 100644 index 8b718d0..0000000 --- a/Assets/Test/UIEffect/Program/Common/ParameterTexture.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 65eafa89b3a3a494a99e185423ba6cad -timeCreated: 1533006319 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor.meta b/Assets/Test/UIEffect/Program/Editor.meta deleted file mode 100644 index 1e9742d..0000000 --- a/Assets/Test/UIEffect/Program/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ee1bfc8c299e6482cb7175ba2f94495a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs b/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs deleted file mode 100644 index c53fc9b..0000000 --- a/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs +++ /dev/null @@ -1,75 +0,0 @@ -#if !UNITY_2019_1_OR_NEWER -using System.IO; -using System.Linq; -using System.Text.RegularExpressions; -using UnityEditor; - -namespace Coffee.UIEffects -{ - public static class ImportSampleMenu - { - private const string jsonGuid = "546af75b6221c4768be79d67c9cea1fb"; - - [MenuItem("Assets/Samples/UIEffect/Import Demo")] - private static void ImportDemo() - { - ImportSample(jsonGuid, "Demo"); - } - - private static void ImportSample(string jsonGuid, string sampleName) - { - var jsonPath = AssetDatabase.GUIDToAssetPath(jsonGuid); - var json = File.ReadAllText(jsonPath); - var version = Regex.Match(json, "\"version\"\\s*:\\s*\"([^\"]+)\"").Groups[1].Value; - var displayName = Regex.Match(json, "\"displayName\"\\s*:\\s*\"([^\"]+)\"").Groups[1].Value; - var src = string.Format("{0}/Samples~/{1}", Path.GetDirectoryName(jsonPath), sampleName); - var srcAlt = string.Format("{0}/Samples/{1}", Path.GetDirectoryName(jsonPath), sampleName); - var dst = string.Format("Assets/Samples/{0}/{1}/{2}", displayName, version, sampleName); - var previousPath = GetPreviousSamplePath(displayName, sampleName); - - // Remove the previous sample directory. - if (!string.IsNullOrEmpty(previousPath)) - { - var msg = "A different version of the sample is already imported at\n\n" - + previousPath - + "\n\nIt will be deleted when you update. Are you sure you want to continue?"; - if (!EditorUtility.DisplayDialog("Sample Importer", msg, "OK", "Cancel")) - return; - - FileUtil.DeleteFileOrDirectory(previousPath); - - var metaFile = previousPath + ".meta"; - if (File.Exists(metaFile)) - FileUtil.DeleteFileOrDirectory(metaFile); - } - - if (!Directory.Exists(dst)) - FileUtil.DeleteFileOrDirectory(dst); - - var dstDir = Path.GetDirectoryName(dst); - if (!Directory.Exists(dstDir)) - Directory.CreateDirectory(dstDir); - - if (Directory.Exists(src)) - FileUtil.CopyFileOrDirectory(src, dst); - else if (Directory.Exists(srcAlt)) - FileUtil.CopyFileOrDirectory(srcAlt, dst); - else - throw new DirectoryNotFoundException(src); - - AssetDatabase.Refresh(ImportAssetOptions.ImportRecursive); - } - - private static string GetPreviousSamplePath(string displayName, string sampleName) - { - var sampleRoot = string.Format("Assets/Samples/{0}", displayName); - var sampleRootInfo = new DirectoryInfo(sampleRoot); - if (!sampleRootInfo.Exists) return null; - - return sampleRootInfo.GetDirectories() - .Select(versionDir => Path.Combine(versionDir.ToString(), sampleName)) - .FirstOrDefault(Directory.Exists); - } - } -} -#endif diff --git a/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs.meta b/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs.meta deleted file mode 100644 index 5057915..0000000 --- a/Assets/Test/UIEffect/Program/Editor/ImportSampleMenu.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f1d002a431e7c4b1ca5db78469cb0d1c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs b/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs deleted file mode 100644 index 435e66e..0000000 --- a/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Linq; -using UnityEditor; -using UnityEngine; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// Changes in this scope cause the graphic's material to be dirty. - /// When you change a property, it marks the material as dirty. - /// </summary> - internal class MaterialDirtyScope : EditorGUI.ChangeCheckScope - { - readonly Object[] targets; - - public MaterialDirtyScope(Object[] targets) - { - this.targets = targets; - } - - protected override void CloseScope() - { - if (changed) - { - foreach (var effect in targets.OfType<BaseMaterialEffect>()) - { - effect.SetMaterialDirty(); - } - } - - base.CloseScope(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs.meta b/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs.meta deleted file mode 100644 index c0c5053..0000000 --- a/Assets/Test/UIEffect/Program/Editor/MaterialDirtyScope.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 16857cac7da564347876420ef55a734a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs deleted file mode 100644 index 29c2782..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs +++ /dev/null @@ -1,121 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; -using System.Linq; -using System.Collections.Generic; -using UnityEngine.UI; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UIDissolve))] - [CanEditMultipleObjects] - public class UIDissolveEditor : Editor - { - SerializedProperty _spEffectFactor; - SerializedProperty _spWidth; - SerializedProperty _spColor; - SerializedProperty _spSoftness; - SerializedProperty _spColorMode; - SerializedProperty _spTransitionTexture; - SerializedProperty _spEffectArea; - SerializedProperty _spKeepAspectRatio; - SerializedProperty _spReverse; - SerializedProperty _spPlay; - SerializedProperty _spLoop; - SerializedProperty _spLoopDelay; - SerializedProperty _spDuration; - SerializedProperty _spInitialPlayDelay; - SerializedProperty _spUpdateMode; - - //################################ - // Public/Protected Members. - //################################ - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected void OnEnable() - { - _spEffectFactor = serializedObject.FindProperty("m_EffectFactor"); - _spEffectArea = serializedObject.FindProperty("m_EffectArea"); - _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio"); - _spWidth = serializedObject.FindProperty("m_Width"); - _spColor = serializedObject.FindProperty("m_Color"); - _spSoftness = serializedObject.FindProperty("m_Softness"); - _spColorMode = serializedObject.FindProperty("m_ColorMode"); - _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture"); - _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio"); - _spReverse = serializedObject.FindProperty("m_Reverse"); - var player = serializedObject.FindProperty("m_Player"); - _spPlay = player.FindPropertyRelative("play"); - _spDuration = player.FindPropertyRelative("duration"); - _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay"); - _spLoop = player.FindPropertyRelative("loop"); - _spLoopDelay = player.FindPropertyRelative("loopDelay"); - _spUpdateMode = player.FindPropertyRelative("updateMode"); - } - - /// <summary> - /// Implement this function to make a custom inspector. - /// </summary> - public override void OnInspectorGUI() - { - serializedObject.Update(); - - //================ - // Effect setting. - //================ - EditorGUILayout.PropertyField(_spEffectFactor); - EditorGUILayout.PropertyField(_spWidth); - EditorGUILayout.PropertyField(_spSoftness); - EditorGUILayout.PropertyField(_spColor); - - using (new MaterialDirtyScope(targets)) - { - EditorGUILayout.PropertyField(_spColorMode); - EditorGUILayout.PropertyField(_spTransitionTexture); - } - - - //================ - // Advanced option. - //================ - EditorGUILayout.PropertyField(_spEffectArea); - EditorGUILayout.PropertyField(_spKeepAspectRatio); - - - //================ - // Effect player. - //================ - EditorGUILayout.PropertyField(_spPlay); - EditorGUILayout.PropertyField(_spDuration); - EditorGUILayout.PropertyField(_spInitialPlayDelay); - EditorGUILayout.PropertyField(_spLoop); - EditorGUILayout.PropertyField(_spLoopDelay); - EditorGUILayout.PropertyField(_spUpdateMode); - EditorGUILayout.PropertyField(_spReverse); - - - // Debug. - using (new EditorGUI.DisabledGroupScope(!Application.isPlaying)) - using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) - { - GUILayout.Label("Debug"); - - if (GUILayout.Button("Play", "ButtonLeft")) - { - (target as UIDissolve).Play(); - } - - if (GUILayout.Button("Stop", "ButtonRight")) - { - (target as UIDissolve).Stop(); - } - } - - serializedObject.ApplyModifiedProperties(); - } - } -}
\ No newline at end of file diff --git a/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs.meta deleted file mode 100644 index edf071c..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIDissolveEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f7f7349a5d61649b69946853317db047 -timeCreated: 1538806040 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs deleted file mode 100644 index 028ee73..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs +++ /dev/null @@ -1,114 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; -using System.Linq; -using System; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UIEffect))] - [CanEditMultipleObjects] - public class UIEffectEditor : Editor - { - SerializedProperty _spEffectMode; - SerializedProperty _spEffectFactor; - SerializedProperty _spColorMode; - SerializedProperty _spColorFactor; - SerializedProperty _spBlurMode; - SerializedProperty _spBlurFactor; - SerializedProperty _spAdvancedBlur; - - protected void OnEnable() - { - _spEffectMode = serializedObject.FindProperty("m_EffectMode"); - _spEffectFactor = serializedObject.FindProperty("m_EffectFactor"); - _spColorMode = serializedObject.FindProperty("m_ColorMode"); - _spColorFactor = serializedObject.FindProperty("m_ColorFactor"); - _spBlurMode = serializedObject.FindProperty("m_BlurMode"); - _spBlurFactor = serializedObject.FindProperty("m_BlurFactor"); - _spAdvancedBlur = serializedObject.FindProperty("m_AdvancedBlur"); - } - - public override void OnInspectorGUI() - { - //================ - // Effect setting. - //================ - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spEffectMode); - - // When effect is enable, show parameters. - if (_spEffectMode.intValue != (int) EffectMode.None) - { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(_spEffectFactor); - EditorGUI.indentLevel--; - } - - - //================ - // Color setting. - //================ - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spColorMode); - - // When color is enable, show parameters. - { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(_spColorFactor); - EditorGUI.indentLevel--; - } - - - //================ - // Blur setting. - //================ - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spBlurMode); - - // When blur is enable, show parameters. - if (_spBlurMode.intValue != (int) BlurMode.None) - { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(_spBlurFactor); - - // When you change a property, it marks the material as dirty. - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spAdvancedBlur); - EditorGUI.indentLevel--; - - // Advanced blur requires uv2 channel. - if (_spAdvancedBlur.boolValue) - { - ShowCanvasChannelsWarning(); - } - } - - serializedObject.ApplyModifiedProperties(); - } - - void ShowCanvasChannelsWarning() - { - var effect = target as UIEffect; - if (effect == null || !effect.graphic) return; - - var channel = effect.uvMaskChannel; - var canvas = effect.graphic.canvas; - if (canvas == null || (canvas.additionalShaderChannels & channel) == channel) return; - - EditorGUILayout.BeginHorizontal(); - { - var msg = string.Format("Enable '{0}' of Canvas.additionalShaderChannels to use 'UIEffect'.", channel); - EditorGUILayout.HelpBox(msg, MessageType.Warning); - if (GUILayout.Button("Fix")) - { - canvas.additionalShaderChannels |= channel; - } - } - EditorGUILayout.EndHorizontal(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs.meta deleted file mode 100644 index 02aa24f..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIEffectEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 4f7e9f2ce1cb543ca88606769affbe24 -timeCreated: 1487152293 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs deleted file mode 100644 index 493c51d..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs +++ /dev/null @@ -1,140 +0,0 @@ -using UnityEditor; -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UIGradient))] - [CanEditMultipleObjects] - public class UIGradientEditor : Editor - { - private static readonly GUIContent k_TextVerticalOffset = new GUIContent("Vertical Offset"); - private static readonly GUIContent k_TextHorizontalOffset = new GUIContent("Horizontal Offset"); - private static readonly GUIContent k_TextOffset = new GUIContent("Offset"); - private static readonly GUIContent k_TextLeft = new GUIContent("Left"); - private static readonly GUIContent k_TextRight = new GUIContent("Right"); - private static readonly GUIContent k_TextTop = new GUIContent("Top"); - private static readonly GUIContent k_TextBottom = new GUIContent("Bottom"); - private static readonly GUIContent k_TextColor1 = new GUIContent("Color 1"); - private static readonly GUIContent k_TextColor2 = new GUIContent("Color 2"); - private static readonly GUIContent k_TextDiagonalColor = new GUIContent("Diagonal Color"); - - SerializedProperty _spDirection; - SerializedProperty _spColor1; - SerializedProperty _spColor2; - SerializedProperty _spColor3; - SerializedProperty _spColor4; - SerializedProperty _spRotation; - SerializedProperty _spOffset1; - SerializedProperty _spOffset2; - SerializedProperty _spIgnoreAspectRatio; - SerializedProperty _spGradientStyle; - SerializedProperty _spColorSpace; - - //################################ - // Public/Protected Members. - //################################ - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected void OnEnable() - { - _spIgnoreAspectRatio = serializedObject.FindProperty("m_IgnoreAspectRatio"); - _spDirection = serializedObject.FindProperty("m_Direction"); - _spColor1 = serializedObject.FindProperty("m_Color1"); - _spColor2 = serializedObject.FindProperty("m_Color2"); - _spColor3 = serializedObject.FindProperty("m_Color3"); - _spColor4 = serializedObject.FindProperty("m_Color4"); - _spRotation = serializedObject.FindProperty("m_Rotation"); - _spOffset1 = serializedObject.FindProperty("m_Offset1"); - _spOffset2 = serializedObject.FindProperty("m_Offset2"); - _spGradientStyle = serializedObject.FindProperty("m_GradientStyle"); - _spColorSpace = serializedObject.FindProperty("m_ColorSpace"); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - //================ - // Direction. - //================ - EditorGUILayout.PropertyField(_spDirection); - - - //================ - // Color. - //================ - switch ((UIGradient.Direction) _spDirection.intValue) - { - case UIGradient.Direction.Horizontal: - EditorGUILayout.PropertyField(_spColor1, k_TextLeft); - EditorGUILayout.PropertyField(_spColor2, k_TextRight); - break; - case UIGradient.Direction.Vertical: - EditorGUILayout.PropertyField(_spColor1, k_TextTop); - EditorGUILayout.PropertyField(_spColor2, k_TextBottom); - break; - case UIGradient.Direction.Angle: - EditorGUILayout.PropertyField(_spColor1, k_TextColor1); - EditorGUILayout.PropertyField(_spColor2, k_TextColor2); - break; - case UIGradient.Direction.Diagonal: - Rect r = EditorGUILayout.GetControlRect(false, 34); - - r = EditorGUI.PrefixLabel(r, k_TextDiagonalColor); - float w = r.width / 2; - - EditorGUI.PropertyField(new Rect(r.x, r.y, w, 16), _spColor3, GUIContent.none); - EditorGUI.PropertyField(new Rect(r.x + w, r.y, w, 16), _spColor4, GUIContent.none); - EditorGUI.PropertyField(new Rect(r.x, r.y + 18, w, 16), _spColor1, GUIContent.none); - EditorGUI.PropertyField(new Rect(r.x + w, r.y + 18, w, 16), _spColor2, GUIContent.none); - break; - } - - - //================ - // Angle. - //================ - if ((int) UIGradient.Direction.Angle <= _spDirection.intValue) - { - EditorGUILayout.PropertyField(_spRotation); - } - - - //================ - // Offset. - //================ - if ((int) UIGradient.Direction.Diagonal == _spDirection.intValue) - { - EditorGUILayout.PropertyField(_spOffset1, k_TextVerticalOffset); - EditorGUILayout.PropertyField(_spOffset2, k_TextHorizontalOffset); - } - else - { - EditorGUILayout.PropertyField(_spOffset1, k_TextOffset); - } - - - //================ - // Advanced options. - //================ - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Advanced Options", EditorStyles.boldLabel); - EditorGUI.indentLevel++; - { - //if ((target as UIGradient).targetGraphic is Text) - EditorGUILayout.PropertyField(_spGradientStyle); - - EditorGUILayout.PropertyField(_spColorSpace); - EditorGUILayout.PropertyField(_spIgnoreAspectRatio); - } - EditorGUI.indentLevel--; - - serializedObject.ApplyModifiedProperties(); - } - } -}
\ No newline at end of file diff --git a/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs.meta deleted file mode 100644 index 5070c14..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIGradientEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: c28dcc885fbba4a5187a6a1aa5fb1b3b -timeCreated: 1515895646 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs deleted file mode 100644 index 6d54a55..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs +++ /dev/null @@ -1,53 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; -using System.Linq; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UIHsvModifier))] - [CanEditMultipleObjects] - public class UIHsvModifierEditor : Editor - { - SerializedProperty _spTargetColor; - SerializedProperty _spRange; - SerializedProperty _spHue; - SerializedProperty _spSaturation; - SerializedProperty _spValue; - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected void OnEnable() - { - _spTargetColor = serializedObject.FindProperty("m_TargetColor"); - _spRange = serializedObject.FindProperty("m_Range"); - _spHue = serializedObject.FindProperty("m_Hue"); - _spSaturation = serializedObject.FindProperty("m_Saturation"); - _spValue = serializedObject.FindProperty("m_Value"); - } - - - /// <summary> - /// Implement this function to make a custom inspector. - /// </summary> - public override void OnInspectorGUI() - { - serializedObject.Update(); - - //================ - // Effect setting. - //================ - EditorGUILayout.PropertyField(_spTargetColor); - EditorGUILayout.PropertyField(_spRange); - EditorGUILayout.PropertyField(_spHue); - EditorGUILayout.PropertyField(_spSaturation); - EditorGUILayout.PropertyField(_spValue); - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs.meta deleted file mode 100644 index 87f1694..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIHsvModifierEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f002ba0ac474d487b936bc046dda56b4 -timeCreated: 1538806052 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs deleted file mode 100644 index 64f01d6..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs +++ /dev/null @@ -1,62 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIShadow editor. - /// </summary> - [CustomEditor(typeof(UIShadow))] - [CanEditMultipleObjects] - public class UIShadowEditor : Editor - { - UIEffect uiEffect; - SerializedProperty _spStyle; - SerializedProperty _spEffectDistance; - SerializedProperty _spEffectColor; - SerializedProperty _spUseGraphicAlpha; - SerializedProperty _spBlurFactor; - - void OnEnable() - { - uiEffect = (target as UIShadow).GetComponent<UIEffect>(); - _spStyle = serializedObject.FindProperty("m_Style"); - _spEffectDistance = serializedObject.FindProperty("m_EffectDistance"); - _spEffectColor = serializedObject.FindProperty("m_EffectColor"); - _spUseGraphicAlpha = serializedObject.FindProperty("m_UseGraphicAlpha"); - _spBlurFactor = serializedObject.FindProperty("m_BlurFactor"); - } - - /// <summary> - /// Implement this function to make a custom inspector. - /// </summary> - public override void OnInspectorGUI() - { - serializedObject.Update(); - - //================ - // Shadow setting. - //================ - EditorGUILayout.PropertyField(_spStyle); - - // When shadow is enable, show parameters. - if (_spStyle.intValue != (int) ShadowStyle.None) - { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(_spEffectDistance); - EditorGUILayout.PropertyField(_spEffectColor); - EditorGUILayout.PropertyField(_spUseGraphicAlpha); - - if (uiEffect && uiEffect.blurMode != BlurMode.None) - { - EditorGUILayout.PropertyField(_spBlurFactor); - } - - EditorGUI.indentLevel--; - } - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs.meta deleted file mode 100644 index bc6a832..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIShadowEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 6e76e7f628f09af449321b4776123f13 -timeCreated: 1487152293 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs b/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs deleted file mode 100644 index e77432a..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs +++ /dev/null @@ -1,102 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; -using System.Linq; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UIShiny))] - [CanEditMultipleObjects] - public class UIShinyEditor : Editor - { - SerializedProperty _spEffectFactor; - SerializedProperty _spWidth; - SerializedProperty _spRotation; - SerializedProperty _spSoftness; - SerializedProperty _spBrightness; - SerializedProperty _spGloss; - SerializedProperty _spEffectArea; - SerializedProperty _spPlay; - SerializedProperty _spLoop; - SerializedProperty _spLoopDelay; - SerializedProperty _spDuration; - SerializedProperty _spInitialPlayDelay; - SerializedProperty _spUpdateMode; - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected void OnEnable() - { - _spEffectFactor = serializedObject.FindProperty("m_EffectFactor"); - _spEffectArea = serializedObject.FindProperty("m_EffectArea"); - _spWidth = serializedObject.FindProperty("m_Width"); - _spRotation = serializedObject.FindProperty("m_Rotation"); - _spSoftness = serializedObject.FindProperty("m_Softness"); - _spBrightness = serializedObject.FindProperty("m_Brightness"); - _spGloss = serializedObject.FindProperty("m_Gloss"); - var player = serializedObject.FindProperty("m_Player"); - _spPlay = player.FindPropertyRelative("play"); - _spDuration = player.FindPropertyRelative("duration"); - _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay"); - _spLoop = player.FindPropertyRelative("loop"); - _spLoopDelay = player.FindPropertyRelative("loopDelay"); - _spUpdateMode = player.FindPropertyRelative("updateMode"); - } - - /// <summary> - /// Implement this function to make a custom inspector. - /// </summary> - public override void OnInspectorGUI() - { - serializedObject.Update(); - - //================ - // Effect setting. - //================ - EditorGUILayout.PropertyField(_spEffectFactor); - EditorGUILayout.PropertyField(_spWidth); - EditorGUILayout.PropertyField(_spRotation); - EditorGUILayout.PropertyField(_spSoftness); - EditorGUILayout.PropertyField(_spBrightness); - EditorGUILayout.PropertyField(_spGloss); - - //================ - // Advanced option. - //================ - EditorGUILayout.PropertyField(_spEffectArea); - - //================ - // Effect player. - //================ - EditorGUILayout.PropertyField(_spPlay); - EditorGUILayout.PropertyField(_spDuration); - EditorGUILayout.PropertyField(_spInitialPlayDelay); - EditorGUILayout.PropertyField(_spLoop); - EditorGUILayout.PropertyField(_spLoopDelay); - EditorGUILayout.PropertyField(_spUpdateMode); - - // Debug. - using (new EditorGUI.DisabledGroupScope(!Application.isPlaying)) - using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) - { - GUILayout.Label("Debug"); - - if (GUILayout.Button("Play", "ButtonLeft")) - { - (target as UIShiny).Play(); - } - - if (GUILayout.Button("Stop", "ButtonRight")) - { - (target as UIShiny).Stop(); - } - } - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs.meta deleted file mode 100644 index 7dd653a..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UIShinyEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 0080e984bad7545cd957d9121e99f988 -timeCreated: 1538806052 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs b/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs deleted file mode 100644 index 803c9bf..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs +++ /dev/null @@ -1,115 +0,0 @@ -using UnityEditor; -using UnityEditorInternal; -using UnityEngine; -using System.Linq; - -namespace Coffee.UIEffects.Editors -{ - /// <summary> - /// UIEffect editor. - /// </summary> - [CustomEditor(typeof(UITransitionEffect))] - [CanEditMultipleObjects] - public class UITransitionEffectEditor : Editor - { - SerializedProperty _spEffectMode; - SerializedProperty _spEffectFactor; - SerializedProperty _spEffectArea; - SerializedProperty _spKeepAspectRatio; - SerializedProperty _spDissolveWidth; - SerializedProperty _spDissolveSoftness; - SerializedProperty _spDissolveColor; - SerializedProperty _spTransitionTexture; - SerializedProperty _spPlay; - SerializedProperty _spLoop; - SerializedProperty _spLoopDelay; - SerializedProperty _spDuration; - SerializedProperty _spInitialPlayDelay; - SerializedProperty _spUpdateMode; - SerializedProperty _spPassRayOnHidden; - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected void OnEnable() - { - _spEffectMode = serializedObject.FindProperty("m_EffectMode"); - _spEffectFactor = serializedObject.FindProperty("m_EffectFactor"); - _spEffectArea = serializedObject.FindProperty("m_EffectArea"); - _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio"); - _spDissolveWidth = serializedObject.FindProperty("m_DissolveWidth"); - _spDissolveSoftness = serializedObject.FindProperty("m_DissolveSoftness"); - _spDissolveColor = serializedObject.FindProperty("m_DissolveColor"); - _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture"); - var player = serializedObject.FindProperty("m_Player"); - _spPlay = player.FindPropertyRelative("play"); - _spDuration = player.FindPropertyRelative("duration"); - _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay"); - _spLoop = player.FindPropertyRelative("loop"); - _spLoopDelay = player.FindPropertyRelative("loopDelay"); - _spUpdateMode = player.FindPropertyRelative("updateMode"); - _spPassRayOnHidden = serializedObject.FindProperty("m_PassRayOnHidden"); - } - - /// <summary> - /// Implement this function to make a custom inspector. - /// </summary> - public override void OnInspectorGUI() - { - //================ - // Effect setting. - //================ - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spEffectMode); - - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(_spEffectFactor); - if (_spEffectMode.intValue == (int) UITransitionEffect.EffectMode.Dissolve) - { - EditorGUILayout.PropertyField(_spDissolveWidth); - EditorGUILayout.PropertyField(_spDissolveSoftness); - EditorGUILayout.PropertyField(_spDissolveColor); - } - - EditorGUI.indentLevel--; - - //================ - // Advanced option. - //================ - EditorGUILayout.PropertyField(_spEffectArea); - using (new MaterialDirtyScope(targets)) - EditorGUILayout.PropertyField(_spTransitionTexture); - EditorGUILayout.PropertyField(_spKeepAspectRatio); - EditorGUILayout.PropertyField(_spPassRayOnHidden); - - //================ - // Effect player. - //================ - EditorGUILayout.PropertyField(_spPlay); - EditorGUILayout.PropertyField(_spDuration); - EditorGUILayout.PropertyField(_spInitialPlayDelay); - EditorGUILayout.PropertyField(_spLoop); - EditorGUILayout.PropertyField(_spLoopDelay); - EditorGUILayout.PropertyField(_spUpdateMode); - - // Debug. - using (new EditorGUI.DisabledGroupScope(!Application.isPlaying)) - using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) - { - GUILayout.Label("Debug"); - - if (GUILayout.Button("Show", "ButtonLeft")) - { - (target as UITransitionEffect).Show(); - } - - if (GUILayout.Button("Hide", "ButtonRight")) - { - (target as UITransitionEffect).Hide(); - } - } - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs.meta b/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs.meta deleted file mode 100644 index 14054f8..0000000 --- a/Assets/Test/UIEffect/Program/Editor/UITransitionEffectEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 631f363a54c834f1f846f823b31bd321 -timeCreated: 1538806067 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums.meta b/Assets/Test/UIEffect/Program/Enums.meta deleted file mode 100644 index d1a3a2a..0000000 --- a/Assets/Test/UIEffect/Program/Enums.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 78cc1478fd16a484ba11857d5c4f4912 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums/BlurMode.cs b/Assets/Test/UIEffect/Program/Enums/BlurMode.cs deleted file mode 100644 index e3ef417..0000000 --- a/Assets/Test/UIEffect/Program/Enums/BlurMode.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Coffee.UIEffects -{ - /// <summary> - /// Blur effect mode. - /// </summary> - public enum BlurMode - { - None = 0, - FastBlur = 1, - MediumBlur = 2, - DetailBlur = 3, - } -} diff --git a/Assets/Test/UIEffect/Program/Enums/BlurMode.cs.meta b/Assets/Test/UIEffect/Program/Enums/BlurMode.cs.meta deleted file mode 100644 index 504b62a..0000000 --- a/Assets/Test/UIEffect/Program/Enums/BlurMode.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 5645838b01af8764d8f381f04b62b9a2 -timeCreated: 1528296875 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums/ColorMode.cs b/Assets/Test/UIEffect/Program/Enums/ColorMode.cs deleted file mode 100644 index 567624b..0000000 --- a/Assets/Test/UIEffect/Program/Enums/ColorMode.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Coffee.UIEffects -{ - /// <summary> - /// Color effect mode. - /// </summary> - public enum ColorMode - { - Multiply = 0, - Fill = 1, - Add = 2, - Subtract = 3, - } -} diff --git a/Assets/Test/UIEffect/Program/Enums/ColorMode.cs.meta b/Assets/Test/UIEffect/Program/Enums/ColorMode.cs.meta deleted file mode 100644 index ba60cab..0000000 --- a/Assets/Test/UIEffect/Program/Enums/ColorMode.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e6ba1e487e0a19644afde2bd5531bd04 -timeCreated: 1528296875 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs b/Assets/Test/UIEffect/Program/Enums/EffectArea.cs deleted file mode 100644 index 4e5fa28..0000000 --- a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs +++ /dev/null @@ -1,116 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Area for effect. - /// </summary> - public enum EffectArea - { - RectTransform, - Fit, - Character, - } - - public static class EffectAreaExtensions - { - static readonly Rect rectForCharacter = new Rect(0, 0, 1, 1); - static readonly Vector2[] splitedCharacterPosition = {Vector2.up, Vector2.one, Vector2.right, Vector2.zero}; - - /// <summary> - /// Gets effect for area. - /// </summary> - public static Rect GetEffectArea(this EffectArea area, VertexHelper vh, Rect rectangle, float aspectRatio = -1) - { - Rect rect = default(Rect); - switch (area) - { - case EffectArea.RectTransform: - rect = rectangle; - break; - case EffectArea.Character: - rect = rectForCharacter; - break; - case EffectArea.Fit: - // Fit to contents. - UIVertex vertex = default(UIVertex); - float xMin = float.MaxValue; - float yMin = float.MaxValue; - float xMax = float.MinValue; - float yMax = float.MinValue; - for (int i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vertex, i); - float x = vertex.position.x; - float y = vertex.position.y; - xMin = Mathf.Min(xMin, x); - yMin = Mathf.Min(yMin, y); - xMax = Mathf.Max(xMax, x); - yMax = Mathf.Max(yMax, y); - } - - rect.Set(xMin, yMin, xMax - xMin, yMax - yMin); - break; - default: - rect = rectangle; - break; - } - - - if (0 < aspectRatio) - { - if (rect.width < rect.height) - { - rect.width = rect.height * aspectRatio; - } - else - { - rect.height = rect.width / aspectRatio; - } - } - - return rect; - } - - /// <summary> - /// Gets position factor for area. - /// </summary> - public static void GetPositionFactor(this EffectArea area, int index, Rect rect, Vector2 position, bool isText, - bool isTMPro, out float x, out float y) - { - if (isText && area == EffectArea.Character) - { - index = isTMPro ? (index + 3) % 4 : index % 4; - x = splitedCharacterPosition[index].x; - y = splitedCharacterPosition[index].y; - } - else if (area == EffectArea.Fit) - { - x = Mathf.Clamp01((position.x - rect.xMin) / rect.width); - y = Mathf.Clamp01((position.y - rect.yMin) / rect.height); - } - else - { - x = Mathf.Clamp01(position.x / rect.width + 0.5f); - y = Mathf.Clamp01(position.y / rect.height + 0.5f); - } - } - - /// <summary> - /// Normalize vertex position by local matrix. - /// </summary> - public static void GetNormalizedFactor(this EffectArea area, int index, Matrix2x3 matrix, Vector2 position, - bool isText, out Vector2 nomalizedPos) - { - if (isText && area == EffectArea.Character) - { - nomalizedPos = matrix * splitedCharacterPosition[(index + 3) % 4]; - } - else - { - nomalizedPos = matrix * position; - } - } - } -} diff --git a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs.meta b/Assets/Test/UIEffect/Program/Enums/EffectArea.cs.meta deleted file mode 100644 index 4bc2fa4..0000000 --- a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: a78f43d1382a048a99411472ca714e1b -timeCreated: 1528636556 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums/EffectMode.cs b/Assets/Test/UIEffect/Program/Enums/EffectMode.cs deleted file mode 100644 index 84f3eb4..0000000 --- a/Assets/Test/UIEffect/Program/Enums/EffectMode.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Coffee.UIEffects -{ - /// <summary> - /// Effect mode. - /// </summary> - public enum EffectMode - { - None = 0, - Grayscale = 1, - Sepia = 2, - Nega = 3, - Pixel = 4, - } -} diff --git a/Assets/Test/UIEffect/Program/Enums/EffectMode.cs.meta b/Assets/Test/UIEffect/Program/Enums/EffectMode.cs.meta deleted file mode 100644 index 76773db..0000000 --- a/Assets/Test/UIEffect/Program/Enums/EffectMode.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 092769547c242d74cbad96631a00963f -timeCreated: 1528296875 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs b/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs deleted file mode 100644 index 1cfe058..0000000 --- a/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Coffee.UIEffects -{ - /// <summary> - /// Shadow effect style. - /// </summary> - public enum ShadowStyle - { - None = 0, - Shadow, - Outline, - Outline8, - Shadow3, - } -} diff --git a/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs.meta b/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs.meta deleted file mode 100644 index 337e823..0000000 --- a/Assets/Test/UIEffect/Program/Enums/ShadowStyle.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: b0eda5bf10146491c9cfe6a31c66f9a7 -timeCreated: 1528296875 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIDissolve.cs b/Assets/Test/UIEffect/Program/UIDissolve.cs deleted file mode 100644 index de49ef2..0000000 --- a/Assets/Test/UIEffect/Program/UIDissolve.cs +++ /dev/null @@ -1,319 +0,0 @@ -using System; -using UnityEngine; -using UnityEditor; -using UnityEngine.UI; -using UnityEngine.Serialization; -using System.Text; -using System.Linq; -using System.IO; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Dissolve effect for uGUI. - /// </summary> - [AddComponentMenu("UI/UIEffects/UIDissolve", 3)] - public class UIDissolve : BaseMaterialEffect, IMaterialModifier - { - private const uint k_ShaderId = 0 << 3; - private static readonly ParameterTexture s_ParamTex = new ParameterTexture(8, 128, "_ParamTex"); - private static readonly int k_TransitionTexId = Shader.PropertyToID("_TransitionTex"); - - private bool _lastKeepAspectRatio; - private EffectArea _lastEffectArea; - private static Texture _defaultTransitionTexture; - - [Tooltip("Current location[0-1] for dissolve effect. 0 is not dissolved, 1 is completely dissolved.")] - [FormerlySerializedAs("m_Location")] - [SerializeField] - [Range(0, 1)] - float m_EffectFactor = 0.5f; - - [Tooltip("Edge width.")] [SerializeField] [Range(0, 1)] - float m_Width = 0.5f; - - [Tooltip("Edge softness.")] [SerializeField] [Range(0, 1)] - float m_Softness = 0.5f; - - [Tooltip("Edge color.")] [SerializeField] [ColorUsage(false)] - Color m_Color = new Color(0.0f, 0.25f, 1.0f); - - [Tooltip("Edge color effect mode.")] [SerializeField] - ColorMode m_ColorMode = ColorMode.Add; - - [Tooltip("Noise texture for dissolving (single channel texture).")] - [SerializeField] - [FormerlySerializedAs("m_NoiseTexture")] - Texture m_TransitionTexture; - - [Header("Advanced Option")] [Tooltip("The area for effect.")] [SerializeField] - protected EffectArea m_EffectArea; - - [Tooltip("Keep effect aspect ratio.")] [SerializeField] - bool m_KeepAspectRatio; - - [Header("Effect Player")] [SerializeField] - EffectPlayer m_Player; - - [Tooltip("Reverse the dissolve effect.")] [FormerlySerializedAs("m_ReverseAnimation")] [SerializeField] - bool m_Reverse = false; - - /// <summary> - /// Effect factor between 0(start) and 1(end). - /// </summary> - public float effectFactor - { - get { return m_EffectFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_EffectFactor, value)) return; - m_EffectFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Edge width. - /// </summary> - public float width - { - get { return m_Width; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Width, value)) return; - m_Width = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Edge softness. - /// </summary> - public float softness - { - get { return m_Softness; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Softness, value)) return; - m_Softness = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Edge color. - /// </summary> - public Color color - { - get { return m_Color; } - set - { - if (m_Color == value) return; - m_Color = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Noise texture. - /// </summary> - public Texture transitionTexture - { - get - { - return m_TransitionTexture - ? m_TransitionTexture - : defaultTransitionTexture; - } - set - { - if (m_TransitionTexture == value) return; - m_TransitionTexture = value; - SetMaterialDirty(); - } - } - - private static Texture defaultTransitionTexture - { - get - { - return _defaultTransitionTexture - ? _defaultTransitionTexture - : (_defaultTransitionTexture = Resources.Load<Texture>("Default-Transition")); - } - } - - /// <summary> - /// The area for effect. - /// </summary> - public EffectArea effectArea - { - get { return m_EffectArea; } - set - { - if (m_EffectArea == value) return; - m_EffectArea = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Keep aspect ratio. - /// </summary> - public bool keepAspectRatio - { - get { return m_KeepAspectRatio; } - set - { - if (m_KeepAspectRatio == value) return; - m_KeepAspectRatio = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color effect mode. - /// </summary> - public ColorMode colorMode - { - get { return m_ColorMode; } - set - { - if (m_ColorMode == value) return; - m_ColorMode = value; - SetMaterialDirty(); - } - } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public override ParameterTexture paramTex - { - get { return s_ParamTex; } - } - - public EffectPlayer effectPlayer - { - get { return m_Player ?? (m_Player = new EffectPlayer()); } - } - - public override Hash128 GetMaterialHash(Material material) - { - if (!isActiveAndEnabled || !material || !material.shader) - return k_InvalidHash; - - var shaderVariantId = (uint) ((int) m_ColorMode << 6); - var resourceId = (uint) transitionTexture.GetInstanceID(); - return new Hash128( - (uint) material.GetInstanceID(), - k_ShaderId + shaderVariantId, - resourceId, - 0 - ); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - var connector = GraphicConnector.FindConnector(graphic); - newMaterial.shader = Shader.Find(string.Format("Hidden/{0} (UIDissolve)", newMaterial.shader.name)); - SetShaderVariants(newMaterial, m_ColorMode); - - newMaterial.SetTexture(k_TransitionTexId, transitionTexture); - paramTex.RegisterMaterial(newMaterial); - } - - /// <summary> - /// Modifies the mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - return; - - // bool isText = isTMPro || graphic is Text; - var normalizedIndex = paramTex.GetNormalizedIndex(this); - - // rect. - var tex = transitionTexture; - var aspectRatio = m_KeepAspectRatio && tex ? ((float) tex.width) / tex.height : -1; - var rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect, aspectRatio); - - // Calculate vertex position. - var vertex = default(UIVertex); - var count = vh.currentVertCount; - for (var i = 0; i < count; i++) - { - vh.PopulateUIVertex(ref vertex, i); - float x; - float y; - connector.GetPositionFactor(m_EffectArea, i, rect, vertex.position, out x, out y); - - vertex.uv0 = new Vector2( - Packer.ToFloat(vertex.uv0.x, vertex.uv0.y), - Packer.ToFloat(x, y, normalizedIndex) - ); - - vh.SetUIVertex(vertex, i); - } - } - - protected override void SetEffectParamsDirty() - { - paramTex.SetData(this, 0, m_EffectFactor); // param1.x : location - paramTex.SetData(this, 1, m_Width); // param1.y : width - paramTex.SetData(this, 2, m_Softness); // param1.z : softness - paramTex.SetData(this, 4, m_Color.r); // param2.x : red - paramTex.SetData(this, 5, m_Color.g); // param2.y : green - paramTex.SetData(this, 6, m_Color.b); // param2.z : blue - } - - protected override void SetVerticesDirty() - { - base.SetVerticesDirty(); - - _lastKeepAspectRatio = m_KeepAspectRatio; - _lastEffectArea = m_EffectArea; - } - - protected override void OnDidApplyAnimationProperties() - { - base.OnDidApplyAnimationProperties(); - - if (_lastKeepAspectRatio != m_KeepAspectRatio - || _lastEffectArea != m_EffectArea) - SetVerticesDirty(); - } - - /// <summary> - /// Play effect. - /// </summary> - public void Play(bool reset = true) - { - effectPlayer.Play(reset); - } - - /// <summary> - /// Stop effect. - /// </summary> - public void Stop(bool reset = true) - { - effectPlayer.Stop(reset); - } - - protected override void OnEnable() - { - base.OnEnable(); - effectPlayer.OnEnable((f) => effectFactor = m_Reverse ? 1f - f : f); - } - - protected override void OnDisable() - { - base.OnDisable(); - effectPlayer.OnDisable(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIDissolve.cs.meta b/Assets/Test/UIEffect/Program/UIDissolve.cs.meta deleted file mode 100644 index 80d3101..0000000 --- a/Assets/Test/UIEffect/Program/UIDissolve.cs.meta +++ /dev/null @@ -1,13 +0,0 @@ -fileFormatVersion: 2 -guid: ce76b7a490bd74f34a2f2752641aea24 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: - - m_TransitionTexture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, - type: 3} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIEffect.cs b/Assets/Test/UIEffect/Program/UIEffect.cs deleted file mode 100644 index 63a8ccc..0000000 --- a/Assets/Test/UIEffect/Program/UIEffect.cs +++ /dev/null @@ -1,368 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; -using UnityEngine.Serialization; -#if UNITY_EDITOR -using System.IO; -using System.Linq; -using UnityEditor; - -#endif - -namespace Coffee.UIEffects -{ - /// <summary> - /// UIEffect. - /// </summary> - [ExecuteInEditMode] - [RequireComponent(typeof(Graphic))] - [DisallowMultipleComponent] - [AddComponentMenu("UI/UIEffects/UIEffect", 1)] - public class UIEffect : BaseMaterialEffect, IMaterialModifier - { - private const uint k_ShaderId = 2 << 3; - private static readonly ParameterTexture s_ParamTex = new ParameterTexture(4, 1024, "_ParamTex"); - - [FormerlySerializedAs("m_ToneLevel")] - [Tooltip("Effect factor between 0(no effect) and 1(complete effect).")] - [SerializeField] - [Range(0, 1)] - float m_EffectFactor = 1; - - [Tooltip("Color effect factor between 0(no effect) and 1(complete effect).")] [SerializeField] [Range(0, 1)] - float m_ColorFactor = 1; - - [FormerlySerializedAs("m_Blur")] - [Tooltip("How far is the blurring from the graphic.")] - [SerializeField] - [Range(0, 1)] - float m_BlurFactor = 1; - - [FormerlySerializedAs("m_ToneMode")] [Tooltip("Effect mode")] [SerializeField] - EffectMode m_EffectMode = EffectMode.None; - - [Tooltip("Color effect mode")] [SerializeField] - ColorMode m_ColorMode = ColorMode.Multiply; - - [Tooltip("Blur effect mode")] [SerializeField] - BlurMode m_BlurMode = BlurMode.None; - - [Tooltip("Advanced blurring remove common artifacts in the blur effect for uGUI.")] [SerializeField] - bool m_AdvancedBlur = false; - - private enum BlurEx - { - None = 0, - Ex = 1, - } - - /// <summary> - /// Additional canvas shader channels to use this component. - /// </summary> - public AdditionalCanvasShaderChannels uvMaskChannel - { - get { return connector.extraChannel; } - } - - /// <summary> - /// Effect factor between 0(no effect) and 1(complete effect). - /// </summary> - public float effectFactor - { - get { return m_EffectFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_EffectFactor, value)) return; - m_EffectFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Color effect factor between 0(no effect) and 1(complete effect). - /// </summary> - public float colorFactor - { - get { return m_ColorFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_ColorFactor, value)) return; - m_ColorFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// How far is the blurring from the graphic. - /// </summary> - public float blurFactor - { - get { return m_BlurFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_BlurFactor, value)) return; - m_BlurFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Effect mode. - /// </summary> - public EffectMode effectMode - { - get { return m_EffectMode; } - set - { - if (m_EffectMode == value) return; - m_EffectMode = value; - SetMaterialDirty(); - } - } - - /// <summary> - /// Color effect mode. - /// </summary> - public ColorMode colorMode - { - get { return m_ColorMode; } - set - { - if (m_ColorMode == value) return; - m_ColorMode = value; - SetMaterialDirty(); - } - } - - /// <summary> - /// Blur effect mode(readonly). - /// </summary> - public BlurMode blurMode - { - get { return m_BlurMode; } - set - { - if (m_BlurMode == value) return; - m_BlurMode = value; - SetMaterialDirty(); - } - } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public override ParameterTexture paramTex - { - get { return s_ParamTex; } - } - - /// <summary> - /// Advanced blurring remove common artifacts in the blur effect for uGUI. - /// </summary> - public bool advancedBlur - { - get { return m_AdvancedBlur; } - set - { - if (m_AdvancedBlur == value) return; - m_AdvancedBlur = value; - SetVerticesDirty(); - SetMaterialDirty(); - } - } - - public override Hash128 GetMaterialHash(Material material) - { - if (!isActiveAndEnabled || !material || !material.shader) - return k_InvalidHash; - - var shaderVariantId = (uint) (((int) m_EffectMode << 6) + ((int) m_ColorMode << 9) + - ((int) m_BlurMode << 11) + ((m_AdvancedBlur ? 1 : 0) << 13)); - return new Hash128( - (uint) material.GetInstanceID(), - k_ShaderId + shaderVariantId, - 0, - 0 - ); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - var connector = GraphicConnector.FindConnector(graphic); - - newMaterial.shader = Shader.Find(string.Format("Hidden/{0} (UIEffect)", newMaterial.shader.name)); - SetShaderVariants(newMaterial, m_EffectMode, m_ColorMode, m_BlurMode, - m_AdvancedBlur ? BlurEx.Ex : BlurEx.None); - - paramTex.RegisterMaterial(newMaterial); - } - - /// <summary> - /// Modifies the mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - { - return; - } - - var normalizedIndex = paramTex.GetNormalizedIndex(this); - - if (m_BlurMode != BlurMode.None && advancedBlur) - { - vh.GetUIVertexStream(s_TempVerts); - vh.Clear(); - var count = s_TempVerts.Count; - - // Bundle - int bundleSize = connector.IsText(graphic) ? 6 : count; - Rect posBounds = default(Rect); - Rect uvBounds = default(Rect); - Vector3 size = default(Vector3); - Vector3 tPos = default(Vector3); - Vector3 tUV = default(Vector3); - float expand = (float) blurMode * 6 * 2; - - for (int i = 0; i < count; i += bundleSize) - { - // min/max for bundled-quad - GetBounds(s_TempVerts, i, bundleSize, ref posBounds, ref uvBounds, true); - - // Pack uv mask. - Vector2 uvMask = new Vector2(Packer.ToFloat(uvBounds.xMin, uvBounds.yMin), - Packer.ToFloat(uvBounds.xMax, uvBounds.yMax)); - - // Quad - for (int j = 0; j < bundleSize; j += 6) - { - Vector3 cornerPos1 = s_TempVerts[i + j + 1].position; - Vector3 cornerPos2 = s_TempVerts[i + j + 4].position; - - // Is outer quad? - bool hasOuterEdge = (bundleSize == 6) - || !posBounds.Contains(cornerPos1) - || !posBounds.Contains(cornerPos2); - if (hasOuterEdge) - { - Vector3 cornerUv1 = s_TempVerts[i + j + 1].uv0; - Vector3 cornerUv2 = s_TempVerts[i + j + 4].uv0; - - Vector3 centerPos = (cornerPos1 + cornerPos2) / 2; - Vector3 centerUV = (cornerUv1 + cornerUv2) / 2; - size = (cornerPos1 - cornerPos2); - - size.x = 1 + expand / Mathf.Abs(size.x); - size.y = 1 + expand / Mathf.Abs(size.y); - size.z = 1 + expand / Mathf.Abs(size.z); - - tPos = centerPos - Vector3.Scale(size, centerPos); - tUV = centerUV - Vector3.Scale(size, centerUV); - } - - // Vertex - for (int k = 0; k < 6; k++) - { - UIVertex vt = s_TempVerts[i + j + k]; - - Vector3 pos = vt.position; - Vector2 uv0 = vt.uv0; - - if (hasOuterEdge && (pos.x < posBounds.xMin || posBounds.xMax < pos.x)) - { - pos.x = pos.x * size.x + tPos.x; - uv0.x = uv0.x * size.x + tUV.x; - } - - if (hasOuterEdge && (pos.y < posBounds.yMin || posBounds.yMax < pos.y)) - { - pos.y = pos.y * size.y + tPos.y; - uv0.y = uv0.y * size.y + tUV.y; - } - - vt.uv0 = new Vector2(Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f), - normalizedIndex); - vt.position = pos; - - connector.SetExtraChannel(ref vt, uvMask); - - s_TempVerts[i + j + k] = vt; - } - } - } - - vh.AddUIVertexTriangleStream(s_TempVerts); - s_TempVerts.Clear(); - } - else - { - int count = vh.currentVertCount; - UIVertex vt = default(UIVertex); - for (int i = 0; i < count; i++) - { - vh.PopulateUIVertex(ref vt, i); - Vector2 uv0 = vt.uv0; - vt.uv0 = new Vector2( - Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f), - normalizedIndex - ); - vh.SetUIVertex(vt, i); - } - } - } - - protected override void SetEffectParamsDirty() - { - paramTex.SetData(this, 0, m_EffectFactor); // param.x : effect factor - paramTex.SetData(this, 1, m_ColorFactor); // param.y : color factor - paramTex.SetData(this, 2, m_BlurFactor); // param.z : blur factor - } - - static void GetBounds(List<UIVertex> verts, int start, int count, ref Rect posBounds, ref Rect uvBounds, - bool global) - { - Vector2 minPos = new Vector2(float.MaxValue, float.MaxValue); - Vector2 maxPos = new Vector2(float.MinValue, float.MinValue); - Vector2 minUV = new Vector2(float.MaxValue, float.MaxValue); - Vector2 maxUV = new Vector2(float.MinValue, float.MinValue); - for (int i = start; i < start + count; i++) - { - UIVertex vt = verts[i]; - - Vector2 uv = vt.uv0; - Vector3 pos = vt.position; - - // Left-Bottom - if (minPos.x >= pos.x && minPos.y >= pos.y) - { - minPos = pos; - } - // Right-Top - else if (maxPos.x <= pos.x && maxPos.y <= pos.y) - { - maxPos = pos; - } - - // Left-Bottom - if (minUV.x >= uv.x && minUV.y >= uv.y) - { - minUV = uv; - } - // Right-Top - else if (maxUV.x <= uv.x && maxUV.y <= uv.y) - { - maxUV = uv; - } - } - - // Shrink coordinate for detect edge - posBounds.Set(minPos.x + 0.001f, minPos.y + 0.001f, maxPos.x - minPos.x - 0.002f, - maxPos.y - minPos.y - 0.002f); - uvBounds.Set(minUV.x, minUV.y, maxUV.x - minUV.x, maxUV.y - minUV.y); - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIEffect.cs.meta b/Assets/Test/UIEffect/Program/UIEffect.cs.meta deleted file mode 100644 index 1155fe8..0000000 --- a/Assets/Test/UIEffect/Program/UIEffect.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f8b2ed11d675446c5a49da1ea296d490 -timeCreated: 1485321967 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIFlip.cs b/Assets/Test/UIEffect/Program/UIFlip.cs deleted file mode 100644 index 2cb7055..0000000 --- a/Assets/Test/UIEffect/Program/UIFlip.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - [DisallowMultipleComponent] - [AddComponentMenu("UI/UIEffects/UIFlip", 102)] - public class UIFlip : BaseMeshEffect - { - [Tooltip("Flip horizontally.")] [SerializeField] - private bool m_Horizontal = false; - - [Tooltip("Flip vertically.")] [SerializeField] - private bool m_Veritical = false; - - /// <summary> - /// Gets or sets a value indicating whether this <see cref="Coffee.UIEffects.UIFlip"/> should be flipped horizontally. - /// </summary> - /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value> - public bool horizontal - { - get { return m_Horizontal; } - set - { - if (m_Horizontal == value) return; - m_Horizontal = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Gets or sets a value indicating whether this <see cref="Coffee.UIEffects.UIFlip"/> should be flipped vertically. - /// </summary> - /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value> - public bool vertical - { - get { return m_Veritical; } - set - { - if (m_Veritical == value) return; - m_Veritical = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Call used to modify mesh. - /// </summary> - /// <param name="vh">VertexHelper.</param> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) return; - - var vt = default(UIVertex); - for (var i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vt, i); - var pos = vt.position; - vt.position = new Vector3( - m_Horizontal ? -pos.x : pos.x, - m_Veritical ? -pos.y : pos.y - ); - vh.SetUIVertex(vt, i); - } - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIFlip.cs.meta b/Assets/Test/UIEffect/Program/UIFlip.cs.meta deleted file mode 100644 index 86d3ecb..0000000 --- a/Assets/Test/UIEffect/Program/UIFlip.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 9bb4e59514e90489d985e9a17c838085 -timeCreated: 1525607243 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIGradient.cs b/Assets/Test/UIEffect/Program/UIGradient.cs deleted file mode 100644 index b184182..0000000 --- a/Assets/Test/UIEffect/Program/UIGradient.cs +++ /dev/null @@ -1,319 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - /// <summary> - /// UIGradient. - /// </summary> - [DisallowMultipleComponent] - [AddComponentMenu("UI/UIEffects/UIGradient", 101)] - public class UIGradient : BaseMeshEffect - { - static readonly Vector2[] s_SplitedCharacterPosition = {Vector2.up, Vector2.one, Vector2.right, Vector2.zero}; - - /// <summary> - /// Gradient direction. - /// </summary> - public enum Direction - { - Horizontal, - Vertical, - Angle, - Diagonal, - } - - /// <summary> - /// Gradient space for Text. - /// </summary> - public enum GradientStyle - { - Rect, - Fit, - Split, - } - - - [Tooltip("Gradient Direction.")] [SerializeField] - Direction m_Direction; - - [Tooltip("Color1: Top or Left.")] [SerializeField] - Color m_Color1 = Color.white; - - [Tooltip("Color2: Bottom or Right.")] [SerializeField] - Color m_Color2 = Color.white; - - [Tooltip("Color3: For diagonal.")] [SerializeField] - Color m_Color3 = Color.white; - - [Tooltip("Color4: For diagonal.")] [SerializeField] - Color m_Color4 = Color.white; - - [Tooltip("Gradient rotation.")] [SerializeField] [Range(-180, 180)] - float m_Rotation; - - [Tooltip("Gradient offset for Horizontal, Vertical or Angle.")] [SerializeField] [Range(-1, 1)] - float m_Offset1; - - [Tooltip("Gradient offset for Diagonal.")] [SerializeField] [Range(-1, 1)] - float m_Offset2; - - [Tooltip("Gradient style for Text.")] [SerializeField] - GradientStyle m_GradientStyle; - - [Tooltip("Color space to correct color.")] [SerializeField] - ColorSpace m_ColorSpace = ColorSpace.Uninitialized; - - [Tooltip("Ignore aspect ratio.")] [SerializeField] - bool m_IgnoreAspectRatio = true; - - /// <summary> - /// Gradient Direction. - /// </summary> - public Direction direction - { - get { return m_Direction; } - set - { - if (m_Direction == value) return; - m_Direction = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color1: Top or Left. - /// </summary> - public Color color1 - { - get { return m_Color1; } - set - { - if (m_Color1 == value) return; - m_Color1 = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color2: Bottom or Right. - /// </summary> - public Color color2 - { - get { return m_Color2; } - set - { - if (m_Color2 == value) return; - m_Color2 = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color3: For diagonal. - /// </summary> - public Color color3 - { - get { return m_Color3; } - set - { - if (m_Color3 == value) return; - m_Color3 = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color4: For diagonal. - /// </summary> - public Color color4 - { - get { return m_Color4; } - set - { - if (m_Color4 == value) return; - m_Color4 = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gradient rotation. - /// </summary> - public float rotation - { - get - { - return m_Direction == Direction.Horizontal ? -90 - : m_Direction == Direction.Vertical ? 0 - : m_Rotation; - } - set - { - if (Mathf.Approximately(m_Rotation, value)) return; - m_Rotation = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gradient offset for Horizontal, Vertical or Angle. - /// </summary> - public float offset - { - get { return m_Offset1; } - set - { - if (Mathf.Approximately(m_Offset1, value)) return; - m_Offset1 = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gradient offset for Diagonal. - /// </summary> - public Vector2 offset2 - { - get { return new Vector2(m_Offset2, m_Offset1); } - set - { - if (Mathf.Approximately(m_Offset1, value.y) && Mathf.Approximately(m_Offset2, value.x)) return; - m_Offset1 = value.y; - m_Offset2 = value.x; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gradient style for Text. - /// </summary> - public GradientStyle gradientStyle - { - get { return m_GradientStyle; } - set - { - if (m_GradientStyle == value) return; - m_GradientStyle = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Color space to correct color. - /// </summary> - public ColorSpace colorSpace - { - get { return m_ColorSpace; } - set - { - if (m_ColorSpace == value) return; - m_ColorSpace = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Ignore aspect ratio. - /// </summary> - public bool ignoreAspectRatio - { - get { return m_IgnoreAspectRatio; } - set - { - if (m_IgnoreAspectRatio == value) return; - m_IgnoreAspectRatio = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Call used to modify mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - return; - - // Gradient space. - var rect = default(Rect); - var vertex = default(UIVertex); - switch (m_GradientStyle) - { - case GradientStyle.Rect: - // RectTransform. - rect = graphic.rectTransform.rect; - break; - case GradientStyle.Split: - // Each characters. - rect.Set(0, 0, 1, 1); - break; - case GradientStyle.Fit: - { - // Fit to contents. - rect.xMin = rect.yMin = float.MaxValue; - rect.xMax = rect.yMax = float.MinValue; - for (var i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vertex, i); - rect.xMin = Mathf.Min(rect.xMin, vertex.position.x); - rect.yMin = Mathf.Min(rect.yMin, vertex.position.y); - rect.xMax = Mathf.Max(rect.xMax, vertex.position.x); - rect.yMax = Mathf.Max(rect.yMax, vertex.position.y); - } - - break; - } - } - - // Gradient rotation. - var rad = rotation * Mathf.Deg2Rad; - var dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad)); - if (!m_IgnoreAspectRatio && Direction.Angle <= m_Direction) - { - dir.x *= rect.height / rect.width; - dir = dir.normalized; - } - - // Calculate vertex color. - var localMatrix = new Matrix2x3(rect, dir.x, dir.y); // Get local matrix. - for (var i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vertex, i); - - // Normalize vertex position by local matrix. - Vector2 normalizedPos; - if (m_GradientStyle == GradientStyle.Split) - { - // Each characters. - normalizedPos = localMatrix * s_SplitedCharacterPosition[i % 4] + offset2; - } - else - { - normalizedPos = localMatrix * vertex.position + offset2; - } - - // Interpolate vertex color. - Color color; - if (direction == Direction.Diagonal) - { - color = Color.LerpUnclamped( - Color.LerpUnclamped(m_Color1, m_Color2, normalizedPos.x), - Color.LerpUnclamped(m_Color3, m_Color4, normalizedPos.x), - normalizedPos.y); - } - else - { - color = Color.LerpUnclamped(m_Color2, m_Color1, normalizedPos.y); - } - - // Correct color. - vertex.color *= (m_ColorSpace == ColorSpace.Gamma) ? color.gamma - : (m_ColorSpace == ColorSpace.Linear) ? color.linear - : color; - - vh.SetUIVertex(vertex, i); - } - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIGradient.cs.meta b/Assets/Test/UIEffect/Program/UIGradient.cs.meta deleted file mode 100644 index 8b596ad..0000000 --- a/Assets/Test/UIEffect/Program/UIGradient.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 3fb48d82dc0e94a2b9246d17d04f8748 -timeCreated: 1515744842 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIHsvModifier.cs b/Assets/Test/UIEffect/Program/UIHsvModifier.cs deleted file mode 100644 index 8445bb7..0000000 --- a/Assets/Test/UIEffect/Program/UIHsvModifier.cs +++ /dev/null @@ -1,170 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.Serialization; -using UnityEngine.UI; - - -namespace Coffee.UIEffects -{ - /// <summary> - /// HSV Modifier. - /// </summary> - [AddComponentMenu("UI/UIEffects/UIHsvModifier", 4)] - public class UIHsvModifier : BaseMaterialEffect - { - private const uint k_ShaderId = 6 << 3; - private static readonly ParameterTexture s_ParamTex = new ParameterTexture(7, 128, "_ParamTex"); - - [Header("Target")] [Tooltip("Target color to affect hsv shift.")] [SerializeField] [ColorUsage(false)] - Color m_TargetColor = Color.red; - - [Tooltip("Color range to affect hsv shift [0 ~ 1].")] [SerializeField] [Range(0, 1)] - float m_Range = 0.1f; - - [Header("Adjustment")] [Tooltip("Hue shift [-0.5 ~ 0.5].")] [SerializeField] [Range(-0.5f, 0.5f)] - float m_Hue; - - [Tooltip("Saturation shift [-0.5 ~ 0.5].")] [SerializeField] [Range(-0.5f, 0.5f)] - float m_Saturation; - - [Tooltip("Value shift [-0.5 ~ 0.5].")] [SerializeField] [Range(-0.5f, 0.5f)] - float m_Value; - - /// <summary> - /// Target color to affect hsv shift. - /// </summary> - public Color targetColor - { - get { return m_TargetColor; } - set - { - if (m_TargetColor == value) return; - m_TargetColor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Color range to affect hsv shift [0 ~ 1]. - /// </summary> - public float range - { - get { return m_Range; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Range, value)) return; - m_Range = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Saturation shift [-0.5 ~ 0.5]. - /// </summary> - public float saturation - { - get { return m_Saturation; } - set - { - value = Mathf.Clamp(value, -0.5f, 0.5f); - if (Mathf.Approximately(m_Saturation, value)) return; - m_Saturation = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Value shift [-0.5 ~ 0.5]. - /// </summary> - public float value - { - get { return m_Value; } - set - { - value = Mathf.Clamp(value, -0.5f, 0.5f); - if (Mathf.Approximately(m_Value, value)) return; - m_Value = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Hue shift [-0.5 ~ 0.5]. - /// </summary> - public float hue - { - get { return m_Hue; } - set - { - value = Mathf.Clamp(value, -0.5f, 0.5f); - if (Mathf.Approximately(m_Hue, value)) return; - m_Hue = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public override ParameterTexture paramTex - { - get { return s_ParamTex; } - } - - public override Hash128 GetMaterialHash(Material material) - { - if (!isActiveAndEnabled || !material || !material.shader) - return k_InvalidHash; - - return new Hash128( - (uint) material.GetInstanceID(), - k_ShaderId, - 0, - 0 - ); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - var connector = GraphicConnector.FindConnector(graphic); - - newMaterial.shader = Shader.Find(string.Format("Hidden/{0} (UIHsvModifier)", newMaterial.shader.name)); - paramTex.RegisterMaterial(newMaterial); - } - - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - return; - - var normalizedIndex = paramTex.GetNormalizedIndex(this); - var vertex = default(UIVertex); - var count = vh.currentVertCount; - for (var i = 0; i < count; i++) - { - vh.PopulateUIVertex(ref vertex, i); - - vertex.uv0 = new Vector2( - Packer.ToFloat(vertex.uv0.x, vertex.uv0.y), - normalizedIndex - ); - vh.SetUIVertex(vertex, i); - } - } - - protected override void SetEffectParamsDirty() - { - float h, s, v; - Color.RGBToHSV(m_TargetColor, out h, out s, out v); - - paramTex.SetData(this, 0, h); // param1.x : target hue - paramTex.SetData(this, 1, s); // param1.y : target saturation - paramTex.SetData(this, 2, v); // param1.z : target value - paramTex.SetData(this, 3, m_Range); // param1.w : target range - paramTex.SetData(this, 4, m_Hue + 0.5f); // param2.x : hue shift - paramTex.SetData(this, 5, m_Saturation + 0.5f); // param2.y : saturation shift - paramTex.SetData(this, 6, m_Value + 0.5f); // param2.z : value shift - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIHsvModifier.cs.meta b/Assets/Test/UIEffect/Program/UIHsvModifier.cs.meta deleted file mode 100644 index 44ca568..0000000 --- a/Assets/Test/UIEffect/Program/UIHsvModifier.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: efe700dddcd8341ff8607ac2c827b4b5 -timeCreated: 1523859834 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIShadow.cs b/Assets/Test/UIEffect/Program/UIShadow.cs deleted file mode 100644 index 42ec596..0000000 --- a/Assets/Test/UIEffect/Program/UIShadow.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Serialization; -using UnityEngine.UI; -#if UNITY_EDITOR -using System.IO; -using System.Linq; -using UnityEditor; - -#endif - -namespace Coffee.UIEffects -{ - /// <summary> - /// UIEffect. - /// </summary> - [RequireComponent(typeof(Graphic))] - [AddComponentMenu("UI/UIEffects/UIShadow", 100)] - public class UIShadow : BaseMeshEffect, IParameterTexture - { - static readonly List<UIShadow> tmpShadows = new List<UIShadow>(); - static readonly List<UIVertex> s_Verts = new List<UIVertex>(4096); - - int _graphicVertexCount; - UIEffect _uiEffect; - - [Tooltip("How far is the blurring shadow from the graphic.")] - [FormerlySerializedAs("m_Blur")] - [SerializeField] - [Range(0, 1)] - float m_BlurFactor = 1; - - [Tooltip("Shadow effect style.")] [SerializeField] - ShadowStyle m_Style = ShadowStyle.Shadow; - - [SerializeField] private Color m_EffectColor = new Color(0f, 0f, 0f, 0.5f); - - [SerializeField] private Vector2 m_EffectDistance = new Vector2(1f, -1f); - - [SerializeField] private bool m_UseGraphicAlpha = true; - - private const float kMaxEffectDistance = 600f; - - public Color effectColor - { - get { return m_EffectColor; } - set - { - if (m_EffectColor == value) return; - m_EffectColor = value; - SetVerticesDirty(); - } - } - - public Vector2 effectDistance - { - get { return m_EffectDistance; } - set - { - if (value.x > kMaxEffectDistance) - value.x = kMaxEffectDistance; - if (value.x < -kMaxEffectDistance) - value.x = -kMaxEffectDistance; - - if (value.y > kMaxEffectDistance) - value.y = kMaxEffectDistance; - if (value.y < -kMaxEffectDistance) - value.y = -kMaxEffectDistance; - - if (m_EffectDistance == value) return; - m_EffectDistance = value; - SetEffectParamsDirty(); - } - } - - public bool useGraphicAlpha - { - get { return m_UseGraphicAlpha; } - set - { - if (m_UseGraphicAlpha == value) return; - m_UseGraphicAlpha = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// How far is the blurring shadow from the graphic. - /// </summary> - public float blurFactor - { - get { return m_BlurFactor; } - set - { - value = Mathf.Clamp(value, 0, 2); - if (Mathf.Approximately(m_BlurFactor, value)) return; - m_BlurFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Shadow effect style. - /// </summary> - public ShadowStyle style - { - get { return m_Style; } - set - { - if (m_Style == value) return; - m_Style = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Gets or sets the parameter index. - /// </summary> - public int parameterIndex { get; set; } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public ParameterTexture paramTex { get; private set; } - - protected override void OnEnable() - { - base.OnEnable(); - - _uiEffect = GetComponent<UIEffect>(); - if (!_uiEffect) return; - - paramTex = _uiEffect.paramTex; - paramTex.Register(this); - } - - protected override void OnDisable() - { - base.OnDisable(); - - _uiEffect = null; - if (paramTex == null) return; - - paramTex.Unregister(this); - paramTex = null; - } - - -// #if UNITY_EDITOR -// protected override void OnValidate() -// { -// effectDistance = m_EffectDistance; -// base.OnValidate(); -// } -// #endif - - // #if TMP_PRESENT - // protected void OnCullStateChanged (bool state) - // { - // SetVerticesDirty (); - // } - // - // Vector2 res; - // protected override void LateUpdate () - // { - // if (res.x != Screen.width || res.y != Screen.height) - // { - // res.x = Screen.width; - // res.y = Screen.height; - // SetVerticesDirty (); - // } - // if (textMeshPro && transform.hasChanged) - // { - // transform.hasChanged = false; - // } - // base.LateUpdate (); - // } - // #endif - - /// <summary> - /// Modifies the mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled || vh.currentVertCount <= 0 || m_Style == ShadowStyle.None) - { - return; - } - - vh.GetUIVertexStream(s_Verts); - - GetComponents<UIShadow>(tmpShadows); - - foreach (var s in tmpShadows) - { - if (!s.isActiveAndEnabled) continue; - if (s == this) - { - foreach (var s2 in tmpShadows) - { - s2._graphicVertexCount = s_Verts.Count; - } - } - - break; - } - - tmpShadows.Clear(); - - //================================ - // Append shadow vertices. - //================================ - { - _uiEffect = _uiEffect ? _uiEffect : GetComponent<UIEffect>(); - var start = s_Verts.Count - _graphicVertexCount; - var end = s_Verts.Count; - - if (paramTex != null && _uiEffect && _uiEffect.isActiveAndEnabled) - { - paramTex.SetData(this, 0, _uiEffect.effectFactor); // param.x : effect factor - paramTex.SetData(this, 1, 255); // param.y : color factor - paramTex.SetData(this, 2, m_BlurFactor); // param.z : blur factor - } - - ApplyShadow(s_Verts, effectColor, ref start, ref end, effectDistance, style, useGraphicAlpha); - } - - vh.Clear(); - vh.AddUIVertexTriangleStream(s_Verts); - - s_Verts.Clear(); - } - - /// <summary> - /// Append shadow vertices. - /// * It is similar to Shadow component implementation. - /// </summary> - private void ApplyShadow(List<UIVertex> verts, Color color, ref int start, ref int end, Vector2 distance, - ShadowStyle style, bool alpha) - { - if (style == ShadowStyle.None || color.a <= 0) - return; - - var x = distance.x; - var y = distance.y; - // Append Shadow. - ApplyShadowZeroAlloc(verts, color, ref start, ref end, x, y, alpha); - - switch (style) - { - // Append Shadow3. - case ShadowStyle.Shadow3: - ApplyShadowZeroAlloc(verts, color, ref start, ref end, x, 0, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, 0, y, alpha); - break; - // Append Outline. - case ShadowStyle.Outline: - ApplyShadowZeroAlloc(verts, color, ref start, ref end, x, -y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, -x, y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, -x, -y, alpha); - break; - // Append Outline8. - case ShadowStyle.Outline8: - ApplyShadowZeroAlloc(verts, color, ref start, ref end, x, -y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, -x, y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, -x, -y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, -x, 0, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, 0, -y, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, x, 0, alpha); - ApplyShadowZeroAlloc(verts, color, ref start, ref end, 0, y, alpha); - break; - } - } - - /// <summary> - /// Append shadow vertices. - /// * It is similar to Shadow component implementation. - /// </summary> - private void ApplyShadowZeroAlloc(List<UIVertex> verts, Color color, ref int start, ref int end, float x, - float y, bool alpha) - { - // Check list capacity. - var count = end - start; - var neededCapacity = verts.Count + count; - if (verts.Capacity < neededCapacity) - verts.Capacity *= 2; - - var normalizedIndex = paramTex != null && _uiEffect && _uiEffect.isActiveAndEnabled - ? paramTex.GetNormalizedIndex(this) - : -1; - - // Add - var vt = default(UIVertex); - for (var i = 0; i < count; i++) - { - verts.Add(vt); - } - - // Move - for (var i = verts.Count - 1; count <= i; i--) - { - verts[i] = verts[i - count]; - } - - // Append shadow vertices to the front of list. - // * The original vertex is pushed backward. - for (var i = 0; i < count; ++i) - { - vt = verts[i + start + count]; - - var v = vt.position; - vt.position.Set(v.x + x, v.y + y, v.z); - - var vertColor = effectColor; - vertColor.a = alpha ? color.a * vt.color.a / 255 : color.a; - vt.color = vertColor; - - - // Set UIEffect parameters - if (0 <= normalizedIndex) - { - vt.uv0 = new Vector2( - vt.uv0.x, - normalizedIndex - ); - } - - verts[i] = vt; - } - - // Update next shadow offset. - start = end; - end = verts.Count; - } - - /// <summary> - /// Mark the UIEffect as dirty. - /// </summary> - // void _SetDirty() - // { - // if (graphic) - // graphic.SetVerticesDirty(); - // } - -// #if UNITY_EDITOR -// public void OnBeforeSerialize() -// { -// } -// -// public void OnAfterDeserialize() -// { -// EditorApplication.delayCall += UpgradeIfNeeded; -// } -// -// -// #pragma warning disable 0612 -// void UpgradeIfNeeded() -// { -// if (0 < m_AdditionalShadows.Count) -// { -// foreach (var s in m_AdditionalShadows) -// { -// if (s.style == ShadowStyle.None) -// { -// continue; -// } -// -// var shadow = gameObject.AddComponent<UIShadow>(); -// shadow.style = s.style; -// shadow.effectDistance = s.effectDistance; -// shadow.effectColor = s.effectColor; -// shadow.useGraphicAlpha = s.useGraphicAlpha; -// shadow.blurFactor = s.blur; -// } -// -// m_AdditionalShadows = null; -// } -// } -// #pragma warning restore 0612 -// #endif - } -} diff --git a/Assets/Test/UIEffect/Program/UIShadow.cs.meta b/Assets/Test/UIEffect/Program/UIShadow.cs.meta deleted file mode 100644 index 257198c..0000000 --- a/Assets/Test/UIEffect/Program/UIShadow.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 0848bff101191904ead4bb831f7084db -timeCreated: 1485321967 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: -400 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UIShiny.cs b/Assets/Test/UIEffect/Program/UIShiny.cs deleted file mode 100644 index 3b938cb..0000000 --- a/Assets/Test/UIEffect/Program/UIShiny.cs +++ /dev/null @@ -1,278 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Serialization; -using UnityEngine.UI; -using System.Collections; - -namespace Coffee.UIEffects -{ - /// <summary> - /// UIEffect. - /// </summary> - [AddComponentMenu("UI/UIEffects/UIShiny", 2)] - public class UIShiny : BaseMaterialEffect - { - private const uint k_ShaderId = 1 << 3; - private static readonly ParameterTexture s_ParamTex = new ParameterTexture(8, 128, "_ParamTex"); - - float _lastRotation; - EffectArea _lastEffectArea; - - [Tooltip("Location for shiny effect.")] [FormerlySerializedAs("m_Location")] [SerializeField] [Range(0, 1)] - float m_EffectFactor = 0.5f; - - [Tooltip("Width for shiny effect.")] [SerializeField] [Range(0, 1)] - float m_Width = 0.25f; - - [Tooltip("Rotation for shiny effect.")] [SerializeField] [Range(-180, 180)] - float m_Rotation = 135; - - [Tooltip("Softness for shiny effect.")] [SerializeField] [Range(0.01f, 1)] - float m_Softness = 1f; - - [Tooltip("Brightness for shiny effect.")] [FormerlySerializedAs("m_Alpha")] [SerializeField] [Range(0, 1)] - float m_Brightness = 1f; - - [Tooltip("Gloss factor for shiny effect.")] [FormerlySerializedAs("m_Highlight")] [SerializeField] [Range(0, 1)] - float m_Gloss = 1; - - [Header("Advanced Option")] [Tooltip("The area for effect.")] [SerializeField] - protected EffectArea m_EffectArea; - - [SerializeField] EffectPlayer m_Player; - - /// <summary> - /// Effect factor between 0(start) and 1(end). - /// </summary> - public float effectFactor - { - get { return m_EffectFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_EffectFactor, value)) return; - m_EffectFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Width for shiny effect. - /// </summary> - public float width - { - get { return m_Width; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Width, value)) return; - m_Width = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Softness for shiny effect. - /// </summary> - public float softness - { - get { return m_Softness; } - set - { - value = Mathf.Clamp(value, 0.01f, 1); - if (Mathf.Approximately(m_Softness, value)) return; - m_Softness = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Brightness for shiny effect. - /// </summary> - public float brightness - { - get { return m_Brightness; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Brightness, value)) return; - m_Brightness = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Gloss factor for shiny effect. - /// </summary> - public float gloss - { - get { return m_Gloss; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_Gloss, value)) return; - m_Gloss = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Rotation for shiny effect. - /// </summary> - public float rotation - { - get { return m_Rotation; } - set - { - if (Mathf.Approximately(m_Rotation, value)) return; - m_Rotation = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// The area for effect. - /// </summary> - public EffectArea effectArea - { - get { return m_EffectArea; } - set - { - if (m_EffectArea == value) return; - m_EffectArea = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public override ParameterTexture paramTex - { - get { return s_ParamTex; } - } - - public EffectPlayer effectPlayer - { - get { return m_Player ?? (m_Player = new EffectPlayer()); } - } - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected override void OnEnable() - { - base.OnEnable(); - effectPlayer.OnEnable(f => effectFactor = f); - } - - /// <summary> - /// This function is called when the behaviour becomes disabled () or inactive. - /// </summary> - protected override void OnDisable() - { - base.OnDisable(); - effectPlayer.OnDisable(); - } - - - public override Hash128 GetMaterialHash(Material material) - { - if (!isActiveAndEnabled || !material || !material.shader) - return k_InvalidHash; - - return new Hash128( - (uint) material.GetInstanceID(), - k_ShaderId, - 0, - 0 - ); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - var connector = GraphicConnector.FindConnector(graphic); - - newMaterial.shader = Shader.Find(string.Format("Hidden/{0} (UIShiny)", newMaterial.shader.name)); - paramTex.RegisterMaterial(newMaterial); - } - - /// <summary> - /// Modifies the mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - return; - - var normalizedIndex = paramTex.GetNormalizedIndex(this); - var rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect); - - // rotation. - var rad = m_Rotation * Mathf.Deg2Rad; - var dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad)); - dir.x *= rect.height / rect.width; - dir = dir.normalized; - - // Calculate vertex position. - var vertex = default(UIVertex); - var localMatrix = new Matrix2x3(rect, dir.x, dir.y); // Get local matrix. - for (int i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vertex, i); - Vector2 normalizedPos; - connector.GetNormalizedFactor(m_EffectArea, i, localMatrix, vertex.position, out normalizedPos); - - vertex.uv0 = new Vector2( - Packer.ToFloat(vertex.uv0.x, vertex.uv0.y), - Packer.ToFloat(normalizedPos.y, normalizedIndex) - ); - - vh.SetUIVertex(vertex, i); - } - } - - /// <summary> - /// Play effect. - /// </summary> - public void Play(bool reset = true) - { - effectPlayer.Play(reset); - } - - /// <summary> - /// Stop effect. - /// </summary> - public void Stop(bool reset = true) - { - effectPlayer.Stop(reset); - } - - protected override void SetEffectParamsDirty() - { - paramTex.SetData(this, 0, m_EffectFactor); // param1.x : location - paramTex.SetData(this, 1, m_Width); // param1.y : width - paramTex.SetData(this, 2, m_Softness); // param1.z : softness - paramTex.SetData(this, 3, m_Brightness); // param1.w : blightness - paramTex.SetData(this, 4, m_Gloss); // param2.x : gloss - } - - protected override void SetVerticesDirty() - { - base.SetVerticesDirty(); - - _lastRotation = m_Rotation; - _lastEffectArea = m_EffectArea; - } - - protected override void OnDidApplyAnimationProperties() - { - base.OnDidApplyAnimationProperties(); - - if (!Mathf.Approximately(_lastRotation, m_Rotation) - || _lastEffectArea != m_EffectArea) - SetVerticesDirty(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/UIShiny.cs.meta b/Assets/Test/UIEffect/Program/UIShiny.cs.meta deleted file mode 100644 index 97bec07..0000000 --- a/Assets/Test/UIEffect/Program/UIShiny.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f19b7e2285c104f6ca47d583f3e5444f -timeCreated: 1523859834 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UISyncEffect.cs b/Assets/Test/UIEffect/Program/UISyncEffect.cs deleted file mode 100644 index ada9be8..0000000 --- a/Assets/Test/UIEffect/Program/UISyncEffect.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.UI; - - -namespace Coffee.UIEffects -{ - /// <summary> - /// Dissolve effect for uGUI. - /// </summary> - [ExecuteInEditMode] - public class UISyncEffect : BaseMaterialEffect - { - [Tooltip("The target effect to synchronize.")] [SerializeField] - private BaseMeshEffect m_TargetEffect; - - public BaseMeshEffect targetEffect - { - get { return m_TargetEffect != this ? m_TargetEffect : null; } - set - { - if (m_TargetEffect == value) return; - m_TargetEffect = value; - - SetVerticesDirty(); - SetMaterialDirty(); - SetEffectParamsDirty(); - } - } - - protected override void OnEnable() - { - if (targetEffect) - targetEffect.syncEffects.Add(this); - base.OnEnable(); - } - - protected override void OnDisable() - { - if (targetEffect) - targetEffect.syncEffects.Remove(this); - base.OnDisable(); - } - - public override Hash128 GetMaterialHash(Material baseMaterial) - { - if (!isActiveAndEnabled) return k_InvalidHash; - - var matEffect = targetEffect as BaseMaterialEffect; - if (!matEffect || !matEffect.isActiveAndEnabled) return k_InvalidHash; - - return matEffect.GetMaterialHash(baseMaterial); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - if (!isActiveAndEnabled) return; - - var matEffect = targetEffect as BaseMaterialEffect; - if (!matEffect || !matEffect.isActiveAndEnabled) return; - - matEffect.ModifyMaterial(newMaterial, graphic); - } - - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) return; - if (!targetEffect || !targetEffect.isActiveAndEnabled) return; - - targetEffect.ModifyMesh(vh, graphic); - } - -#if UNITY_EDITOR - protected override void OnValidate() - { - SetVerticesDirty(); - SetMaterialDirty(); - SetEffectParamsDirty(); - } -#endif - } -} diff --git a/Assets/Test/UIEffect/Program/UISyncEffect.cs.meta b/Assets/Test/UIEffect/Program/UISyncEffect.cs.meta deleted file mode 100644 index 5b14421..0000000 --- a/Assets/Test/UIEffect/Program/UISyncEffect.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a7be078926b3448089fe9995b32f75f1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Test/UIEffect/Program/UITransitionEffect.cs b/Assets/Test/UIEffect/Program/UITransitionEffect.cs deleted file mode 100644 index b75dfd2..0000000 --- a/Assets/Test/UIEffect/Program/UITransitionEffect.cs +++ /dev/null @@ -1,332 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; -using UnityEngine.Serialization; -using System; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Transition effect. - /// </summary> - [AddComponentMenu("UI/UIEffects/UITransitionEffect", 5)] - public class UITransitionEffect : BaseMaterialEffect - { - /// <summary> - /// Effect mode. - /// </summary> - public enum EffectMode - { - Fade = 1, - Cutoff = 2, - Dissolve = 3, - } - - private const uint k_ShaderId = 5 << 3; - private static readonly int k_TransitionTexId = Shader.PropertyToID("_TransitionTex"); - private static readonly ParameterTexture s_ParamTex = new ParameterTexture(8, 128, "_ParamTex"); - - private bool _lastKeepAspectRatio; - private static Texture _defaultTransitionTexture; - - [Tooltip("Effect mode.")] [SerializeField] - EffectMode m_EffectMode = EffectMode.Cutoff; - - [Tooltip("Effect factor between 0(hidden) and 1(shown).")] [SerializeField] [Range(0, 1)] - float m_EffectFactor = 0.5f; - - [Tooltip("Transition texture (single channel texture).")] [SerializeField] - Texture m_TransitionTexture; - - [Header("Advanced Option")] [Tooltip("The area for effect.")] [SerializeField] - EffectArea m_EffectArea = EffectArea.RectTransform; - - [Tooltip("Keep effect aspect ratio.")] [SerializeField] - bool m_KeepAspectRatio; - - [Tooltip("Dissolve edge width.")] [SerializeField] [Range(0, 1)] - float m_DissolveWidth = 0.5f; - - [Tooltip("Dissolve edge softness.")] [SerializeField] [Range(0, 1)] - float m_DissolveSoftness = 0.5f; - - [Tooltip("Dissolve edge color.")] [SerializeField] [ColorUsage(false)] - Color m_DissolveColor = new Color(0.0f, 0.25f, 1.0f); - - [Tooltip("Disable the graphic's raycast target on hidden.")] [SerializeField] - bool m_PassRayOnHidden; - - [Header("Effect Player")] [SerializeField] - EffectPlayer m_Player; - - - /// <summary> - /// Effect factor between 0(no effect) and 1(complete effect). - /// </summary> - public float effectFactor - { - get { return m_EffectFactor; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_EffectFactor, value)) return; - m_EffectFactor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Transition texture. - /// </summary> - public Texture transitionTexture - { - get - { - return m_TransitionTexture - ? m_TransitionTexture - : defaultTransitionTexture; - } - set - { - if (m_TransitionTexture == value) return; - m_TransitionTexture = value; - SetMaterialDirty(); - } - } - - private static Texture defaultTransitionTexture - { - get - { - return _defaultTransitionTexture - ? _defaultTransitionTexture - : (_defaultTransitionTexture = Resources.Load<Texture>("Default-Transition")); - } - } - - /// <summary> - /// Effect mode. - /// </summary> - public EffectMode effectMode - { - get { return m_EffectMode; } - set - { - if (m_EffectMode == value) return; - m_EffectMode = value; - SetMaterialDirty(); - } - } - - /// <summary> - /// Keep aspect ratio. - /// </summary> - public bool keepAspectRatio - { - get { return m_KeepAspectRatio; } - set - { - if (m_KeepAspectRatio == value) return; - m_KeepAspectRatio = value; - SetVerticesDirty(); - } - } - - /// <summary> - /// Gets the parameter texture. - /// </summary> - public override ParameterTexture paramTex - { - get { return s_ParamTex; } - } - - /// <summary> - /// Dissolve edge width. - /// </summary> - public float dissolveWidth - { - get { return m_DissolveWidth; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_DissolveWidth, value)) return; - m_DissolveWidth = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Dissolve edge softness. - /// </summary> - public float dissolveSoftness - { - get { return m_DissolveSoftness; } - set - { - value = Mathf.Clamp(value, 0, 1); - if (Mathf.Approximately(m_DissolveSoftness, value)) return; - m_DissolveSoftness = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Dissolve edge color. - /// </summary> - public Color dissolveColor - { - get { return m_DissolveColor; } - set - { - if (m_DissolveColor == value) return; - m_DissolveColor = value; - SetEffectParamsDirty(); - } - } - - /// <summary> - /// Disable graphic's raycast target on hidden. - /// </summary> - public bool passRayOnHidden - { - get { return m_PassRayOnHidden; } - set { m_PassRayOnHidden = value; } - } - - public EffectPlayer effectPlayer - { - get { return m_Player ?? (m_Player = new EffectPlayer()); } - } - - /// <summary> - /// Show transition. - /// </summary> - public void Show(bool reset = true) - { - effectPlayer.loop = false; - effectPlayer.Play(reset, f => effectFactor = f); - } - - /// <summary> - /// Hide transition. - /// </summary> - public void Hide(bool reset = true) - { - effectPlayer.loop = false; - effectPlayer.Play(reset, f => effectFactor = 1 - f); - } - - - public override Hash128 GetMaterialHash(Material material) - { - if (!isActiveAndEnabled || !material || !material.shader) - return k_InvalidHash; - - var shaderVariantId = (uint) ((int) m_EffectMode << 6); - var resourceId = (uint) transitionTexture.GetInstanceID(); - return new Hash128( - (uint) material.GetInstanceID(), - k_ShaderId + shaderVariantId, - resourceId, - 0 - ); - } - - public override void ModifyMaterial(Material newMaterial, Graphic graphic) - { - var connector = GraphicConnector.FindConnector(graphic); - newMaterial.shader = Shader.Find(string.Format("Hidden/{0} (UITransition)", newMaterial.shader.name)); - SetShaderVariants(newMaterial, m_EffectMode); - - newMaterial.SetTexture(k_TransitionTexId, transitionTexture); - paramTex.RegisterMaterial(newMaterial); - } - - /// <summary> - /// Modifies the mesh. - /// </summary> - public override void ModifyMesh(VertexHelper vh, Graphic graphic) - { - if (!isActiveAndEnabled) - { - return; - } - - var normalizedIndex = paramTex.GetNormalizedIndex(this); - - // rect. - var tex = transitionTexture; - var aspectRatio = m_KeepAspectRatio && tex ? ((float) tex.width) / tex.height : -1; - var rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect, aspectRatio); - - // Set parameters to vertex. - var vertex = default(UIVertex); - var count = vh.currentVertCount; - for (var i = 0; i < count; i++) - { - vh.PopulateUIVertex(ref vertex, i); - float x; - float y; - connector.GetPositionFactor(m_EffectArea, i, rect, vertex.position, out x, out y); - - vertex.uv0 = new Vector2( - Packer.ToFloat(vertex.uv0.x, vertex.uv0.y), - Packer.ToFloat(x, y, normalizedIndex) - ); - vh.SetUIVertex(vertex, i); - } - } - - /// <summary> - /// This function is called when the object becomes enabled and active. - /// </summary> - protected override void OnEnable() - { - base.OnEnable(); - effectPlayer.OnEnable(null); - effectPlayer.loop = false; - } - - /// <summary> - /// This function is called when the behaviour becomes disabled () or inactive. - /// </summary> - protected override void OnDisable() - { - base.OnDisable(); - effectPlayer.OnDisable(); - } - - protected override void SetEffectParamsDirty() - { - paramTex.SetData(this, 0, m_EffectFactor); // param1.x : effect factor - if (m_EffectMode == EffectMode.Dissolve) - { - paramTex.SetData(this, 1, m_DissolveWidth); // param1.y : width - paramTex.SetData(this, 2, m_DissolveSoftness); // param1.z : softness - paramTex.SetData(this, 4, m_DissolveColor.r); // param2.x : red - paramTex.SetData(this, 5, m_DissolveColor.g); // param2.y : green - paramTex.SetData(this, 6, m_DissolveColor.b); // param2.z : blue - } - - // Disable graphic's raycastTarget on hidden. - if (m_PassRayOnHidden) - { - graphic.raycastTarget = 0 < m_EffectFactor; - } - } - - protected override void SetVerticesDirty() - { - base.SetVerticesDirty(); - - _lastKeepAspectRatio = m_KeepAspectRatio; - } - - protected override void OnDidApplyAnimationProperties() - { - base.OnDidApplyAnimationProperties(); - - if (_lastKeepAspectRatio != m_KeepAspectRatio) - SetVerticesDirty(); - } - } -} diff --git a/Assets/Test/UIEffect/Program/UITransitionEffect.cs.meta b/Assets/Test/UIEffect/Program/UITransitionEffect.cs.meta deleted file mode 100644 index 6069e80..0000000 --- a/Assets/Test/UIEffect/Program/UITransitionEffect.cs.meta +++ /dev/null @@ -1,16 +0,0 @@ -fileFormatVersion: 2 -guid: 922b805bc01c243e5853d9cbb544118c -timeCreated: 1538827562 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: - - m_EffectMaterial: {instanceID: 0} - - m_PtexMaterial: {instanceID: 0} - - m_TransitionTexture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, - type: 3} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: |