Skip to content

Commit

Permalink
check for required extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
jim-ec committed Dec 12, 2023
1 parent 84228f7 commit 8b96833
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
9 changes: 7 additions & 2 deletions app_web/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { GltfView } from 'gltf-viewer-source';

import { UIModel } from './logic/uimodel.js';
import { app } from './ui/ui.js';
import { from, merge } from 'rxjs';
import { mergeMap, map, share } from 'rxjs/operators';
import { EMPTY, from, merge } from 'rxjs';
import { mergeMap, map, share, catchError } from 'rxjs/operators';
import { GltfModelPathProvider, fillEnvironmentWithPaths } from './model_path_provider.js';

export default async () => {
Expand Down Expand Up @@ -72,6 +72,11 @@ export default async () => {
return state;
}));
}),
catchError(error => {
console.error(error);
uiModel.exitLoadingState();
return EMPTY;
}),
share()
);

Expand Down
27 changes: 27 additions & 0 deletions source/gltf/gltf.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,27 @@ import { gltfAnimation } from './animation.js';
import { gltfSkin } from './skin.js';
import { gltfVariant } from './variant.js';

const allowedExtensions = [
"KHR_draco_mesh_compression",
"KHR_texture_basisu",
"KHR_texture_transform",
"KHR_lights_punctual",
"KHR_lights_image_based",
"KHR_materials_variants",
"KHR_materials_unlit",
"KHR_materials_clearcoat",
"KHR_materials_sheen",
"KHR_materials_transmission",
"KHR_materials_volume",
"KHR_materials_ior",
"KHR_materials_iridescence",
"KHR_materials_anisotropy",
"KHR_materials_specular",
"KHR_materials_emissive_strength",
"KHR_materials_xmp_json_ld",
"KHR_materials_pbrSpecularGlossiness",
];

class glTF extends GltfObject
{
constructor(file)
Expand Down Expand Up @@ -52,6 +73,12 @@ class glTF extends GltfObject
{
super.fromJson(json);

for (const extensionName of json.extensionsRequired ?? []) {
if (!allowedExtensions.includes(extensionName)) {
throw new Error("Unsupported extension: " + extensionName);
}
}

this.asset = objectFromJson(json.asset, gltfAsset);
this.cameras = objectsFromJsons(json.cameras, gltfCamera);
this.accessors = objectsFromJsons(json.accessors, gltfAccessor);
Expand Down

0 comments on commit 8b96833

Please sign in to comment.