/// <summary> /// Sets the model effect. /// </summary> /// <param name="effect">The effect.</param> /// <param name="CopyEffect">if set to <c>true</c> [copy effect].</param> public void SetModelEffect(Effect effect, bool CopyEffect) { foreach (ModelMesh mesh in Model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { Effect toSet = effect; //Copy the effect if necessary if (CopyEffect) { toSet = effect.Clone(); } MeshTag tag = ((MeshTag)part.Tag); //If this ModelMeshPart has a texture, set it to the effect if (tag.Texture != null) { SetEffectParameter(toSet, "BasicTexture", tag.Texture); SetEffectParameter(toSet, "TextureEnabled", true); } else { SetEffectParameter(toSet, "TexeturedEnabled", false); } //Set our remaining parameters to the effect SetEffectParameter(toSet, "DiffuseColor", tag.Color); SetEffectParameter(toSet, "SpecularPower", tag.SpecularPower); part.Effect = toSet; } } }
/// <summary> /// Generates the tags. /// </summary> private void GenerateTags() { foreach (ModelMesh mesh in Model.Meshes) { foreach (ModelMeshPart part in mesh.MeshParts) { if (part.Effect is BasicEffect) { BasicEffect effect = (BasicEffect)part.Effect; MeshTag tag = new MeshTag(effect.DiffuseColor, effect.Texture, effect.SpecularPower); part.Tag = tag; } } } }