getDependency method
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;
}