41 lines
No EOL
996 B
JavaScript
41 lines
No EOL
996 B
JavaScript
export class AIM3DManifest {
|
|
constructor(manifest) {
|
|
if (typeof manifest === "string" && manifest.trim().startsWith("{")) {
|
|
this.manifestJson = JSON.parse(manifest);
|
|
this.manifestUrl = null;
|
|
} else if (typeof manifest === "object") {
|
|
this.manifestJson = manifest;
|
|
this.manifestUrl = null;
|
|
} else {
|
|
this.manifestUrl = manifest;
|
|
this.manifestJson = null;
|
|
}
|
|
}
|
|
|
|
async loadManifest() {
|
|
if (this.manifestUrl) {
|
|
const response = await fetch(this.manifestUrl);
|
|
this.manifestJson = await response.json();
|
|
}
|
|
|
|
this.manifest = this.manifestJson;
|
|
|
|
this.scenes = this.manifest?.items?.filter(
|
|
item => item.type === "Scene"
|
|
) || [];
|
|
}
|
|
|
|
annotationsFromScene(scene) {
|
|
const result = [];
|
|
|
|
for (const page of scene?.items || []) {
|
|
if (page.type !== "AnnotationPage") continue;
|
|
|
|
for (const annotation of page.items || []) {
|
|
result.push(annotation);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
} |