Example #1
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="device">Requests the DirectX graphics device.</param>
 public UITexture(D3D.Device device)
 {
     _device        = device;
     RotationCenter = new DX.Vector2();
     Scaling        = new DX.Vector2();
     Translation    = new DX.Vector2();
 }
    public int Update(List <TouchFinger> allFingers, Vector2D scaleLimit)
    {
        //clean list (check if touches still exist)
        cleanList(allFingers);

        //check how many fingers are still on list and perform actions
        //TRANSLATE
        if (hitIds.Count == 1)
        {
            SlimDX.Vector2 delta = hitIds.First().touchPosition - hitIds.First().lastPosition;
            objectTransform = objectTransform * SlimDX.Matrix.Translation(delta.X, delta.Y, 0);
            return(1);
        }

        //SCALE AND ROTATE
        if (hitIds.Count > 1)
        {
            //SCALE
            float sx = new SlimDX.Vector3(objectTransform.M11, objectTransform.M12, objectTransform.M13).Length();
            float sy = new SlimDX.Vector3(objectTransform.M21, objectTransform.M22, objectTransform.M23).Length();
            //previous distance
            float pd = (float)new Vector2D((hitIds.Last().lastPosition.X - hitIds.First().lastPosition.X),
                                           (hitIds.Last().lastPosition.Y - hitIds.First().lastPosition.Y)).Length;

            //current distance
            float cd = (float)new Vector2D((hitIds.Last().touchPosition.X - hitIds.First().touchPosition.X),
                                           (hitIds.Last().touchPosition.Y - hitIds.First().touchPosition.Y)).Length;

            float scaleFactor = cd - pd;
            float fscale      = 1;
            if (scaleLimit.x < sx + scaleFactor && sx + scaleFactor < scaleLimit.y &&
                scaleLimit.x < sy + scaleFactor && sy + scaleFactor < scaleLimit.y)
            {
                fscale += scaleFactor;
            }

            //ROTATION
            //previous angle
            double pa = Math.Atan2(hitIds.Last().lastPosition.Y - hitIds.First().lastPosition.Y,
                                   hitIds.Last().lastPosition.X - hitIds.First().lastPosition.X);
            //current angle
            double ca = Math.Atan2(hitIds.Last().touchPosition.Y - hitIds.First().touchPosition.Y,
                                   hitIds.Last().touchPosition.X - hitIds.First().touchPosition.X);

            double da = ca - pa;
            //Final matrices
            SlimDX.Matrix  scale  = SlimDX.Matrix.Scaling(fscale, fscale, 1);
            SlimDX.Matrix  rot    = SlimDX.Matrix.RotationZ((float)da);
            SlimDX.Vector3 srcPos = new SlimDX.Vector3(objectTransform.M41, objectTransform.M42, 0);
            //Translate to origin
            objectTransform.M41 = 0;
            objectTransform.M42 = 0;
            //rotate scale and translate back to srcpos
            objectTransform = objectTransform * rot * scale * SlimDX.Matrix.Translation(srcPos);
            return(2);
        }

        return(0);
    }
        void DrawRectangle(float x, float y, float w, int h, Line MenuLine, SlimDX.Direct3D9.Font MenuFont, Color4 MenuLineColor)
        {
            try
            {
                SlimDX.Vector2[] vLine1 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine2 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine3 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine4 = new SlimDX.Vector2[2];

                vLine1[0] = new Vector2();
                vLine1[1] = new Vector2();
                vLine2[0] = new Vector2();
                vLine2[1] = new Vector2();
                vLine3[0] = new Vector2();
                vLine3[1] = new Vector2();
                vLine4[0] = new Vector2();
                vLine4[1] = new Vector2();

                vLine1[0].X = x;
                vLine1[0].Y = y;
                vLine1[1].X = x;
                vLine1[1].Y = y + h;

                vLine2[0].X = x + w;
                vLine2[0].Y = y;
                vLine2[1].X = x + w;
                vLine2[1].Y = y + h;

                vLine3[0].X = x;
                vLine3[0].Y = y;
                vLine3[1].X = x + w;
                vLine3[1].Y = y;

                vLine4[0].X = x;
                vLine4[0].Y = y + h;
                vLine4[1].X = x + w;
                vLine4[1].Y = y + h;

                if (MenuLine != null)
                {
                    MenuLine.Width     = 2;
                    MenuLine.Antialias = false;
                    MenuLine.GLLines   = false;
                    MenuLine.Begin();

                    MenuLine.Draw(vLine1, MenuLineColor);
                    MenuLine.Draw(vLine2, MenuLineColor);
                    MenuLine.Draw(vLine3, MenuLineColor);
                    MenuLine.Draw(vLine4, MenuLineColor);

                    MenuLine.End();
                }
            }
            catch (Exception ExtInfo)
            {
                Interface.ReportException(ExtInfo);
                return;
            }
        }
