internal override void DrawSelfAndChildren(Camera camera) { if (Highlighted) { float xPos = .5f + mWorldUnitX + Width / 2.0f; float yPos = mWorldUnitY; float highlightScaleX = .5f + this.Width / 2.0f; float highlightScaleY = mTextScale; StaticVertices[0].Position.X = xPos - (float)highlightScaleX; StaticVertices[0].Position.Y = (float)(yPos - highlightScaleY); StaticVertices[0].TextureCoordinate.X = .0234375f; StaticVertices[0].TextureCoordinate.Y = .65f; StaticVertices[1].Position.X = xPos - (float)highlightScaleX; StaticVertices[1].Position.Y = (float)(yPos + highlightScaleY); StaticVertices[1].TextureCoordinate.X = .0234375f; StaticVertices[1].TextureCoordinate.Y = .65f; StaticVertices[2].Position.X = xPos + (float)highlightScaleX; StaticVertices[2].Position.Y = (float)(yPos + highlightScaleY); StaticVertices[2].TextureCoordinate.X = .02734375f; StaticVertices[2].TextureCoordinate.Y = .66f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xPos + (float)highlightScaleX; StaticVertices[5].Position.Y = (float)(yPos - highlightScaleY); StaticVertices[5].TextureCoordinate.X = .02734375f; StaticVertices[5].TextureCoordinate.Y = .66f; GuiManager.WriteVerts(StaticVertices); } base.DrawSelfAndChildren(camera); }
internal override void DrawSelfAndChildren(Camera camera) { if (Visible == false) { return; } mTextBox.DrawSelfAndChildren(camera); #region draw the custom UpDown button float xToUse = (mUpDownButton.WorldUnitX); float yToUse = (mUpDownButton.WorldUnitY); #if FRB_MDX float zToUse = (camera.Z + 100); #else float zToUse = camera.Z - 100; #endif StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = zToUse; if (mUpDownButton.ButtonPushedState == ButtonPushedState.Down) { StaticVertices[0].Position.X = xToUse - mUpDownButton.ScaleX; StaticVertices[0].Position.Y = yToUse - mUpDownButton.ScaleY; StaticVertices[0].TextureCoordinate.X = rightUp; StaticVertices[0].TextureCoordinate.Y = bottomUp; StaticVertices[1].Position.X = xToUse - mUpDownButton.ScaleX; StaticVertices[1].Position.Y = yToUse + mUpDownButton.ScaleY; StaticVertices[1].TextureCoordinate.X = rightUp; StaticVertices[1].TextureCoordinate.Y = topUp; StaticVertices[2].Position.X = xToUse + mUpDownButton.ScaleX; StaticVertices[2].Position.Y = yToUse + mUpDownButton.ScaleY; StaticVertices[2].TextureCoordinate.X = rightDown; StaticVertices[2].TextureCoordinate.Y = topUp; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + mUpDownButton.ScaleX; StaticVertices[5].Position.Y = yToUse - mUpDownButton.ScaleY; StaticVertices[5].TextureCoordinate.X = rightDown; StaticVertices[5].TextureCoordinate.Y = bottomUp; GuiManager.WriteVerts(StaticVertices); } else { StaticVertices[0].Position.X = xToUse - mUpDownButton.ScaleX; StaticVertices[0].Position.Y = yToUse - mUpDownButton.ScaleY; StaticVertices[0].TextureCoordinate.X = leftUp; StaticVertices[0].TextureCoordinate.Y = bottomUp; StaticVertices[1].Position.X = xToUse - mUpDownButton.ScaleX; StaticVertices[1].Position.Y = yToUse + mUpDownButton.ScaleY; StaticVertices[1].TextureCoordinate.X = leftUp; StaticVertices[1].TextureCoordinate.Y = topUp; StaticVertices[2].Position.X = xToUse + mUpDownButton.ScaleX; StaticVertices[2].Position.Y = yToUse + mUpDownButton.ScaleY; StaticVertices[2].TextureCoordinate.X = rightUp; StaticVertices[2].TextureCoordinate.Y = topUp; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + mUpDownButton.ScaleX; StaticVertices[5].Position.Y = yToUse - mUpDownButton.ScaleY; StaticVertices[5].TextureCoordinate.X = rightUp; StaticVertices[5].TextureCoordinate.Y = bottomUp; GuiManager.WriteVerts(StaticVertices); } #endregion }
internal override void DrawSelfAndChildren(Camera camera) { if (Visible == false) { return; } if (!mCollapsed) { base.DrawSelfAndChildren(camera); } else { #region collapsed float xToUse = (float)(mWorldUnitX); float yToUse = (float)(mWorldUnitY); StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = camera.Z + FlatRedBall.Math.MathFunctions.ForwardVector3.Z * 100; #region Left Side StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse + ScaleY - .4f; StaticVertices[0].TextureCoordinate.X = 0; StaticVertices[0].TextureCoordinate.Y = .6953125f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[1].TextureCoordinate.X = 0; StaticVertices[1].TextureCoordinate.Y = .570313f; StaticVertices[2].Position.X = xToUse - ScaleX + .6f; StaticVertices[2].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[2].TextureCoordinate.X = .0234375f; StaticVertices[2].TextureCoordinate.Y = .570313f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + .6f; StaticVertices[5].Position.Y = yToUse + ScaleY - .4f; StaticVertices[5].TextureCoordinate.X = .0234375f; StaticVertices[5].TextureCoordinate.Y = .6953125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Title Bar Center StaticVertices[0].Position.X = xToUse - ScaleX + .59f; StaticVertices[0].Position.Y = yToUse + ScaleY - .4f; StaticVertices[0].TextureCoordinate.X = .01953125f; StaticVertices[0].TextureCoordinate.Y = .6953125f; StaticVertices[1].Position.X = xToUse - ScaleX + .59f; StaticVertices[1].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[1].TextureCoordinate.X = .01953125f; StaticVertices[1].TextureCoordinate.Y = .570313f; StaticVertices[2].Position.X = xToUse + ScaleX - .59f; StaticVertices[2].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[2].TextureCoordinate.X = .0234375f; StaticVertices[2].TextureCoordinate.Y = .570313f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - .59f; StaticVertices[5].Position.Y = yToUse + ScaleY - .4f; StaticVertices[5].TextureCoordinate.X = .0234375f; StaticVertices[5].TextureCoordinate.Y = .6953125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Right Side StaticVertices[0].Position.X = xToUse + ScaleX - .6f; StaticVertices[0].Position.Y = yToUse + ScaleY - .4f; StaticVertices[0].TextureCoordinate.X = .0234375f; StaticVertices[0].TextureCoordinate.Y = .6953125f; StaticVertices[1].Position.X = xToUse + ScaleX - .6f; StaticVertices[1].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[1].TextureCoordinate.X = .0234375f; StaticVertices[1].TextureCoordinate.Y = .570313f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY + 2.8f; StaticVertices[2].TextureCoordinate.X = 0; StaticVertices[2].TextureCoordinate.Y = .570313f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse + ScaleY - .4f; StaticVertices[5].TextureCoordinate.X = 0; StaticVertices[5].TextureCoordinate.Y = .6953125f; GuiManager.WriteVerts(StaticVertices); #endregion #region title bar text if (mName != "") { TextManager.mXForVertexBuffer = xToUse - ScaleX + 1.0f; TextManager.mYForVertexBuffer = yToUse + ScaleY + 1.1f; #if FRB_MDX TextManager.mZForVertexBuffer = (float)camera.Z + 100; #else TextManager.mZForVertexBuffer = (float)camera.Z - 100; #endif TextManager.mRedForVertexBuffer = 255; TextManager.mGreenForVertexBuffer = 255; TextManager.mBlueForVertexBuffer = 255; TextManager.mScaleForVertexBuffer = GuiManager.TextHeight / 2.0f; TextManager.mSpacingForVertexBuffer = GuiManager.TextSpacing; TextManager.Draw(ref mName); } #endregion #endregion } }
internal void Draw(Camera camera, double startY, double startX, double maxWidth, int numDeep, ref int itemNum, ref int numDrawn, int startAt, int numToDraw, float distanceBetweenLines) { if (itemNum > startAt - 1) { float yForThisRender = (float)(startY - distanceBetweenLines * numDrawn); float xPos = (float)(startX + numDeep * .7); if (icons.Count != 0 && icons[0].ScaleX > .7f) { xPos += icons[0].ScaleX - .7f; } float yPos = yForThisRender; #region draw the icons foreach (ListBoxIcon icon in icons) { if (icon.Texture != null) { GuiManager.AddTextureSwitch(icon.Texture); } v[0].Position.X = xPos - icon.ScaleX; v[0].Position.Y = yPos - icon.ScaleY; v[0].TextureCoordinate.X = icon.Left; v[0].TextureCoordinate.Y = icon.Bottom; v[1].Position.X = xPos - icon.ScaleX; v[1].Position.Y = yPos + icon.ScaleY; v[1].TextureCoordinate.X = icon.Left; v[1].TextureCoordinate.Y = icon.Top; v[2].Position.X = xPos + icon.ScaleX; v[2].Position.Y = yPos + icon.ScaleY; v[2].TextureCoordinate.X = icon.Right; v[2].TextureCoordinate.Y = icon.Top; v[3] = v[0]; v[4] = v[2]; v[5].Position.X = xPos + icon.ScaleX; v[5].Position.Y = yPos - icon.ScaleY; v[5].TextureCoordinate.X = icon.Right; v[5].TextureCoordinate.Y = icon.Bottom; GuiManager.WriteVerts(v); xPos += .1f + 2 * icon.ScaleX; } #endregion if (this.Text != null) { string textToUse = this.Text.Replace('\n', ' '); int numOfChars = TextManager.GetNumberOfCharsIn((float)(maxWidth - numDeep * .7f), textToUse, GuiManager.TextSpacing); // TODO: need to modify this to handle varying text sizes TextManager.mScaleForVertexBuffer = GuiManager.TextHeight / 2.0f; TextManager.mSpacingForVertexBuffer = GuiManager.TextSpacing; TextManager.mYForVertexBuffer = yForThisRender; #if FRB_MDX TextManager.mZForVertexBuffer = (float)camera.Z + 100; #else TextManager.mZForVertexBuffer = (float)camera.Z - 100; #endif if (Enabled) { TextManager.mAlphaForVertexBuffer = 1 * FlatRedBall.Graphics.GraphicalEnumerations.MaxColorComponentValue; } else { TextManager.mAlphaForVertexBuffer = .5f * FlatRedBall.Graphics.GraphicalEnumerations.MaxColorComponentValue; } TextManager.mAlignmentForVertexBuffer = HorizontalAlignment.Left; if (mDrawHighlighted) { TextManager.mRedForVertexBuffer = TextManager.mGreenForVertexBuffer = TextManager.mBlueForVertexBuffer = FlatRedBall.Graphics.GraphicalEnumerations.MaxColorComponentValue; } else { TextManager.mRedForVertexBuffer = TextManager.mGreenForVertexBuffer = TextManager.mBlueForVertexBuffer = 20; } #if FRB_MDX v[0].Position.Z = v[1].Position.Z = v[2].Position.Z = v[3].Position.Z = v[4].Position.Z = v[5].Position.Z = camera.Z + 100; #else v[0].Position.Z = v[1].Position.Z = v[2].Position.Z = v[3].Position.Z = v[4].Position.Z = v[5].Position.Z = camera.Z - 100; #endif TextManager.mXForVertexBuffer = xPos; if (numOfChars != 0) { if (numOfChars == textToUse.Length) { TextManager.Draw(ref textToUse); } else { string asString = textToUse.Substring(0, numOfChars); TextManager.Draw(ref asString); } } } numDrawn++; } itemNum++; if (numDrawn > numToDraw - 1) { return; } if (mExpanded) { for (int i = 0; i < mItems.Count; i++) { mItems[i].Draw(camera, startY, startX, maxWidth, numDeep + 1, ref itemNum, ref numDrawn, startAt, numToDraw, distanceBetweenLines); if (numDrawn > numToDraw - 1) { return; } } } }
internal override void DrawSelfAndChildren(Camera camera) { if (Visible == false) { return; } float xToUse = mWorldUnitX; float yToUse = mWorldUnitY; float edgeWidth = .2f; #region draw the basic button StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = camera.Z + FlatRedBall.Math.MathFunctions.ForwardVector3.Z * 100; StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; if (mDrawBase) { #region state == "down" if (ButtonPushedState == ButtonPushedState.Down) { #region Top Left of the Window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .179688f; StaticVertices[0].TextureCoordinate.Y = .64453125f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .179688f; StaticVertices[1].TextureCoordinate.Y = .640625f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .640625f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .64453125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Top Border StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .1796875f; StaticVertices[0].TextureCoordinate.Y = .64453125f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .1796875f; StaticVertices[1].TextureCoordinate.Y = .640625f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .640625f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .64453125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Top Right of the Window StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .640625f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .63671875f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .63671875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .640625f; GuiManager.WriteVerts(StaticVertices); #endregion #region RightBorder StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Border StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .1796875f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .1796875f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region LeftBorder StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .18359375f; StaticVertices[0].TextureCoordinate.Y = .640625f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .18359375f; StaticVertices[1].TextureCoordinate.Y = .63671875f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .1875f; StaticVertices[2].TextureCoordinate.Y = .63671875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .1875f; StaticVertices[5].TextureCoordinate.Y = .640625f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Left of the Window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .179688f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .179688f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .10938f; StaticVertices[0].TextureCoordinate.Y = .63719f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .10938f; StaticVertices[1].TextureCoordinate.Y = .6953125f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .10998f; StaticVertices[2].TextureCoordinate.Y = .6953125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .10998f; StaticVertices[5].TextureCoordinate.Y = .63719f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Right of the Window StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion } #endregion #region state == "up" else { #region Top Left of the Window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region Top Border StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .1796875f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .1796875f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region Top Right of the Window StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[0].TextureCoordinate.X = .179688f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .179688f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region RightBorder StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .18359375f; StaticVertices[0].TextureCoordinate.Y = .640625f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .18359375f; StaticVertices[1].TextureCoordinate.Y = .63671875f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .1875f; StaticVertices[2].TextureCoordinate.Y = .63671875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .1875f; StaticVertices[5].TextureCoordinate.Y = .640625f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Right of the Window StaticVertices[0].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .179688f; StaticVertices[0].TextureCoordinate.Y = .64453125f; StaticVertices[1].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .179688f; StaticVertices[1].TextureCoordinate.Y = .640625f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .640625f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .64453125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Border StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .1796875f; StaticVertices[0].TextureCoordinate.Y = .64453125f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .1796875f; StaticVertices[1].TextureCoordinate.Y = .640625f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .18359375f; StaticVertices[2].TextureCoordinate.Y = .640625f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .18359375f; StaticVertices[5].TextureCoordinate.Y = .64453125f; GuiManager.WriteVerts(StaticVertices); #endregion #region LeftBorder StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .63671875f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .6328125f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .63671875f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom Left of the Window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .17578125f; StaticVertices[0].TextureCoordinate.Y = .640625f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .63671875f; StaticVertices[2].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[2].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[2].TextureCoordinate.X = .1796875f; StaticVertices[2].TextureCoordinate.Y = .63671875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .1796875f; StaticVertices[5].TextureCoordinate.Y = .640625f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = .10938f; StaticVertices[0].TextureCoordinate.Y = .6953125f; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = .10938f; StaticVertices[1].TextureCoordinate.Y = .63719f; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = .10998f; StaticVertices[2].TextureCoordinate.Y = .63719f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = .10998f; StaticVertices[5].TextureCoordinate.Y = .6953125f; GuiManager.WriteVerts(StaticVertices); #endregion } #endregion } #endregion #region draw overlay texture if it is an icon in our Gui texture #if FRB_MDX uint colorBefore = mColor; #else Color colorBefore = mColor; #endif if (ButtonPushedState == ButtonPushedState.Down && mHighlightOnDown) { // This will only have an impact on the button if it is using an overlay texture. #if FRB_MDX StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = 0xff333333; #else StaticVertices[0].Color.PackedValue = StaticVertices[1].Color.PackedValue = StaticVertices[2].Color.PackedValue = StaticVertices[3].Color.PackedValue = StaticVertices[4].Color.PackedValue = StaticVertices[5].Color.PackedValue = 0xff333333; #endif } if (ButtonPushedState == ButtonPushedState.Down && downOverlayTL.X != -1) { StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = (float)downOverlayBL.X; StaticVertices[0].TextureCoordinate.Y = (float)downOverlayBL.Y; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = (float)downOverlayTL.X; StaticVertices[1].TextureCoordinate.Y = (float)downOverlayTL.Y; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = (float)downOverlayTR.X; StaticVertices[2].TextureCoordinate.Y = (float)downOverlayTR.Y; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = (float)downOverlayBR.X; StaticVertices[5].TextureCoordinate.Y = (float)downOverlayBR.Y; GuiManager.WriteVerts(StaticVertices); #if FRB_MDX mColor = 0xff000000; #else mColor.PackedValue = 0xff000000; #endif } else if (overlayTL.X != -1) { StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = (float)overlayBL.X; StaticVertices[0].TextureCoordinate.Y = (float)overlayBL.Y; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = (float)overlayTL.X; StaticVertices[1].TextureCoordinate.Y = (float)overlayTL.Y; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = (float)overlayTR.X; StaticVertices[2].TextureCoordinate.Y = (float)overlayTR.Y; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = (float)overlayBR.X; StaticVertices[5].TextureCoordinate.Y = (float)overlayBR.Y; GuiManager.WriteVerts(StaticVertices); } mColor = colorBefore; #endregion #region draw the overlay texture if it is in a different texture if (this.mOverlayTexture != null) { float left = mTextureLeft; float right = mTextureRight; float top = mTextureTop; float bottom = mTextureBottom; if (mFlipHorizontal) { float temporary = left; left = right; right = temporary; } if (mFlipVertical) { float temporary = top; top = bottom; bottom = temporary; } GuiManager.AddTextureSwitch(mOverlayTexture); StaticVertices[0].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[0].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[0].TextureCoordinate.X = left; StaticVertices[0].TextureCoordinate.Y = bottom; StaticVertices[1].Position.X = xToUse - ScaleX + edgeWidth; StaticVertices[1].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[1].TextureCoordinate.X = left; StaticVertices[1].TextureCoordinate.Y = top; StaticVertices[2].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[2].Position.Y = yToUse + ScaleY - edgeWidth; StaticVertices[2].TextureCoordinate.X = right; StaticVertices[2].TextureCoordinate.Y = top; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - edgeWidth; StaticVertices[5].Position.Y = yToUse - ScaleY + edgeWidth; StaticVertices[5].TextureCoordinate.X = right; StaticVertices[5].TextureCoordinate.Y = bottom; GuiManager.WriteVerts(StaticVertices); } #endregion #region Draw the text #if FRB_MDX TextManager.mZForVertexBuffer = camera.Position.Z + 100; #else TextManager.mZForVertexBuffer = camera.Position.Z - 100; #endif TextManager.mScaleForVertexBuffer = GuiManager.TextHeight / 2.0f; TextManager.mSpacingForVertexBuffer = GuiManager.TextHeight / 2.0f; TextManager.mAlignmentForVertexBuffer = HorizontalAlignment.Center; TextManager.mMaxWidthForVertexBuffer = 1000; if (this.overlayTL.X == -1 && this.mOverlayTexture == null && Text != null && Text != "") { TextManager.mXForVertexBuffer = xToUse; TextManager.mYForVertexBuffer = yToUse; int numberOfLines = StringFunctions.GetLineCount(mText); if (numberOfLines > 1) { TextManager.mYForVertexBuffer += TextManager.mSpacingForVertexBuffer * (numberOfLines - 1); } TextManager.mRedForVertexBuffer = TextManager.mGreenForVertexBuffer = TextManager.mBlueForVertexBuffer = 20; if (!Enabled) { TextManager.mAlphaForVertexBuffer = FlatRedBall.Graphics.GraphicalEnumerations.MaxColorComponentValue / 2.0f; } else { TextManager.mAlphaForVertexBuffer = FlatRedBall.Graphics.GraphicalEnumerations.MaxColorComponentValue; } string textToDraw = this.Text; TextManager.Draw(ref textToDraw); } #endregion }
internal override void DrawSelfAndChildren(Camera camera) { if (GuiManagerDrawn == false) { return; } base.DrawSelfAndChildren(camera); float xToUse = WorldUnitX; float yToUse = positionBar.WorldUnitY; #region Set the color and Z of the vertices once since they'll always remain the same. StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = camera.Z + FlatRedBall.Math.MathFunctions.ForwardVector3.Z * 100; #endregion // give the window a 1 unit border for the elements #region draw the horizontal bar StaticVertices[0].Position.X = xToUse - ScaleX + 1; StaticVertices[0].Position.Y = yToUse - .1f; StaticVertices[0].TextureCoordinate.X = .59f; StaticVertices[0].TextureCoordinate.Y = .84f; StaticVertices[1].Position.X = xToUse - ScaleX + 1; StaticVertices[1].Position.Y = yToUse + .1f; StaticVertices[1].TextureCoordinate.X = .59f; StaticVertices[1].TextureCoordinate.Y = .835f; StaticVertices[2].Position.X = xToUse + this.ScaleX - 1; StaticVertices[2].Position.Y = yToUse + .1f; StaticVertices[2].TextureCoordinate.X = .591f; StaticVertices[2].TextureCoordinate.Y = .835f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + this.ScaleX - 1; StaticVertices[5].Position.Y = yToUse - .1f; StaticVertices[5].TextureCoordinate.X = .591f; StaticVertices[5].TextureCoordinate.Y = .84f; GuiManager.WriteVerts(StaticVertices); #endregion #region draw the larger increments double incrementsPassed = mStart / mVerticalBarIncrement; if (incrementsPassed != (int)mStart / mVerticalBarIncrement) { incrementsPassed = (int)incrementsPassed + 1; } double xPosOfVerticalBar = incrementsPassed * mVerticalBarIncrement; // now that we know where the first xPosOfVerticalBar is, we can calculate how many large increment lines/values we'll have. float offset = (float)((incrementsPassed * mVerticalBarIncrement) - mStart); if (mLargeIncrementPositions.Length != 1 + (int)((mValueWidth - offset) / mVerticalBarIncrement)) { mLargeIncrementPositions = new float[1 + (int)((mValueWidth - offset) / mVerticalBarIncrement)]; } // This is handled in the //if( mLargeIncrementValues.Length != 1 + (int)((mValueWidth-offset)/mVerticalBarIncrement)) // mLargeIncrementValues = new float[ 1 + (int)((mValueWidth-offset)/mVerticalBarIncrement)]; int i = 0; float barX; float barY = yToUse; while (xPosOfVerticalBar <= mStart + mValueWidth && i < mLargeIncrementPositions.Length) { barX = WorldUnitX + ValueToPositionRelative(xPosOfVerticalBar); StaticVertices[0].Position.X = barX - .2f; StaticVertices[0].Position.Y = barY - .7f; StaticVertices[0].TextureCoordinate.X = .59f; StaticVertices[0].TextureCoordinate.Y = .84f; StaticVertices[1].Position.X = barX - .2f; StaticVertices[1].Position.Y = barY + .7f; StaticVertices[1].TextureCoordinate.X = .59f; StaticVertices[1].TextureCoordinate.Y = .835f; StaticVertices[2].Position.X = barX + .2f; StaticVertices[2].Position.Y = barY + .7f; StaticVertices[2].TextureCoordinate.X = .591f; StaticVertices[2].TextureCoordinate.Y = .835f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = barX + .2f; StaticVertices[5].Position.Y = barY - .7f; StaticVertices[5].TextureCoordinate.X = .591f; StaticVertices[5].TextureCoordinate.Y = .84f; GuiManager.WriteVerts(StaticVertices); mLargeIncrementPositions[i] = barX; switch (this.mTimeUnitDisplayed) { case TimeUnit.Millisecond: mLargeIncrementValues[i] = (float)(xPosOfVerticalBar * 1000); break; case TimeUnit.Second: mLargeIncrementValues[i] = (float)(xPosOfVerticalBar); break; } xPosOfVerticalBar += mVerticalBarIncrement; i++; } #endregion #region draw the small increments incrementsPassed = mStart / mSmallVerticalBarIncrement; if (incrementsPassed != (int)mStart / mSmallVerticalBarIncrement) { incrementsPassed = (int)incrementsPassed + 1; } barY = yToUse; xPosOfVerticalBar = incrementsPassed * mSmallVerticalBarIncrement; while (xPosOfVerticalBar <= mStart + mValueWidth) { barX = WorldUnitX + ValueToPositionRelative(xPosOfVerticalBar); StaticVertices[0].Position.X = barX - .1f; StaticVertices[0].Position.Y = barY - .5f; StaticVertices[0].TextureCoordinate.X = .59f; StaticVertices[0].TextureCoordinate.Y = .84f; StaticVertices[1].Position.X = barX - .1f; StaticVertices[1].Position.Y = barY + .5f; StaticVertices[1].TextureCoordinate.X = .59f; StaticVertices[1].TextureCoordinate.Y = .835f; StaticVertices[2].Position.X = barX + .1f; StaticVertices[2].Position.Y = barY + .5f; StaticVertices[2].TextureCoordinate.X = .591f; StaticVertices[2].TextureCoordinate.Y = .835f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = barX + .1f; StaticVertices[5].Position.Y = barY - .5f; StaticVertices[5].TextureCoordinate.X = .591f; StaticVertices[5].TextureCoordinate.Y = .84f; GuiManager.WriteVerts(StaticVertices); xPosOfVerticalBar += mSmallVerticalBarIncrement; } #endregion #region draw the large increment text if (mShowValues) { float yPos = WorldUnitY + ScaleY + GuiManager.TextHeight / 2.0f - .2f; TextManager.mYForVertexBuffer = yPos; #if FRB_MDX TextManager.mZForVertexBuffer = camera.Position.Z + 100; TextManager.mRedForVertexBuffer = 20; TextManager.mGreenForVertexBuffer = 20; TextManager.mBlueForVertexBuffer = 20; TextManager.mAlphaForVertexBuffer = 255; #else TextManager.mZForVertexBuffer = camera.Position.Z - 100; TextManager.mRedForVertexBuffer = .1f; TextManager.mGreenForVertexBuffer = .1f; TextManager.mBlueForVertexBuffer = .1f; TextManager.mAlphaForVertexBuffer = 1; #endif TextManager.mSpacingForVertexBuffer = GuiManager.TextSpacing; TextManager.mScaleForVertexBuffer = GuiManager.TextHeight / 2.0f; for (i = 0; i < this.mCachedIncrementValues.Count; i++) { TextManager.mXForVertexBuffer = mLargeIncrementPositions[i]; TextManager.mRedForVertexBuffer = TextManager.mGreenForVertexBuffer = TextManager.mBlueForVertexBuffer = 20; string asString = mCachedIncrementValues[i]; TextManager.Draw(ref asString); } } #endregion // if(CurrentValue >= Start && CurrentValue <= Start + ValueWidth) // positionBar.Draw(camera); }
internal override void DrawSelfAndChildren(Camera camera) { if (Visible == false) return; float xToUse = mWorldUnitX; float yToUse = mWorldUnitY; #region Set the color and Z position for all vertices StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = camera.Z + FlatRedBall.Math.MathFunctions.ForwardVector3.Z * 100; #endregion if (mAlignment == ScrollBarAlignment.Vertical) { #region draw the back of the scrollbar #region Top of window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse + ScaleY - 2.6f; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY - 1.1f; StaticVertices[1].TextureCoordinate.X = .054688f; StaticVertices[1].TextureCoordinate.Y = .570313f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY - 1.1f; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .570313f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse + ScaleY - 2.6f; StaticVertices[5].TextureCoordinate.X = .1171875f; StaticVertices[5].TextureCoordinate.Y = .62109375f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center of window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY + 2.6f; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .6328125f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY - 2.6f; StaticVertices[1].TextureCoordinate.X = .054688f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY - 2.6f; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY + 2.6f; StaticVertices[5].TextureCoordinate.X = .1171875f; StaticVertices[5].TextureCoordinate.Y = .6328125f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom of window StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .570313f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse - ScaleY + 2.6f; StaticVertices[1].TextureCoordinate.X = .054688f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse - ScaleY + 2.6f; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[5].TextureCoordinate.X = .1171875f; StaticVertices[5].TextureCoordinate.Y = .570313f; GuiManager.WriteVerts(StaticVertices); #endregion #endregion #region Top button if (upButton.ButtonPushedState == ButtonPushedState.Down) { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse + ScaleY - 1.1f; StaticVertices[0].TextureCoordinate.X = .25390625f; StaticVertices[0].TextureCoordinate.Y = .675781f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .25390625f; StaticVertices[1].TextureCoordinate.Y = .632813f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].TextureCoordinate.X = .31640625f; StaticVertices[2].TextureCoordinate.Y = .632813f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].TextureCoordinate.X = .31640625f; StaticVertices[5].TextureCoordinate.Y = .675781f; StaticVertices[5].Position.Y = yToUse + ScaleY - 1.1f; GuiManager.WriteVerts(StaticVertices); } else { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].TextureCoordinate.X = .1875f; StaticVertices[0].TextureCoordinate.Y = .675781f; StaticVertices[0].Position.Y = yToUse + ScaleY - 1.1f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].TextureCoordinate.X = .1875f; StaticVertices[1].TextureCoordinate.Y = .632813f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].TextureCoordinate.X = .25f; StaticVertices[2].TextureCoordinate.Y = .632813f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].TextureCoordinate.X = .25f; StaticVertices[5].TextureCoordinate.Y = .675781f; StaticVertices[5].Position.Y = yToUse + ScaleY - 1.1f; GuiManager.WriteVerts(StaticVertices); } #endregion #region Bottom button if (downButton.ButtonPushedState == ButtonPushedState.Down) { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].TextureCoordinate.X = .25390625f; StaticVertices[0].TextureCoordinate.Y = .71875f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].TextureCoordinate.X = .25390625f; StaticVertices[1].TextureCoordinate.Y = .675781f; StaticVertices[1].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].TextureCoordinate.X = .31640625f; StaticVertices[2].TextureCoordinate.Y = .675781f; StaticVertices[2].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].TextureCoordinate.X = .31640625f; StaticVertices[5].TextureCoordinate.Y = .71875f; StaticVertices[5].Position.Y = yToUse - ScaleY; GuiManager.WriteVerts(StaticVertices); } else { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].TextureCoordinate.X = .1875f; StaticVertices[0].TextureCoordinate.Y = .71875f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].TextureCoordinate.X = .1875f; StaticVertices[1].TextureCoordinate.Y = .675781f; StaticVertices[1].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].TextureCoordinate.X = .25f; StaticVertices[2].TextureCoordinate.Y = .675781f; StaticVertices[2].Position.Y = yToUse - ScaleY + 1.1f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].TextureCoordinate.X = .25f; StaticVertices[5].TextureCoordinate.Y = .71875f; StaticVertices[5].Position.Y = yToUse - ScaleY; GuiManager.WriteVerts(StaticVertices); } #endregion #region positionBar xToUse = mWorldUnitX; yToUse = mWorldUnitY + mPositionBar.WorldUnitRelativeY; #region Top of bar StaticVertices[0].Position.X = xToUse - ScaleX + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[0].Position.Y = yToUse + mPositionBar.ScaleY - .8f; StaticVertices[1].Position.X = xToUse - ScaleX + .1f; StaticVertices[1].TextureCoordinate.X = .11719f; StaticVertices[1].TextureCoordinate.Y = .59765625f; StaticVertices[1].Position.Y = yToUse + mPositionBar.ScaleY; StaticVertices[2].Position.X = xToUse + ScaleX - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .59765625f; StaticVertices[2].Position.Y = yToUse + mPositionBar.ScaleY; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - .1f; StaticVertices[5].TextureCoordinate.X = .17578125f; StaticVertices[5].TextureCoordinate.Y = .62109375f; StaticVertices[5].Position.Y = yToUse + mPositionBar.ScaleY - .8f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center of bar StaticVertices[0].Position.X = xToUse - ScaleX + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .6328125f; StaticVertices[0].Position.Y = yToUse - mPositionBar.ScaleY + .8f; StaticVertices[1].Position.X = xToUse - ScaleX + .1f; StaticVertices[1].TextureCoordinate.X = .11719f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.Y = yToUse + mPositionBar.ScaleY - .8f; StaticVertices[2].Position.X = xToUse + ScaleX - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.Y = yToUse + mPositionBar.ScaleY - .8f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - .1f; StaticVertices[5].TextureCoordinate.X = .17578125f; StaticVertices[5].TextureCoordinate.Y = .6328125f; StaticVertices[5].Position.Y = yToUse - mPositionBar.ScaleY + .8f; GuiManager.WriteVerts(StaticVertices); #endregion #region Bottom of bar StaticVertices[0].Position.X = xToUse - ScaleX + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .59765625f; StaticVertices[0].Position.Y = yToUse - mPositionBar.ScaleY; StaticVertices[1].Position.X = xToUse - ScaleX + .1f; StaticVertices[1].TextureCoordinate.X = .11719f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.Y = yToUse - mPositionBar.ScaleY + .8f; StaticVertices[2].Position.X = xToUse + ScaleX - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.Y = yToUse - mPositionBar.ScaleY + .8f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - .1f; StaticVertices[5].TextureCoordinate.X = .17578125f; StaticVertices[5].TextureCoordinate.Y = .59765625f; StaticVertices[5].Position.Y = yToUse - mPositionBar.ScaleY; GuiManager.WriteVerts(StaticVertices); #endregion #endregion } else { #region draw the back of the scrollbar #region Left of window StaticVertices[0].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .570313f; StaticVertices[1].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .1171875f; StaticVertices[1].TextureCoordinate.Y = .570313f; StaticVertices[2].Position.X = xToUse - ScaleX + 2.6f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + 2.6f; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .054688f; StaticVertices[5].TextureCoordinate.Y = .62109375f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center of window StaticVertices[0].Position.X = xToUse - ScaleX + 2.6f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.X = xToUse - ScaleX + 2.6f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .1171875f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + ScaleX - 2.6f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - 2.6f; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .054688f; StaticVertices[5].TextureCoordinate.Y = .62109375f; GuiManager.WriteVerts(StaticVertices); #endregion #region Right of window StaticVertices[0].Position.X = xToUse + ScaleX - 2.6f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .054688f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.X = xToUse + ScaleX - 2.6f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .1171875f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .1171875f; StaticVertices[2].TextureCoordinate.Y = .570313f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .054688f; StaticVertices[5].TextureCoordinate.Y = .570313f; GuiManager.WriteVerts(StaticVertices); #endregion #endregion #region Left button if (upButton.ButtonPushedState == ButtonPushedState.Down) { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .25390625f; StaticVertices[0].TextureCoordinate.Y = .632813f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .31640625f; StaticVertices[1].TextureCoordinate.Y = .632813f; StaticVertices[2].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .31640625f; StaticVertices[2].TextureCoordinate.Y = .675781f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .25390625f; StaticVertices[5].TextureCoordinate.Y = .675781f; GuiManager.WriteVerts(StaticVertices); } else { StaticVertices[0].Position.X = xToUse - ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .1875f; StaticVertices[0].TextureCoordinate.Y = .632813f; StaticVertices[1].Position.X = xToUse - ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .25f; StaticVertices[1].TextureCoordinate.Y = .632813f; StaticVertices[2].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .25f; StaticVertices[2].TextureCoordinate.Y = .675781f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - ScaleX + 1.1f; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .1875f; StaticVertices[5].TextureCoordinate.Y = .675781f; GuiManager.WriteVerts(StaticVertices); } #endregion #region Right button if (downButton.ButtonPushedState == ButtonPushedState.Down) { StaticVertices[0].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .25390625f; StaticVertices[0].TextureCoordinate.Y = .675781f; StaticVertices[1].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .31640625f; StaticVertices[1].TextureCoordinate.Y = .675781f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .31640625f; StaticVertices[2].TextureCoordinate.Y = .71875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .25390625f; StaticVertices[5].TextureCoordinate.Y = .71875f; GuiManager.WriteVerts(StaticVertices); } else { StaticVertices[0].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[0].Position.Y = yToUse - ScaleY; StaticVertices[0].TextureCoordinate.X = .1875f; StaticVertices[0].TextureCoordinate.Y = .675781f; StaticVertices[1].Position.X = xToUse + ScaleX - 1.1f; StaticVertices[1].Position.Y = yToUse + ScaleY; StaticVertices[1].TextureCoordinate.X = .25f; StaticVertices[1].TextureCoordinate.Y = .675781f; StaticVertices[2].Position.X = xToUse + ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY; StaticVertices[2].TextureCoordinate.X = .25f; StaticVertices[2].TextureCoordinate.Y = .71875f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY; StaticVertices[5].TextureCoordinate.X = .1875f; StaticVertices[5].TextureCoordinate.Y = .71875f; GuiManager.WriteVerts(StaticVertices); } #endregion #region positionBar xToUse = mWorldUnitX + mPositionBar.WorldUnitRelativeX; yToUse = mWorldUnitY; #region left of bar StaticVertices[0].Position.X = xToUse - mPositionBar.ScaleX; StaticVertices[0].Position.Y = yToUse - ScaleY + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .59765625f; StaticVertices[1].Position.X = xToUse - mPositionBar.ScaleX; StaticVertices[1].Position.Y = yToUse + ScaleY - .1f; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .59765625f; StaticVertices[2].Position.X = xToUse - mPositionBar.ScaleX + .8f; StaticVertices[2].Position.Y = yToUse + ScaleY - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .62109375f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse - mPositionBar.ScaleX + .8f; StaticVertices[5].Position.Y = yToUse - ScaleY + .1f; StaticVertices[5].TextureCoordinate.X = .11719f; StaticVertices[5].TextureCoordinate.Y = .62109375f; GuiManager.WriteVerts(StaticVertices); #endregion #region Center of bar StaticVertices[0].Position.X = xToUse - mPositionBar.ScaleX + .8f; StaticVertices[0].Position.Y = yToUse - ScaleY + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.X = xToUse - mPositionBar.ScaleX + .8f; StaticVertices[1].Position.Y = yToUse + ScaleY - .1f; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + mPositionBar.ScaleX - .8f; StaticVertices[2].Position.Y = yToUse + ScaleY - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .6328125f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + mPositionBar.ScaleX - .8f; StaticVertices[5].Position.Y = yToUse - ScaleY + .1f; StaticVertices[5].TextureCoordinate.X = .11719f; StaticVertices[5].TextureCoordinate.Y = .6328125f; GuiManager.WriteVerts(StaticVertices); #endregion #region right of bar StaticVertices[0].Position.X = xToUse + mPositionBar.ScaleX - .8f; StaticVertices[0].Position.Y = yToUse - ScaleY + .1f; StaticVertices[0].TextureCoordinate.X = .11719f; StaticVertices[0].TextureCoordinate.Y = .62109375f; StaticVertices[1].Position.X = xToUse + mPositionBar.ScaleX - .8f; StaticVertices[1].Position.Y = yToUse + ScaleY - .1f; StaticVertices[1].TextureCoordinate.X = .17578125f; StaticVertices[1].TextureCoordinate.Y = .62109375f; StaticVertices[2].Position.X = xToUse + mPositionBar.ScaleX; StaticVertices[2].Position.Y = yToUse + ScaleY - .1f; StaticVertices[2].TextureCoordinate.X = .17578125f; StaticVertices[2].TextureCoordinate.Y = .59765625f; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + mPositionBar.ScaleX; StaticVertices[5].Position.Y = yToUse - ScaleY + .1f; StaticVertices[5].TextureCoordinate.X = .11719f; StaticVertices[5].TextureCoordinate.Y = .59765625f; GuiManager.WriteVerts(StaticVertices); #endregion #endregion } }
internal override void DrawSelfAndChildren(Camera camera) { #region Draw the base base.DrawSelfAndChildren(camera); #endregion #region Prepare variables for the loop float yToUse = mWorldUnitY; float xToUse; StaticVertices[0].Position.Z = StaticVertices[1].Position.Z = StaticVertices[2].Position.Z = StaticVertices[3].Position.Z = StaticVertices[4].Position.Z = StaticVertices[5].Position.Z = camera.Z + FlatRedBall.Math.MathFunctions.ForwardVector3.Z * 100; StaticVertices[0].Color = StaticVertices[1].Color = StaticVertices[2].Color = StaticVertices[3].Color = StaticVertices[4].Color = StaticVertices[5].Color = mColor; #endregion foreach (Marker marker in markerArray) { if (marker.Value >= Start && marker.Value <= Start + ValueWidth) { #region If the marker is using the default texture, set the texture coordinates appropriately if (marker.Texture == null) { StaticVertices[0].TextureCoordinate.X = 0; StaticVertices[0].TextureCoordinate.Y = .875f; StaticVertices[1].TextureCoordinate.X = 0; StaticVertices[1].TextureCoordinate.Y = .876f; StaticVertices[2].TextureCoordinate.X = 0; StaticVertices[2].TextureCoordinate.Y = .875f; StaticVertices[5].TextureCoordinate.X = .001f; StaticVertices[5].TextureCoordinate.Y = .876f; } #endregion #region Else, the marker is using a custom texture, so add a texture switch and set the coordinates appropriately else { GuiManager.AddTextureSwitch(marker.Texture); StaticVertices[0].TextureCoordinate.X = 0; StaticVertices[0].TextureCoordinate.Y = 1; StaticVertices[1].TextureCoordinate.X = 0; StaticVertices[1].TextureCoordinate.Y = 0; StaticVertices[2].TextureCoordinate.X = 1; StaticVertices[2].TextureCoordinate.Y = 0; StaticVertices[5].TextureCoordinate.X = 1f; StaticVertices[5].TextureCoordinate.Y = 1; } #endregion xToUse = (float)GetPosOnBar(marker.Value); StaticVertices[0].Position.X = xToUse - marker.ScaleX; StaticVertices[0].Position.Y = yToUse - marker.ScaleY; StaticVertices[1].Position.X = xToUse - marker.ScaleX; StaticVertices[1].Position.Y = yToUse + marker.ScaleY; StaticVertices[2].Position.X = xToUse + marker.ScaleX; StaticVertices[2].Position.Y = yToUse + marker.ScaleY; StaticVertices[3] = StaticVertices[0]; StaticVertices[4] = StaticVertices[2]; StaticVertices[5].Position.X = xToUse + marker.ScaleX; StaticVertices[5].Position.Y = yToUse - marker.ScaleY; GuiManager.WriteVerts(StaticVertices); } } }