class Param {
  String name;
  int type;
  float minValue, maxValue;
  float value;
  int[] osciModes;
  Param(String name_, int type_, float minValue_, float maxValue_, int[] osciModes_) {
    name = name_;
    type = type_; //FLOATVAL or INTVAL
    minValue = minValue_;
    maxValue = maxValue_;
    osciModes = osciModes_;
  }
}

class Shader {
  int id;
  int pos;
  String name;
  ArrayList<Param> params = new ArrayList<Param>();
  
  void getValuesFromGUI(){
    try{ //problematic
    params = gui.bricks.get(pos).params;
    } catch(Exception e){}
    if(frameRate < 1) println("Rendering " + this + " on position " + pos + "...");
  }
  
  void changeParam(int paramNo, Param newParam){
    gui.bricks.get(pos).params.remove(paramNo);
    gui.bricks.get(pos).params.add(paramNo, newParam);
    gui.bricks.get(pos).exchangeSlider(paramNo, newParam);
  }
  
  void apply() {
  }; //override me
}
