Пример #1
0
        private void ApplyHandleChange(float xChange, float yChange)
        {
            float xChangeMultiplier;
            float yChangeMultiplier;
            float scaleXMultiplier;
            float scaleYMultiplier;

            GetChangeAndScaleMultipliers(out xChangeMultiplier, out yChangeMultiplier, out scaleXMultiplier, out scaleYMultiplier);


            IStaticPositionable positionable = SelectedObject as IStaticPositionable;

            PositionedObject positionedObject = SelectedObject as PositionedObject;

            if (positionedObject != null && positionedObject.Parent != null && positionedObject.IgnoreParentPosition == false)
            {
                positionedObject.RelativeX += xChangeMultiplier * xChange;
                positionedObject.RelativeY += yChangeMultiplier * yChange;
            }
            else
            {
                positionable.X += xChangeMultiplier * xChange;
                positionable.Y += yChangeMultiplier * yChange;
            }

            ApplyScale(xChange, yChange, scaleXMultiplier, scaleYMultiplier);
        }
Пример #2
0
        private void UpdatePosition()
        {
            if (mHighlightedObject is IStaticPositionable)
            {
                IStaticPositionable positionable = mHighlightedObject as IStaticPositionable;

                mHighlightRectangle.X = positionable.X;
                mHighlightRectangle.Y = positionable.Y;
                mHighlightRectangle.Z = positionable.Z;
            }
        }
Пример #3
0
        bool GetIsCursorOverGrabbedObject()
        {
            Cursor cursor = GuiManager.Cursor;

            if (mSelectedObject is IClickable)
            {
                return(((IClickable)mSelectedObject).HasCursorOver(GuiManager.Cursor));
            }
            else if (mSelectedObject is Circle)
            {
                return(cursor.IsOn3D(mSelectedObject as Circle));
            }
            else if (mSelectedObject is Polygon)
            {
                return(cursor.IsOn3D(mSelectedObject as Polygon));
            }
            else if (mSelectedObject is AxisAlignedRectangle)
            {
                return(cursor.IsOn3D(mSelectedObject as AxisAlignedRectangle));
            }
            else if (mSelectedObject is Text)
            {
                return(cursor.IsOn3D(mSelectedObject as Text));
            }
            else if (mSelectedObject is Sprite)
            {
                return(cursor.IsOn3D(mSelectedObject as Sprite));
            }
            else if (mSelectedObject is SpriteFrame)
            {
                return(cursor.IsOn3D(mSelectedObject as SpriteFrame));
            }
            else if (mSelectedObject is IScalable && mSelectedObject is IStaticPositionable)
            {
                float cursorWorldX = cursor.WorldXAt(0);
                float cursorWorldY = cursor.WorldYAt(0);

                IStaticPositionable positionable = SelectedObject as IStaticPositionable;
                IScalable           scalable     = SelectedObject as IScalable;


                return(cursorWorldX > positionable.X - scalable.ScaleX &&
                       cursorWorldX < positionable.X + scalable.ScaleX &&
                       cursorWorldY > positionable.Y - scalable.ScaleY &&
                       cursorWorldY < positionable.Y + scalable.ScaleY);
            }
            return(false);
        }