1
This commit is contained in:
@ -8,6 +8,7 @@ import { Monobehiver } from '../base/Monobehiver';
|
||||
import { Dictionary } from '../utils/Dictionary';
|
||||
import { AppConfig } from './AppConfig';
|
||||
import { EventBridge } from '../event/bridge';
|
||||
import { DragConfig } from './AppModelDrag';
|
||||
|
||||
type LoadResult = {
|
||||
success: boolean;
|
||||
@ -27,6 +28,7 @@ type ModelMetadata = {
|
||||
modelId: string;
|
||||
modelUrl: string;
|
||||
modelControlType?: ModelControlType;
|
||||
drag?: DragConfig;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -221,14 +223,15 @@ export class AppModel extends Monobehiver {
|
||||
return await this.addSingle(
|
||||
modelConfig.modelId,
|
||||
modelConfig.modelUrl,
|
||||
modelConfig.modelControlType
|
||||
modelConfig.modelControlType,
|
||||
modelConfig.drag
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加单个模型
|
||||
*/
|
||||
private async addSingle(modelName: string, modelUrl: string, modelControlType?: ModelControlType): Promise<LoadResult> {
|
||||
private async addSingle(modelName: string, modelUrl: string, modelControlType?: ModelControlType, drag?: DragConfig): Promise<LoadResult> {
|
||||
// 检查是否已存在
|
||||
const existingMeshes = this.modelDic.Get(modelName);
|
||||
if (existingMeshes?.length && !existingMeshes[0].isDisposed()) {
|
||||
@ -250,9 +253,15 @@ export class AppModel extends Monobehiver {
|
||||
this.modelMetadataDic.Set(modelName, {
|
||||
modelId: modelName,
|
||||
modelUrl: modelUrl,
|
||||
modelControlType: modelControlType
|
||||
modelControlType: modelControlType,
|
||||
drag: drag
|
||||
});
|
||||
|
||||
// 配置拖拽功能
|
||||
if (drag) {
|
||||
this.mainApp.appModelDrag?.configureDrag(modelName, drag);
|
||||
}
|
||||
|
||||
// 更新 GameManager 的字典
|
||||
this.mainApp.gameManager?.updateDictionaries();
|
||||
|
||||
@ -274,7 +283,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 } = models[i];
|
||||
const { modelId, modelUrl, modelControlType, drag } = models[i];
|
||||
|
||||
const result = await this.loadSingleModel(modelUrl, (event) => {
|
||||
this.emitProgress(i, total, modelUrl, event);
|
||||
@ -288,8 +297,14 @@ export class AppModel extends Monobehiver {
|
||||
this.modelMetadataDic.Set(modelId, {
|
||||
modelId: modelId,
|
||||
modelUrl: modelUrl,
|
||||
modelControlType: modelControlType
|
||||
modelControlType: modelControlType,
|
||||
drag: drag
|
||||
});
|
||||
|
||||
// 配置拖拽功能
|
||||
if (drag) {
|
||||
this.mainApp.appModelDrag?.configureDrag(modelId, drag);
|
||||
}
|
||||
}
|
||||
|
||||
results.push(result);
|
||||
@ -410,7 +425,8 @@ export class AppModel extends Monobehiver {
|
||||
return await this.addSingle(
|
||||
modelConfig.modelId,
|
||||
modelConfig.modelUrl,
|
||||
modelConfig.modelControlType
|
||||
modelConfig.modelControlType,
|
||||
modelConfig.drag
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user