getDependency method

Future getDependency(
  1. String type,
  2. int index
)

Requests the specified dependency asynchronously, with caching. @param {string} type @param {number} index @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}

Implementation

Future getDependency(String type, int index) async {
  final cacheKey = '$type:$index';
  dynamic dependency = cache.get(cacheKey);

  if (dependency == null) {
    switch (type) {
      case 'scene':
        dependency = await loadScene(index);
        break;

      case 'node':
					dependency = await _invokeOne(( ext ) async{
						return ext?.loadNode != null ? await ext!.loadNode(index) : null;
					});
        //dependency = await loadNode(index);
        break;

      case 'mesh':
        dependency = await _invokeOne((ext) async {
          return ext?.loadMesh != null ? await ext!.loadMesh(index) : null;
        });
        break;

      case 'accessor':
        dependency = await loadAccessor(index);
        break;

      case 'bufferView':
        dependency = await _invokeOne((ext) async {
          return ext?.loadBufferView != null? await ext?.loadBufferView?.call(index): null;
        });
        break;

      case 'buffer':
        dependency = await loadBuffer(index);
        break;

      case 'material':
        dependency = await _invokeOne((ext) async {
          return ext?.loadMaterial != null
              ? await ext?.loadMaterial?.call(index)
              : null;
        });
        break;

      case 'texture':
        dependency = await _invokeOne((ext) async {
          return ext?.loadTexture != null
              ? await ext?.loadTexture?.call(index)
              : null;
        });
        break;

      case 'skin':
        dependency = await loadSkin(index);
        break;

      case 'animation':
        dependency = await _invokeOne((ext) async {
          return ext?.loadAnimation != null? await ext?.loadAnimation?.call(index): null;
        });
        //dependency = await loadAnimation(index);
        break;

      case 'camera':
        dependency = loadCamera(index);
        break;

      default:
					dependency = this._invokeOne(( ext ) {
						return ext != this && ext.getDependency && ext.getDependency( type, index );
					} );

					if ( !dependency ) {
						throw ('GLTFParser getDependency Unknown type: $type');
					}

					break;

    }

    cache.add(cacheKey, dependency);
  }

  return dependency;
}