* docs: add editor-app README with setup instructions * docs: add separate EN/CN editor setup guides * fix(editor): fix build errors and refactor behavior-tree architecture - Fix fairygui-editor tsconfig extends path and add missing tsconfig.build.json - Refactor behavior-tree-editor to not depend on asset-system in runtime - Create local BehaviorTreeRuntimeModule for pure runtime logic - Move asset loader registration to editor module install() - Add BehaviorTreeLoader for asset system integration - Fix rapier2d WASM loader to not pass arguments to init() - Add WASM base64 loader config to rapier2d tsup.config - Update README documentation and simplify setup steps
96 lines
2.2 KiB
TypeScript
96 lines
2.2 KiB
TypeScript
/**
|
|
* Web 平台 Rapier2D 加载器
|
|
*
|
|
* 使用 @esengine/rapier2d 标准版(独立 WASM 文件)
|
|
*/
|
|
|
|
import type {
|
|
IWasmLibraryLoader,
|
|
WasmLibraryConfig,
|
|
PlatformInfo
|
|
} from '@esengine/platform-common';
|
|
import { PlatformType, isEditorEnvironment } from '@esengine/platform-common';
|
|
|
|
/**
|
|
* Rapier2D 模块类型
|
|
*/
|
|
type RapierModule = typeof import('@esengine/rapier2d');
|
|
|
|
/**
|
|
* Web 平台 Rapier2D 加载器
|
|
*
|
|
* 使用标准版,需要配置 WASM 路径
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* const loader = new WebRapier2DLoader(config);
|
|
* if (loader.isSupported()) {
|
|
* const RAPIER = await loader.load();
|
|
* // 使用 RAPIER...
|
|
* }
|
|
* ```
|
|
*/
|
|
export class WebRapier2DLoader implements IWasmLibraryLoader<RapierModule> {
|
|
private _config: WasmLibraryConfig;
|
|
|
|
/**
|
|
* 创建 Web 平台 Rapier2D 加载器
|
|
*
|
|
* @param config - 加载器配置
|
|
*/
|
|
constructor(config: WasmLibraryConfig) {
|
|
this._config = config;
|
|
}
|
|
|
|
/**
|
|
* 加载 Rapier2D 模块
|
|
*
|
|
* @returns 初始化完成的 Rapier2D 模块
|
|
*/
|
|
async load(): Promise<RapierModule> {
|
|
console.log(`[${this._config.name}] 正在加载 Web 版本...`);
|
|
|
|
// 动态导入标准版
|
|
const RAPIER = await import('@esengine/rapier2d');
|
|
|
|
// 初始化 WASM - WASM 已经作为 base64 嵌入到包中
|
|
// Initialize WASM - WASM is embedded as base64 in the package
|
|
await RAPIER.init();
|
|
|
|
console.log(`[${this._config.name}] 加载完成`);
|
|
return RAPIER;
|
|
}
|
|
|
|
/**
|
|
* 检查是否支持 WebAssembly
|
|
*
|
|
* @returns 是否支持
|
|
*/
|
|
isSupported(): boolean {
|
|
return typeof WebAssembly !== 'undefined';
|
|
}
|
|
|
|
/**
|
|
* 获取平台信息
|
|
* Get platform information
|
|
*/
|
|
getPlatformInfo(): PlatformInfo {
|
|
return {
|
|
type: PlatformType.Web,
|
|
supportsWasm: typeof WebAssembly !== 'undefined',
|
|
supportsSharedArrayBuffer: typeof SharedArrayBuffer !== 'undefined',
|
|
needsPolyfills: [],
|
|
isEditor: isEditorEnvironment()
|
|
};
|
|
}
|
|
|
|
/**
|
|
* 获取加载器配置
|
|
*
|
|
* @returns 配置对象
|
|
*/
|
|
getConfig(): WasmLibraryConfig {
|
|
return this._config;
|
|
}
|
|
}
|