@memori.ai/memori-react 7.19.2 → 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.
Files changed (108) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
  3. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
  4. package/dist/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
  5. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
  6. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +19 -77
  7. package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +95 -70
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +747 -0
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +60 -2
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  17. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  18. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
  19. package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  20. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
  21. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +68 -70
  22. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  23. package/dist/components/Avatar/AvatarView/index.d.ts +1 -1
  24. package/dist/components/Avatar/AvatarView/index.js +2 -2
  25. package/dist/components/Avatar/AvatarView/index.js.map +1 -1
  26. package/dist/components/ChatBubble/ChatBubble.js +7 -1
  27. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  28. package/dist/components/MemoriWidget/MemoriWidget.js +130 -62
  29. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  30. package/dist/components/UploadButton/UploadButton.js +2 -2
  31. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  32. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  33. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
  34. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  35. package/dist/context/visemeContext.js +0 -39
  36. package/dist/context/visemeContext.js.map +1 -1
  37. package/dist/locales/de.json +1 -0
  38. package/dist/locales/en.json +1 -0
  39. package/dist/locales/es.json +1 -0
  40. package/dist/locales/fr.json +1 -0
  41. package/dist/locales/it.json +1 -0
  42. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.d.ts +3 -2
  43. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js +13 -6
  44. package/esm/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.js.map +1 -1
  45. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +14 -18
  46. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +20 -78
  47. package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
  48. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +17 -2
  49. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +99 -74
  50. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  51. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.d.ts +65 -0
  52. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js +743 -0
  53. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.js.map +1 -0
  54. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.d.ts +9 -2
  55. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +61 -3
  56. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  57. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +3 -4
  58. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +5 -11
  59. package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
  60. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +13 -52
  61. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +67 -69
  62. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  63. package/esm/components/Avatar/AvatarView/index.d.ts +1 -1
  64. package/esm/components/Avatar/AvatarView/index.js +2 -2
  65. package/esm/components/Avatar/AvatarView/index.js.map +1 -1
  66. package/esm/components/ChatBubble/ChatBubble.js +7 -1
  67. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  68. package/esm/components/MemoriWidget/MemoriWidget.js +130 -62
  69. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  70. package/esm/components/UploadButton/UploadButton.js +2 -2
  71. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  72. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  73. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +2 -1
  74. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  75. package/esm/context/visemeContext.js +0 -39
  76. package/esm/context/visemeContext.js.map +1 -1
  77. package/esm/locales/de.json +1 -0
  78. package/esm/locales/en.json +1 -0
  79. package/esm/locales/es.json +1 -0
  80. package/esm/locales/fr.json +1 -0
  81. package/esm/locales/it.json +1 -0
  82. package/package.json +2 -2
  83. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +15 -8
  84. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +64 -219
  85. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +221 -124
  86. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +1250 -0
  87. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +164 -8
  88. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +19 -17
  89. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +80 -79
  90. package/src/components/Avatar/AvatarView/index.tsx +1 -7
  91. package/src/components/ChatBubble/ChatBubble.tsx +14 -2
  92. package/src/components/MemoriWidget/MemoriWidget.tsx +168 -76
  93. package/src/components/UploadButton/UploadButton.tsx +4 -4
  94. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +1 -1
  95. package/src/components/WhyThisAnswer/WhyThisAnswer.css +43 -0
  96. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +44 -3
  97. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +128 -8
  98. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +28 -3
  99. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +15 -1
  100. package/src/components/layouts/layouts.stories.tsx +0 -8
  101. package/src/context/visemeContext.tsx +40 -41
  102. package/src/index.stories.tsx +63 -65
  103. package/src/locales/de.json +1 -0
  104. package/src/locales/en.json +1 -0
  105. package/src/locales/es.json +1 -0
  106. package/src/locales/fr.json +1 -0
  107. package/src/locales/it.json +1 -0
  108. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AnimationController.ts +0 -308
package/CHANGELOG.md CHANGED
@@ -1,5 +1,50 @@
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
+
3
48
  ## [7.19.2](https://github.com/memori-ai/memori-react/compare/v7.19.1...v7.19.2) (2025-03-07)
4
49
 
5
50
 