Example #4
0
        Vector2 PerformLayout(ILayoutable layoutable)
        {
            Vector2 contentPosition = ContentPosition(layoutable);
            Vector2 contentArea = ContentArea(layoutable);
            float   x = 0, y = 0, rowMax = 0, sizeX = 0, sizeY = 0;

            foreach (ILayoutable v in layoutable.LayoutChildren)
            {
                if (v.IsVisible)
                {
                    float outerSizeX = v.Size.X + v.Margin.Horizontal;
                    float outerSizeY = v.Size.Y + v.Margin.Vertical;
                    if (NewLine)
                    {
                        if (HorizontalFill)
                        {
                            if (x + outerSizeX > contentArea.X)
                            {
                                x      = 0;
                                y     += rowMax;
                                rowMax = 0;
                            }
                        }
                        else
                        {
                            if (y + outerSizeY > contentArea.Y)
                            {
                                y      = 0;
                                x     += rowMax;
                                rowMax = 0;
                            }
                        }
                    }
                    var p = new SlimDX.Vector2(x, y);
                    if (Origin == FlowOrigin.TopRight || Origin == FlowOrigin.BottomRight)
                    {
                        p.X = contentArea.X - x - outerSizeX;
                    }
                    if (Origin == FlowOrigin.BottomLeft || Origin == FlowOrigin.BottomRight)
                    {
                        p.Y = contentArea.Y - y - outerSizeY;
                    }
                    v.Location = contentPosition + new Vector2(v.Margin.Left, v.Margin.Top) + p;
                    sizeX      = Math.Max(sizeX, x + outerSizeX);
                    sizeY      = Math.Max(sizeY, y + outerSizeY);
                    if (HorizontalFill)
                    {
                        x     += outerSizeX;
                        rowMax = Math.Max(rowMax, outerSizeY);
                    }
                    else
                    {
                        y     += outerSizeY;
                        rowMax = Math.Max(rowMax, outerSizeX);
                    }
                }
            }
            return(new Vector2(sizeX, sizeY));
        }
 public TouchFinger(SlimDX.Vector2 pos, int tid, int tlt)
 {
     touchPosition = pos;
     lastPosition  = pos;
     firstPosition = pos;
     touchId       = tid;
     touchLifeTime = tlt;
     hasHit        = false;
 }
 public TouchFinger()
 {
     touchPosition = new SlimDX.Vector2(0f);
     lastPosition  = new SlimDX.Vector2(0f);
     firstPosition = new SlimDX.Vector2(0f);
     touchId       = 0;
     touchLifeTime = 0;
     hasHit        = false;
 }
