diff --git a/directory/src/routes/path/Operator.jsx b/directory/src/routes/path/Operator.jsx index 0b0bf99..e1ece75 100644 --- a/directory/src/routes/path/Operator.jsx +++ b/directory/src/routes/path/Operator.jsx @@ -79,6 +79,7 @@ export default function Operator() { const [spineAnimation, setSpineAnimation] = useState(defaultSpineAnimation) const { i18n } = useI18n() const [spinePlayer, setSpinePlayer] = useState(null) + const [prevLink, setPrevLink] = useState(null) const [voiceLang, _setVoiceLang] = useState(null) const [currentBackground, setCurrentBackground] = useAtom(backgroundAtom) const [voiceConfig, setVoiceConfig] = useState(null) @@ -170,7 +171,7 @@ export default function Operator() { setTitle(getPartialName("name", config.codename[language])) } }, [config, language, key, setTitle]) - + useEffect(() => { if (spineRef.current?.children.length === 0 && spineData && config) { const playerConfig = { @@ -222,10 +223,15 @@ export default function Operator() { } else { playerConfig.skelUrl = `./assets/${config.filename.replace('#', '%23')}.skel`; } - + setPrevLink(config.link) setSpinePlayer(new spine.SpinePlayer(spineRef.current, playerConfig)) } - }, [config, spineData, spineAnimation]); + return () => { + if (spinePlayer && prevLink === config.link) { + spinePlayer.dispose() + } + } + }, [config, spineData, spineAnimation, setSpinePlayer, spinePlayer, prevLink]); useEffect(() => { if (voiceConfig && voiceLang) { diff --git a/libs/directory.js b/libs/directory.js index 0ece5fa..0f83359 100644 --- a/libs/directory.js +++ b/libs/directory.js @@ -7,7 +7,7 @@ import EnvGenerator from './env_generator.js' export default function (dataDir, { backgrounds, musicMapping }) { const extractedFolder = path.join(dataDir, '_directory') const targetFolder = path.join(__projectRoot, __config.folder.release, __config.folder.directory); - const directoryAssetFolder = path.join(__projectRoot, 'directory', 'src'); + const directoryAssetFolder = path.join(__projectRoot, __config.folder.directory_src, 'src'); const sourceFolder = path.join(__projectRoot, __config.folder.operator); const filesToCopy = Object.keys(__config.operators) const directoryJson = { diff --git a/playground/index.html b/playground/index.html deleted file mode 100644 index c372cc0..0000000 --- a/playground/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - -
- - - - - - - - - - - - - - -