GLTFLightsExtension constructor

GLTFLightsExtension(
  1. GLTFParser parser
)

Implementation

GLTFLightsExtension(this.parser) {
  name = gltfExtensions["KHR_LIGHTS_PUNCTUAL"]!;
  // Object3D instance caches
  cache = {"refs": {}, "uses": {}};

  markDefs = () {
    final parser = this.parser;
    final nodeDefs = this.parser.json["nodes"] ?? [];

    for (int nodeIndex = 0, nodeLength = nodeDefs.length;
        nodeIndex < nodeLength;
        nodeIndex++) {
      final nodeDef = nodeDefs[nodeIndex];

      if (nodeDef["extensions"] != null &&
          nodeDef["extensions"][name] != null &&
          nodeDef["extensions"][name]["light"] != null) {
        parser.addNodeRef(cache, nodeDef["extensions"][name]["light"]);
      }
    }
  };

  createNodeAttachment = (nodeIndex) {
    final self = this;
    final parser = this.parser;
    final json = parser.json;
    Map<String, dynamic> nodeDef = json["nodes"][nodeIndex];

    // final lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) ?? {};
    Map lightDef = {};
    if (nodeDef["extensions"] != null &&
        nodeDef["extensions"][name] != null) {
      lightDef = nodeDef["extensions"][name];
    }

    final lightIndex = lightDef["light"];

    if (lightIndex == null) return null;

    final light = _loadLight(lightIndex);

    return parser.getNodeRef(self.cache, lightIndex, light);
  };
}