/// <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); }
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); } } }
/// <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; }