예제 #1
0
        public override void Draw()
        {
            if (CompositeAlpha <= 0f)
            {
                return;
            }

            if (hasRenderTexture && SmartUI.isRepaint && !forceStandardDraw)
            {
                // setup for render texture draw
                var dp = (CacheMode == CacheMode.Solid) ? DrawParameters.NoAlpha : DrawParameters.Default;
                dp.Transform = CompositeColorTransform;
                if (repaintedTextureThisFrame && Settings.Advanced.ShowCacheRenders)
                {
                    dp = new DrawParameters(ColorTransform.TintAndMultiply(Color.red, Color.gray));
                }
                if (CompositeAlpha < 1f)
                {
                    var colorOffset = dp.Transform.ColorOffset;
                    colorOffset[3]           = ((1f - colorOffset[3]) * CompositeAlpha) - 1f;
                    dp.Transform.ColorOffset = colorOffset;
                    dp.AlphaBlend            = true;
                }
                SmartUI.Draw(Bounds, compositeRenderTexture, new Rect(0, 0, compositeRenderTexture.width, compositeRenderTexture.height), dp);
            }
            else
            {
                if (hasBackgroundChildren)
                {
                    SmartUI.BeginGroup(Bounds, false);
                    DrawChildren(-1);
                    SmartUI.EndGroup();
                }

                base.Draw();
            }
        }