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); } }
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); } }