Exemple #1
0
        /// <summary>
        /// Force revalidate visuals.
        /// </summary>
        /// <returns>true, if visuals were updated.</returns>
        /// <param name="changes">What should be revalidate.</param>
        public virtual bool UpdateVisuals(GuiDirtyType changes)
        {
            if (_meshRenderer == null)
            {
                return(false);
            }

            // Special case for checking panel clipping.
            if (changes == GuiDirtyType.None && Panel.ClipType == GuiPanelClipType.Range)
            {
                var halfSize = new Vector3(_width * 0.5f, _height * 0.5f, 0f);
                var min      = _cachedTransform.TransformPoint(-halfSize);
                var max      = _cachedTransform.TransformPoint(halfSize);
                if (!Panel.IsRectInside(min, max))
                {
                    _meshRenderer.enabled = false;
                    return(false);
                }
            }

            if (!_meshRenderer.enabled)
            {
                _meshRenderer.enabled = true;
            }

            if ((changes & GuiDirtyType.Depth) != GuiDirtyType.None)
            {
                var panelTrans = Panel.transform;
                var pos        = panelTrans.InverseTransformPoint(_cachedTransform.position);
                pos.z = -DepthSlice * Depth;
                _cachedTransform.position = panelTrans.TransformPoint(pos);
            }

            return(true);
        }
        /// <summary>
        /// Force revalidate visuals.
        /// </summary>
        /// <returns>true, if visuals were updated.</returns>
        /// <param name="changes">What should be revalidate.</param>
        public override bool UpdateVisuals(GuiDirtyType changes)
        {
            if (!base.UpdateVisuals(changes))
            {
                return(false);
            }

            if ((changes & (GuiDirtyType.Geometry | GuiDirtyType.Panel)) != GuiDirtyType.None)
            {
                if (SpriteAtlas != null && SpriteAtlas.ColorTexture != null)
                {
                    _meshRenderer.sharedMaterial = Panel.GetMaterial(SpriteAtlas);
                    if ((changes & GuiDirtyType.Geometry) != GuiDirtyType.None)
                    {
                        var w       = _isSpriteFlippedHorizontal ? -Width : Width;
                        var h       = _isSpriteFlippedVertical ? -Height : Height;
                        var sprData = SpriteAtlas.GetSpriteData(SpriteName);
                        switch (SpriteType)
                        {
                        case GuiSpriteType.RoundFilled:
                            GuiMeshTools.FillRoundFilledSprite(_meshFilter.sharedMesh, w, h, FillValue, Color, sprData);
                            break;

                        case GuiSpriteType.Sliced:
                        case GuiSpriteType.TiledHorizontal:
                        case GuiSpriteType.TiledVertical:
                        case GuiSpriteType.TiledBoth:
                            var texSize    = new Vector2(SpriteAtlas.ColorTexture.width, SpriteAtlas.ColorTexture.height);
                            var isHorTiled = SpriteType == GuiSpriteType.TiledBoth || SpriteType == GuiSpriteType.TiledHorizontal;
                            var isVerTiled = SpriteType == GuiSpriteType.TiledBoth || SpriteType == GuiSpriteType.TiledVertical;
                            GuiMeshTools.FillSlicedTiledSprite(
                                _meshFilter.sharedMesh, w, h, Color, sprData,
                                texSize, isHorTiled, isVerTiled, IsSpriteCenterFilled);
                            break;

                        default:
                            GuiMeshTools.FillSimpleSprite(_meshFilter.sharedMesh, w, h, Color, sprData);
                            break;
                        }
                    }
                }
                else
                {
                    _meshFilter.sharedMesh.Clear(true);
                }
            }
            return(true);
        }
        /// <summary>
        /// Force revalidate visuals.
        /// </summary>
        /// <returns>true, if visuals were updated.</returns>
        /// <param name="changes">What should be revalidate.</param>
        public override bool UpdateVisuals(GuiDirtyType changes)
        {
            if (!base.UpdateVisuals(changes))
            {
                return(false);
            }

            if ((changes & (GuiDirtyType.Geometry | GuiDirtyType.Panel)) != GuiDirtyType.None)
            {
                if (Font != null)
                {
                    _meshRenderer.sharedMaterial = Panel.GetFontMaterial(Font);

                    if ((changes & GuiDirtyType.Geometry) != GuiDirtyType.None)
                    {
                        GuiTextTools.FillText(_meshFilter.sharedMesh, Width, Height, Text, Color, Alignment, Font, FontSize, LineHeight, _effect, _effectValue, _effectColor);
                    }
                }
            }
            return(true);
        }
