Example #1
0
        public void EnterClipping(Container container)
        {
            _clipStack.Push(clipInfo);

            Rect rect = container.GetWorldClipRect();
            if (clipped)
                rect = ToolSet.Intersection(ref clipInfo.rect, ref rect);
            clipped = true;

            clipInfo.rect = rect;
            rect.x = rect.x + rect.width / 2f;
            rect.y = rect.y + rect.height / 2f;
            rect.width /= 2f;
            rect.height /= 2f;
            if (rect.width == 0 || rect.height == 0)
            {
                clipInfo.offset = new Vector2(-2, -2);
                clipInfo.scale = new Vector2(0, 0);
            }
            else
            {
                clipInfo.offset = new Vector2(-rect.x / rect.width, -rect.y / rect.height);
                clipInfo.scale = new Vector2(1.0f / rect.width, 1.0f / rect.height);
            }

            clipInfo.clipId = container.internalIndex;

            clipInfo.soft = container.clipSoftness != null;
            if (clipInfo.soft)
            {
                clipInfo.softness = (Vector4)container.clipSoftness;
                float vx = clipInfo.rect.width * Stage.inst.stageHeight * 0.25f;
                float vy = clipInfo.rect.height * Stage.inst.stageHeight * 0.25f;

                if (clipInfo.softness.x > 0)
                    clipInfo.softness.x = vx / clipInfo.softness.x;
                else
                    clipInfo.softness.x = 10000f;

                if (clipInfo.softness.y > 0)
                    clipInfo.softness.y = vy / clipInfo.softness.y;
                else
                    clipInfo.softness.y = 10000f;

                if (clipInfo.softness.z > 0)
                    clipInfo.softness.z = vx / clipInfo.softness.z;
                else
                    clipInfo.softness.z = 10000f;

                if (clipInfo.softness.w > 0)
                    clipInfo.softness.w = vy / clipInfo.softness.w;
                else
                    clipInfo.softness.w = 10000f;
            }
        }
Example #2
0
        public void EnterClipping(Container container)
        {
            _clipStack.Push(clipInfo);

            Rect rect = container.GetWorldClipRect();

            if (clipped)
            {
                rect = ToolSet.Intersection(ref clipInfo.rect, ref rect);
            }
            clipped = true;

            clipInfo.rect = rect;
            rect.x        = rect.x + rect.width / 2f;
            rect.y        = rect.y + rect.height / 2f;
            rect.width   /= 2f;
            rect.height  /= 2f;
            if (rect.width == 0 || rect.height == 0)
            {
                clipInfo.offset = new Vector2(-2, -2);
                clipInfo.scale  = new Vector2(0, 0);
            }
            else
            {
                clipInfo.offset = new Vector2(-rect.x / rect.width, -rect.y / rect.height);
                clipInfo.scale  = new Vector2(1.0f / rect.width, 1.0f / rect.height);
            }

            clipInfo.clipId = container.internalIndex;

            clipInfo.soft = container.clipSoftness != null;
            if (clipInfo.soft)
            {
                clipInfo.softness = (Vector4)container.clipSoftness;
                float vx = clipInfo.rect.width * Stage.inst.stageHeight * 0.25f;
                float vy = clipInfo.rect.height * Stage.inst.stageHeight * 0.25f;

                if (clipInfo.softness.x > 0)
                {
                    clipInfo.softness.x = vx / clipInfo.softness.x;
                }
                else
                {
                    clipInfo.softness.x = 10000f;
                }

                if (clipInfo.softness.y > 0)
                {
                    clipInfo.softness.y = vy / clipInfo.softness.y;
                }
                else
                {
                    clipInfo.softness.y = 10000f;
                }

                if (clipInfo.softness.z > 0)
                {
                    clipInfo.softness.z = vx / clipInfo.softness.z;
                }
                else
                {
                    clipInfo.softness.z = 10000f;
                }

                if (clipInfo.softness.w > 0)
                {
                    clipInfo.softness.w = vy / clipInfo.softness.w;
                }
                else
                {
                    clipInfo.softness.w = 10000f;
                }
            }
        }