This commit is contained in:
yinsx
2026-01-05 10:14:33 +08:00
commit cf0b049abf
33 changed files with 3130 additions and 0 deletions

74
src/main.ts Normal file
View 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 };