Exemple #4
0
        void LateUpdate()
        {
            var transformChanged = _cachedTransform.hasChanged;

            if (transformChanged || _dirtyState != GuiDirtyType.None)
            {
                if (transformChanged)
                {
                    _cachedTransform.hasChanged = false;
                }

                var changes = _dirtyState;
                _dirtyState = GuiDirtyType.None;
                UpdateVisuals(changes);

                // Panel clipping additional check.
                if (changes != GuiDirtyType.None)
                {
                    UpdateVisuals(GuiDirtyType.None);
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// Enable dirty state for specified types.
 /// </summary>
 /// <param name="changes">Specified dirty types.</param>
 public virtual void SetDirty(GuiDirtyType changes)
 {
     _dirtyState |= changes;
 }
        /// <summary>
        /// Force revalidate visuals.
        /// </summary>
        /// <returns>true, if visuals were updated.</returns>
        /// <param name="changes">What should be revalidate.</param>
        public override bool UpdateVisuals(GuiDirtyType changes)
        {
            if (!base.UpdateVisuals (changes)) {
                return false;
            }

            if ((changes & (GuiDirtyType.Geometry | GuiDirtyType.Panel)) != GuiDirtyType.None) {
                if (Font != null) {
                    _meshRenderer.sharedMaterial = Panel.GetFontMaterial (Font);

                    if ((changes & GuiDirtyType.Geometry) != GuiDirtyType.None) {
                        GuiTextTools.FillText (_meshFilter.sharedMesh, Width, Height, Text, Color, Alignment, Font, FontSize, LineHeight,
                                               _effect, _effectValue, _effectColor);
                    }
                }
            }
            return true;
        }
        /// <summary>
        /// Force revalidate visuals.
        /// </summary>
        /// <returns>true, if visuals were updated.</returns>
        /// <param name="changes">What should be revalidate.</param>
        public override bool UpdateVisuals(GuiDirtyType changes)
        {
            if (!base.UpdateVisuals (changes)) {
                return false;
            }

            if ((changes & (GuiDirtyType.Geometry | GuiDirtyType.Panel)) != GuiDirtyType.None) {
                if (SpriteAtlas != null && SpriteAtlas.ColorTexture != null) {
                    _meshRenderer.sharedMaterial = Panel.GetMaterial (SpriteAtlas);
                    if ((changes & GuiDirtyType.Geometry) != GuiDirtyType.None) {
                        var w = _isSpriteFlippedHorizontal ? -Width : Width;
                        var h = _isSpriteFlippedVertical ? -Height : Height;
                        var sprData = SpriteAtlas.GetSpriteData (SpriteName);
                        switch (SpriteType) {
                        case GuiSpriteType.RoundFilled:
                            GuiMeshTools.FillRoundFilledSprite (_meshFilter.sharedMesh, w, h, FillValue, Color, sprData);
                            break;
                        case GuiSpriteType.Sliced:
                        case GuiSpriteType.TiledHorizontal:
                        case GuiSpriteType.TiledVertical:
                        case GuiSpriteType.TiledBoth:
                            var texSize = new Vector2 (SpriteAtlas.ColorTexture.width, SpriteAtlas.ColorTexture.height);
                            var isHorTiled = SpriteType == GuiSpriteType.TiledBoth || SpriteType == GuiSpriteType.TiledHorizontal;
                            var isVerTiled = SpriteType == GuiSpriteType.TiledBoth || SpriteType == GuiSpriteType.TiledVertical;
                            GuiMeshTools.FillSlicedTiledSprite (
                                _meshFilter.sharedMesh, w, h, Color, sprData,
                                texSize, isHorTiled, isVerTiled, IsSpriteCenterFilled);
                            break;
                        default:
                            GuiMeshTools.FillSimpleSprite (_meshFilter.sharedMesh, w, h, Color, sprData);
                            break;
                        }
                    }
                } else {
                    _meshFilter.sharedMesh.Clear (true);
                }
            }
            return true;
        }