|
@@ -939,6 +939,11 @@ export class GLTFLoader implements IGLTFLoader {
|
|
}
|
|
}
|
|
|
|
|
|
private _loadSkinAsync(context: string, node: INode, skin: ISkin): Promise<void> {
|
|
private _loadSkinAsync(context: string, node: INode, skin: ISkin): Promise<void> {
|
|
|
|
+ const extensionPromise = this._extensionsLoadSkinAsync(context, node, skin);
|
|
|
|
+ if (extensionPromise) {
|
|
|
|
+ return extensionPromise;
|
|
|
|
+ }
|
|
|
|
+
|
|
const assignSkeleton = (skeleton: Skeleton) => {
|
|
const assignSkeleton = (skeleton: Skeleton) => {
|
|
this._forEachPrimitive(node, (babylonMesh) => {
|
|
this._forEachPrimitive(node, (babylonMesh) => {
|
|
babylonMesh.skeleton = skeleton;
|
|
babylonMesh.skeleton = skeleton;
|
|
@@ -2166,6 +2171,10 @@ export class GLTFLoader implements IGLTFLoader {
|
|
return this._applyExtensions(animation, "loadAnimation", (extension) => extension.loadAnimationAsync && extension.loadAnimationAsync(context, animation));
|
|
return this._applyExtensions(animation, "loadAnimation", (extension) => extension.loadAnimationAsync && extension.loadAnimationAsync(context, animation));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private _extensionsLoadSkinAsync(context: string, node: INode, skin: ISkin): Nullable<Promise<void>> {
|
|
|
|
+ return this._applyExtensions(skin, "loadSkin", (extension) => extension._loadSkinAsync && extension._loadSkinAsync(context, node, skin));
|
|
|
|
+ }
|
|
|
|
+
|
|
private _extensionsLoadUriAsync(context: string, property: IProperty, uri: string): Nullable<Promise<ArrayBufferView>> {
|
|
private _extensionsLoadUriAsync(context: string, property: IProperty, uri: string): Nullable<Promise<ArrayBufferView>> {
|
|
return this._applyExtensions(property, "loadUri", (extension) => extension._loadUriAsync && extension._loadUriAsync(context, property, uri));
|
|
return this._applyExtensions(property, "loadUri", (extension) => extension._loadUriAsync && extension._loadUriAsync(context, property, uri));
|
|
}
|
|
}
|