1
This commit is contained in:
@ -31,6 +31,7 @@ type ModelTransform = {
|
||||
};
|
||||
|
||||
type ModelMetadata = {
|
||||
modelName: string;
|
||||
modelId: string;
|
||||
modelUrl: string;
|
||||
modelControlType?: ModelControlType;
|
||||
@ -253,6 +254,7 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
// 单个加载
|
||||
return await this.addSingle(
|
||||
modelConfig.modelName,
|
||||
modelConfig.modelId,
|
||||
modelConfig.modelUrl,
|
||||
modelConfig.modelControlType,
|
||||
@ -264,9 +266,9 @@ export class AppModel extends Monobehiver {
|
||||
/**
|
||||
* 添加单个模型
|
||||
*/
|
||||
private async addSingle(modelName: string, modelUrl: string, modelControlType?: ModelControlType, drag?: DragConfig, transform?: ModelTransform): Promise<LoadResult> {
|
||||
private async addSingle(modelName: string, modelId: string, modelUrl: string, modelControlType?: ModelControlType, drag?: DragConfig, transform?: ModelTransform): Promise<LoadResult> {
|
||||
// 检查是否已存在
|
||||
const existingMeshes = this.modelDic.Get(modelName);
|
||||
const existingMeshes = this.modelDic.Get(modelId);
|
||||
if (existingMeshes?.length && !existingMeshes[0].isDisposed()) {
|
||||
console.log(`模型 ${modelName} 已存在,直接显示`);
|
||||
this.showMeshes(existingMeshes);
|
||||
@ -280,14 +282,15 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
if (result.success && result.meshes) {
|
||||
// 克隆材质,确保每个模型有独立的材质
|
||||
this.cloneMaterials(result.meshes, modelName);
|
||||
this.cloneMaterials(result.meshes, modelId);
|
||||
|
||||
result.meshes = this.createModelRoot(modelName, result.meshes);
|
||||
this.modelDic.Set(modelName, result.meshes);
|
||||
result.meshes = this.createModelRoot(modelId, result.meshes);
|
||||
this.modelDic.Set(modelId, result.meshes);
|
||||
|
||||
// 存储元数据
|
||||
this.modelMetadataDic.Set(modelName, {
|
||||
modelId: modelName,
|
||||
this.modelMetadataDic.Set(modelId, {
|
||||
modelName: modelName,
|
||||
modelId: modelId,
|
||||
modelUrl: modelUrl,
|
||||
modelControlType: modelControlType,
|
||||
drag: drag,
|
||||
@ -296,12 +299,12 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
// 应用 transform
|
||||
if (transform) {
|
||||
this.applyTransform(modelName, transform);
|
||||
this.applyTransform(modelId, transform);
|
||||
}
|
||||
|
||||
// 配置拖拽功能
|
||||
if (drag) {
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName, drag);
|
||||
this.mainApp.appModelDrag?.configureDrag(modelId, drag);
|
||||
}
|
||||
|
||||
// 更新 GameManager 的字典
|
||||
@ -325,7 +328,7 @@ export class AppModel extends Monobehiver {
|
||||
EventBridge.modelLoadProgress({ loaded: 0, total, progress: 0, percentage: 0 });
|
||||
|
||||
for (let i = 0; i < models.length; i++) {
|
||||
const { modelId, modelUrl, modelControlType, drag, transform } = models[i];
|
||||
const { modelName, modelId, modelUrl, modelControlType, drag, transform } = models[i];
|
||||
|
||||
const result = await this.loadSingleModel(modelUrl, (event) => {
|
||||
this.emitProgress(i, total, modelUrl, event);
|
||||
@ -340,6 +343,7 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
// 存储元数据
|
||||
this.modelMetadataDic.Set(modelId, {
|
||||
modelName: modelName,
|
||||
modelId: modelId,
|
||||
modelUrl: modelUrl,
|
||||
modelControlType: modelControlType,
|
||||
@ -483,6 +487,7 @@ export class AppModel extends Monobehiver {
|
||||
|
||||
this.removeByName(modelConfig.modelId);
|
||||
return await this.addSingle(
|
||||
modelConfig.modelName,
|
||||
modelConfig.modelId,
|
||||
modelConfig.modelUrl,
|
||||
modelConfig.modelControlType,
|
||||
|
||||
Reference in New Issue
Block a user