init
This commit is contained in:
74
src/main.ts
Normal file
74
src/main.ts
Normal file
@ -0,0 +1,74 @@
|
||||
import { MainApp } from './babylonjs/MainApp';
|
||||
import configurator, { ConfiguratorParams } from './components/conf';
|
||||
import auth from './components/auth';
|
||||
import { on } from './utils/event';
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
faceSDK?: Record<string, unknown>;
|
||||
yiyu?: Record<string, unknown>;
|
||||
}
|
||||
}
|
||||
|
||||
type InitParams = {
|
||||
container?: string;
|
||||
modelUrlList?: string[];
|
||||
animationUrlList?: string[];
|
||||
idleAnimationUrlList?: string[];
|
||||
onSuccess?: () => void;
|
||||
onError?: (error?: unknown) => void;
|
||||
apiConfig?: ConfiguratorParams;
|
||||
};
|
||||
|
||||
let mainApp: MainApp | null = null;
|
||||
|
||||
const kernel = {
|
||||
/** 初始化应用 */
|
||||
init: async function (params: InitParams): Promise<void> {
|
||||
if (!params) { console.error('params is required'); return; }
|
||||
|
||||
if (params.apiConfig) {
|
||||
await configurator.init(params.apiConfig);
|
||||
if (params.apiConfig.name) {
|
||||
const userInfo = await auth.login(params.apiConfig.name);
|
||||
if (!userInfo) {
|
||||
console.error('failed to fetch user');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mainApp = new MainApp();
|
||||
mainApp.loadAConfig({
|
||||
container: params.container || 'renderDom',
|
||||
modelUrlList: params.modelUrlList || [],
|
||||
success: params.onSuccess ?? null,
|
||||
error: params.onError ?? null
|
||||
});
|
||||
|
||||
await mainApp.Awake();
|
||||
await mainApp.loadModel();
|
||||
|
||||
this.debugMorphTargets();
|
||||
}
|
||||
};
|
||||
|
||||
if (!window.faceSDK) {
|
||||
window.faceSDK = {};
|
||||
}
|
||||
window.faceSDK.kernel = kernel;
|
||||
|
||||
if (!window.yiyu) {
|
||||
window.yiyu = {};
|
||||
}
|
||||
window.yiyu.kernel = kernel;
|
||||
|
||||
window.yiyu.onAppLoaded = () => { };
|
||||
window.yiyu.onSingleSignFinished = (_text: string) => { };
|
||||
window.yiyu.onSentenceFinished = (_text: string) => { };
|
||||
window.yiyu.onSentenceChanged = (_data: unknown) => { };
|
||||
window.yiyu.onGloss = (_gloss: unknown) => { };
|
||||
|
||||
window.onload = () => { };
|
||||
|
||||
export { kernel };
|
||||
Reference in New Issue
Block a user