@@ -1,5 +1,6 @@
1
- declare const DynamicShadow: ({ currentBaseAction, avatarPosition, }: {
2
- currentBaseAction: any;
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 = ({ currentBaseAction, avatarPosition, }) => {
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 (currentBaseAction.action.startsWith('Loading')) {
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 (currentBaseAction.action.includes('Gioia') ||
26
- currentBaseAction.action.includes('Joy')) {
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 (currentBaseAction.action.includes('Rabbia') ||
36
- currentBaseAction.action.includes('Anger')) {
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;AAEtE,MAAM,aAAa,GAAG,CAAC,EACrB,iBAAiB,EACjB,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;QAGF,IAAI,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClD,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,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxC;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,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC3C,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC1C;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
+ {"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
- import React from 'react';
2
- interface Props {
3
- showControls: boolean;
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
- headMovement: boolean;
10
- speaking: boolean;
11
- isZoomed: boolean;
12
- chatEmission: any;
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: (value: number) => void;
15
+ setCameraZ: (cameraZ: number) => void;
16
+ headMovement: boolean;
17
+ speaking: boolean;
18
+ showControls: boolean;
22
19
  }
23
- export declare const AvatarView: React.FC<Props & {
24
- halfBody: boolean;
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 constants_1 = require("./constants");
11
- const AvatarView = ({ stopProcessing, chatEmission, showControls, animation, url, sex, eyeBlink, headMovement, halfBody, loading, avatarHeight = 50, avatarDepth = -50, updateCurrentViseme, resetVisemeQueue, setCameraZ, }) => {
12
- const [currentBaseAction, setCurrentBaseAction] = (0, react_1.useState)({
13
- action: animation || 'Idle1',
14
- weight: 1,
15
- });
16
- const [morphTargetInfluences, setMorphTargetInfluences] = (0, react_1.useState)({});
17
- const [morphTargetDictionary, setMorphTargetDictionary] = (0, react_1.useState)({});
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
- var _a, _b, _c, _d;
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
- const hasOutputTagEmotion = chatEmission === null || chatEmission === void 0 ? void 0 : chatEmission.includes('<output class="memori-emotion">');
67
- const outputContentEmotion = hasOutputTagEmotion
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
- }, [chatEmission, loading, onBaseActionChange]);
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
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showControls && ((0, jsx_runtime_1.jsx)(controls_1.default, { timeScale: timeScale, morphTargetDictionary: morphTargetDictionary, onBaseActionChange: onBaseActionChange, onMorphTargetInfluencesChange: onMorphTargetInfluencesChange, onMorphTargetDictionaryChange: onMorphTargetDictionaryChange, baseActions: constants_1.BASE_ACTIONS, currentBaseAction: currentBaseAction, modifyTimeScale: setTimeScale })), halfBody ? ((0, jsx_runtime_1.jsx)(halfbodyAvatar_1.default, { ...commonAvatarProps, headMovement: headMovement })) : ((0, jsx_runtime_1.jsx)(fullbodyAvatar_1.FullbodyAvatar, { ...commonAvatarProps, sex: sex, setIsRpm: setIsRPM, resetVisemeQueue: resetVisemeQueue, eyeBlink: eyeBlink, currentBaseAction: currentBaseAction, timeScale: timeScale, morphTargetInfluences: morphTargetInfluences, stopProcessing: stopProcessing, emotionMorphTargets: emotionMorphTargets, halfBody: halfBody }))] }));
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":"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"}
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 { FullbodyAvatarProps } from './types';
2
- export declare function FullbodyAvatar({ url, sex, setIsRpm, currentBaseAction, timeScale, eyeBlink, updateCurrentViseme, setMorphTargetDictionary, setMorphTargetInfluences, emotionMorphTargets, avatarHeight, avatarDepth, onCameraZChange, }: FullbodyAvatarProps): JSX.Element;
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, setIsRpm, currentBaseAction, timeScale, eyeBlink, updateCurrentViseme, setMorphTargetDictionary, setMorphTargetInfluences, emotionMorphTargets, avatarHeight = 50, avatarDepth = 0, onCameraZChange, }) {
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 mergedAnimations = (0, react_1.useMemo)(() => [...baseAnimations, ...additionalAnimations], [baseAnimations, additionalAnimations]);
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 animationControllerRef = (0, react_1.useRef)();
23
- const morphTargetControllerRef = (0, react_1.useRef)();
24
- const positionControllerRef = (0, react_1.useRef)();
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 POSITION_THRESHOLD = 0.000001;
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 (!positionControllerRef.current) {
37
- positionControllerRef.current = new AvatarPositionController_1.AvatarPositionController(constants_1.AVATAR_POSITION);
38
- }
39
- if (!actions || !scene)
47
+ if (!scene)
40
48
  return;
41
- const mixer = new three_1.AnimationMixer(scene);
42
- animationControllerRef.current = new AnimationController_1.AnimationController(mixer, actions, { ...constants_1.DEFAULT_CONFIG });
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 = new MorphTargetController_1.MorphTargetController(headMesh);
45
- if (headMesh.morphTargetDictionary && headMesh.morphTargetInfluences) {
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
- const initialPosition = constants_1.AVATAR_POSITION.clone();
53
- initialPosition.setX(Number(initialPosition.x.toFixed(6)));
54
- initialPosition.setY(Number(initialPosition.y.toFixed(6)));
55
- initialPosition.setZ(Number(initialPosition.z.toFixed(6)));
56
- }, [actions, scene]);
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 (!animationControllerRef.current)
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
- else if (currentBaseAction.action.includes('->')) {
92
- animationControllerRef.current.playSequence(currentBaseAction.action);
91
+ console.log('Initializing animator');
92
+ if (!animatorRef.current) {
93
+ animatorRef.current = new AvatarAnimator_1.AvatarAnimator();
93
94
  }
94
- else if (currentBaseAction.action.startsWith('Idle')) {
95
- animationControllerRef.current.transitionTo(types_1.AnimationState.IDLE);
96
- }
97
- else {
98
- animationControllerRef.current.transitionTo(types_1.AnimationState.EMOTION, currentBaseAction.action);
99
- }
100
- }, [currentBaseAction]);
101
- (0, react_1.useEffect)(() => {
102
- var _a;
103
- (_a = animationControllerRef.current) === null || _a === void 0 ? void 0 : _a.setTimeScale(timeScale);
104
- }, [timeScale]);
105
- (0, fiber_1.useFrame)((state, delta) => {
106
- var _a;
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
- (_a = animationControllerRef.current) === null || _a === void 0 ? void 0 : _a.update(delta);
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, emotionMorphTargets, currentViseme, eyeBlink || false, blinkStateRef.current);
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 >= POSITION_UPDATE_INTERVAL) {
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
- }, [positionControllerRef.current]);
131
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(DynamicShadow_1.default, { currentBaseAction: currentBaseAction, avatarPosition: position }), (0, jsx_runtime_1.jsx)("group", { position: position, rotation: constants_1.AVATAR_ROTATION, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) })] }));
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
@@ -1 +1 @@
1
- {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fullbodyAvatar.js","sourceRoot":"","sources":["../../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx"],"names":[],"mappings":"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"}