Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
ylxmf2005 committed Jan 26, 2025
2 parents 665efbb + 971f0e9 commit ca609b6
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
23 changes: 22 additions & 1 deletion src/renderer/src/components/canvas/live2d.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { memo } from "react";
/* eslint-disable @typescript-eslint/ban-ts-comment */
import { memo, useEffect } from "react";
import { useLive2DConfig } from "@/context/live2d-config-context";
import { useIpcHandlers } from "@/hooks/utils/use-ipc-handlers";
import { useLive2DModel } from "@/hooks/canvas/use-live2d-model";
Expand Down Expand Up @@ -27,6 +28,26 @@ export const Live2D = memo(({ isPet }: Live2DProps): JSX.Element => {
useInterrupt();
useAudioTask();

useEffect(() => {
if (modelRef.current) {
// @ts-ignore
window.live2d = {
expression: (name?: string | number) => modelRef.current?.expression(name),
setExpression: (name?: string | number) => {
if (name !== undefined) {
modelRef.current?.internalModel.motionManager.expressionManager?.setExpression(name);
}
},
setRandomExpression: () => modelRef.current?.internalModel.motionManager.expressionManager?.setRandomExpression(),
getExpressions: () => modelRef.current?.internalModel.motionManager.expressionManager?.definitions.map((d) => d.name),
};
}
return () => {
// @ts-ignore
delete window.live2d;
};
}, [modelRef.current]); // window.live2d.expression() / getExpressions() / setRandomExpression()

return (
<div
ref={containerRef}
Expand Down
6 changes: 4 additions & 2 deletions src/renderer/src/hooks/utils/use-audio-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,11 @@ export const useAudioTask = () => {
}

try {
if (expressions?.[0] !== undefined) {
model.expression(expressions[0]);
}

model.speak(`data:audio/wav;base64,${audioBase64}`, {
expression: expressions?.[0] || undefined,
resetExpression: false,
onFinish: () => {
console.log("Voiceline is over");
onComplete();
Expand Down

0 comments on commit ca609b6

Please sign in to comment.