Example #7
0
 protected bool MouseInRect(SlimDX.Vector2 mouseLocation, SlimDX.Vector2 rectangleLocation, SlimDX.Vector2 rectangleSize)
 {
     if (mouseLocation.X >= rectangleLocation.X &&
         mouseLocation.Y >= rectangleLocation.Y &&
         mouseLocation.X <= rectangleLocation.X + rectangleSize.X &&
         mouseLocation.Y <= rectangleLocation.Y + rectangleSize.Y)
     {
         return(true);
     }
     return(false);
 }
 public bool isHit(SlimDX.Vector2 touchPosition)
 {
     SlimDX.Vector2 trv = SlimDX.Vector2.TransformCoordinate(touchPosition, SlimDX.Matrix.Invert(objectTransform));
     if (trv.X > -0.5f && trv.Y > -0.5f && trv.X < 0.5f && trv.Y < 0.5f)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        // DrawControl2D
        internal void DrawControl2D(string Title, int SizeX, int SizeY, int PosX, int PosY, System.Drawing.Color TitleTextColor, System.Drawing.Color TitleColor, System.Drawing.Color BackgroundColor, System.Drawing.Color BorderColor)
        {
            int num  = 18;
            int num2 = PosY + 1;

            if (SizeY >= 18)
            {
                // Draw Header
                SlimDX.Direct3D9.Line line = new SlimDX.Direct3D9.Line(D3D.Device);
                List <SlimDX.Vector2> list = new List <SlimDX.Vector2>();
                for (int i = 0; i < num; i++)
                {
                    list.Add(new SlimDX.Vector2((float)PosX, (float)num2));
                    list.Add(new SlimDX.Vector2((float)(PosX + SizeX), (float)num2));
                    num2++;
                }
                line.Draw(list.ToArray(), TitleColor);


                // Draw Title
                DrawString2D(Title, PosX + 4, PosY + 1, TitleTextColor);

                // Draw Background
                List <SlimDX.Vector2> list2 = new List <SlimDX.Vector2>();
                for (int j = num; j < SizeY; j++)
                {
                    list2.Add(new SlimDX.Vector2((float)PosX, (float)num2));
                    list2.Add(new SlimDX.Vector2((float)(PosX + SizeX), (float)num2));
                    num2++;
                }
                line.Draw(list2.ToArray(), BackgroundColor);

                // Draw top border
                SlimDX.Vector2[] vertexList = new SlimDX.Vector2[] { new SlimDX.Vector2((float)PosX, (float)PosY), new SlimDX.Vector2((float)(PosX + SizeX), (float)PosY) };
                line.Draw(vertexList, BorderColor);

                // Draw bottom border
                SlimDX.Vector2[] vectorArray2 = new SlimDX.Vector2[] { new SlimDX.Vector2((float)PosX, (float)(PosY + SizeY)), new SlimDX.Vector2((float)((PosX + SizeX) + 1), (float)(PosY + SizeY)) };
                line.Draw(vectorArray2, BorderColor);

                // Draw right border
                SlimDX.Vector2[] vectorArray3 = new SlimDX.Vector2[] { new SlimDX.Vector2((float)(PosX + SizeX), (float)PosY), new SlimDX.Vector2((float)(PosX + SizeX), (float)(PosY + SizeY)) };
                line.Draw(vectorArray3, BorderColor);

                // Draw left border
                SlimDX.Vector2[] vectorArray4 = new SlimDX.Vector2[] { new SlimDX.Vector2((float)PosX, (float)PosY), new SlimDX.Vector2((float)PosX, (float)(PosY + SizeY)) };
                line.Draw(vectorArray4, BorderColor);

                // Dispose
                line.Dispose();
            }
        }
Example #10
0
    /// <summary>
    /// マウスの移動Deltaを取得
    /// </summary>
    public static bool TryGetMouseDelta(out SlimDX.Vector2 result)
    {
        result = new SlimDX.Vector2(0, 0);
        var mouse = GetMouse();

        if (mouse != null)
        {
            var state = mouse.GetCurrentState();
            result = new SlimDX.Vector2(state.X, state.Y);
            return(true);
        }

        return(false);
    }
        /*/
         * private void DrawLineStrip(Xna.Vector3 from, Xna.Vector3 to, Xna.Color color)
         * {
         *  var vertices = new List<PositionColored>();
         *
         *
         *  int points = 8;
         *  short[] lineStripIndices;
         *
         *  // Initialize an array of indices of type short.
         *  lineStripIndices = new short[points + 1];
         *
         *  // Populate the array with references to indices in the vertex buffer.
         *  for (int i = 0; i < points; i++)
         *  {
         *      lineStripIndices[i] = (short)(i + 1);
         *  }
         *
         *  lineStripIndices[points] = 1;
         *
         *  D3D.Device.DrawUserIndexedPrimitives(
         *  PrimitiveType.LineStrip,
         *  pointList,
         *  0,   // vertex buffer offset to add to each element of the index buffer
         *  9,   // number of vertices to draw
         *  lineStripIndices,
         *  0,   // first index element to read
         *  8    // number of primitives to draw
         *  );
         *
         *
         *
         *
         *  vertices.Add(new PositionColored(from, color.ToArgb()));
         *  vertices.Add(new PositionColored(to, color.ToArgb()));
         *
         *  var buffer = vertices.ToArray();
         *
         *  SetTarget(Vector3.Zero);
         *
         *  D3D.Device.DrawUserPrimitives(PrimitiveType.LineStrip, vertices.Count - 1, buffer);
         * }
         * /*/



        private void DrawLineTest2(SlimDX.Vector3 from, SlimDX.Vector3 to, System.Drawing.Color color)
        {
            //Device device;
            // create test vertex data, making sure to rewind the stream afterward
            //var vertices = new DataStream(12 * 3, true, true);
            //vertices.Write(new Vector3(0.0f, 0.5f, 0.5f));
            //vertices.Write(new Vector3(0.5f, -0.5f, 0.5f));
            //vertices.Write(new Vector3(-0.5f, -0.5f, 0.5f));
            //vertices.Position = 0;
            //var vertexBuffer = new SlimDX.Direct3D11.Buffer(device, vertices, 12 * 3, 0, 0);



            float x1, x2, y1, y2;

            x1 = Manager.LocalPlayer.Location.X;
            x2 = Manager.LocalPlayer.Location.X + 20;
            y1 = Manager.LocalPlayer.Location.Y;
            y2 = Manager.LocalPlayer.Location.Y + 20;



            Line line1 = new Line(D3D.Device);

            SlimDX.Vector2[] a = new SlimDX.Vector2[2];
            a[0].X      = x1;
            a[0].Y      = y1;
            a[1].X      = x2;
            a[1].Y      = y2;
            line1.Width = 40;
            line1.Draw(a, color);



            //var vertices = new List<PositionColored>();
            //vertices.Add(new PositionColored(from, color.ToArgb()));
            //vertices.Add(new PositionColored(to, color.ToArgb()));
            //var buffer = vertices.ToArray();

            //SetTarget(SlimDX.Vector3.Zero);

            //D3D.Device.DrawUserPrimitives(SlimDX.Direct3D9.PrimitiveType.LineStrip, vertices.Count - 1, buffer);
        }
Example #12
0
        public void Read(out SlimDX.Vector2 data)
        {
            int length = Marshal.SizeOf(typeof(SlimDX.Vector2));

            if (CurPtr() + length > mSize)
            {
                data = SlimDX.Vector2.Zero;
                OnReadError();
                return;
            }
            unsafe
            {
                fixed(SlimDX.Vector2 *pValue = &data)
                {
                    Marshal.Copy(mHandle, CurPtr(), (IntPtr)pValue, length);
                }
            }
            mPos += length;
        }
        void AdjustPosition(System.Drawing.Point position)
        {
            if (current == null)
            {
                return;
            }

            Position = Common.Math.ToVector2(position) + new Vector2(10, -currentTooltip.Size.Y - 10);

            if (Position.Y < 0)
            {
                Position = new Vector2(Position.X, 0);
            }

            if (Position.X + currentTooltip.Size.X > ((Control)current.Scene.Root).Size.X)
            {
                Position = new SlimDX.Vector2(Position.X - currentTooltip.Size.X, Position.Y);
            }

            if (Position.Y + currentTooltip.Size.Y > ((Control)current.Scene.Root).Size.Y)
            {
                Position = new SlimDX.Vector2(Position.X, Position.Y - currentTooltip.Size.Y);
            }
        }
Example #14
0
 public void ToD3DVector2_Test()
 {
     var actual = new Irelia.Render.Vector2(0.1f, 0.22f);
     var expected = new SlimDX.Vector2(actual.x, actual.y);
     Assert.AreEqual(expected, actual.ToD3DVector2());
 }
        void AdjustPosition(System.Drawing.Point position)
        {
            if (current == null) return;

            Position = Common.Math.ToVector2(position) + new Vector2(10, -currentTooltip.Size.Y - 10);

            if (Position.Y < 0)
                Position = new Vector2(Position.X, 0);

            if (Position.X + currentTooltip.Size.X > ((Control)current.Scene.Root).Size.X)
                Position = new SlimDX.Vector2(Position.X - currentTooltip.Size.X, Position.Y);

            if (Position.Y + currentTooltip.Size.Y > ((Control)current.Scene.Root).Size.Y)
                Position = new SlimDX.Vector2(Position.X, Position.Y - currentTooltip.Size.Y);
        }
 public void UpdateValues(SlimDX.Vector2 pos, int tlt)
 {
     lastPosition  = touchPosition;
     touchPosition = pos;
     touchLifeTime = tlt;
 }
Example #17
0
        void DrawRectangle(float x, float y, float w, int h, Line MenuLine, SlimDX.Direct3D9.Font MenuFont, Color4 MenuLineColor)
        {
            try
            {
                SlimDX.Vector2[] vLine1 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine2 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine3 = new SlimDX.Vector2[2];
                SlimDX.Vector2[] vLine4 = new SlimDX.Vector2[2];

                vLine1[0] = new Vector2();
                vLine1[1] = new Vector2();
                vLine2[0] = new Vector2();
                vLine2[1] = new Vector2();
                vLine3[0] = new Vector2();
                vLine3[1] = new Vector2();
                vLine4[0] = new Vector2();
                vLine4[1] = new Vector2();

                vLine1[0].X = x;
                vLine1[0].Y = y;
                vLine1[1].X = x;
                vLine1[1].Y = y + h;

                vLine2[0].X = x + w;
                vLine2[0].Y = y;
                vLine2[1].X = x + w;
                vLine2[1].Y = y + h;

                vLine3[0].X = x;
                vLine3[0].Y = y;
                vLine3[1].X = x + w;
                vLine3[1].Y = y;

                vLine4[0].X = x;
                vLine4[0].Y = y + h;
                vLine4[1].X = x + w;
                vLine4[1].Y = y + h;

                if (MenuLine != null)
                {
                    MenuLine.Width = 2;
                    MenuLine.Antialias = false;
                    MenuLine.GLLines = false;
                    MenuLine.Begin();

                    MenuLine.Draw(vLine1, MenuLineColor);
                    MenuLine.Draw(vLine2, MenuLineColor);
                    MenuLine.Draw(vLine3, MenuLineColor);
                    MenuLine.Draw(vLine4, MenuLineColor);

                    MenuLine.End();
                }
            }
            catch (Exception ExtInfo)
            {
                Interface.ReportException(ExtInfo);
                return;
            }
        }
 public PositionTexcoord(PositionTexcoord copy)
 {
     position = copy.position;
     texcoord = copy.texcoord;
 }
 public PositionNormalTexcoord(Vector3 position, Vector3 normal, Vector3 texcoord)
 {
     this.position = position;
     this.normal   = normal;
     this.texcoord = Common.Math.ToVector2(texcoord);
 }
 public PositionNormalTexcoord(PositionNormalTexcoord copy)
 {
     position = copy.position;
     normal   = copy.normal;
     texcoord = copy.texcoord;
 }
 Vector2 PerformLayout(ILayoutable layoutable)
 {
     Vector2 contentPosition = ContentPosition(layoutable);
     Vector2 contentArea = ContentArea(layoutable);
     float x = 0, y = 0, rowMax = 0, sizeX = 0, sizeY = 0;
     foreach (ILayoutable v in layoutable.LayoutChildren)
         if (v.IsVisible)
         {
             float outerSizeX = v.Size.X + v.Margin.Horizontal;
             float outerSizeY = v.Size.Y + v.Margin.Vertical;
             if (NewLine)
             {
                 if (HorizontalFill)
                 {
                     if (x + outerSizeX > contentArea.X)
                     {
                         x = 0;
                         y += rowMax;
                         rowMax = 0;
                     }
                 }
                 else
                 {
                     if (y + outerSizeY > contentArea.Y)
                     {
                         y = 0;
                         x += rowMax;
                         rowMax = 0;
                     }
                 }
             }
             var p = new SlimDX.Vector2(x, y);
             if (Origin == FlowOrigin.TopRight || Origin == FlowOrigin.BottomRight)
                 p.X = contentArea.X - x - outerSizeX;
             if (Origin == FlowOrigin.BottomLeft || Origin == FlowOrigin.BottomRight)
                 p.Y = contentArea.Y - y - outerSizeY;
             v.Location = contentPosition + new Vector2(v.Margin.Left, v.Margin.Top) + p;
             sizeX = Math.Max(sizeX, x + outerSizeX);
             sizeY = Math.Max(sizeY, y + outerSizeY);
             if (HorizontalFill)
             {
                 x += outerSizeX;
                 rowMax = Math.Max(rowMax, outerSizeY);
             }
             else
             {
                 y += outerSizeY;
                 rowMax = Math.Max(rowMax, outerSizeX);
             }
         }
     return new Vector2(sizeX, sizeY);
 }
Example #22
0
 public static PMath.Vector2 ToPhx(this SDX.Vector2 v)
 {
     return(new PMath.Vector2(v.X, v.Y));
 }