// Initialize the effects so the models look reasonable and the lighting // Is as it is in the directx Mesh viewer private void InitializeEffects(Model model) { foreach (ModelMesh mesh in model.Meshes) { foreach (Effect ef in mesh.Effects) { effects.Add(ef); ef.Parameters["View"].SetValue(cam.View); ef.Parameters["EyePosition"].SetValue(Matrix.Invert(cam.View).Translation); ef.Parameters["Projection"].SetValue(cam.Projection); ef.Parameters["World"].SetValue(cam.ModelWorld); if (ef is BasicPaletteEffect) { BasicPaletteEffect effect = (BasicPaletteEffect)ef; effect.EnableDefaultLighting(); effect.DirectionalLight0.Direction = new Vector3(0, 0, -1); } else if (ef is BasicEffect) { BasicEffect effect = (BasicEffect)ef; effect.EnableDefaultLighting(); effect.DirectionalLight0.Direction = new Vector3(0, 0, -1); effect.DirectionalLight1.Enabled = false; effect.DirectionalLight2.Enabled = false; effect.AmbientLightColor = Color.Black.ToVector3(); effect.EmissiveColor = Color.Black.ToVector3(); } } } }
internal BasicDirectionalLight(BasicPaletteEffect effect, int lightNum) { this.effect = effect; string lightString = "DirLight" + lightNum; this.lightDirParam = effect.Parameters[lightString + "Direction"]; this.difColorParam = effect.Parameters[lightString + "DiffuseColor"]; this.specColorParam = effect.Parameters[lightString + "SpecularColor"]; this.lightEnabledParam = effect.Parameters[lightString + "Enable"]; }
private void SetParamsFromBasicLight(Microsoft.Xna.Framework.Graphics.BasicDirectionalLight source, BasicPaletteEffect.BasicDirectionalLight target) { target.SpecularColor = source.SpecularColor; target.Enabled = source.Enabled; target.Direction = source.Direction; target.DiffuseColor = source.DiffuseColor; }