//draw a model object private void DrawObject(GameTime gameTime, ModelObject modelObject, Camera3D activeCamera) { if (modelObject.Model != null) { modelObject.EffectParameters.SetParameters(activeCamera); foreach (ModelMesh mesh in modelObject.Model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { part.Effect = modelObject.EffectParameters.Effect; } modelObject.EffectParameters.SetWorld(modelObject.BoneTransforms[mesh.ParentBone.Index] * modelObject.GetWorldMatrix()); mesh.Draw(); } } }
//draw a model object private void DrawObject(GameTime gameTime, ModelObject modelObject, Camera3D activeCamera) { if (activeCamera.BoundingFrustum.Intersects(modelObject.BoundingSphere)) { if (modelObject.Model != null) { modelObject.EffectParameters.SetParameters(activeCamera); foreach (ModelMesh mesh in modelObject.Model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { part.Effect = modelObject.EffectParameters.Effect; } modelObject.EffectParameters.SetWorld(modelObject.BoneTransforms[mesh.ParentBone.Index] * modelObject.GetWorldMatrix()); mesh.Draw(); } } #if DEBUG debugDrawCount++; #endif } }
//draw a model object private void DrawObject(GameTime gameTime, ModelObject modelObject) { if (modelObject.Model != null) { BasicEffect effect = modelObject.Effect as BasicEffect; effect.View = (this.Game as Main).CameraManager.ActiveCamera.View; effect.Projection = (this.Game as Main).CameraManager.ActiveCamera.ProjectionParameters.Projection; effect.Texture = modelObject.Texture; effect.DiffuseColor = modelObject.Color.ToVector3(); effect.Alpha = modelObject.Alpha; //apply or serialise the variables above to the GFX card effect.CurrentTechnique.Passes[0].Apply(); foreach (ModelMesh mesh in modelObject.Model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { part.Effect = effect; } effect.World = modelObject.BoneTransforms[mesh.ParentBone.Index] * modelObject.GetWorldMatrix(); mesh.Draw(); } } }