This commit is contained in:
2026-04-24 11:20:27 +08:00
parent e7c1611f6b
commit 09359a1647
20 changed files with 1565 additions and 259 deletions

View File

@ -149,6 +149,54 @@ export class AppModel extends Monobehiver {
this.skeletonMerged = false;
}
/**
* 添加模型到场景
* @param modelUrl 模型URL路径
*/
async addModel(modelUrl: string): Promise<LoadResult> {
const handleProgress = (event: ISceneLoaderProgressEvent): void => {
const progress = event.lengthComputable && event.total > 0
? Math.min(1, event.loaded / event.total)
: 0;
EventBridge.modelLoadProgress({
loaded: progress,
total: 1,
url: modelUrl,
progress,
percentage: Number((progress * 100).toFixed(2)),
detail: {
url: modelUrl,
lengthComputable: event.lengthComputable,
loadedBytes: event.loaded,
totalBytes: event.total
}
});
};
const result = await this.loadSingleModel(modelUrl, handleProgress);
if (result.success) {
EventBridge.modelLoaded({ urls: [modelUrl] });
} else {
EventBridge.modelLoadError({ url: modelUrl, error: result.error });
}
return result;
}
/**
* 替换模型:销毁旧模型并加载新模型
* @param modelName 要替换的模型名称
* @param newModelUrl 新模型的URL路径
*/
async replaceModel(modelName: string, newModelUrl: string): Promise<LoadResult> {
// 先销毁旧模型
this.destroyModel(modelName);
// 加载新模型
return await this.addModel(newModelUrl);
}
/**
* 销毁指定模型
* @param modelName 模型名称