@memori.ai/memori-react 7.19.1 → 7.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -0
- package/dist/components/Avatar/Avatar.js +3 -3
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
- package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +19 -77
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +95 -70
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +747 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +60 -2
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +68 -70
- package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
- package/dist/components/Avatar/AvatarView/index.d.ts +1 -1
- package/dist/components/Avatar/AvatarView/index.js +2 -2
- package/dist/components/Avatar/AvatarView/index.js.map +1 -1
- package/dist/components/Chat/Chat.js +2 -2
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.js +12 -9
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/dist/components/LoginDrawer/LoginDrawer.js +6 -6
- package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +143 -64
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/SignupForm/SignupForm.js +4 -4
- package/dist/components/SignupForm/SignupForm.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.js +5 -5
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.js +2 -2
- package/dist/components/UploadButton/UploadButton.js.map +1 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/dist/context/visemeContext.js +0 -39
- package/dist/context/visemeContext.js.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/locales/de.json +1 -0
- package/dist/locales/en.json +1 -0
- package/dist/locales/es.json +1 -0
- package/dist/locales/fr.json +1 -0
- package/dist/locales/it.json +1 -0
- package/esm/components/Avatar/Avatar.js +3 -3
- package/esm/components/Avatar/Avatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
- package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +20 -78
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +99 -74
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +743 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +61 -3
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +67 -69
- package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
- package/esm/components/Avatar/AvatarView/index.d.ts +1 -1
- package/esm/components/Avatar/AvatarView/index.js +2 -2
- package/esm/components/Avatar/AvatarView/index.js.map +1 -1
- package/esm/components/Chat/Chat.js +2 -2
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.js +12 -9
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/esm/components/LoginDrawer/LoginDrawer.js +6 -6
- package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +143 -64
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/SignupForm/SignupForm.js +4 -4
- package/esm/components/SignupForm/SignupForm.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.js +5 -5
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.js +2 -2
- package/esm/components/UploadButton/UploadButton.js.map +1 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/esm/context/visemeContext.js +0 -39
- package/esm/context/visemeContext.js.map +1 -1
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/locales/de.json +1 -0
- package/esm/locales/en.json +1 -0
- package/esm/locales/es.json +1 -0
- package/esm/locales/fr.json +1 -0
- package/esm/locales/it.json +1 -0
- package/package.json +2 -2
- package/src/components/Avatar/Avatar.tsx +3 -3
- package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +15 -8
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +64 -219
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +221 -124
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +1250 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +164 -8
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +19 -17
- package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +80 -79
- package/src/components/Avatar/AvatarView/index.tsx +1 -7
- package/src/components/Chat/Chat.tsx +2 -2
- package/src/components/ChatBubble/ChatBubble.tsx +37 -26
- package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +1 -1
- package/src/components/LoginDrawer/LoginDrawer.tsx +6 -6
- package/src/components/MemoriWidget/MemoriWidget.tsx +184 -78
- package/src/components/SignupForm/SignupForm.tsx +5 -5
- package/src/components/StartPanel/StartPanel.tsx +5 -5
- package/src/components/UploadButton/UploadButton.tsx +4 -4
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +1 -1
- package/src/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
- package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +44 -3
- package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +128 -8
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +28 -3
- package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +15 -1
- package/src/components/layouts/layouts.stories.tsx +0 -8
- package/src/context/visemeContext.tsx +40 -41
- package/src/index.stories.tsx +63 -65
- package/src/index.tsx +5 -3
- package/src/locales/de.json +1 -0
- package/src/locales/en.json +1 -0
- package/src/locales/es.json +1 -0
- package/src/locales/fr.json +1 -0
- package/src/locales/it.json +1 -0
- package/src/mocks/data.ts +3 -9
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AnimationController.ts +0 -308
- package/src/helpers/tenant.ts +0 -47
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [7.21.0](https://github.com/memori-ai/memori-react/compare/v7.19.2...v7.21.0) (2025-03-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* added AnimationLoader for flexible avatar animation management ([d0837a1](https://github.com/memori-ai/memori-react/commit/d0837a1d2e94a6ae898a12ed86258fb844425919))
|
|
9
|
+
* added AnimationParser for advanced avatar animation parsing ([f66daf2](https://github.com/memori-ai/memori-react/commit/f66daf20f7d2de994a240b91f8b31188b2b73e5d))
|
|
10
|
+
* create AnimationRegistry for centralized avatar animation management ([0c735ef](https://github.com/memori-ai/memori-react/commit/0c735ef87e00bfd57efcdce20a99017e2992faa5))
|
|
11
|
+
* enhance WhyThisAnswer component with receiver details and context variables ([5251cb1](https://github.com/memori-ai/memori-react/commit/5251cb195f2cbe8da6a8867ed13abb2843a25dba))
|
|
12
|
+
* implement AnimationStateMachine for advanced avatar animation control ([1aefb00](https://github.com/memori-ai/memori-react/commit/1aefb00129bc6c5bce01308c71bca56f3a8ab285))
|
|
13
|
+
* implement AvatarAnimator as comprehensive animation management system ([3049ef7](https://github.com/memori-ai/memori-react/commit/3049ef77125a1b5986b00029f8a3366594e1984e))
|
|
14
|
+
* improve RPM avatar detection and animation merging logic ([1e86edb](https://github.com/memori-ai/memori-react/commit/1e86edb8c294d3a59e4223a3a654077fc3de5f95))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* improve AvatarAnimator idle and animation transition logic ([ee797aa](https://github.com/memori-ai/memori-react/commit/ee797aa51a6fc0b452ef518d2afeccaa71fb7776))
|
|
20
|
+
* improve receiver display logic and ensure context variables are handled correctly ([6ce1227](https://github.com/memori-ai/memori-react/commit/6ce12273974eaeeb0618769e50e4726c24cc95e3))
|
|
21
|
+
* improve speech-to-text processing state management ([cfe9f4a](https://github.com/memori-ai/memori-react/commit/cfe9f4a18fc3dd43ba80b397d7c4965c37164b63))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Changes
|
|
25
|
+
|
|
26
|
+
* adjust emotion amplification and remove debug logging in MorphTargetController ([4af0a70](https://github.com/memori-ai/memori-react/commit/4af0a70ba23bc4b4dfc204008ffb4c0bdee82692))
|
|
27
|
+
* enhance AvatarAnimator with advanced animation management ([3cda44c](https://github.com/memori-ai/memori-react/commit/3cda44c679390fd5fe71befc18af571358a81bcd))
|
|
28
|
+
* enhance AvatarAnimator with advanced emotion and sequence handling ([f1e8f63](https://github.com/memori-ai/memori-react/commit/f1e8f630c324cbf2e41583da15c10fdd14a795c0))
|
|
29
|
+
* enhance MorphTargetController with dynamic emotion processing ([2fd8c2e](https://github.com/memori-ai/memori-react/commit/2fd8c2e34acfed487ffe0c1bdcd14c8a50049d35))
|
|
30
|
+
* enhance speech processing with robust message handling ([1a1370f](https://github.com/memori-ai/memori-react/commit/1a1370f2c600223aa6911b27e72dc5a389939b1b))
|
|
31
|
+
* improve emotion mapping and processing in MorphTargetController ([4a49461](https://github.com/memori-ai/memori-react/commit/4a49461985217f382d355883f9d52f7d15f7414d))
|
|
32
|
+
* improve speech recognition ([c6d1a1c](https://github.com/memori-ai/memori-react/commit/c6d1a1ca39e42e8c6636aeb4d00772946a8463e6))
|
|
33
|
+
* optimize AvatarAnimator with advanced transition and sequence handling ([1f67479](https://github.com/memori-ai/memori-react/commit/1f674795dcb85f5a14d419426f324ac2f70e615d))
|
|
34
|
+
* simplify AvatarView component and remove unused animation-related props ([d84dbc0](https://github.com/memori-ai/memori-react/commit/d84dbc0e3c19a19c2bbcbfbab3d647998c658e34))
|
|
35
|
+
* simplify DynamicShadow component with AvatarAnimator integration ([71c0991](https://github.com/memori-ai/memori-react/commit/71c09917b11baa96a252ff75882be3785f266f30))
|
|
36
|
+
* streamline HalfBodyAvatar component with simplified morph target and chat handling ([8d68795](https://github.com/memori-ai/memori-react/commit/8d687959c52056a4e01f3aa74e025a7567424405))
|
|
37
|
+
* upload button accepts pdf, txt and json ([36d8c65](https://github.com/memori-ai/memori-react/commit/36d8c65d9a7ace9399527b93cc36089c28a709d8))
|
|
38
|
+
* why this answer i18n, ui and styles ([18292dc](https://github.com/memori-ai/memori-react/commit/18292dce56d9609ae56525a50f44503c762abeda))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### Maintenance
|
|
42
|
+
|
|
43
|
+
* generated by ai label in chat with fallback ([f28199b](https://github.com/memori-ai/memori-react/commit/f28199be65f9ea010ef6c9b3c6bc6eb5700fb669))
|
|
44
|
+
* update api client ([8ab1bfd](https://github.com/memori-ai/memori-react/commit/8ab1bfd9cee3d486155bb053226666621e0aa295))
|
|
45
|
+
* update Storybook stories with new avatar configurations and layouts ([749c57a](https://github.com/memori-ai/memori-react/commit/749c57a3cae69edadf032240a5d7b3fd36afe213))
|
|
46
|
+
* update Storybook stories with test scenarios for RPM avatar animations and layouts ([b61a063](https://github.com/memori-ai/memori-react/commit/b61a063f6607d1216fcd7e967e60149f888ba51f))
|
|
47
|
+
|
|
48
|
+
## [7.19.2](https://github.com/memori-ai/memori-react/compare/v7.19.1...v7.19.2) (2025-03-07)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Bug Fixes
|
|
52
|
+
|
|
53
|
+
* handle position requirement before auto-starting memori ([1b1948d](https://github.com/memori-ai/memori-react/commit/1b1948ded9d773c0fb280623998f0f250f0f7015))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Changes
|
|
57
|
+
|
|
58
|
+
* tenant types from backend, remove customizations from dashboard ([9aa6deb](https://github.com/memori-ai/memori-react/commit/9aa6deb8d9b46124154a516c49435ecce9cd90a5))
|
|
59
|
+
|
|
3
60
|
## [7.19.1](https://github.com/memori-ai/memori-react/compare/v7.19.0...v7.19.1) (2025-03-06)
|
|
4
61
|
|
|
5
62
|
|
|
@@ -29,7 +29,7 @@ const Avatar = ({ memori, integration, integrationConfig, tenant, instruct = fal
|
|
|
29
29
|
memori.avatarURL.length > 0) {
|
|
30
30
|
return (0, media_1.getResourceUrl)({
|
|
31
31
|
type: 'avatar',
|
|
32
|
-
tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.
|
|
32
|
+
tenantID: tenant === null || tenant === void 0 ? void 0 : tenant.name,
|
|
33
33
|
resourceURI: memori.avatarURL,
|
|
34
34
|
baseURL: baseUrl,
|
|
35
35
|
apiURL: apiUrl,
|
|
@@ -82,9 +82,9 @@ const Avatar = ({ memori, integration, integrationConfig, tenant, instruct = fal
|
|
|
82
82
|
};
|
|
83
83
|
};
|
|
84
84
|
const renderIntegrationsLink = () => {
|
|
85
|
-
if (!(instruct && !hasUserActivatedSpeak && memori.isGiver && (tenant === null || tenant === void 0 ? void 0 : tenant.
|
|
85
|
+
if (!(instruct && !hasUserActivatedSpeak && memori.isGiver && (tenant === null || tenant === void 0 ? void 0 : tenant.name)))
|
|
86
86
|
return null;
|
|
87
|
-
const href = `https://${tenant.
|
|
87
|
+
const href = `https://${tenant.name}/${memori.culture === 'it-IT' ? 'it' : 'en'}/${memori.ownerUserName}/${memori.name}/integrations${(integration === null || integration === void 0 ? void 0 : integration.integrationID)
|
|
88
88
|
? `?integration=${integration.integrationID}&openAvatarModal=true`
|
|
89
89
|
: ''}`;
|
|
90
90
|
return ((0, jsx_runtime_1.jsx)("div", { className: "memori--avatar-link-to-integrations", children: (0, jsx_runtime_1.jsx)("a", { className: "memori-button memori-button--circle memori-button--outlined", href: href, children: (0, jsx_runtime_1.jsx)(Tooltip_1.default, { content: t('widgetgoToIntegrationsToCustomizeAvatar'), children: (0, jsx_runtime_1.jsx)("span", { className: "memori-button--icon", children: (0, jsx_runtime_1.jsx)(Edit_1.default, {}) }) }) }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":";;;;AAAA,iCAAyD;AAMzD,2FAA2D;AAC3D,oEAAoC;AACpC,+CAAqD;AACrD,gEAAgC;AAChC,8FAA8D;AAC9D,kEAAkC;AAClC,iDAA+C;AAC/C,+DAA+B;AAC/B,iFAAiD;AACjD,iEAAiC;AACjC,oEAA4B;AAC5B,sEAA+C;AAC/C,+DAAwD;AAwBxD,MAAM,MAAM,GAAoB,CAAC,EAC/B,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,eAAe,GAAG,KAAK,EACvB,kBAAkB,EAClB,qBAAqB,GAAG,KAAK,EAC7B,cAAc,GAAG,KAAK,EACtB,OAAO,GAAG,KAAK,EACf,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,UAAU,GAAG,IAAI,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,OAAO,GAAG,KAAK,GAChB,EAAE,EAAE;IACH,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GAAG,IAAA,yBAAS,GAAE,CAAC;IAE9E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAGP,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IACE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,MAAK,YAAY;YAC1C,MAAM,CAAC,SAAS;YAChB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAC3B;YACA,OAAO,IAAA,sBAAc,EAAC;gBACpB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,
|
|
1
|
+
{"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { AvatarAnimator } from '../components/controllers/AvatarAnimator';
|
|
2
|
+
declare const DynamicShadow: ({ animator, avatarPosition, }: {
|
|
3
|
+
animator: AvatarAnimator | null;
|
|
3
4
|
avatarPosition: any;
|
|
4
5
|
}) => JSX.Element;
|
|
5
6
|
export default DynamicShadow;
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
4
|
const drei_1 = require("@react-three/drei");
|
|
5
|
-
const DynamicShadow = ({
|
|
5
|
+
const DynamicShadow = ({ animator, avatarPosition, }) => {
|
|
6
6
|
const getShadowProps = () => {
|
|
7
|
+
var _a, _b, _c, _d, _e;
|
|
7
8
|
const baseProps = {
|
|
8
9
|
width: 10,
|
|
9
10
|
height: 10,
|
|
@@ -13,7 +14,13 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
13
14
|
resolution: 1024,
|
|
14
15
|
color: '#000000',
|
|
15
16
|
};
|
|
16
|
-
if (
|
|
17
|
+
if (!animator) {
|
|
18
|
+
return {
|
|
19
|
+
...baseProps,
|
|
20
|
+
opacity: 0,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if ((_a = animator.getCurrentAnimationName()) === null || _a === void 0 ? void 0 : _a.startsWith('Loading')) {
|
|
17
24
|
return {
|
|
18
25
|
...baseProps,
|
|
19
26
|
opacity: 0.85,
|
|
@@ -22,8 +29,8 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
22
29
|
height: 12,
|
|
23
30
|
};
|
|
24
31
|
}
|
|
25
|
-
else if (
|
|
26
|
-
|
|
32
|
+
else if (((_b = animator.getCurrentAnimationName()) === null || _b === void 0 ? void 0 : _b.includes('Gioia')) ||
|
|
33
|
+
((_c = animator.getCurrentAnimationName()) === null || _c === void 0 ? void 0 : _c.includes('Joy'))) {
|
|
27
34
|
return {
|
|
28
35
|
...baseProps,
|
|
29
36
|
opacity: 0.9,
|
|
@@ -32,8 +39,8 @@ const DynamicShadow = ({ currentBaseAction, avatarPosition, }) => {
|
|
|
32
39
|
height: 11,
|
|
33
40
|
};
|
|
34
41
|
}
|
|
35
|
-
else if (
|
|
36
|
-
|
|
42
|
+
else if (((_d = animator.getCurrentAnimationName()) === null || _d === void 0 ? void 0 : _d.includes('Rabbia')) ||
|
|
43
|
+
((_e = animator.getCurrentAnimationName()) === null || _e === void 0 ? void 0 : _e.includes('Anger'))) {
|
|
37
44
|
return {
|
|
38
45
|
...baseProps,
|
|
39
46
|
opacity: 0.95,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicShadow.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx"],"names":[],"mappings":";;;AAEA,4CAAsE;
|
|
1
|
+
{"version":3,"file":"DynamicShadow.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx"],"names":[],"mappings":";;;AAEA,4CAAsE;AAGtE,MAAM,aAAa,GAAG,CAAC,EACrB,QAAQ,EACR,cAAc,GAIf,EAAE,EAAE;IAEH,MAAM,cAAc,GAAG,GAAG,EAAE;;QAC1B,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,CAAC;YACN,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,CAAC;aACX,CAAC;SACH;QAED,IAAI,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,UAAU,CAAC,SAAS,CAAC,EAAE;YAC7D,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;aAAM,IACL,CAAA,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,OAAO,CAAC;aACrD,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,KAAK,CAAC,CAAA,EACnD;YACA,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,GAAG;gBACZ,IAAI,EAAE,CAAC;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;aAAM,IACL,CAAA,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,QAAQ,CAAC;aACtD,MAAA,QAAQ,CAAC,uBAAuB,EAAE,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA,EACrD;YACA,OAAO;gBACL,GAAG,SAAS;gBACZ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAC;SACH;QAGD,OAAO;YACL,GAAG,SAAS;YACZ,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,GAAG;SACV,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,CACL,6DAEE,uBAAC,qBAAc,IACb,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,GAAG,EAAE,WAAW,CAAC,GAAG,EACpB,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,KAAK,EAAE,WAAW,CAAC,KAAK,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAClC,EAGF,uBAAC,qBAAc,IACZ,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,IAAI,EAChB,KAAK,EAAC,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GACvB,IACD,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
|
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
interface
|
|
3
|
-
|
|
4
|
-
animation?: string;
|
|
5
|
-
loading: boolean;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface AvatarViewProps {
|
|
3
|
+
chatEmission: string | null | undefined;
|
|
6
4
|
url: string;
|
|
7
5
|
sex: 'MALE' | 'FEMALE';
|
|
8
6
|
eyeBlink: boolean;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
avatarHeight?: number;
|
|
14
|
-
avatarDepth?: number;
|
|
15
|
-
stopProcessing: () => void;
|
|
16
|
-
resetVisemeQueue: () => void;
|
|
7
|
+
halfBody: boolean;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
avatarHeight: number;
|
|
10
|
+
avatarDepth: number;
|
|
17
11
|
updateCurrentViseme: (currentTime: number) => {
|
|
18
12
|
name: string;
|
|
19
13
|
weight: number;
|
|
20
14
|
} | null;
|
|
21
|
-
setCameraZ: (
|
|
15
|
+
setCameraZ: (cameraZ: number) => void;
|
|
16
|
+
headMovement: boolean;
|
|
17
|
+
speaking: boolean;
|
|
18
|
+
showControls: boolean;
|
|
22
19
|
}
|
|
23
|
-
export declare const AvatarView:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export {};
|
|
20
|
+
export declare const AvatarView: ({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight, avatarDepth, updateCurrentViseme, setCameraZ, headMovement, showControls, }: AvatarViewProps) => JSX.Element;
|
|
21
|
+
declare const _default: import("react").MemoExoticComponent<({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight, avatarDepth, updateCurrentViseme, setCameraZ, headMovement, showControls, }: AvatarViewProps) => JSX.Element>;
|
|
22
|
+
export default _default;
|
|
@@ -4,96 +4,38 @@ exports.AvatarView = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const react_1 = require("react");
|
|
7
|
-
const controls_1 = tslib_1.__importDefault(require("./components/controls"));
|
|
8
7
|
const fullbodyAvatar_1 = require("./components/FullbodyAvatar/fullbodyAvatar");
|
|
9
8
|
const halfbodyAvatar_1 = tslib_1.__importDefault(require("./components/halfbodyAvatar"));
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const [emotionMorphTargets, setEmotionMorphTargets] = (0, react_1.useState)({});
|
|
19
|
-
const [isRPM, setIsRPM] = (0, react_1.useState)(false);
|
|
20
|
-
const [timeScale, setTimeScale] = (0, react_1.useState)(0.8);
|
|
21
|
-
const emotionMap = {
|
|
22
|
-
Joy: { Joy: 1 },
|
|
23
|
-
Anger: { Anger: 1 },
|
|
24
|
-
Surprise: { Surprise: 1 },
|
|
25
|
-
Sadness: { Sadness: 1 },
|
|
26
|
-
Fear: { Fear: 1 },
|
|
27
|
-
};
|
|
28
|
-
const getDefaultEmotions = () => Object.keys(emotionMap).reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
|
|
29
|
-
const handleRPMBlendShape = (0, react_1.useCallback)((outputContent) => constants_1.MAPPING_BLEND_SHAPE_TO_EMOTION_RPM[outputContent], []);
|
|
30
|
-
const handleCustomGLBBlendShape = (0, react_1.useCallback)((outputContent) => constants_1.MAPPING_BLEND_SHAPE_TO_EMOTION_CUSTOM_GLB[outputContent], []);
|
|
31
|
-
const setEmotionMorphTargetInfluences = (0, react_1.useCallback)((action, outputContent) => {
|
|
32
|
-
if (action.startsWith('Loading'))
|
|
33
|
-
return;
|
|
34
|
-
const defaultEmotions = getDefaultEmotions();
|
|
35
|
-
if (outputContent === 'default') {
|
|
36
|
-
setEmotionMorphTargets(defaultEmotions);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
if (isRPM) {
|
|
40
|
-
const emotion = handleRPMBlendShape(outputContent);
|
|
41
|
-
setEmotionMorphTargets(_ => ({ ...defaultEmotions, ...emotion }));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
const emotion = handleCustomGLBBlendShape(outputContent);
|
|
45
|
-
const emotionValues = emotion === 'default' ? defaultEmotions : emotionMap[emotion];
|
|
46
|
-
setEmotionMorphTargets(_ => ({ ...defaultEmotions, ...emotionValues }));
|
|
9
|
+
const MemoizedFullbodyAvatar = (0, react_1.memo)(fullbodyAvatar_1.FullbodyAvatar);
|
|
10
|
+
const MemoizedHalfBodyAvatar = (0, react_1.memo)(halfbodyAvatar_1.default);
|
|
11
|
+
const AvatarView = ({ chatEmission, url, sex, eyeBlink, halfBody, loading, avatarHeight = 50, avatarDepth = -50, updateCurrentViseme, setCameraZ, headMovement, showControls, }) => {
|
|
12
|
+
const animatorRef = (0, react_1.useRef)(null);
|
|
13
|
+
const setAnimatorRef = (0, react_1.useCallback)((animator) => {
|
|
14
|
+
if (animator !== animatorRef.current) {
|
|
15
|
+
console.log('[AvatarView] Animator reference updated');
|
|
16
|
+
animatorRef.current = animator;
|
|
47
17
|
}
|
|
48
|
-
}, [isRPM, handleRPMBlendShape, handleCustomGLBBlendShape]);
|
|
49
|
-
const onBaseActionChange = (0, react_1.useCallback)((action, outputContent) => {
|
|
50
|
-
setEmotionMorphTargetInfluences(action, outputContent);
|
|
51
|
-
setCurrentBaseAction({ action, weight: 1 });
|
|
52
|
-
}, [setEmotionMorphTargetInfluences]);
|
|
53
|
-
const onMorphTargetInfluencesChange = (0, react_1.useCallback)((influences) => {
|
|
54
|
-
setMorphTargetInfluences(prev => ({ ...prev, ...influences }));
|
|
55
|
-
}, []);
|
|
56
|
-
const onMorphTargetDictionaryChange = (0, react_1.useCallback)((dictionary) => {
|
|
57
|
-
setMorphTargetDictionary(dictionary);
|
|
58
18
|
}, []);
|
|
59
19
|
(0, react_1.useEffect)(() => {
|
|
60
|
-
|
|
61
|
-
if (loading) {
|
|
62
|
-
const randomNumber = Math.floor(Math.random() * 3) + 1;
|
|
63
|
-
onBaseActionChange(`Loading${randomNumber}`, '');
|
|
20
|
+
if (!animatorRef.current)
|
|
64
21
|
return;
|
|
22
|
+
try {
|
|
23
|
+
animatorRef.current.processChatEmission(chatEmission, loading);
|
|
65
24
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
? (_b = (_a = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.split('<output class="memori-emotion">')[1]) === null || _a === void 0 ? void 0 : _a.split('</output>')[0]) === null || _b === void 0 ? void 0 : _b.trim()
|
|
69
|
-
: null;
|
|
70
|
-
const hasOutputTagSequence = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.includes('<output class="animation-sequence">');
|
|
71
|
-
const outputContentSequence = hasOutputTagSequence
|
|
72
|
-
? (_d = (_c = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.split('<output class="animation-sequence">')[1]) === null || _c === void 0 ? void 0 : _c.split('</output>')[0]) === null || _d === void 0 ? void 0 : _d.trim()
|
|
73
|
-
: null;
|
|
74
|
-
if (outputContentSequence && outputContentSequence.includes('->')) {
|
|
75
|
-
onBaseActionChange(outputContentSequence, outputContentSequence);
|
|
76
|
-
}
|
|
77
|
-
else if (outputContentEmotion) {
|
|
78
|
-
console.log('[AvatarView] outputContentEmotion:', outputContentEmotion);
|
|
79
|
-
const randomNumber = Math.floor(Math.random() * 3) + 1;
|
|
80
|
-
onBaseActionChange(`${outputContentEmotion}${randomNumber}`, outputContentEmotion);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
const randomNumber = Math.floor(Math.random() * 5) + 1;
|
|
84
|
-
onBaseActionChange(`Idle${randomNumber === 3 ? 4 : randomNumber}`, '');
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error('Error processing chat emission:', error);
|
|
85
27
|
}
|
|
86
|
-
}, [
|
|
87
|
-
const commonAvatarProps = {
|
|
28
|
+
}, [loading, chatEmission]);
|
|
29
|
+
const commonAvatarProps = (0, react_1.useCallback)(() => ({
|
|
88
30
|
url,
|
|
89
31
|
onCameraZChange: setCameraZ,
|
|
90
|
-
setMorphTargetInfluences,
|
|
91
|
-
setMorphTargetDictionary,
|
|
92
32
|
updateCurrentViseme,
|
|
93
33
|
avatarHeight,
|
|
94
34
|
avatarDepth,
|
|
95
|
-
|
|
96
|
-
|
|
35
|
+
setAnimatorRef,
|
|
36
|
+
}), [url, setCameraZ, updateCurrentViseme, avatarHeight, avatarDepth, setAnimatorRef]);
|
|
37
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [halfBody ? ((0, jsx_runtime_1.jsx)(MemoizedHalfBodyAvatar, { ...commonAvatarProps(), eyeBlink: eyeBlink, headMovement: headMovement })) : ((0, jsx_runtime_1.jsx)(MemoizedFullbodyAvatar, { ...commonAvatarProps(), sex: sex, eyeBlink: eyeBlink, chatEmission: chatEmission, loading: loading })), showControls && animatorRef.current && ((0, jsx_runtime_1.jsx)("div", { className: "animation-controls" }))] }));
|
|
97
38
|
};
|
|
98
39
|
exports.AvatarView = AvatarView;
|
|
40
|
+
exports.default = (0, react_1.memo)(exports.AvatarView);
|
|
99
41
|
//# sourceMappingURL=avatarComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatarComponent.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"avatarComponent.js","sourceRoot":"","sources":["../../../../../src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx"],"names":[],"mappings":";;;;;AAAA,iCAA6D;AAE7D,+EAA4E;AAC5E,yFAAyD;AAqBzD,MAAM,sBAAsB,GAAG,IAAA,YAAI,EAAC,+BAAc,CAAC,CAAC;AAGpD,MAAM,sBAAsB,GAAG,IAAA,YAAI,EAAC,wBAAc,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAG,CAAC,EACzB,YAAY,EACZ,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,GAAG,EAAE,EACjB,WAAW,GAAG,CAAC,EAAE,EACjB,mBAAmB,EACnB,UAAU,EACV,YAAY,EAEZ,YAAY,GACI,EAAE,EAAE;IAEpB,MAAM,WAAW,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAGxD,MAAM,cAAc,GAAG,IAAA,mBAAW,EAAC,CAAC,QAA+B,EAAE,EAAE;QACrE,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;SAChC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAIP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QAEjC,IAAI;YAEF,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SAChE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;SACzD;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAG5B,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,GAAG;QACH,eAAe,EAAE,UAAU;QAC3B,mBAAmB;QACnB,YAAY;QACZ,WAAW;QACX,cAAc;KACf,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAGvF,OAAO,CACL,6DACG,QAAQ,CAAC,CAAC,CAAC,CACV,uBAAC,sBAAsB,OACjB,iBAAiB,EAAE,EACvB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,sBAAsB,OACjB,iBAAiB,EAAE,EACvB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GAChB,CACH,EACA,YAAY,IAAI,WAAW,CAAC,OAAO,IAAI,CACtC,gCAAK,SAAS,EAAC,oBAAoB,GAE7B,CACP,IACA,CACJ,CAAC;AACJ,CAAC,CAAC;AA1EW,QAAA,UAAU,cA0ErB;AAEF,kBAAe,IAAA,YAAI,EAAC,kBAAU,CAAC,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { AvatarAnimator } from '../controllers/AvatarAnimator';
|
|
2
|
+
export interface FullbodyAvatarProps {
|
|
3
|
+
url: string;
|
|
4
|
+
sex: 'MALE' | 'FEMALE';
|
|
5
|
+
eyeBlink: boolean;
|
|
6
|
+
updateCurrentViseme: (currentTime: number) => {
|
|
7
|
+
name: string;
|
|
8
|
+
weight: number;
|
|
9
|
+
} | null;
|
|
10
|
+
avatarHeight?: number;
|
|
11
|
+
avatarDepth?: number;
|
|
12
|
+
onCameraZChange?: (value: number) => void;
|
|
13
|
+
chatEmission: any;
|
|
14
|
+
loading: boolean;
|
|
15
|
+
setAnimatorRef?: (animator: AvatarAnimator | null) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function FullbodyAvatar({ url, sex, eyeBlink, updateCurrentViseme, avatarHeight, avatarDepth, onCameraZChange, chatEmission, loading, setAnimatorRef, }: FullbodyAvatarProps): JSX.Element;
|
|
@@ -7,25 +7,36 @@ const react_1 = require("react");
|
|
|
7
7
|
const three_1 = require("three");
|
|
8
8
|
const drei_1 = require("@react-three/drei");
|
|
9
9
|
const fiber_1 = require("@react-three/fiber");
|
|
10
|
-
const types_1 = require("./types");
|
|
11
|
-
const AnimationController_1 = require("../controllers/AnimationController");
|
|
12
10
|
const MorphTargetController_1 = require("../controllers/MorphTargetController");
|
|
13
11
|
const AvatarPositionController_1 = require("../controllers/AvatarPositionController");
|
|
12
|
+
const AvatarAnimator_1 = require("../controllers/AvatarAnimator");
|
|
14
13
|
const constants_1 = require("../../constants");
|
|
15
14
|
const DynamicShadow_1 = tslib_1.__importDefault(require("../../Shadow/DynamicShadow"));
|
|
16
|
-
function FullbodyAvatar({ url, sex,
|
|
17
|
-
const { scene } = (0, drei_1.useGLTF)(url);
|
|
18
|
-
const { animations: baseAnimations } = (0, drei_1.useGLTF)(url);
|
|
15
|
+
function FullbodyAvatar({ url, sex, eyeBlink, updateCurrentViseme, avatarHeight = 50, avatarDepth = 0, onCameraZChange, chatEmission, loading, setAnimatorRef, }) {
|
|
16
|
+
const { scene, animations: baseAnimations } = (0, drei_1.useGLTF)(url);
|
|
19
17
|
const { animations: additionalAnimations } = (0, drei_1.useGLTF)(constants_1.ANIMATION_URLS[sex]);
|
|
20
|
-
const
|
|
18
|
+
const needsAdditionalAnimations = (0, react_1.useMemo)(() => {
|
|
19
|
+
let found = false;
|
|
20
|
+
scene.traverse((object) => {
|
|
21
|
+
if (object instanceof three_1.SkinnedMesh &&
|
|
22
|
+
(object.name === 'GBNL__Head' ||
|
|
23
|
+
object.name === 'Wolf3D_Avatar' ||
|
|
24
|
+
object.name === 'Wolf3D_Avatar006_1')) {
|
|
25
|
+
found = true;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return found;
|
|
29
|
+
}, [scene]);
|
|
30
|
+
const mergedAnimations = (0, react_1.useMemo)(() => needsAdditionalAnimations ? [...baseAnimations, ...additionalAnimations] : baseAnimations, [baseAnimations, additionalAnimations, needsAdditionalAnimations]);
|
|
21
31
|
const { actions } = (0, drei_1.useAnimations)(mergedAnimations, scene);
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
32
|
+
const morphTargetControllerRef = (0, react_1.useRef)(null);
|
|
33
|
+
const positionControllerRef = (0, react_1.useRef)(null);
|
|
34
|
+
const animatorRef = (0, react_1.useRef)(null);
|
|
35
|
+
const isInitializedRef = (0, react_1.useRef)(false);
|
|
25
36
|
const lastPositionRef = (0, react_1.useRef)(constants_1.AVATAR_POSITION.clone());
|
|
26
37
|
const positionUpdateThrottleRef = (0, react_1.useRef)(0);
|
|
27
38
|
const POSITION_UPDATE_INTERVAL = 1;
|
|
28
|
-
const
|
|
39
|
+
const [isRpm, setIsRpm] = (0, react_1.useState)(false);
|
|
29
40
|
const blinkStateRef = (0, react_1.useRef)({
|
|
30
41
|
isBlinking: false,
|
|
31
42
|
lastBlinkTime: 0,
|
|
@@ -33,27 +44,35 @@ function FullbodyAvatar({ url, sex, setIsRpm, currentBaseAction, timeScale, eyeB
|
|
|
33
44
|
blinkStartTime: 0,
|
|
34
45
|
});
|
|
35
46
|
(0, react_1.useEffect)(() => {
|
|
36
|
-
if (!
|
|
37
|
-
positionControllerRef.current = new AvatarPositionController_1.AvatarPositionController(constants_1.AVATAR_POSITION);
|
|
38
|
-
}
|
|
39
|
-
if (!actions || !scene)
|
|
47
|
+
if (!scene)
|
|
40
48
|
return;
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
let headMesh = null;
|
|
50
|
+
scene.traverse((object) => {
|
|
51
|
+
if (object instanceof three_1.SkinnedMesh &&
|
|
52
|
+
(object.name === 'GBNL__Head' ||
|
|
53
|
+
object.name === 'Wolf3D_Avatar' ||
|
|
54
|
+
object.name === 'Wolf3D_Avatar006_1')) {
|
|
55
|
+
if (object.name === 'Wolf3D_Avatar' ||
|
|
56
|
+
object.name === 'Wolf3D_Avatar006_1') {
|
|
57
|
+
setIsRpm(true);
|
|
58
|
+
console.log('RPM avatar detected');
|
|
59
|
+
}
|
|
60
|
+
headMesh = object;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
43
63
|
if (headMesh) {
|
|
44
|
-
morphTargetControllerRef.current
|
|
45
|
-
|
|
46
|
-
setMorphTargetDictionary(headMesh.morphTargetDictionary);
|
|
47
|
-
const initialInfluences = Object.keys(headMesh.morphTargetDictionary)
|
|
48
|
-
.reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
|
|
49
|
-
setMorphTargetInfluences(initialInfluences);
|
|
64
|
+
if (!morphTargetControllerRef.current) {
|
|
65
|
+
morphTargetControllerRef.current = new MorphTargetController_1.MorphTargetController(headMesh);
|
|
50
66
|
}
|
|
51
67
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
68
|
+
}, [scene]);
|
|
69
|
+
(0, react_1.useEffect)(() => {
|
|
70
|
+
if (!positionControllerRef.current) {
|
|
71
|
+
positionControllerRef.current = new AvatarPositionController_1.AvatarPositionController(constants_1.AVATAR_POSITION);
|
|
72
|
+
}
|
|
73
|
+
return () => {
|
|
74
|
+
};
|
|
75
|
+
}, []);
|
|
57
76
|
(0, react_1.useEffect)(() => {
|
|
58
77
|
if (positionControllerRef.current) {
|
|
59
78
|
positionControllerRef.current.updateHeight(avatarHeight, false);
|
|
@@ -65,70 +84,76 @@ function FullbodyAvatar({ url, sex, setIsRpm, currentBaseAction, timeScale, eyeB
|
|
|
65
84
|
onCameraZChange(newCameraZ);
|
|
66
85
|
}
|
|
67
86
|
}, [avatarDepth, onCameraZChange]);
|
|
68
|
-
const headMesh = (0, react_1.useMemo)(() => {
|
|
69
|
-
let foundMesh;
|
|
70
|
-
scene === null || scene === void 0 ? void 0 : scene.traverse((object) => {
|
|
71
|
-
if (object instanceof three_1.SkinnedMesh &&
|
|
72
|
-
(object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar' || object.name === 'Wolf3D_Avatar006_1')) {
|
|
73
|
-
if (object.name === 'GBNL__Head') {
|
|
74
|
-
setIsRpm(false);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
setIsRpm(true);
|
|
78
|
-
}
|
|
79
|
-
foundMesh = object;
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
return foundMesh;
|
|
83
|
-
}, [scene]);
|
|
84
87
|
(0, react_1.useEffect)(() => {
|
|
85
|
-
if (!
|
|
88
|
+
if (!scene || !actions || isInitializedRef.current) {
|
|
86
89
|
return;
|
|
87
|
-
if (currentBaseAction.action.startsWith('Loading')) {
|
|
88
|
-
animationControllerRef.current.updateIsChatAlreadyStarted(true);
|
|
89
|
-
animationControllerRef.current.transitionTo(types_1.AnimationState.LOADING, currentBaseAction.action);
|
|
90
90
|
}
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
console.log('Initializing animator');
|
|
92
|
+
if (!animatorRef.current) {
|
|
93
|
+
animatorRef.current = new AvatarAnimator_1.AvatarAnimator();
|
|
93
94
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
95
|
+
const animator = animatorRef.current;
|
|
96
|
+
const initWithPreloadedAnimations = async () => {
|
|
97
|
+
try {
|
|
98
|
+
if (animator.isInitialized()) {
|
|
99
|
+
console.log('Animator already initialized, skipping initialization');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
await animator.initialize(scene, actions, mergedAnimations, isRpm ? 'RPM' : 'CUSTOM_GLB');
|
|
103
|
+
console.log('AvatarAnimator initialized with', Object.keys(actions).length, 'animations');
|
|
104
|
+
if (setAnimatorRef) {
|
|
105
|
+
setAnimatorRef(animator);
|
|
106
|
+
}
|
|
107
|
+
isInitializedRef.current = true;
|
|
108
|
+
animator.setTimeScale(0.8);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error('Error initializing AvatarAnimator:', error);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
initWithPreloadedAnimations();
|
|
115
|
+
return () => {
|
|
116
|
+
if (animatorRef.current && isInitializedRef.current) {
|
|
117
|
+
console.log('Cleaning up animator');
|
|
118
|
+
if ('mixer' in animatorRef.current && animatorRef.current['mixer']) {
|
|
119
|
+
animatorRef.current['mixer'].stopAllAction();
|
|
120
|
+
}
|
|
121
|
+
if (setAnimatorRef) {
|
|
122
|
+
setAnimatorRef(null);
|
|
123
|
+
}
|
|
124
|
+
isInitializedRef.current = false;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}, [scene, actions, mergedAnimations, sex, setAnimatorRef]);
|
|
128
|
+
const frameCallback = (0, react_1.useCallback)((state, delta) => {
|
|
107
129
|
const currentTime = state.clock.elapsedTime * 1000;
|
|
108
|
-
(
|
|
130
|
+
if (animatorRef.current && isInitializedRef.current) {
|
|
131
|
+
animatorRef.current.update(delta);
|
|
132
|
+
}
|
|
109
133
|
if (morphTargetControllerRef.current) {
|
|
110
134
|
const currentViseme = updateCurrentViseme(currentTime / 1000);
|
|
111
|
-
morphTargetControllerRef.current.updateMorphTargets(currentTime,
|
|
135
|
+
morphTargetControllerRef.current.updateMorphTargets(currentTime, chatEmission, loading, currentViseme, eyeBlink, blinkStateRef.current);
|
|
112
136
|
}
|
|
113
137
|
if (scene && positionControllerRef.current) {
|
|
114
138
|
const newScale = positionControllerRef.current.updateScale(constants_1.SCALE_LERP_FACTOR);
|
|
115
139
|
scene.scale.copy(newScale);
|
|
116
|
-
if (currentTime - positionUpdateThrottleRef.current >=
|
|
140
|
+
if (currentTime - positionUpdateThrottleRef.current >=
|
|
141
|
+
POSITION_UPDATE_INTERVAL) {
|
|
117
142
|
const currentPosition = positionControllerRef.current.getPosition();
|
|
118
143
|
currentPosition.setX(Number(currentPosition.x.toFixed(6)));
|
|
119
144
|
currentPosition.setY(Number(currentPosition.y.toFixed(6)));
|
|
120
145
|
currentPosition.setZ(Number(currentPosition.z.toFixed(6)));
|
|
121
|
-
const positionDelta = currentPosition.distanceTo(lastPositionRef.current);
|
|
122
146
|
lastPositionRef.current.copy(currentPosition);
|
|
123
147
|
positionUpdateThrottleRef.current = currentTime;
|
|
124
148
|
}
|
|
125
149
|
}
|
|
126
|
-
});
|
|
150
|
+
}, [scene, updateCurrentViseme, chatEmission, loading, eyeBlink]);
|
|
151
|
+
(0, fiber_1.useFrame)(frameCallback);
|
|
127
152
|
const position = (0, react_1.useMemo)(() => {
|
|
128
153
|
var _a;
|
|
129
|
-
return ((_a = positionControllerRef.current) === null || _a === void 0 ? void 0 : _a.getPosition()) || constants_1.AVATAR_POSITION.clone();
|
|
130
|
-
}, [
|
|
131
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(DynamicShadow_1.default, {
|
|
154
|
+
return (((_a = positionControllerRef.current) === null || _a === void 0 ? void 0 : _a.getPosition()) || constants_1.AVATAR_POSITION.clone());
|
|
155
|
+
}, []);
|
|
156
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(DynamicShadow_1.default, { animator: animatorRef.current, avatarPosition: position }), (0, jsx_runtime_1.jsx)("group", { position: position, rotation: constants_1.AVATAR_ROTATION, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) })] }));
|
|
132
157
|
}
|
|
133
158
|
exports.FullbodyAvatar = FullbodyAvatar;
|
|
134
159
|
//# sourceMappingURL=fullbodyAvatar.js.map
|