FlatRedBall.Gui.CollapseItem.Draw C# (CSharp) Méthode

Draw() private méthode

private Draw ( Camera camera, double startY, double startX, double maxWidth, int numDeep, int &itemNum, int &numDrawn, int startAt, int numToDraw, float distanceBetweenLines ) : void
camera Camera
startY double
startX double
maxWidth double
numDeep int
itemNum int
numDrawn int
startAt int
numToDraw int
distanceBetweenLines float
Résultat void
        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;
                }
            }
        }
#endif