示例#1
0
 /**
  * Check if setting the parameter given the type and name is allowed.
  *
  * @param type The type that the "set" function is designed to set
  * @param name The name of the parameter
  */
 private void checkSetParam(VarType type, String name) {
   MatParam paramDef = def.getMaterialParam(name);
   if (paramDef == null) {
     throw new IllegalArgumentException("Material parameter is not defined: " + name);
   }
   if (type != null && paramDef.getVarType() != type) {
     logger.log(
         Level.WARNING,
         "Material parameter being set: {0} with "
             + "type {1} doesn''t match definition types {2}",
         new Object[] {name, type.name(), paramDef.getVarType()});
   }
 }
示例#2
0
  /**
   * Pass a parameter to the material shader.
   *
   * @param name the name of the parameter defined in the material definition (j3md)
   * @param type the type of the parameter {@link VarType}
   * @param value the value of the parameter
   */
  public void setParam(String name, VarType type, Object value) {
    checkSetParam(type, name);

    if (type.isTextureType()) {
      setTextureParam(name, type, (Texture) value);
    } else {
      MatParam val = getParam(name);
      if (val == null) {
        MatParam paramDef = def.getMaterialParam(name);
        paramValues.put(name, new MatParam(type, name, value, paramDef.getFixedFuncBinding()));
      } else {
        val.setValue(value);
      }

      if (technique != null) {
        technique.notifyParamChanged(name, type, value);
      }
    }
  }