private void WriteCombinerString <T>(PICATextureCombinerMode mode, PICATextureCombinerSource[] sources, T[] ops) { switch (mode) { case PICATextureCombinerMode.Replace: text.Append($"{sources[0]}({ops[0]})"); break; case PICATextureCombinerMode.Add: text.Append($"{sources[0]}({ops[0]}) + {sources[1]}({ops[1]})"); break; case PICATextureCombinerMode.AddSigned: text.Append($"{sources[0]}({ops[0]}) + {sources[1]}({ops[1]}) (signed)"); break; case PICATextureCombinerMode.Subtract: text.Append($"{sources[0]}({ops[0]}) - {sources[1]}({ops[1]})"); break; case PICATextureCombinerMode.Modulate: text.Append($"{sources[0]}({ops[0]}) * {sources[1]}({ops[1]})"); break; case PICATextureCombinerMode.AddMult: text.Append($"( {sources[0]}({ops[0]}) + {sources[1]}({ops[1]}) ) * {sources[2]}({ops[2]})"); break; case PICATextureCombinerMode.MultAdd: text.Append($"{sources[0]}({ops[0]}) * {sources[1]}({ops[1]}) + {sources[2]}({ops[2]})"); break; //TODO: print details for these case PICATextureCombinerMode.Interpolate: case PICATextureCombinerMode.DotProduct3Rgb: case PICATextureCombinerMode.DotProduct3Rgba: default: text.Append($"{mode}("); for (int i = 0; i < 3; i++) { text.Append($"{sources[i]}({ops[i]}), "); } text.Append(')'); break; } }
public PICATexEnvCombiner(uint Param) { Color = (PICATextureCombinerMode)((Param >> 0) & 0xf); Alpha = (PICATextureCombinerMode)((Param >> 16) & 0xf); }