Пример #1
0
        public static void DrawBoundingBox(BoundingBox box, Vector3 Position, Matrix Orientation)
        {
            Vector3[] points = new Vector3[8];
            points = box.GetCorners();

            for (int i = 0; i < 8; i++)
            {
                points[i]  = Vector3.Transform(points[i], Orientation);
                points[i] += Position;
            }

            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[0], points[1]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[1], points[2]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[2], points[3]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[3], points[0]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[4], points[5]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[5], points[6]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[6], points[7]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[7], points[4]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[0], points[4]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[1], points[5]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[2], points[6]);
            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Color.White, points[3], points[7]);

            SpriteFont font = Engine.Content.Load <SpriteFont>("Fonts/Font");

            Engine.spriteBatch.Begin();
            for (int i = 0; i < 8; i++)
            {
                Vector3 initial_position = Engine.g.Viewport.Project(points[i], Camera.Projection, Camera.View, Matrix.Identity);

                Engine.spriteBatch.DrawString(font, i.ToString(), new Vector2(initial_position.X, initial_position.Y), Color.Red);
            }
            Engine.spriteBatch.End();
        }
Пример #2
0
        public override void Draw(Effect e)
        {
            List <Transform> js = Joints;//the resons for always using this local

            //variable is so that the Joints list does not have to be regenerated upon every single reference

            if (Joints.Count > 1 && DrawPath == true)
            {
                int     j = 0;
                float   am = 0;
                Vector3 Start, End;
                Start = Joints[0].AbsolutePosition;

                foreach (Transform J in Joints)
                {
                    for (am = 0; am < 1.0f; am += 0.01f)
                    {
                        End = Vector3.CatmullRom(Joints[PreviousJoint(j, js)].AbsolutePosition, Joints[j].AbsolutePosition, Joints[NextJoint(j, js)].AbsolutePosition, Joints[NextJoint(NextJoint(j, js), js)].AbsolutePosition, am);

                        LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Microsoft.Xna.Framework.Color.Gray, Start, End);
                        Start = End;
                    }
                    j++;
                }
            }
            Target.Draw(e);
            base.Draw(e);
        }
Пример #3
0
        public override void Draw(Effect e)
        {
            base.Draw(e);

            LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Microsoft.Xna.Framework.Color.White, this.AbsolutePosition, this.AbsolutePosition);
            //LineUtility3D.DrawAABoundingBox(Engine.g, Camera.View, Camera.Projection, this.AbsoluteBoundingBox, Matrix.Identity);
            //LineUtility3D.DrawAABoundingBox(Engine.g, Camera.View, Camera.Projection, this.boundingBox, this.AbsoluteWorld);
        }
Пример #4
0
 public void Draw(Matrix ParentWorld)
 {
     LineUtility3D.DrawAABoundingBox(Engine.g, Camera.View, Camera.Projection, boundingBox, ParentWorld);
     if (IsEnd == false)
     {
         for (int i = 0; i < 8; i++)
         {
             Octrees[i].Draw(ParentWorld);
         }
     }
 }
Пример #5
0
 /// <summary>
 /// _Not_ to be used for main drawing of 3D entities - should be done by scene manager.
 /// This handles the drawing of any UI graphics
 /// </summary>
 public virtual void Draw()
 {
     if (DebugDraw)
     {
         LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Microsoft.Xna.Framework.Color.White, AbsolutePosition, AbsolutePosition + Vector3.Right * 0.5f);
         LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Microsoft.Xna.Framework.Color.White, AbsolutePosition, AbsolutePosition + Vector3.Up * 0.5f);
         LineUtility3D.Draw3DLine(Engine.g, Camera.View, Camera.Projection, Microsoft.Xna.Framework.Color.White, AbsolutePosition, AbsolutePosition + Vector3.Forward * 0.5f);
     }
     for (int i = 0; i < Children.Count; i++)
     {
         Children[i].Draw();
     }
 }