예제 #1
0
        /// <summary>
        /// This function is called when the object becomes enabled and active.
        /// </summary>
        protected override void OnEnable()
        {
            _initialized = false;
            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
        }
예제 #2
0
        internal static bool HasAdditionalShaderChannels(Canvas c)
        {
            AdditionalCanvasShaderChannels asc = c.additionalShaderChannels;

            return((asc & AdditionalCanvasShaderChannels.TexCoord1) != 0 &&
                   (asc & AdditionalCanvasShaderChannels.TexCoord2) != 0);
        }
예제 #3
0
 public CanvasSpec(
     ICanvasRenderMode renderMode = null,
     AdditionalCanvasShaderChannels additionalShaderChannels = AdditionalCanvasShaderChannels.None)
 {
     RenderMode = renderMode ?? new ScreenSpaceOverlayRenderMode();
     AdditionalShaderChannels = additionalShaderChannels;
 }
예제 #4
0
        internal static void AddAdditionalShaderChannelsToCanvas(Canvas c)
        {
            AdditionalCanvasShaderChannels additionalShaderChannels = c.additionalShaderChannels;

            additionalShaderChannels  |= AdditionalCanvasShaderChannels.TexCoord1;
            additionalShaderChannels  |= AdditionalCanvasShaderChannels.TexCoord2;
            c.additionalShaderChannels = additionalShaderChannels;
        }
예제 #5
0
        public override void Deserialize(BinaryReader binaryReader)
        {
            base.Deserialize(binaryReader);

            renderMode               = (RenderMode)binaryReader.ReadInt32();
            pixelPerfect             = binaryReader.ReadBoolean();
            sortingOrder             = binaryReader.ReadInt32();
            targetDisplay            = binaryReader.ReadInt32();
            additionalShaderChannels = (AdditionalCanvasShaderChannels)binaryReader.ReadInt32();
            worldCamera              = SerializerKun.DesirializeObject <CameraKun>(binaryReader);
            sortingLayerID           = binaryReader.ReadInt32();
            sortingLayerName         = binaryReader.ReadString();
        }
예제 #6
0
        /// <summary> Add additional shader channel to the Canvas that renders this UIImage </summary>
        public void UpdateRenderCanvasShaderChannels()
        {
            if (canvas == null)
            {
                return;
            }
            Canvas renderCanvas = canvas;
            AdditionalCanvasShaderChannels additionalShaderChannels = renderCanvas.additionalShaderChannels;

            additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord1;
            additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord2;
            additionalShaderChannels |= AdditionalCanvasShaderChannels.TexCoord3;
            renderCanvas.additionalShaderChannels = additionalShaderChannels;
        }
예제 #7
0
 public CanvasSerializable(Canvas canvas) : base(canvas)
 {
     sortingLayerName         = canvas.sortingLayerName;
     additionalShaderChannels = canvas.additionalShaderChannels;
     sortingLayerID           = canvas.sortingLayerID;
     targetDisplay            = canvas.targetDisplay;
     sortingOrder             = canvas.sortingOrder;
     overrideSorting          = canvas.overrideSorting;
     planeDistance            = canvas.planeDistance;
     overridePixelPerfect     = canvas.overridePixelPerfect;
     referencePixelsPerUnit   = canvas.referencePixelsPerUnit;
     scaleFactor  = canvas.scaleFactor;
     worldCamera  = canvas.worldCamera != null ? new CameraReference(canvas.worldCamera) : null;
     renderMode   = canvas.renderMode;
     pixelPerfect = canvas.pixelPerfect;
 }
예제 #8
0
        private Transform AddCanvas(Transform layer, AdditionalCanvasShaderChannels shaderChannels = 0)
        {
            GameObject       go        = layer.gameObject;
            Canvas           canvas    = go.AddComponent <Canvas>();
            GraphicRaycaster raycaster = go.AddComponent <GraphicRaycaster>();

            canvas.overrideSorting             = true;
            this.mLayerSortingOrder           += 10;
            canvas.sortingOrder                = this.mLayerSortingOrder;
            this.mLayerSortingOrderList[layer] = this.mLayerSortingOrder;
            if (shaderChannels != 0)
            {
                canvas.additionalShaderChannels = shaderChannels;
            }
            return(MovePosZ(layer));
        }
예제 #9
0
        public CanvasKun(Component component) : base(component)
        {
            componentKunType = ComponentKunType.Canvas;
            Canvas canvas = component as Canvas;

            if (canvas != null)
            {
                renderMode               = canvas.renderMode;
                pixelPerfect             = canvas.pixelPerfect;
                sortingOrder             = canvas.sortingOrder;
                targetDisplay            = canvas.targetDisplay;
                additionalShaderChannels = canvas.additionalShaderChannels;
                worldCamera              = new CameraKun(canvas.worldCamera);
                sortingLayerID           = canvas.sortingLayerID;
                sortingLayerName         = canvas.sortingLayerName;
            }
        }
예제 #10
0
        internal static void FixAdditionalShaderChannelsInCanvas(Canvas canvas)
        {
            Canvas c = canvas;

            if (canvas == null)
            {
                return;
            }
            AdditionalCanvasShaderChannels additionalShaderChannels = c.additionalShaderChannels;

            additionalShaderChannels  |= AdditionalCanvasShaderChannels.TexCoord1;
            additionalShaderChannels  |= AdditionalCanvasShaderChannels.TexCoord2;
            additionalShaderChannels  |= AdditionalCanvasShaderChannels.TexCoord3;
            additionalShaderChannels  |= AdditionalCanvasShaderChannels.Normal;
            additionalShaderChannels  |= AdditionalCanvasShaderChannels.Tangent;
            c.additionalShaderChannels = additionalShaderChannels;
        }
예제 #11
0
        protected override void ReadFromImpl(object obj)
        {
            base.ReadFromImpl(obj);
            Canvas uo = (Canvas)obj;

            renderMode                = uo.renderMode;
            scaleFactor               = uo.scaleFactor;
            referencePixelsPerUnit    = uo.referencePixelsPerUnit;
            overridePixelPerfect      = uo.overridePixelPerfect;
            pixelPerfect              = uo.pixelPerfect;
            planeDistance             = uo.planeDistance;
            overrideSorting           = uo.overrideSorting;
            sortingOrder              = uo.sortingOrder;
            targetDisplay             = uo.targetDisplay;
            sortingLayerID            = uo.sortingLayerID;
            additionalShaderChannels  = uo.additionalShaderChannels;
            sortingLayerName          = uo.sortingLayerName;
            worldCamera               = ToID(uo.worldCamera);
            normalizedSortingGridSize = uo.normalizedSortingGridSize;
        }
예제 #12
0
        protected void ShowCanvasChannelsWarning()
        {
            BaseMeshEffect effect = target as BaseMeshEffect;

            if (!effect || !effect.graphic)
            {
                return;
            }

            AdditionalCanvasShaderChannels channels = effect.requiredChannels;
            var canvas = effect.graphic.canvas;

            if (canvas && (canvas.additionalShaderChannels & channels) != channels)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.HelpBox(string.Format("Enable {1} of Canvas.additionalShaderChannels to use {0}.", effect.GetType().Name, channels), MessageType.Warning);
                if (GUILayout.Button("Fix"))
                {
                    canvas.additionalShaderChannels |= channels;
                }
                EditorGUILayout.EndHorizontal();
            }
        }