This commit is contained in:
2026-04-24 19:39:58 +08:00
parent 01fdc0ee37
commit c992660011
4 changed files with 43 additions and 17 deletions

View File

@ -291,6 +291,21 @@ export class AppModel extends Monobehiver {
});
}
/**
* 根据 mesh 名称查找 mesh 对象
* @param meshName mesh 名称
* @returns mesh 对象,未找到返回 undefined
*/
private findMeshByName(meshName: string): AbstractMesh | undefined {
const keys = this.modelDic.Keys();
for (const key of keys) {
const meshes = this.modelDic.Get(key);
const found = meshes?.find(m => m.name === meshName);
if (found) return found;
}
return undefined;
}
/**
* 根据 mesh 查找所属的模型名称
* @param mesh 网格对象
@ -308,11 +323,24 @@ export class AppModel extends Monobehiver {
}
/**
* 根据 mesh 移除所属的整个模型
* @param mesh 网格对象
* 根据 mesh 或 mesh 名称移除所属的整个模型
* @param meshOrName 网格对象或网格名称
* @returns 是否成功移除
*/
remove(mesh: AbstractMesh): boolean {
remove(meshOrName: AbstractMesh | string): boolean {
let mesh: AbstractMesh | undefined;
// 判断传入的是对象还是字符串
if (typeof meshOrName === 'string') {
mesh = this.findMeshByName(meshOrName);
if (!mesh) {
console.warn(`未找到名为 ${meshOrName} 的网格`);
return false;
}
} else {
mesh = meshOrName;
}
const modelName = this.findModelNameByMesh(mesh);
if (modelName) {
this.removeByName(modelName);
@ -328,6 +356,8 @@ export class AppModel extends Monobehiver {
* @param newModelUrl 新模型URL
*/
async replaceModel(modelName: string, newModelUrl: string): Promise<LoadResult> {
console.log( modelName,this.modelDic);
this.removeByName(modelName);
return await this.addSingle(modelName, newModelUrl);
}