GLTFMaterialsVolumeExtension constructor

GLTFMaterialsVolumeExtension(
  1. GLTFParser parser
)

Implementation

GLTFMaterialsVolumeExtension(this.parser) {
  name = gltfExtensions["KHR_MATERIALS_VOLUME"]!;

  getMaterialType = (materialIndex) {
    final parser = this.parser;
    final materialDef = parser.json["materials"][materialIndex];

    if (materialDef["extensions"] == null ||
        materialDef["extensions"][name] == null) return null;

    return MeshPhysicalMaterial;
  };

  extendMaterialParams = (int materialIndex, Map<String, dynamic> materialParams) async {
    final parser = this.parser;
    final materialDef = parser.json["materials"][materialIndex];

    if (materialDef["extensions"] == null || materialDef["extensions"][name] == null) {
      return null;
    }

    List<Future> pending = [];

    final extension = materialDef["extensions"][name];

    materialParams['thickness'] = extension['thicknessFactor'] ?? 0;

    if (extension['thicknessTexture'] != null) {
      pending.add(parser.assignTexture(
          materialParams, 'thicknessMap', extension['thicknessTexture']));
    }

    materialParams['attenuationDistance'] = extension['attenuationDistance'] ?? 0;

    final colorArray = extension['attenuationColor'] ?? [1, 1, 1];
    materialParams['attenuationColor'] = Color(colorArray[0], colorArray[1], colorArray[2]);

    return await Future.wait(pending);
  };
}