#VRML_SIM R2022b utf8
# license: Apache License 2.0
# license url: http://www.apache.org/licenses/LICENSE-2.0
# An old battered steel material.
# The color can be overridden using the `colorOverride` field and the amount of rust can be set using the `rustLevel` field.
# template language: javascript

PROTO RustyMetal [
  field SFInt32{1, 2}  rustLevel        1      # Defines how much the metal is rusted.
  field SFColor        colorOverride    1 1 1  # Defines the color to be multiplied with the texture color.
  field SFNode         textureTransform NULL   # Defines an optional 2d texture transform.
  field SFFloat        IBLStrength      1      # Defines the strength of ambient lighting from the Background node.
]
{
  %<
    const extension = fields.rustLevel.value === 2 ? '_2' : '';
  >%
  PBRAppearance {
    baseColor IS colorOverride
    baseColorMap ImageTexture {
      url [
        %<= '"textures/rusty_metal/rusty_metal_base_color' + extension + '.jpg"' >%
      ]
    }
    roughnessMap ImageTexture {
      url [
        %<= '"textures/rusty_metal/rusty_metal_roughness' + extension + '.jpg"' >%
      ]
    }
    metalnessMap ImageTexture {
      url [
        %<= '"textures/rusty_metal/rusty_metal_metalness' + extension + '.jpg"' >%
      ]
    }
    normalMap ImageTexture {
      url [
        %<= '"textures/rusty_metal/rusty_metal_normal' + extension + '.jpg"' >%
      ]
    }
    %< if (fields.rustLevel.value === 2) { >%
    occlusionMap ImageTexture {
      url [
        "textures/rusty_metal/rusty_metal_occlusion.jpg"
      ]
    }
    %< } >%
    normalMapFactor 1
    IBLStrength IS IBLStrength
    textureTransform IS textureTransform
  }
}