@memori.ai/memori-react 7.8.7 → 7.9.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 +61 -0
- package/dist/components/Avatar/Avatar.d.ts +4 -0
- package/dist/components/Avatar/Avatar.js +6 -6
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
- package/dist/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +48 -10
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +73 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +60 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js +26 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +65 -78
- package/dist/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +98 -0
- package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
- package/dist/components/Avatar/AvatarView/index.d.ts +4 -1
- package/dist/components/Avatar/AvatarView/index.js +36 -13
- package/dist/components/Avatar/AvatarView/index.js.map +1 -1
- package/dist/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
- package/dist/components/Avatar/AvatarView/utils/hideHands.js +14 -0
- package/dist/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
- package/dist/components/Chat/Chat.d.ts +1 -0
- package/dist/components/Chat/Chat.js +5 -2
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.js +19 -4
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +27 -4
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.css +4 -2
- package/dist/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.js +10 -4
- package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/dist/components/layouts/Totem.js +1 -1
- package/dist/components/layouts/Totem.js.map +1 -1
- package/dist/components/layouts/totem.css +9 -9
- package/dist/components/ui/Button.css +4 -0
- package/dist/components/ui/Button.d.ts +1 -0
- package/dist/components/ui/Button.js +2 -1
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Slider.css +177 -0
- package/dist/components/ui/Slider.d.ts +12 -0
- package/dist/components/ui/Slider.js +78 -0
- package/dist/components/ui/Slider.js.map +1 -0
- package/dist/locales/en.json +11 -0
- package/dist/locales/it.json +11 -0
- package/dist/styles.css +1 -0
- package/esm/components/Avatar/Avatar.d.ts +4 -0
- package/esm/components/Avatar/Avatar.js +6 -6
- package/esm/components/Avatar/Avatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.d.ts +3 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js +3 -3
- package/esm/components/Avatar/AvatarView/AvatarComponent/avatarComponent.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.d.ts +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +45 -8
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.d.ts +4 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.d.ts +17 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js +69 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/MorphTargetController.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.d.ts +19 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js +56 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.d.ts +18 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js +23 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/constants.js.map +1 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.d.ts +8 -7
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js +66 -80
- package/esm/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.js.map +1 -1
- package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts +12 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js +95 -0
- package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map +1 -0
- package/esm/components/Avatar/AvatarView/index.d.ts +4 -1
- package/esm/components/Avatar/AvatarView/index.js +38 -15
- package/esm/components/Avatar/AvatarView/index.js.map +1 -1
- package/esm/components/Avatar/AvatarView/utils/hideHands.d.ts +2 -0
- package/esm/components/Avatar/AvatarView/utils/hideHands.js +10 -0
- package/esm/components/Avatar/AvatarView/utils/hideHands.js.map +1 -0
- package/esm/components/Chat/Chat.d.ts +1 -0
- package/esm/components/Chat/Chat.js +5 -2
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.js +19 -4
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +27 -4
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.css +4 -2
- package/esm/components/SettingsDrawer/SettingsDrawer.d.ts +6 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.js +10 -4
- package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/esm/components/layouts/Totem.js +1 -1
- package/esm/components/layouts/Totem.js.map +1 -1
- package/esm/components/layouts/totem.css +9 -9
- package/esm/components/ui/Button.css +4 -0
- package/esm/components/ui/Button.d.ts +1 -0
- package/esm/components/ui/Button.js +2 -1
- package/esm/components/ui/Button.js.map +1 -1
- package/esm/components/ui/Slider.css +177 -0
- package/esm/components/ui/Slider.d.ts +12 -0
- package/esm/components/ui/Slider.js +75 -0
- package/esm/components/ui/Slider.js.map +1 -0
- package/esm/locales/en.json +11 -0
- package/esm/locales/it.json +11 -0
- package/esm/styles.css +1 -0
- package/package.json +3 -2
- package/src/components/Avatar/Avatar.test.tsx +8 -0
- package/src/components/Avatar/Avatar.tsx +19 -6
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +17 -8
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/AnimationController.ts +1 -1
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +69 -18
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +4 -1
- package/src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts +83 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/constants.ts → constants.ts} +2 -1
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +106 -124
- package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +99 -0
- package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +187 -0
- package/src/components/Avatar/AvatarView/index.tsx +115 -43
- package/src/components/Avatar/AvatarView/utils/hideHands.ts +11 -0
- package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +32 -93
- package/src/components/Chat/Chat.test.tsx +11 -0
- package/src/components/Chat/Chat.tsx +8 -1
- package/src/components/ChatBubble/ChatBubble.tsx +46 -27
- package/src/components/MemoriWidget/MemoriWidget.tsx +42 -5
- package/src/components/SettingsDrawer/SettingsDrawer.css +4 -2
- package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +24 -0
- package/src/components/SettingsDrawer/SettingsDrawer.tsx +76 -4
- package/src/components/layouts/Totem.tsx +1 -1
- package/src/components/layouts/layouts.stories.tsx +111 -3
- package/src/components/layouts/totem.css +9 -9
- package/src/components/ui/Button.css +4 -0
- package/src/components/ui/Button.tsx +3 -0
- package/src/components/ui/Slider.css +177 -0
- package/src/components/ui/Slider.stories.tsx +63 -0
- package/src/components/ui/Slider.tsx +142 -0
- package/src/locales/en.json +11 -0
- package/src/locales/it.json +11 -0
- package/src/styles.css +1 -0
- /package/src/components/Avatar/AvatarView/AvatarComponent/components/{FullbodyAvatar/MorhTargetController.ts → MorphTargetController.ts} +0 -0
package/dist/components/Avatar/AvatarView/AvatarComponent/components/PositionController.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PositionController.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/PositionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Vector3, Euler } from 'three';
|
|
2
|
+
import { AnimationConfig } from './FullbodyAvatar/types';
|
|
3
|
+
export declare const AVATAR_POSITION: Vector3;
|
|
4
|
+
export declare const AVATAR_ROTATION: Euler;
|
|
5
|
+
export declare const AVATAR_POSITION_ZOOMED: Vector3;
|
|
6
|
+
export declare const SCALE_LERP_FACTOR = 0.1;
|
|
7
|
+
export declare const ANIMATION_URLS: {
|
|
8
|
+
MALE: string;
|
|
9
|
+
FEMALE: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const BLINK_CONFIG: {
|
|
12
|
+
minInterval: number;
|
|
13
|
+
maxInterval: number;
|
|
14
|
+
blinkDuration: number;
|
|
15
|
+
};
|
|
16
|
+
export declare const DEFAULT_CONFIG: AnimationConfig;
|
|
17
|
+
export declare const EMOTION_SMOOTHING = 0.3;
|
|
18
|
+
export declare const VISEME_SMOOTHING = 0.5;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VISEME_SMOOTHING = exports.EMOTION_SMOOTHING = exports.DEFAULT_CONFIG = exports.BLINK_CONFIG = exports.ANIMATION_URLS = exports.SCALE_LERP_FACTOR = exports.AVATAR_POSITION_ZOOMED = exports.AVATAR_ROTATION = exports.AVATAR_POSITION = void 0;
|
|
4
|
+
const three_1 = require("three");
|
|
5
|
+
exports.AVATAR_POSITION = new three_1.Vector3(0, -1, 0);
|
|
6
|
+
exports.AVATAR_ROTATION = new three_1.Euler(0.175, 0, 0);
|
|
7
|
+
exports.AVATAR_POSITION_ZOOMED = new three_1.Vector3(0, -1.45, 0);
|
|
8
|
+
exports.SCALE_LERP_FACTOR = 0.1;
|
|
9
|
+
exports.ANIMATION_URLS = {
|
|
10
|
+
MALE: 'https://assets.memori.ai/api/v2/asset/2c5e88a4-cf62-408b-9ef0-518b099dfcb2.glb',
|
|
11
|
+
FEMALE: 'https://assets.memori.ai/api/v2/asset/2adc934b-24b2-45bd-94ad-ffec58d3cb32.glb',
|
|
12
|
+
};
|
|
13
|
+
exports.BLINK_CONFIG = {
|
|
14
|
+
minInterval: 1000,
|
|
15
|
+
maxInterval: 5000,
|
|
16
|
+
blinkDuration: 150,
|
|
17
|
+
};
|
|
18
|
+
exports.DEFAULT_CONFIG = {
|
|
19
|
+
fadeInDuration: 0.8,
|
|
20
|
+
fadeOutDuration: 0.8,
|
|
21
|
+
idleCount: 5,
|
|
22
|
+
timeScale: 1.0,
|
|
23
|
+
};
|
|
24
|
+
exports.EMOTION_SMOOTHING = 0.3;
|
|
25
|
+
exports.VISEME_SMOOTHING = 0.5;
|
|
26
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/constants.ts"],"names":[],"mappings":";;;AAAA,iCAAuC;AAG1B,QAAA,eAAe,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,eAAe,GAAG,IAAI,aAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,QAAA,sBAAsB,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,QAAA,iBAAiB,GAAG,GAAG,CAAC;AAExB,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gFAAgF;IACtF,MAAM,EACJ,gFAAgF;CACnF,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,GAAG;CACnB,CAAC;AAEW,QAAA,cAAc,GAAoB;IAC7C,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,GAAG;IACpB,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;CACf,CAAC;AAEW,QAAA,iBAAiB,GAAG,GAAG,CAAC;AACxB,QAAA,gBAAgB,GAAG,GAAG,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
interface HalfBodyAvatarProps {
|
|
2
2
|
url: string;
|
|
3
3
|
setMorphTargetInfluences: (morphTargetInfluences: any) => void;
|
|
4
|
-
headMovement?: boolean;
|
|
5
|
-
speaking?: boolean;
|
|
6
|
-
onLoaded?: () => void;
|
|
7
4
|
setMorphTargetDictionary: (morphTargetDictionary: any) => void;
|
|
8
|
-
eyeBlink?: boolean;
|
|
9
|
-
morphTargetInfluences: any;
|
|
10
5
|
updateCurrentViseme: (currentTime: number) => any;
|
|
11
|
-
|
|
6
|
+
eyeBlink?: boolean;
|
|
7
|
+
heightValue?: number;
|
|
8
|
+
avatarHeight: number;
|
|
9
|
+
avatarDepth: number;
|
|
10
|
+
onLoaded?: () => void;
|
|
11
|
+
onCameraZChange: (value: number) => void;
|
|
12
|
+
headMovement?: boolean;
|
|
12
13
|
}
|
|
13
|
-
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, eyeBlink,
|
|
14
|
+
export default function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, updateCurrentViseme, eyeBlink, avatarHeight, avatarDepth, headMovement, onLoaded, onCameraZChange, }: HalfBodyAvatarProps): JSX.Element;
|
|
14
15
|
export {};
|
|
@@ -1,102 +1,89 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
3
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
5
|
const react_1 = require("react");
|
|
5
6
|
const three_1 = require("three");
|
|
6
7
|
const drei_1 = require("@react-three/drei");
|
|
7
|
-
const utils_1 = require("../../../../../helpers/utils");
|
|
8
8
|
const fiber_1 = require("@react-three/fiber");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
9
|
+
const utils_1 = require("../../../../../helpers/utils");
|
|
10
|
+
const MorphTargetController_1 = require("./MorphTargetController");
|
|
11
|
+
const PositionController_1 = require("./PositionController");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const utils_2 = require("../../utils/utils");
|
|
14
|
+
const useHeadMovement_1 = tslib_1.__importDefault(require("../../utils/useHeadMovement"));
|
|
15
|
+
function HalfBodyAvatar({ url, setMorphTargetInfluences, setMorphTargetDictionary, updateCurrentViseme, eyeBlink = false, avatarHeight = 50, avatarDepth = 0, headMovement = false, onLoaded, onCameraZChange, }) {
|
|
16
|
+
var _a;
|
|
17
17
|
const { scene } = (0, drei_1.useGLTF)(url);
|
|
18
18
|
const { nodes, materials } = (0, fiber_1.useGraph)(scene);
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
}
|
|
19
|
+
const { camera } = (0, fiber_1.useThree)();
|
|
20
|
+
const morphTargetControllerRef = (0, react_1.useRef)();
|
|
21
|
+
const positionControllerRef = (0, react_1.useRef)();
|
|
22
|
+
const targetCameraZRef = (0, react_1.useRef)(camera.position.z);
|
|
23
|
+
(0, useHeadMovement_1.default)(headMovement, nodes);
|
|
24
|
+
const blinkStateRef = (0, react_1.useRef)({
|
|
25
|
+
isBlinking: false,
|
|
26
|
+
lastBlinkTime: 0,
|
|
27
|
+
nextBlinkTime: 0,
|
|
28
|
+
blinkStartTime: 0,
|
|
29
|
+
});
|
|
30
|
+
const headMesh = (0, react_1.useMemo)(() => {
|
|
31
|
+
let foundMesh;
|
|
32
|
+
scene === null || scene === void 0 ? void 0 : scene.traverse((object) => {
|
|
33
|
+
if (object instanceof three_1.SkinnedMesh &&
|
|
34
|
+
(object.name === 'GBNL__Head' || object.name === 'Wolf3D_Avatar')) {
|
|
35
|
+
foundMesh = object;
|
|
38
36
|
}
|
|
39
37
|
});
|
|
38
|
+
return foundMesh;
|
|
39
|
+
}, [scene]);
|
|
40
|
+
(0, react_1.useEffect)(() => {
|
|
41
|
+
if (!positionControllerRef.current) {
|
|
42
|
+
positionControllerRef.current = new PositionController_1.AvatarPositionController(constants_1.AVATAR_POSITION, constants_1.AVATAR_POSITION_ZOOMED);
|
|
43
|
+
}
|
|
44
|
+
if (headMesh) {
|
|
45
|
+
morphTargetControllerRef.current = new MorphTargetController_1.MorphTargetController(headMesh);
|
|
46
|
+
if (headMesh.morphTargetDictionary && headMesh.morphTargetInfluences) {
|
|
47
|
+
setMorphTargetDictionary(headMesh.morphTargetDictionary);
|
|
48
|
+
const initialInfluences = Object.keys(headMesh.morphTargetDictionary)
|
|
49
|
+
.reduce((acc, key) => ({ ...acc, [key]: 0 }), {});
|
|
50
|
+
setMorphTargetInfluences(initialInfluences);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
(0, utils_1.correctMaterials)(materials);
|
|
40
54
|
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
|
|
55
|
+
(0, utils_2.hideHands)(nodes);
|
|
41
56
|
return () => {
|
|
42
57
|
Object.values(materials).forEach(material => material.dispose());
|
|
43
58
|
Object.values(nodes)
|
|
44
59
|
.filter(utils_1.isSkinnedMesh)
|
|
45
60
|
.forEach(mesh => mesh.geometry.dispose());
|
|
46
61
|
};
|
|
47
|
-
}, [materials, nodes, url, onLoaded, scene]);
|
|
48
|
-
(0,
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
(BLINK_CONFIG.maxInterval - BLINK_CONFIG.minInterval) +
|
|
63
|
-
BLINK_CONFIG.minInterval;
|
|
64
|
-
}
|
|
65
|
-
if (isBlinking.current) {
|
|
66
|
-
const blinkProgress = (currentTime - blinkStartTime.current) / BLINK_CONFIG.blinkDuration;
|
|
67
|
-
if (blinkProgress <= 0.5) {
|
|
68
|
-
blinkValue = blinkProgress * 2;
|
|
69
|
-
}
|
|
70
|
-
else if (blinkProgress <= 1) {
|
|
71
|
-
blinkValue = 2 - blinkProgress * 2;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
isBlinking.current = false;
|
|
75
|
-
blinkValue = 0;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
62
|
+
}, [materials, nodes, url, onLoaded, scene, headMesh]);
|
|
63
|
+
(0, react_1.useEffect)(() => {
|
|
64
|
+
if (positionControllerRef.current) {
|
|
65
|
+
positionControllerRef.current.updateHeight(avatarHeight, true);
|
|
66
|
+
}
|
|
67
|
+
}, [avatarHeight]);
|
|
68
|
+
(0, react_1.useEffect)(() => {
|
|
69
|
+
if (positionControllerRef.current && onCameraZChange) {
|
|
70
|
+
const newCameraZ = positionControllerRef.current.updateDepth(avatarDepth, true);
|
|
71
|
+
onCameraZChange(newCameraZ);
|
|
72
|
+
}
|
|
73
|
+
}, [avatarDepth, onCameraZChange]);
|
|
74
|
+
(0, fiber_1.useFrame)((state) => {
|
|
75
|
+
const currentTime = state.clock.elapsedTime * 1000;
|
|
76
|
+
if (morphTargetControllerRef.current) {
|
|
79
77
|
const currentViseme = updateCurrentViseme(currentTime / 1000);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
if (key === 'eyesClosed' && eyeBlink) {
|
|
87
|
-
targetValue += blinkValue;
|
|
88
|
-
}
|
|
89
|
-
targetValue = three_2.MathUtils.clamp(targetValue, 0, 1);
|
|
90
|
-
if (headMeshRef.current &&
|
|
91
|
-
headMeshRef.current.morphTargetInfluences) {
|
|
92
|
-
headMeshRef.current.morphTargetInfluences[index] = three_2.MathUtils.lerp(headMeshRef.current.morphTargetInfluences[index], targetValue, morphTargetSmoothing);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
mixer.current.update(0.01);
|
|
78
|
+
morphTargetControllerRef.current.updateMorphTargets(currentTime, {}, currentViseme, eyeBlink, blinkStateRef.current);
|
|
79
|
+
}
|
|
80
|
+
if (scene && positionControllerRef.current) {
|
|
81
|
+
const newScale = positionControllerRef.current.updateScale(constants_1.SCALE_LERP_FACTOR);
|
|
82
|
+
scene.scale.copy(newScale);
|
|
97
83
|
}
|
|
98
84
|
});
|
|
99
|
-
|
|
85
|
+
const position = ((_a = positionControllerRef.current) === null || _a === void 0 ? void 0 : _a.getPosition()) || constants_1.AVATAR_POSITION;
|
|
86
|
+
return ((0, jsx_runtime_1.jsx)("group", { position: position, children: (0, jsx_runtime_1.jsx)("primitive", { object: scene }) }));
|
|
100
87
|
}
|
|
101
88
|
exports.default = HalfBodyAvatar;
|
|
102
89
|
//# sourceMappingURL=halfbodyAvatar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"halfbodyAvatar.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx"],"names":[],"mappings":"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"}
|
package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
.memori--position-controls {
|
|
2
|
+
position: fixed;
|
|
3
|
+
z-index: 1000;
|
|
4
|
+
top: auto; /* Remove top positioning */
|
|
5
|
+
top: 65px; /* Position from bottom to avoid overlapping with buttons */
|
|
6
|
+
left: 15px; /* Remove left positioning */
|
|
7
|
+
display: flex;
|
|
8
|
+
width: 350px; /* Fixed width */
|
|
9
|
+
max-width: 90%; /* Maximum width relative to screen */
|
|
10
|
+
height: 300px;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
padding: 16px;
|
|
13
|
+
border-radius: 16px;
|
|
14
|
+
-webkit-backdrop-filter: blur(10px);
|
|
15
|
+
backdrop-filter: blur(10px);
|
|
16
|
+
background-color: var(--memori-inner-bg, #fff);
|
|
17
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
|
|
18
|
+
gap: 0.5rem;
|
|
19
|
+
text-align: left;
|
|
20
|
+
transform: none; /* Remove transform */
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Slider adjustments */
|
|
24
|
+
.memori--slider-container {
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
padding: 8px 0;
|
|
28
|
+
gap: 0.75rem;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.memori--slider-label {
|
|
32
|
+
margin-bottom: 4px;
|
|
33
|
+
font-size: 1rem;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Button adjustments */
|
|
37
|
+
.memori--preset-buttons {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: row;
|
|
40
|
+
justify-content: space-between;
|
|
41
|
+
margin-top: 8px;
|
|
42
|
+
gap: 8px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.memori--preset-buttons button {
|
|
46
|
+
min-height: 36px;
|
|
47
|
+
flex: 1;
|
|
48
|
+
padding: 8px 4px;
|
|
49
|
+
font-size: 0.9rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Close button */
|
|
53
|
+
.memori--position-controls-close {
|
|
54
|
+
position: absolute;
|
|
55
|
+
top: -25px;
|
|
56
|
+
right: -30px;
|
|
57
|
+
border-radius: 50%;
|
|
58
|
+
background-color: var(--memori-inner-bg, #fff);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.memori--position-controls-close-button {
|
|
62
|
+
min-width: 36px;
|
|
63
|
+
min-height: 36px;
|
|
64
|
+
padding: 8px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Totem specific adjustments */
|
|
68
|
+
@media screen and (max-width: 480px) {
|
|
69
|
+
.memori--position-controls {
|
|
70
|
+
right: 10px;
|
|
71
|
+
bottom: 80px;
|
|
72
|
+
width: 280px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.memori--preset-buttons button {
|
|
76
|
+
padding: 6px 4px;
|
|
77
|
+
font-size: 0.85rem;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.memori--slider-container {
|
|
81
|
+
padding: 6px 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Portrait/vertical orientation */
|
|
86
|
+
@media screen and (min-height: 800px) {
|
|
87
|
+
.memori--position-controls {
|
|
88
|
+
bottom: 120px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.memori--slider-label {
|
|
92
|
+
font-size: 1.1rem;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.memori--preset-buttons button {
|
|
96
|
+
padding: 10px 6px;
|
|
97
|
+
font-size: 1rem;
|
|
98
|
+
}
|
|
99
|
+
}
|
package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import './positionControls.css';
|
|
3
|
+
interface PositionControlsProps {
|
|
4
|
+
avatarHeight: number;
|
|
5
|
+
avatarDepth: number;
|
|
6
|
+
halfBody: boolean;
|
|
7
|
+
setAvatarHeight: (value: number) => void;
|
|
8
|
+
setAvatarDepth: (value: number) => void;
|
|
9
|
+
setEnablePositionControls: (value: boolean) => void;
|
|
10
|
+
}
|
|
11
|
+
declare const PositionControls: React.FC<PositionControlsProps>;
|
|
12
|
+
export default PositionControls;
|
package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const configuration_1 = require("../../../../../helpers/configuration");
|
|
7
|
+
const react_i18next_1 = require("react-i18next");
|
|
8
|
+
const Slider_1 = tslib_1.__importDefault(require("../../../../../components/ui/Slider"));
|
|
9
|
+
require("./positionControls.css");
|
|
10
|
+
const Button_1 = tslib_1.__importDefault(require("../../../../ui/Button"));
|
|
11
|
+
const Close_1 = tslib_1.__importDefault(require("../../../../icons/Close"));
|
|
12
|
+
const PositionControls = ({ avatarHeight, avatarDepth, setAvatarHeight, setAvatarDepth, halfBody, setEnablePositionControls, }) => {
|
|
13
|
+
const normalPosition = halfBody ? { height: 80, depth: 50 } : { height: 25, depth: 25 };
|
|
14
|
+
const zoomedPosition = halfBody ? { height: 55, depth: 10 } : { height: 15, depth: 5 };
|
|
15
|
+
const farPosition = halfBody ? { height: 100, depth: 80 } : { height: 65, depth: 100 };
|
|
16
|
+
const settingsRef = (0, react_1.useRef)({
|
|
17
|
+
height: avatarHeight,
|
|
18
|
+
depth: avatarDepth,
|
|
19
|
+
zoomed: false,
|
|
20
|
+
normal: false,
|
|
21
|
+
far: false,
|
|
22
|
+
});
|
|
23
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
24
|
+
(0, react_1.useEffect)(() => {
|
|
25
|
+
settingsRef.current.height = avatarHeight;
|
|
26
|
+
settingsRef.current.depth = avatarDepth;
|
|
27
|
+
}, [avatarHeight, avatarDepth]);
|
|
28
|
+
(0, react_1.useEffect)(() => {
|
|
29
|
+
const handleKeyDown = (event) => {
|
|
30
|
+
if (event.key === '-' || event.key === '_' && settingsRef.current.depth < 100) {
|
|
31
|
+
const newValue = Math.min(settingsRef.current.depth + 10, 100);
|
|
32
|
+
setAvatarDepth(newValue);
|
|
33
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', newValue);
|
|
34
|
+
}
|
|
35
|
+
else if ((event.key === '+' || event.key === '=') &&
|
|
36
|
+
settingsRef.current.depth > -100) {
|
|
37
|
+
const newValue = Math.max(settingsRef.current.depth - 10, -100);
|
|
38
|
+
setAvatarDepth(newValue);
|
|
39
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', newValue);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
43
|
+
return () => {
|
|
44
|
+
window.removeEventListener('keydown', handleKeyDown);
|
|
45
|
+
};
|
|
46
|
+
}, [setAvatarDepth]);
|
|
47
|
+
(0, react_1.useEffect)(() => {
|
|
48
|
+
const handleArrowUp = (event) => {
|
|
49
|
+
if (event.key === 'ArrowUp' && settingsRef.current.height < 100) {
|
|
50
|
+
const newValue = settingsRef.current.height + 5;
|
|
51
|
+
setAvatarHeight(newValue);
|
|
52
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', newValue);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const handleArrowDown = (event) => {
|
|
56
|
+
if (event.key === 'ArrowDown' && settingsRef.current.height > 0) {
|
|
57
|
+
const newValue = settingsRef.current.height - 5;
|
|
58
|
+
setAvatarHeight(newValue);
|
|
59
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', newValue);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
window.addEventListener('keydown', handleArrowUp);
|
|
63
|
+
window.addEventListener('keydown', handleArrowDown);
|
|
64
|
+
return () => {
|
|
65
|
+
window.removeEventListener('keydown', handleArrowUp);
|
|
66
|
+
window.removeEventListener('keydown', handleArrowDown);
|
|
67
|
+
};
|
|
68
|
+
}, [setAvatarHeight]);
|
|
69
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "memori--position-controls", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori--position-controls-close", children: (0, jsx_runtime_1.jsx)(Button_1.default, { ghost: true, icon: (0, jsx_runtime_1.jsx)(Close_1.default, {}), outlined: true, danger: true, shape: "circle", className: "memori--position-controls-close-button", onClick: () => {
|
|
70
|
+
setEnablePositionControls(false);
|
|
71
|
+
} }) }), (0, jsx_runtime_1.jsx)("div", { className: "memori--slider-container", children: (0, jsx_runtime_1.jsx)(Slider_1.default, { defaultValue: settingsRef.current.height, min: 0.5, max: 100, label: (0, jsx_runtime_1.jsx)("label", { className: "memori--slider-label", children: t('write_and_speak.height') }), step: 1, onChange: (value) => {
|
|
72
|
+
setAvatarHeight(value);
|
|
73
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', value);
|
|
74
|
+
} }) }), (0, jsx_runtime_1.jsx)("div", { className: "memori--slider-container", children: (0, jsx_runtime_1.jsx)(Slider_1.default, { defaultValue: settingsRef.current.depth, min: 0.5, max: 100, step: 5, label: (0, jsx_runtime_1.jsx)("label", { className: "memori--slider-label", children: t('write_and_speak.depth') }), onChange: (value) => {
|
|
75
|
+
setAvatarDepth(value);
|
|
76
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', value);
|
|
77
|
+
} }) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori--preset-buttons", children: [(0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? zoomedPosition.height : normalPosition.height) &&
|
|
78
|
+
avatarDepth === (halfBody ? zoomedPosition.depth : normalPosition.depth), onClick: () => {
|
|
79
|
+
setAvatarHeight(zoomedPosition.height);
|
|
80
|
+
setAvatarDepth(zoomedPosition.depth);
|
|
81
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', zoomedPosition.height);
|
|
82
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', zoomedPosition.depth);
|
|
83
|
+
}, children: t('write_and_speak.zoomed') }), (0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? normalPosition.height : zoomedPosition.height) &&
|
|
84
|
+
avatarDepth === (halfBody ? normalPosition.depth : zoomedPosition.depth), onClick: () => {
|
|
85
|
+
setAvatarHeight(normalPosition.height);
|
|
86
|
+
setAvatarDepth(normalPosition.depth);
|
|
87
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', normalPosition.height);
|
|
88
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', normalPosition.depth);
|
|
89
|
+
}, children: t('write_and_speak.normal') }), (0, jsx_runtime_1.jsx)(Button_1.default, { outlined: true, isActive: avatarHeight === (halfBody ? farPosition.height : normalPosition.height) &&
|
|
90
|
+
avatarDepth === (halfBody ? farPosition.depth : normalPosition.depth), onClick: () => {
|
|
91
|
+
setAvatarHeight(farPosition.height);
|
|
92
|
+
setAvatarDepth(farPosition.depth);
|
|
93
|
+
(0, configuration_1.setLocalConfig)('avatarHeight', farPosition.height);
|
|
94
|
+
(0, configuration_1.setLocalConfig)('avatarDepth', farPosition.depth);
|
|
95
|
+
}, children: t('write_and_speak.far') })] })] }));
|
|
96
|
+
};
|
|
97
|
+
exports.default = PositionControls;
|
|
98
|
+
//# sourceMappingURL=positionControls.js.map
|
package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positionControls.js","sourceRoot":"","sources":["../../../../../../src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,9 @@ export interface Props {
|
|
|
16
16
|
showControls?: boolean;
|
|
17
17
|
isZoomed?: boolean;
|
|
18
18
|
chatEmission?: any;
|
|
19
|
+
enablePositionControls?: boolean;
|
|
20
|
+
setEnablePositionControls: (value: boolean) => void;
|
|
21
|
+
isTotem?: boolean;
|
|
19
22
|
setMeshRef?: any;
|
|
20
23
|
stopProcessing: () => void;
|
|
21
24
|
resetVisemeQueue: () => void;
|
|
@@ -24,4 +27,4 @@ export interface Props {
|
|
|
24
27
|
weight: number;
|
|
25
28
|
} | null;
|
|
26
29
|
}
|
|
27
|
-
export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, }: Props): JSX.Element;
|
|
30
|
+
export default function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody, loading, animation, showControls, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, enablePositionControls, setEnablePositionControls, isTotem, }: Props): JSX.Element;
|
|
@@ -3,10 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
|
+
const react_2 = require("react");
|
|
6
7
|
const fiber_1 = require("@react-three/fiber");
|
|
7
8
|
const drei_1 = require("@react-three/drei");
|
|
8
9
|
const utils_1 = require("../../../helpers/utils");
|
|
9
10
|
const avatarComponent_1 = require("./AvatarComponent/avatarComponent");
|
|
11
|
+
const positionControls_1 = tslib_1.__importDefault(require("./AvatarComponent/positionControls/positionControls"));
|
|
12
|
+
const configuration_1 = require("../../../helpers/configuration");
|
|
10
13
|
const loader_1 = tslib_1.__importDefault(require("./AvatarComponent/components/loader"));
|
|
11
14
|
const defaultStyles = {
|
|
12
15
|
halfBody: {
|
|
@@ -22,20 +25,40 @@ const defaultStyles = {
|
|
|
22
25
|
backgroundColor: 'white',
|
|
23
26
|
},
|
|
24
27
|
};
|
|
25
|
-
const getCameraSettings = (halfBody, isZoomed) => halfBody
|
|
26
|
-
? {
|
|
27
|
-
fov: 40,
|
|
28
|
-
position: [0, 0, 0.6],
|
|
29
|
-
}
|
|
30
|
-
: !halfBody && isZoomed
|
|
31
|
-
? {
|
|
32
|
-
fov: 44,
|
|
33
|
-
position: [0, 0, 1.25],
|
|
34
|
-
}
|
|
35
|
-
: { fov: 40, position: [0, 0.0000175, 3] };
|
|
36
28
|
const getLightingComponent = () => (0, utils_1.isAndroid)() || (0, utils_1.isiOS)() ? ((0, jsx_runtime_1.jsx)(drei_1.SpotLight, { distance: 100, position: [-0.3, 0.2, 1.25], angle: Math.PI / 2, attenuation: 5, anglePower: 5 })) : ((0, jsx_runtime_1.jsx)(drei_1.Environment, { files: "https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/venice_sunset_1k.hdr" }));
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
const getCameraSettings = (halfBody, isZoomed) => {
|
|
30
|
+
const baseZ = halfBody ? 0.6 : 3;
|
|
31
|
+
return {
|
|
32
|
+
fov: isZoomed ? 44 : 40,
|
|
33
|
+
position: [0, 0, baseZ],
|
|
34
|
+
target: [0, 0, 0],
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
function ContainerAvatarView({ url, sex, style, rotateAvatar, eyeBlink, headMovement, speaking, fallback, fallbackImg, halfBody = true, loading, animation, showControls = false, isZoomed, chatEmission, stopProcessing, resetVisemeQueue, updateCurrentViseme, enablePositionControls, setEnablePositionControls, isTotem = false, }) {
|
|
38
|
+
const [cameraZ, setCameraZ] = (0, react_1.useState)(() => getCameraSettings(halfBody, isZoomed || false).position[2]);
|
|
39
|
+
const getAvatarHeight = () => {
|
|
40
|
+
if (isTotem) {
|
|
41
|
+
const height = (0, configuration_1.getLocalConfig)('avatarHeight', 50);
|
|
42
|
+
return height;
|
|
43
|
+
}
|
|
44
|
+
if (halfBody) {
|
|
45
|
+
return 80;
|
|
46
|
+
}
|
|
47
|
+
return isZoomed ? 16 : 65;
|
|
48
|
+
};
|
|
49
|
+
const getAvatarDepth = () => {
|
|
50
|
+
if (isTotem) {
|
|
51
|
+
const depth = (0, configuration_1.getLocalConfig)('avatarDepth', 50);
|
|
52
|
+
return depth;
|
|
53
|
+
}
|
|
54
|
+
if (halfBody) {
|
|
55
|
+
return 50;
|
|
56
|
+
}
|
|
57
|
+
return isZoomed ? 5 : 100;
|
|
58
|
+
};
|
|
59
|
+
const [avatarHeight, setAvatarHeight] = (0, react_1.useState)(getAvatarHeight());
|
|
60
|
+
const [avatarDepth, setAvatarDepth] = (0, react_1.useState)(getAvatarDepth());
|
|
61
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [enablePositionControls && ((0, jsx_runtime_1.jsx)(positionControls_1.default, { avatarHeight: avatarHeight, avatarDepth: avatarDepth, halfBody: halfBody, setAvatarHeight: setAvatarHeight, setAvatarDepth: setAvatarDepth, setEnablePositionControls: setEnablePositionControls })), (0, jsx_runtime_1.jsxs)(fiber_1.Canvas, { style: style || defaultStyles.fullBody, children: [(0, jsx_runtime_1.jsx)(drei_1.PerspectiveCamera, { makeDefault: true, position: [0, 0, cameraZ], fov: getCameraSettings(halfBody, isZoomed || false).fov }), rotateAvatar && ((0, jsx_runtime_1.jsx)(drei_1.OrbitControls, { enablePan: false, enableZoom: false, target: [0, 0, 0] })), (0, jsx_runtime_1.jsxs)(react_2.Suspense, { fallback: fallback || (0, jsx_runtime_1.jsx)(loader_1.default, { fallbackImg: fallbackImg }), children: [getLightingComponent(), (0, jsx_runtime_1.jsx)(avatarComponent_1.AvatarView, { url: url, sex: sex, showControls: showControls, loading: loading || false, animation: animation, isZoomed: isZoomed || false, eyeBlink: eyeBlink || false, headMovement: headMovement || false, speaking: speaking || false, halfBody: halfBody, chatEmission: chatEmission, updateCurrentViseme: updateCurrentViseme, stopProcessing: stopProcessing, resetVisemeQueue: resetVisemeQueue, setCameraZ: setCameraZ, avatarHeight: avatarHeight, avatarDepth: avatarDepth })] })] })] }));
|
|
39
62
|
}
|
|
40
63
|
exports.default = ContainerAvatarView;
|
|
41
64
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Avatar/AvatarView/index.tsx"],"names":[],"mappings":"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"}
|