Example #1
0
 private EffectTechnique GetTechnique(BasicEffect11 effect, bool texture, bool reflection, NumberOfLights lights) {
     string fieldName;
     switch (lights) {
         case NumberOfLights.One:
             fieldName = "Light1";
             break;
         case NumberOfLights.Two:
             fieldName = "Light2";
             break;
         case NumberOfLights.Three:
             fieldName = "Light3";
             break;
         default:
             throw new ArgumentOutOfRangeException();
     }
     if (texture) {
         fieldName += "Tex";
     }
     if (reflection) {
         fieldName += "Reflect";
     }
     fieldName += "Tech";
     var prop = effect.GetType().GetProperty(fieldName);
     return prop.GetValue(effect) as EffectTechnique;
 }
Example #2
0
 private void InitializeTechniqueTable(BasicEffect11 basicFx, NormalMapEffect11 normalMapFx, DisplacementMapEffect11 displacementMapFx) {
     var dict1 = new Dictionary<SurfaceMapping, BasicEffect11>() {
         [SurfaceMapping.Simple] = basicFx,
         [SurfaceMapping.NormalMapping] = normalMapFx,
         [SurfaceMapping.DisplacementMapping] = displacementMapFx
     };
     // reflection, texture, surface, lights
     // non-ref, ref, model
     foreach (var surface in new[] { SurfaceMapping.Simple, SurfaceMapping.NormalMapping, SurfaceMapping.DisplacementMapping }) {
         foreach (var reflect in new[] { true, false }) {
             foreach (var texture in new[] { true, false }) {
                 foreach (var lights in new[] { NumberOfLights.One, NumberOfLights.Two, NumberOfLights.Three }) {
                     _techniqueTable.Add(new Tuple<bool, bool, SurfaceMapping, NumberOfLights>(reflect, texture, surface, lights),
                         new Tuple<EffectTechnique, EffectTechnique, EffectTechnique>(
                             GetTechnique(dict1[surface], texture, false, lights),
                             GetTechnique(basicFx, texture, true, lights),
                             GetTechnique(basicFx, texture, reflect, lights)));
                 }
             }
         }
     }
 }