Add GLTF model import and related assets

This commit is contained in:
2026-03-31 17:30:05 +02:00
parent 7b98c38d92
commit bcb6f5686e
7 changed files with 1010 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
import type { ModelInstance } from "./model-instances";
import { getModelInstances } from "./model-instances";
import type { ProjectAssetRecord } from "./project-assets";
function getModelInstanceBaseLabel(modelInstance: ModelInstance, assets: Record<string, ProjectAssetRecord>): string {
if (modelInstance.name !== undefined) {
return modelInstance.name;
}
const asset = assets[modelInstance.assetId];
if (asset === undefined) {
return "Model Instance";
}
return asset.sourceName;
}
export function getModelInstanceDisplayLabel(modelInstance: ModelInstance, assets: Record<string, ProjectAssetRecord>): string {
return getModelInstanceBaseLabel(modelInstance, assets);
}
export function getModelInstanceDisplayLabelById(
modelInstanceId: string,
modelInstances: Record<string, ModelInstance>,
assets: Record<string, ProjectAssetRecord>
): string {
const modelInstance = modelInstances[modelInstanceId];
if (modelInstance === undefined) {
return "Model Instance";
}
return getModelInstanceDisplayLabel(modelInstance, assets);
}
export function getSortedModelInstanceDisplayLabels(
modelInstances: Record<string, ModelInstance>,
assets: Record<string, ProjectAssetRecord>
): Array<{ modelInstance: ModelInstance; label: string }> {
return getModelInstances(modelInstances).map((modelInstance) => ({
modelInstance,
label: getModelInstanceDisplayLabel(modelInstance, assets)
}));
}