コード例 #1
0
        private void DrawBoundingPrimitive(GameTime gameTime, ICollisionPrimitive collisionPrimitive, Color color)
        {
            if (collisionPrimitive is SphereCollisionPrimitive)
            {
                int primitiveCount = 0;
                vertexData = new VertexData <VertexPositionColor>(VertexFactory.GetSphereVertices(1, 10, out primitiveCount),
                                                                  PrimitiveType.LineStrip, primitiveCount);

                coll  = collisionPrimitive as SphereCollisionPrimitive;
                world = Matrix.Identity * Matrix.CreateScale(coll.BoundingSphere.Radius) * Matrix.CreateTranslation(coll.BoundingSphere.Center);
                wireframeEffect.World        = world;
                wireframeEffect.View         = cameraManager.ActiveCamera.View;
                wireframeEffect.Projection   = cameraManager.ActiveCamera.Projection;
                wireframeEffect.DiffuseColor = Color.White.ToVector3();
                wireframeEffect.CurrentTechnique.Passes[0].Apply();
                vertexData.Draw(gameTime, wireframeEffect);
            }
            else
            {
                BoxCollisionPrimitive coll    = collisionPrimitive as BoxCollisionPrimitive;
                BoundingBoxBuffers    buffers = BoundingBoxDrawer.CreateBoundingBoxBuffers(coll.BoundingBox, GraphicsDevice);
                BoundingBoxDrawer.DrawBoundingBox(buffers, wireframeEffect, GraphicsDevice,
                                                  cameraManager.ActiveCamera);
            }
        }
コード例 #2
0
 private void DrawFrustumCullingSphere(GameTime gameTime, IActor actor)
 {
     if (this.bShowFrustumCullingSphere)
     {
         Actor3D actor3D = actor as Actor3D;
         world = Matrix.Identity
                 * Matrix.CreateScale(actor3D.BoundingSphere.Radius)
                 * Matrix.CreateTranslation(actor3D.BoundingSphere.Center);
         this.wireframeEffect.World        = world;
         this.wireframeEffect.View         = this.managerParameters.CameraManager.ActiveCamera.View;
         this.wireframeEffect.Projection   = this.managerParameters.CameraManager.ActiveCamera.ProjectionParameters.Projection;
         this.wireframeEffect.DiffuseColor = frustumSphereColor.ToVector3();
         this.wireframeEffect.CurrentTechnique.Passes[0].Apply();
         sphereVertexData.Draw(gameTime, this.wireframeEffect);
     }
 }