public override void Draw(GameTime gameTime) { if (Animated) { Matrix[] bones = AnimPlayer.GetSkinTransforms(); // Compute camera matrices. Matrix view = ScèneJeu.CaméraJeu.Vue; Matrix projection = ScèneJeu.CaméraJeu.Projection; // Render the skinned mesh. foreach (ModelMesh mesh in Modèle.Meshes) { Matrix mondeLocal = TransformationsModèle[mesh.ParentBone.Index] * GetMonde(); foreach (SkinnedEffect effect in mesh.Effects) { effect.SetBoneTransforms(bones); effect.View = view; effect.Projection = projection; effect.World = mondeLocal; effect.EnableDefaultLighting(); } mesh.Draw(); } } else { foreach (ModelMesh maille in Modèle.Meshes) { Vector3[] oldColor = new Vector3[maille.MeshParts.Count]; int i = 0; Matrix mondeLocal = TransformationsModèle[maille.ParentBone.Index] * GetMonde(); foreach (ModelMeshPart portionDeMaillage in maille.MeshParts) { BasicEffect effet = (BasicEffect)portionDeMaillage.Effect; oldColor[i] = effet.EmissiveColor; effet.EnableDefaultLighting(); GérerSurlignage(ref effet); GérérCouleurCharm(ref effet); effet.Projection = ScèneJeu.CaméraJeu.Projection; effet.View = ScèneJeu.CaméraJeu.Vue; effet.World = mondeLocal; i++; } maille.Draw(); i = 0; foreach (ModelMeshPart portionDeMaillage in maille.MeshParts) { BasicEffect effet = (BasicEffect)portionDeMaillage.Effect; effet.EmissiveColor = oldColor[i]; i++; } } } //Draw boxes if (DrawBoxes) { //Box effect if (lineEffect == null) // Comme ça on a qu'à le créer une seule fois (et on ne peut le créer dans le Initialize()) { lineEffect = new BasicEffect(ScèneJeu.GraphicsDevice); lineEffect.LightingEnabled = false; lineEffect.TextureEnabled = false; lineEffect.VertexColorEnabled = true; } foreach (BoundingBoxBuffers bb in BoxDrawList) { DrawBoundingBox(bb, lineEffect, ScèneJeu.GraphicsDevice, ScèneJeu.CaméraJeu.Vue, ScèneJeu.CaméraJeu.Projection); } } }
public override void Draw(GameTime gameTime) { Jeu.GraphicsDevice.BlendState = NewBlendState; if (Animated) { Matrix[] bones = AnimPlayer.GetSkinTransforms(); // Compute camera matrices. Matrix view = ScèneJeu.CaméraJeu.Vue; Matrix projection = ScèneJeu.CaméraJeu.Projection; // Render the skinned mesh. foreach (ModelMesh mesh in Modèle.Meshes) { Matrix mondeLocal = TransformationsModèle[mesh.ParentBone.Index] * GetMonde(); foreach (SkinnedEffect effect in mesh.Effects) { effect.SetBoneTransforms(bones); effect.View = view; effect.Projection = projection; effect.World = mondeLocal; effect.Texture = Texture; //not sure if works effect.EnableDefaultLighting(); effect.SpecularColor = new Vector3(0.25f); effect.SpecularPower = 16; } mesh.Draw(); } } else { foreach (ModelMesh maille in Modèle.Meshes) { Matrix mondeLocal = TransformationsModèle[maille.ParentBone.Index] * GetMonde(); foreach (ModelMeshPart portionDeMaillage in maille.MeshParts) { BasicEffect effet = (BasicEffect)portionDeMaillage.Effect; effet.EnableDefaultLighting(); effet.Projection = ScèneJeu.CaméraJeu.Projection; effet.View = ScèneJeu.CaméraJeu.Vue; effet.World = mondeLocal; effet.TextureEnabled = true; effet.Texture = Texture; } maille.Draw(); } //Draw boxes if (DrawBoxes) { //Box effect if (lineEffect == null) // Comme ça on a qu'à le créer une seule fois (et on ne peut le créer dans le Initialize()) { lineEffect = new BasicEffect(ScèneJeu.GraphicsDevice); lineEffect.LightingEnabled = false; lineEffect.TextureEnabled = false; lineEffect.VertexColorEnabled = true; } foreach (BoundingBoxBuffers bb in BoxDrawList) { DrawBoundingBox(bb, lineEffect, ScèneJeu.GraphicsDevice, ScèneJeu.CaméraJeu.Vue, ScèneJeu.CaméraJeu.Projection); } } } Jeu.GraphicsDevice.BlendState = OldBlendState; }