1
This commit is contained in:
@ -169,7 +169,7 @@ export class AppModel extends Monobehiver {
|
||||
const newName = `${originalName}_${modelId}`;
|
||||
const clonedMaterial = originalMaterial.clone(newName);
|
||||
clonedMaterials.set(originalName, clonedMaterial);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 应用克隆的材质
|
||||
@ -177,7 +177,7 @@ export class AppModel extends Monobehiver {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/** 为网格设置阴影(投射和接收) */
|
||||
@ -268,9 +268,9 @@ export class AppModel extends Monobehiver {
|
||||
*/
|
||||
private async addSingle(modelName: string, modelId: string, modelUrl: string, modelControlType?: ModelControlType, drag?: DragConfig, transform?: ModelTransform): Promise<LoadResult> {
|
||||
// 检查是否已存在
|
||||
const existingMeshes = this.modelDic.Get(modelName+'_'+modelId);
|
||||
const existingMeshes = this.modelDic.Get(modelName + '_' + modelId);
|
||||
if (existingMeshes?.length && !existingMeshes[0].isDisposed()) {
|
||||
console.log(`模型 ${modelName+modelId} 已存在,直接显示`);
|
||||
console.log(`模型 ${modelName + modelId} 已存在,直接显示`);
|
||||
this.showMeshes(existingMeshes);
|
||||
return { success: true, meshes: existingMeshes };
|
||||
}
|
||||
@ -285,11 +285,11 @@ export class AppModel extends Monobehiver {
|
||||
this.cloneMaterials(result.meshes, modelId);
|
||||
|
||||
// 存储模型
|
||||
result.meshes = this.createModelRoot(modelName+'_'+modelId, result.meshes);
|
||||
this.modelDic.Set(modelName+'_'+modelId, result.meshes);
|
||||
result.meshes = this.createModelRoot(modelName + '_' + modelId, result.meshes);
|
||||
this.modelDic.Set(modelName + '_' + modelId, result.meshes);
|
||||
|
||||
// 存储元数据
|
||||
this.modelMetadataDic.Set(modelName+'_'+modelId, {
|
||||
this.modelMetadataDic.Set(modelName + '_' + modelId, {
|
||||
modelName: modelName,
|
||||
modelId: modelId,
|
||||
modelUrl: modelUrl,
|
||||
@ -300,12 +300,12 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
// 应用 transform
|
||||
if (transform) {
|
||||
this.applyTransform(modelName+'_'+modelId, transform);
|
||||
this.applyTransform(modelName + '_' + modelId, transform);
|
||||
}
|
||||
|
||||
// 配置拖拽功能
|
||||
if (drag) {
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName+'_'+modelId, drag);
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName + '_' + modelId, drag);
|
||||
}
|
||||
|
||||
// 更新 GameManager 的字典
|
||||
@ -340,10 +340,10 @@ export class AppModel extends Monobehiver {
|
||||
this.cloneMaterials(result.meshes, modelId);
|
||||
|
||||
result.meshes = this.createModelRoot(modelName, result.meshes);
|
||||
this.modelDic.Set(modelName+'_'+modelId, result.meshes);
|
||||
this.modelDic.Set(modelName + '_' + modelId, result.meshes);
|
||||
|
||||
// 存储元数据
|
||||
this.modelMetadataDic.Set(modelName+'_'+modelId, {
|
||||
this.modelMetadataDic.Set(modelName + '_' + modelId, {
|
||||
modelName: modelName,
|
||||
modelId: modelId,
|
||||
modelUrl: modelUrl,
|
||||
@ -354,12 +354,12 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
// 应用 transform
|
||||
if (transform) {
|
||||
this.applyTransform(modelName+'_'+modelId, transform);
|
||||
this.applyTransform(modelName + '_' + modelId, transform);
|
||||
}
|
||||
|
||||
// 配置拖拽功能
|
||||
if (drag) {
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName+'_'+modelId, drag);
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName + '_' + modelId, drag);
|
||||
}
|
||||
}
|
||||
|
||||
@ -436,11 +436,6 @@ export class AppModel extends Monobehiver {
|
||||
const keys = this.modelDic.Keys();
|
||||
for (const key of keys) {
|
||||
const meshes = this.modelDic.Get(key);
|
||||
meshes.forEach(mesh => {
|
||||
console.log(mesh.uniqueId);
|
||||
console.log(mesh.name);
|
||||
|
||||
});
|
||||
if (meshes?.some(m => m === mesh || m.uniqueId === mesh.uniqueId)) {
|
||||
|
||||
return key;
|
||||
@ -456,7 +451,7 @@ export class AppModel extends Monobehiver {
|
||||
*/
|
||||
remove(meshOrName: AbstractMesh | string): boolean {
|
||||
let mesh: AbstractMesh | undefined;
|
||||
|
||||
|
||||
|
||||
// 判断传入的是对象还是字符串
|
||||
if (typeof meshOrName === 'string') {
|
||||
@ -483,8 +478,8 @@ export class AppModel extends Monobehiver {
|
||||
* @param modelConfig 模型配置对象
|
||||
*/
|
||||
async replaceModel(modelConfig: ModelMetadata): Promise<LoadResult> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
this.removeByName(modelConfig.modelId);
|
||||
return await this.addSingle(
|
||||
@ -501,19 +496,19 @@ export class AppModel extends Monobehiver {
|
||||
* 销毁指定模型
|
||||
* @param modelName 模型名称
|
||||
*/
|
||||
removeByName(modelName: string): void {
|
||||
removeByName(modelName: string): boolean {
|
||||
const meshes = this.modelDic.Get(modelName);
|
||||
if (!meshes?.length) {
|
||||
console.warn(`Model not found: ${modelName}`);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
this.getModelTransformTargets(meshes).forEach(mesh => mesh.dispose(false, true));
|
||||
this.modelDic.Remove(modelName);
|
||||
this.modelMetadataDic.Remove(modelName);
|
||||
this.mainApp.gameManager?.updateDictionaries();
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -522,8 +517,8 @@ export class AppModel extends Monobehiver {
|
||||
*/
|
||||
removeAll(): void {
|
||||
const modelNames = this.modelDic.Keys();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
modelNames.forEach(modelName => {
|
||||
const meshes = this.modelDic.Get(modelName);
|
||||
|
||||
Reference in New Issue
Block a user