/// <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; } }
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; }
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(); } }
/// <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); }
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); } }
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; }
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); }
public static PMath.Vector2 ToPhx(this SDX.Vector2 v) { return(new PMath.Vector2(v.X, v.Y)); }