@xrift/world-components 0.12.5 → 0.14.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/dist/contexts/UsersContext.d.ts +90 -0
- package/dist/contexts/UsersContext.d.ts.map +1 -0
- package/dist/contexts/UsersContext.js +72 -0
- package/dist/contexts/UsersContext.js.map +1 -0
- package/dist/contexts/XRiftContext.d.ts +7 -1
- package/dist/contexts/XRiftContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.js +3 -2
- package/dist/contexts/XRiftContext.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/movement.d.ts +77 -0
- package/dist/types/movement.d.ts.map +1 -0
- package/dist/types/movement.js +2 -0
- package/dist/types/movement.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { PlayerMovement } from '../types/movement';
|
|
3
|
+
/**
|
|
4
|
+
* ユーザー情報の型定義
|
|
5
|
+
*/
|
|
6
|
+
export interface User {
|
|
7
|
+
/** ユーザーID */
|
|
8
|
+
id: string;
|
|
9
|
+
/** 表示名 */
|
|
10
|
+
displayName: string;
|
|
11
|
+
/** アバターアイコンURL */
|
|
12
|
+
avatarUrl: string | null;
|
|
13
|
+
/** ゲストかどうか */
|
|
14
|
+
isGuest: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* ユーザー情報を管理するためのインターフェース
|
|
18
|
+
* プラットフォーム側(xrift-frontend)が実装を注入する
|
|
19
|
+
*/
|
|
20
|
+
export interface UsersContextValue {
|
|
21
|
+
/** ローカルユーザー(自分) */
|
|
22
|
+
localUser: User | null;
|
|
23
|
+
/** リモートユーザー(他の参加者) */
|
|
24
|
+
remoteUsers: User[];
|
|
25
|
+
/**
|
|
26
|
+
* 指定したユーザーの位置情報を取得
|
|
27
|
+
* useFrame内で毎フレーム呼び出しても再レンダリングを引き起こさない
|
|
28
|
+
* @param userId - ユーザーID
|
|
29
|
+
* @returns PlayerMovement または undefined(ユーザーが存在しない場合)
|
|
30
|
+
*/
|
|
31
|
+
getMovement: (userId: string) => PlayerMovement | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* ローカルユーザー(自分)の位置情報を取得
|
|
34
|
+
* useFrame内で毎フレーム呼び出しても再レンダリングを引き起こさない
|
|
35
|
+
* @returns PlayerMovement
|
|
36
|
+
*/
|
|
37
|
+
getLocalMovement: () => PlayerMovement;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* ユーザー情報を管理するContext
|
|
41
|
+
* ワールド作成者はこのContextを通じてユーザー情報にアクセスする
|
|
42
|
+
*/
|
|
43
|
+
export declare const UsersContext: import("react").Context<UsersContextValue>;
|
|
44
|
+
interface Props {
|
|
45
|
+
/**
|
|
46
|
+
* プラットフォーム側が提供する実装
|
|
47
|
+
* 未指定の場合はデフォルト実装(空の状態)が使用される
|
|
48
|
+
*/
|
|
49
|
+
implementation?: UsersContextValue;
|
|
50
|
+
children: ReactNode;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* ユーザー情報を提供するContextProvider
|
|
54
|
+
* プラットフォーム側(xrift-frontend)が実装を注入するために使用
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* // プラットフォーム側での使用例
|
|
58
|
+
* <UsersProvider implementation={usersImplementation}>
|
|
59
|
+
* <WorldComponent />
|
|
60
|
+
* </UsersProvider>
|
|
61
|
+
*/
|
|
62
|
+
export declare const UsersProvider: ({ implementation, children }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
/**
|
|
64
|
+
* ユーザー情報を取得するhook
|
|
65
|
+
* ワールド作成者が現在のユーザー情報(自分+他の参加者)を取得するために使用
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* // 基本的な使い方
|
|
69
|
+
* const { localUser, remoteUsers } = useUsers()
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* // 位置情報を取得(useFrame内で毎フレーム呼び出し可能)
|
|
73
|
+
* const { remoteUsers, getMovement, getLocalMovement } = useUsers()
|
|
74
|
+
*
|
|
75
|
+
* useFrame(() => {
|
|
76
|
+
* // 自分の位置を取得
|
|
77
|
+
* const myMovement = getLocalMovement()
|
|
78
|
+
*
|
|
79
|
+
* // 他のユーザーの位置を取得
|
|
80
|
+
* remoteUsers.forEach(user => {
|
|
81
|
+
* const movement = getMovement(user.id)
|
|
82
|
+
* if (movement) {
|
|
83
|
+
* console.log(`${user.displayName} is at`, movement.position)
|
|
84
|
+
* }
|
|
85
|
+
* })
|
|
86
|
+
* })
|
|
87
|
+
*/
|
|
88
|
+
export declare const useUsers: () => UsersContextValue;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=UsersContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersContext.d.ts","sourceRoot":"","sources":["../../src/contexts/UsersContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,aAAa;IACb,EAAE,EAAE,MAAM,CAAA;IACV,UAAU;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc;IACd,OAAO,EAAE,OAAO,CAAA;CACjB;AAeD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;IACtB,sBAAsB;IACtB,WAAW,EAAE,IAAI,EAAE,CAAA;IACnB;;;;;OAKG;IACH,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAA;IAC3D;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,cAAc,CAAA;CACvC;AAaD;;;GAGG;AACH,eAAO,MAAM,YAAY,4CAExB,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,iBAAiB,CAAA;IAClC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GAAI,8BAA8B,KAAK,4CAQhE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAE3B,CAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* デフォルトの PlayerMovement(位置情報が取得できない場合に使用)
|
|
5
|
+
*/
|
|
6
|
+
const DEFAULT_PLAYER_MOVEMENT = {
|
|
7
|
+
position: { x: 0, y: 0, z: 0 },
|
|
8
|
+
direction: { x: 0, z: 0 },
|
|
9
|
+
horizontalSpeed: 0,
|
|
10
|
+
verticalSpeed: 0,
|
|
11
|
+
rotation: { yaw: 0, pitch: 0 },
|
|
12
|
+
isGrounded: true,
|
|
13
|
+
isJumping: false,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* デフォルト実装: Context未設定時は空の状態として動作
|
|
17
|
+
* 開発時やテスト時に使用される
|
|
18
|
+
*/
|
|
19
|
+
const createDefaultImplementation = () => ({
|
|
20
|
+
localUser: null,
|
|
21
|
+
remoteUsers: [],
|
|
22
|
+
getMovement: () => undefined,
|
|
23
|
+
getLocalMovement: () => DEFAULT_PLAYER_MOVEMENT,
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* ユーザー情報を管理するContext
|
|
27
|
+
* ワールド作成者はこのContextを通じてユーザー情報にアクセスする
|
|
28
|
+
*/
|
|
29
|
+
export const UsersContext = createContext(createDefaultImplementation());
|
|
30
|
+
/**
|
|
31
|
+
* ユーザー情報を提供するContextProvider
|
|
32
|
+
* プラットフォーム側(xrift-frontend)が実装を注入するために使用
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // プラットフォーム側での使用例
|
|
36
|
+
* <UsersProvider implementation={usersImplementation}>
|
|
37
|
+
* <WorldComponent />
|
|
38
|
+
* </UsersProvider>
|
|
39
|
+
*/
|
|
40
|
+
export const UsersProvider = ({ implementation, children }) => {
|
|
41
|
+
const value = implementation ?? createDefaultImplementation();
|
|
42
|
+
return (_jsx(UsersContext.Provider, { value: value, children: children }));
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* ユーザー情報を取得するhook
|
|
46
|
+
* ワールド作成者が現在のユーザー情報(自分+他の参加者)を取得するために使用
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // 基本的な使い方
|
|
50
|
+
* const { localUser, remoteUsers } = useUsers()
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // 位置情報を取得(useFrame内で毎フレーム呼び出し可能)
|
|
54
|
+
* const { remoteUsers, getMovement, getLocalMovement } = useUsers()
|
|
55
|
+
*
|
|
56
|
+
* useFrame(() => {
|
|
57
|
+
* // 自分の位置を取得
|
|
58
|
+
* const myMovement = getLocalMovement()
|
|
59
|
+
*
|
|
60
|
+
* // 他のユーザーの位置を取得
|
|
61
|
+
* remoteUsers.forEach(user => {
|
|
62
|
+
* const movement = getMovement(user.id)
|
|
63
|
+
* if (movement) {
|
|
64
|
+
* console.log(`${user.displayName} is at`, movement.position)
|
|
65
|
+
* }
|
|
66
|
+
* })
|
|
67
|
+
* })
|
|
68
|
+
*/
|
|
69
|
+
export const useUsers = () => {
|
|
70
|
+
return useContext(UsersContext);
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=UsersContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersContext.js","sourceRoot":"","sources":["../../src/contexts/UsersContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAA;AAiBjE;;GAEG;AACH,MAAM,uBAAuB,GAAmB;IAC9C,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC9B,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACzB,eAAe,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAC9B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,KAAK;CACjB,CAAA;AA0BD;;;GAGG;AACH,MAAM,2BAA2B,GAAG,GAAsB,EAAE,CAAC,CAAC;IAC5D,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;IAC5B,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB;CAChD,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CACvC,2BAA2B,EAAE,CAC9B,CAAA;AAWD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAS,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,cAAc,IAAI,2BAA2B,EAAE,CAAA;IAE7D,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAChC,QAAQ,GACa,CACzB,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAsB,EAAE;IAC9C,OAAO,UAAU,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC,CAAA"}
|
|
@@ -3,6 +3,7 @@ import type { Object3D } from 'three';
|
|
|
3
3
|
import { type InstanceStateContextValue } from './InstanceStateContext';
|
|
4
4
|
import { type ScreenShareContextValue } from './ScreenShareContext';
|
|
5
5
|
import { type SpawnPointContextValue } from './SpawnPointContext';
|
|
6
|
+
import { type UsersContextValue } from './UsersContext';
|
|
6
7
|
export interface XRiftContextValue {
|
|
7
8
|
/**
|
|
8
9
|
* ワールドのベースURL(CDNのディレクトリパス)
|
|
@@ -45,6 +46,11 @@ interface Props {
|
|
|
45
46
|
* 指定しない場合はデフォルト実装(ローカルstate)が使用される
|
|
46
47
|
*/
|
|
47
48
|
spawnPointImplementation?: SpawnPointContextValue;
|
|
49
|
+
/**
|
|
50
|
+
* ユーザー情報の実装(オプション)
|
|
51
|
+
* 指定しない場合はデフォルト実装(空の状態)が使用される
|
|
52
|
+
*/
|
|
53
|
+
usersImplementation?: UsersContextValue;
|
|
48
54
|
children: ReactNode;
|
|
49
55
|
}
|
|
50
56
|
/**
|
|
@@ -52,7 +58,7 @@ interface Props {
|
|
|
52
58
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
53
59
|
* 必要な情報を注入するために使用
|
|
54
60
|
*/
|
|
55
|
-
export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, usersImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
56
62
|
/**
|
|
57
63
|
* XRift ワールドの情報を取得するhook
|
|
58
64
|
* ワールドプロジェクト側でアセットの相対パスを絶対パスに変換する際に使用
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACjG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAyB,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAUtE,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,mBAAmB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClC;;OAEG;IACH,oBAAoB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;IAChD;;OAEG;IACH,sBAAsB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAA;CAKnD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAA;AAEzE,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAA;IACvD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,uBAAuB,CAAA;IACnD;;;OAGG;IACH,wBAAwB,CAAC,EAAE,sBAAsB,CAAA;IACjD;;;OAGG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;IACvC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,+HAO3B,KAAK,4CAwCP,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,CAAA"}
|
|
@@ -3,6 +3,7 @@ import { createContext, useCallback, useContext, useMemo, useState } from 'react
|
|
|
3
3
|
import { InstanceStateProvider } from './InstanceStateContext';
|
|
4
4
|
import { ScreenShareProvider } from './ScreenShareContext';
|
|
5
5
|
import { SpawnPointProvider } from './SpawnPointContext';
|
|
6
|
+
import { UsersProvider } from './UsersContext';
|
|
6
7
|
// デフォルトの画面共有実装(開発環境用)
|
|
7
8
|
const createDefaultScreenShareImplementation = () => ({
|
|
8
9
|
videoElement: null,
|
|
@@ -20,7 +21,7 @@ export const XRiftContext = createContext(null);
|
|
|
20
21
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
21
22
|
* 必要な情報を注入するために使用
|
|
22
23
|
*/
|
|
23
|
-
export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, children, }) => {
|
|
24
|
+
export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, usersImplementation, children, }) => {
|
|
24
25
|
// インタラクト可能なオブジェクトの管理
|
|
25
26
|
const [interactableObjects] = useState(() => new Set());
|
|
26
27
|
// 画面共有の実装(指定がない場合はデフォルト実装を使用)
|
|
@@ -38,7 +39,7 @@ export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShar
|
|
|
38
39
|
interactableObjects,
|
|
39
40
|
registerInteractable,
|
|
40
41
|
unregisterInteractable,
|
|
41
|
-
}, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: _jsx(SpawnPointProvider, { implementation: spawnPointImplementation, children: children }) }) }) }));
|
|
42
|
+
}, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: _jsx(SpawnPointProvider, { implementation: spawnPointImplementation, children: _jsx(UsersProvider, { implementation: usersImplementation, children: children }) }) }) }) }));
|
|
42
43
|
};
|
|
43
44
|
/**
|
|
44
45
|
* XRift ワールドの情報を取得するhook
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEjG,OAAO,EAAE,qBAAqB,EAAkC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,mBAAmB,EAAgC,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAA+B,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEjG,OAAO,EAAE,qBAAqB,EAAkC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,mBAAmB,EAAgC,MAAM,sBAAsB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAA+B,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,aAAa,EAA0B,MAAM,gBAAgB,CAAA;AAEtE,sBAAsB;AACtB,MAAM,sCAAsC,GAAG,GAA4B,EAAE,CAAC,CAAC;IAC7E,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,KAAK;IAChB,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAC5E,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC;CAC3E,CAAC,CAAA;AA2BF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAA;AA2BzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,QAAQ,GACF,EAAE,EAAE;IACV,qBAAqB;IACrB,MAAM,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAY,CAAC,CAAA;IAEjE,8BAA8B;IAC9B,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,yBAAyB,IAAI,sCAAsC,EAAE,EAC3E,CAAC,yBAAyB,CAAC,CAC5B,CAAA;IAED,YAAY;IACZ,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,MAAgB,EAAE,EAAE;QAC5D,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEzB,cAAc;IACd,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,MAAgB,EAAE,EAAE;QAC9D,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEzB,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IACpB,KAAK,EAAE;YACL,OAAO;YACP,mBAAmB;YACnB,oBAAoB;YACpB,sBAAsB;SACvB,YAED,KAAC,mBAAmB,IAAC,KAAK,EAAE,eAAe,YACzC,KAAC,qBAAqB,IAAC,cAAc,EAAE,2BAA2B,YAChE,KAAC,kBAAkB,IAAC,cAAc,EAAE,wBAAwB,YAC1D,KAAC,aAAa,IAAC,cAAc,EAAE,mBAAmB,YAC/C,QAAQ,GACK,GACG,GACC,GACJ,GACA,CACzB,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAsB,EAAE;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { XRiftContext, XRiftProvider, useXRift, type XRiftContextValue, } from '
|
|
|
2
2
|
export { InstanceStateContext, useInstanceStateContext, type InstanceStateContextValue, } from './contexts/InstanceStateContext';
|
|
3
3
|
export { ScreenShareContext, ScreenShareProvider, useScreenShareContext, type ScreenShareContextValue, } from './contexts/ScreenShareContext';
|
|
4
4
|
export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, type SpawnPoint as SpawnPointData, type SpawnPointContextValue, } from './contexts/SpawnPointContext';
|
|
5
|
+
export { UsersContext, UsersProvider, useUsers, type User, type UsersContextValue, } from './contexts/UsersContext';
|
|
5
6
|
export { Interactable, type InteractableProps, } from './components/Interactable';
|
|
6
7
|
export { Mirror, type MirrorProps } from './components/Mirror';
|
|
7
8
|
export { Skybox, type SkyboxProps } from './components/Skybox';
|
|
@@ -10,4 +11,5 @@ export { ScreenShareDisplay, type ScreenShareDisplayProps, } from './components/
|
|
|
10
11
|
export { SpawnPoint, type SpawnPointProps, } from './components/SpawnPoint';
|
|
11
12
|
export { useInstanceState } from './hooks/useInstanceState';
|
|
12
13
|
export { useSpawnPoint } from './hooks/useSpawnPoint';
|
|
14
|
+
export { type PlayerMovement, type Position3D, type Rotation3D, type VRTrackingData, type VRMovementDirection, } from './types/movement';
|
|
13
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,UAAU,IAAI,cAAc,EACjC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { XRiftContext, XRiftProvider, useXRift, } from './contexts/XRiftContext'
|
|
|
3
3
|
export { InstanceStateContext, useInstanceStateContext, } from './contexts/InstanceStateContext';
|
|
4
4
|
export { ScreenShareContext, ScreenShareProvider, useScreenShareContext, } from './contexts/ScreenShareContext';
|
|
5
5
|
export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, } from './contexts/SpawnPointContext';
|
|
6
|
+
export { UsersContext, UsersProvider, useUsers, } from './contexts/UsersContext';
|
|
6
7
|
// Components
|
|
7
8
|
export { Interactable, } from './components/Interactable';
|
|
8
9
|
export { Mirror } from './components/Mirror';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAET,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAA;AAErC,aAAa;AACb,OAAO,EACL,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,GAGZ,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,GAEX,MAAM,yBAAyB,CAAA;AAEhC,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAET,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,GAGT,MAAM,yBAAyB,CAAA;AAEhC,aAAa;AACb,OAAO,EACL,YAAY,GAEb,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAoB,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EACL,WAAW,GAGZ,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,kBAAkB,GAEnB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,UAAU,GAEX,MAAM,yBAAyB,CAAA;AAEhC,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3D位置
|
|
3
|
+
*/
|
|
4
|
+
export interface Position3D {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
z: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 3D回転(オイラー角)
|
|
11
|
+
*/
|
|
12
|
+
export interface Rotation3D {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
z: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* VRトラッキングの移動方向
|
|
19
|
+
*/
|
|
20
|
+
export type VRMovementDirection = 'forward' | 'backward' | 'left' | 'right' | 'idle';
|
|
21
|
+
/**
|
|
22
|
+
* VRトラッキングデータ(VRモード時のみ送信)
|
|
23
|
+
*/
|
|
24
|
+
export interface VRTrackingData {
|
|
25
|
+
/** ヘッド(カメラ)の回転(yaw/pitch) */
|
|
26
|
+
head: {
|
|
27
|
+
yaw: number;
|
|
28
|
+
pitch: number;
|
|
29
|
+
};
|
|
30
|
+
/** 左手のアバター基準相対座標 */
|
|
31
|
+
leftHand: {
|
|
32
|
+
position: Position3D;
|
|
33
|
+
rotation: Rotation3D;
|
|
34
|
+
};
|
|
35
|
+
/** 右手のアバター基準相対座標 */
|
|
36
|
+
rightHand: {
|
|
37
|
+
position: Position3D;
|
|
38
|
+
rotation: Rotation3D;
|
|
39
|
+
};
|
|
40
|
+
/** hipsの位置変化量(初期位置からの差分、シーンローカル座標系) */
|
|
41
|
+
hipsPositionDelta: Position3D;
|
|
42
|
+
/** 足のアニメーション状態 */
|
|
43
|
+
movementDirection: VRMovementDirection;
|
|
44
|
+
/** ハンドトラッキングかどうか */
|
|
45
|
+
isHandTracking?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* プレイヤーの移動状態
|
|
49
|
+
* ワールド制作者がユーザーの位置・回転・移動状態を取得するために使用
|
|
50
|
+
*/
|
|
51
|
+
export interface PlayerMovement {
|
|
52
|
+
/** 位置情報(ワールド座標) */
|
|
53
|
+
position: Position3D;
|
|
54
|
+
/** 移動方向(XZ平面、正規化済みベクトル) */
|
|
55
|
+
direction: {
|
|
56
|
+
x: number;
|
|
57
|
+
z: number;
|
|
58
|
+
};
|
|
59
|
+
/** XZ平面での速度 */
|
|
60
|
+
horizontalSpeed: number;
|
|
61
|
+
/** Y軸での速度(ジャンプ・落下) */
|
|
62
|
+
verticalSpeed: number;
|
|
63
|
+
/** 回転情報 - yaw: y軸回転(左右)、pitch: x軸回転(上下) */
|
|
64
|
+
rotation: {
|
|
65
|
+
yaw: number;
|
|
66
|
+
pitch: number;
|
|
67
|
+
};
|
|
68
|
+
/** 地面接触判定 */
|
|
69
|
+
isGrounded: boolean;
|
|
70
|
+
/** ジャンプ中フラグ */
|
|
71
|
+
isJumping: boolean;
|
|
72
|
+
/** VRモードかどうか */
|
|
73
|
+
isInVR?: boolean;
|
|
74
|
+
/** VRトラッキングデータ(VRモード時のみ) */
|
|
75
|
+
vrTracking?: VRTrackingData;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=movement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"movement.d.ts","sourceRoot":"","sources":["../../src/types/movement.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAEpF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAA;QACX,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,oBAAoB;IACpB,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU,CAAA;QACpB,QAAQ,EAAE,UAAU,CAAA;KACrB,CAAA;IACD,oBAAoB;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,UAAU,CAAA;QACpB,QAAQ,EAAE,UAAU,CAAA;KACrB,CAAA;IACD,uCAAuC;IACvC,iBAAiB,EAAE,UAAU,CAAA;IAC7B,kBAAkB;IAClB,iBAAiB,EAAE,mBAAmB,CAAA;IACtC,oBAAoB;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,QAAQ,EAAE,UAAU,CAAA;IACpB,2BAA2B;IAC3B,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,eAAe;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,aAAa;IACb,UAAU,EAAE,OAAO,CAAA;IACnB,eAAe;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"movement.js","sourceRoot":"","sources":["../../src/types/movement.ts"],"names":[],"mappings":""}
|