@xrift/world-components 0.10.5 → 0.11.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Interactable/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAA;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CAqDlC,CAAA;AAED,YAAY,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Interactable/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAA;AAIlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,KAAK,CAqDlC,CAAA;AAED,YAAY,EAAE,KAAK,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef } from 'react';
3
+ import { LAYERS } from '../../constants/layers';
3
4
  import { useXRift } from '../../contexts/XRiftContext';
4
- const INTERACTABLE_LAYER = 10;
5
5
  export const Interactable = ({ id, type = 'button', onInteract, interactionText, enabled = true, children, }) => {
6
6
  const { registerInteractable, unregisterInteractable } = useXRift();
7
7
  const groupRef = useRef(null);
@@ -12,7 +12,7 @@ export const Interactable = ({ id, type = 'button', onInteract, interactionText,
12
12
  return;
13
13
  // レイヤーを設定(レイキャスト最適化のため)
14
14
  object.traverse((child) => {
15
- child.layers.enable(INTERACTABLE_LAYER);
15
+ child.layers.enable(LAYERS.INTERACTABLE);
16
16
  });
17
17
  // インタラクト可能オブジェクトとして登録
18
18
  registerInteractable(object);
@@ -20,7 +20,7 @@ export const Interactable = ({ id, type = 'button', onInteract, interactionText,
20
20
  return () => {
21
21
  unregisterInteractable(object);
22
22
  object.traverse((child) => {
23
- child.layers.disable(INTERACTABLE_LAYER);
23
+ child.layers.disable(LAYERS.INTERACTABLE);
24
24
  });
25
25
  };
26
26
  }, [registerInteractable, unregisterInteractable]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Interactable/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGtD,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAc,CAAC,EACtC,EAAE,EACF,IAAI,GAAG,QAAQ,EACf,UAAU,EACV,eAAe,EACf,OAAO,GAAG,IAAI,EACd,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,QAAQ,EAAE,CAAA;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAA;IAEpC,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,wBAAwB;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,sBAAsB;QACtB,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE5B,UAAU;QACV,OAAO,GAAG,EAAE;YACV,sBAAsB,CAAC,MAAM,CAAC,CAAA;YAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;YAC1C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAElD,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7B,EAAE;YACF,IAAI;YACJ,UAAU;YACV,eAAe;YACf,OAAO;SACR,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpD,OAAO,CACL,gBAAO,GAAG,EAAE,QAAQ,YACjB,QAAQ,GACH,CACT,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Interactable/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAW,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGtD,MAAM,CAAC,MAAM,YAAY,GAAc,CAAC,EACtC,EAAE,EACF,IAAI,GAAG,QAAQ,EACf,UAAU,EACV,eAAe,EACf,OAAO,GAAG,IAAI,EACd,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,QAAQ,EAAE,CAAA;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAQ,IAAI,CAAC,CAAA;IAEpC,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,wBAAwB;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,sBAAsB;QACtB,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE5B,UAAU;QACV,OAAO,GAAG,EAAE;YACV,sBAAsB,CAAC,MAAM,CAAC,CAAA;YAE9B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC3C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAElD,6BAA6B;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC7B,EAAE;YACF,IAAI;YACJ,UAAU;YACV,eAAe;YACf,OAAO;SACR,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAEpD,OAAO,CACL,gBAAO,GAAG,EAAE,QAAQ,YACjB,QAAQ,GACH,CACT,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { type FC } from 'react';
2
+ export interface SpawnPointProps {
3
+ /** スポーン位置 [x, y, z] */
4
+ position?: [number, number, number];
5
+ /** スポーン時の向き(度数法 0-360) */
6
+ yaw?: number;
7
+ }
8
+ /**
9
+ * ワールド内のリスポーン地点を指定するコンポーネント
10
+ * ワールド作成者がこのコンポーネントを配置することで、
11
+ * プラットフォーム側がプレイヤーのスポーン位置を取得できる
12
+ *
13
+ * @example
14
+ * // ワールド側での使用例
15
+ * <SpawnPoint position={[0, 0, 5]} yaw={180} />
16
+ *
17
+ * @note
18
+ * - 視覚的な表示はありません
19
+ * - 1つのワールドに複数のSpawnPointがある場合、最後に設定されたものが有効になります
20
+ */
21
+ export declare const SpawnPoint: FC<SpawnPointProps>;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAA;AAG1C,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAW1C,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { useEffect } from 'react';
2
+ import { useSpawnPointContext } from '../../contexts/SpawnPointContext';
3
+ /**
4
+ * ワールド内のリスポーン地点を指定するコンポーネント
5
+ * ワールド作成者がこのコンポーネントを配置することで、
6
+ * プラットフォーム側がプレイヤーのスポーン位置を取得できる
7
+ *
8
+ * @example
9
+ * // ワールド側での使用例
10
+ * <SpawnPoint position={[0, 0, 5]} yaw={180} />
11
+ *
12
+ * @note
13
+ * - 視覚的な表示はありません
14
+ * - 1つのワールドに複数のSpawnPointがある場合、最後に設定されたものが有効になります
15
+ */
16
+ export const SpawnPoint = ({ position = [0, 0, 0], yaw = 0, }) => {
17
+ const { setSpawnPoint } = useSpawnPointContext();
18
+ useEffect(() => {
19
+ setSpawnPoint({ position, yaw });
20
+ }, [position, yaw, setSpawnPoint]);
21
+ return null;
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AASvE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,EAC9C,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,GAAG,GAAG,CAAC,GACR,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;IAClC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAA;IAElC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Three.js レイヤー定数
3
+ *
4
+ * Three.jsのカメラとオブジェクトは32のレイヤー(0-31)を持ち、
5
+ * カメラは有効化されたレイヤーに属するオブジェクトのみをレンダリングする。
6
+ *
7
+ * 使用例:
8
+ * - camera.layers.enable(LAYERS.INTERACTABLE) // カメラでこのレイヤーを表示
9
+ * - mesh.layers.set(LAYERS.FIRST_PERSON_ONLY) // メッシュをこのレイヤーのみに設定
10
+ * - mesh.layers.enable(LAYERS.INTERACTABLE) // メッシュにこのレイヤーを追加
11
+ */
12
+ export declare const LAYERS: {
13
+ /** デフォルトレイヤー(すべてのオブジェクトが初期状態で属する) */
14
+ readonly DEFAULT: 0;
15
+ /**
16
+ * 一人称視点のみ表示(VRMFirstPerson)
17
+ * - ヘッドレスコピー(頭部を除いた身体)を表示
18
+ * - VRモードで自分の身体を見る際に使用
19
+ */
20
+ readonly FIRST_PERSON_ONLY: 9;
21
+ /**
22
+ * 三人称視点のみ表示(VRMFirstPerson)
23
+ * - 頭部を含むオリジナルメッシュを表示
24
+ * - 他プレイヤーから見た時、ミラーに映る時に使用
25
+ */
26
+ readonly THIRD_PERSON_ONLY: 10;
27
+ /**
28
+ * インタラクト可能オブジェクト
29
+ * - Raycastでインタラクション対象を検出する際に使用
30
+ * - ボタン、ドア、アイテムなどのインタラクト可能な要素に設定
31
+ */
32
+ readonly INTERACTABLE: 11;
33
+ };
34
+ export type LayerName = keyof typeof LAYERS;
35
+ export type LayerNumber = (typeof LAYERS)[LayerName];
36
+ //# sourceMappingURL=layers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/constants/layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,MAAM;IACjB,qCAAqC;;IAGrC;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;CAEK,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAA;AAC3C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Three.js レイヤー定数
3
+ *
4
+ * Three.jsのカメラとオブジェクトは32のレイヤー(0-31)を持ち、
5
+ * カメラは有効化されたレイヤーに属するオブジェクトのみをレンダリングする。
6
+ *
7
+ * 使用例:
8
+ * - camera.layers.enable(LAYERS.INTERACTABLE) // カメラでこのレイヤーを表示
9
+ * - mesh.layers.set(LAYERS.FIRST_PERSON_ONLY) // メッシュをこのレイヤーのみに設定
10
+ * - mesh.layers.enable(LAYERS.INTERACTABLE) // メッシュにこのレイヤーを追加
11
+ */
12
+ export const LAYERS = {
13
+ /** デフォルトレイヤー(すべてのオブジェクトが初期状態で属する) */
14
+ DEFAULT: 0,
15
+ /**
16
+ * 一人称視点のみ表示(VRMFirstPerson)
17
+ * - ヘッドレスコピー(頭部を除いた身体)を表示
18
+ * - VRモードで自分の身体を見る際に使用
19
+ */
20
+ FIRST_PERSON_ONLY: 9,
21
+ /**
22
+ * 三人称視点のみ表示(VRMFirstPerson)
23
+ * - 頭部を含むオリジナルメッシュを表示
24
+ * - 他プレイヤーから見た時、ミラーに映る時に使用
25
+ */
26
+ THIRD_PERSON_ONLY: 10,
27
+ /**
28
+ * インタラクト可能オブジェクト
29
+ * - Raycastでインタラクション対象を検出する際に使用
30
+ * - ボタン、ドア、アイテムなどのインタラクト可能な要素に設定
31
+ */
32
+ INTERACTABLE: 11,
33
+ };
34
+ //# sourceMappingURL=layers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/constants/layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,qCAAqC;IACrC,OAAO,EAAE,CAAC;IAEV;;;;OAIG;IACH,iBAAiB,EAAE,CAAC;IAEpB;;;;OAIG;IACH,iBAAiB,EAAE,EAAE;IAErB;;;;OAIG;IACH,YAAY,EAAE,EAAE;CACR,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * スポーン地点の情報
4
+ */
5
+ export interface SpawnPoint {
6
+ /** スポーン位置 [x, y, z] */
7
+ position: [number, number, number];
8
+ /** スポーン時の向き(度数法 0-360) */
9
+ yaw: number;
10
+ }
11
+ /**
12
+ * スポーン地点を管理するためのインターフェース
13
+ * プラットフォーム側(xrift-frontend)が実装を注入する
14
+ */
15
+ export interface SpawnPointContextValue {
16
+ /** 現在のスポーン地点(未設定時はnull) */
17
+ spawnPoint: SpawnPoint | null;
18
+ /** スポーン地点を設定する */
19
+ setSpawnPoint: (point: SpawnPoint) => void;
20
+ }
21
+ /**
22
+ * スポーン地点を管理するContext
23
+ * ワールド作成者がSpawnPointコンポーネントで設定した値を
24
+ * プラットフォーム側が取得できる
25
+ */
26
+ export declare const SpawnPointContext: import("react").Context<SpawnPointContextValue>;
27
+ interface Props {
28
+ /**
29
+ * プラットフォーム側が提供する実装
30
+ * 未指定の場合はデフォルト実装(ローカルstate)が使用される
31
+ */
32
+ implementation?: SpawnPointContextValue;
33
+ children: ReactNode;
34
+ }
35
+ /**
36
+ * スポーン地点を提供するContextProvider
37
+ * プラットフォーム側(xrift-frontend)がスポーン地点を取得するために使用
38
+ *
39
+ * @example
40
+ * // プラットフォーム側での使用例
41
+ * const spawnPointImpl = useSpawnPointImplementation()
42
+ * <SpawnPointProvider implementation={spawnPointImpl}>
43
+ * <WorldComponent />
44
+ * </SpawnPointProvider>
45
+ */
46
+ export declare const SpawnPointProvider: ({ implementation, children }: Props) => import("react/jsx-runtime").JSX.Element;
47
+ /**
48
+ * スポーン地点のContextを取得するhook
49
+ * 通常、ワールド作成者は直接このhookを使用せず、useSpawnPointを使用する
50
+ */
51
+ export declare const useSpawnPointContext: () => SpawnPointContextValue;
52
+ export {};
53
+ //# sourceMappingURL=SpawnPointContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpawnPointContext.d.ts","sourceRoot":"","sources":["../../src/contexts/SpawnPointContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAqC,MAAM,OAAO,CAAA;AAExF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uBAAuB;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,kBAAkB;IAClB,aAAa,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CAC3C;AAkBD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iDAE7B,CAAA;AAED,UAAU,KAAK;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAA;IACvC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,8BAA8B,KAAK,4CAkBrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,sBAEvC,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useState } from 'react';
3
+ /**
4
+ * デフォルト実装: Context未設定時はローカル状態として動作
5
+ */
6
+ const createDefaultImplementation = () => {
7
+ let currentSpawnPoint = null;
8
+ return {
9
+ get spawnPoint() {
10
+ return currentSpawnPoint;
11
+ },
12
+ setSpawnPoint: (point) => {
13
+ currentSpawnPoint = point;
14
+ },
15
+ };
16
+ };
17
+ /**
18
+ * スポーン地点を管理するContext
19
+ * ワールド作成者がSpawnPointコンポーネントで設定した値を
20
+ * プラットフォーム側が取得できる
21
+ */
22
+ export const SpawnPointContext = createContext(createDefaultImplementation());
23
+ /**
24
+ * スポーン地点を提供するContextProvider
25
+ * プラットフォーム側(xrift-frontend)がスポーン地点を取得するために使用
26
+ *
27
+ * @example
28
+ * // プラットフォーム側での使用例
29
+ * const spawnPointImpl = useSpawnPointImplementation()
30
+ * <SpawnPointProvider implementation={spawnPointImpl}>
31
+ * <WorldComponent />
32
+ * </SpawnPointProvider>
33
+ */
34
+ export const SpawnPointProvider = ({ implementation, children }) => {
35
+ const [spawnPoint, setSpawnPointState] = useState(null);
36
+ const setSpawnPoint = useCallback((point) => {
37
+ setSpawnPointState(point);
38
+ }, []);
39
+ // 外部実装が渡された場合はそれを使用、なければデフォルト実装
40
+ const value = implementation ?? {
41
+ spawnPoint,
42
+ setSpawnPoint,
43
+ };
44
+ return (_jsx(SpawnPointContext.Provider, { value: value, children: children }));
45
+ };
46
+ /**
47
+ * スポーン地点のContextを取得するhook
48
+ * 通常、ワールド作成者は直接このhookを使用せず、useSpawnPointを使用する
49
+ */
50
+ export const useSpawnPointContext = () => {
51
+ return useContext(SpawnPointContext);
52
+ };
53
+ //# sourceMappingURL=SpawnPointContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpawnPointContext.js","sourceRoot":"","sources":["../../src/contexts/SpawnPointContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAuBxF;;GAEG;AACH,MAAM,2BAA2B,GAAG,GAA2B,EAAE;IAC/D,IAAI,iBAAiB,GAAsB,IAAI,CAAA;IAE/C,OAAO;QACL,IAAI,UAAU;YACZ,OAAO,iBAAiB,CAAA;QAC1B,CAAC;QACD,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE;YACnC,iBAAiB,GAAG,KAAK,CAAA;QAC3B,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,2BAA2B,EAAE,CAC9B,CAAA;AAWD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAS,EAAE,EAAE;IACxE,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAA;IAE1E,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAiB,EAAE,EAAE;QACtD,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,gCAAgC;IAChC,MAAM,KAAK,GAA2B,cAAc,IAAI;QACtD,UAAU;QACV,aAAa;KACd,CAAA;IAED,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,GACkB,CAC9B,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAA2B,EAAE;IAC/D,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAA;AACtC,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import { type ReactNode } from 'react';
2
2
  import type { Object3D } from 'three';
3
3
  import { type InstanceStateContextValue } from './InstanceStateContext';
4
4
  import { type ScreenShareContextValue } from './ScreenShareContext';
5
+ import { type SpawnPointContextValue } from './SpawnPointContext';
5
6
  export interface XRiftContextValue {
6
7
  /**
7
8
  * ワールドのベースURL(CDNのディレクトリパス)
@@ -39,6 +40,11 @@ interface Props {
39
40
  * 指定しない場合はデフォルト実装(no-op)が使用される
40
41
  */
41
42
  screenShareImplementation?: ScreenShareContextValue;
43
+ /**
44
+ * スポーン地点管理の実装(オプション)
45
+ * 指定しない場合はデフォルト実装(ローカルstate)が使用される
46
+ */
47
+ spawnPointImplementation?: SpawnPointContextValue;
42
48
  children: ReactNode;
43
49
  }
44
50
  /**
@@ -46,7 +52,7 @@ interface Props {
46
52
  * Module Federationで動的にロードされたワールドコンポーネントに
47
53
  * 必要な情報を注入するために使用
48
54
  */
49
- export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
55
+ export declare const XRiftProvider: ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, children, }: Props) => import("react/jsx-runtime").JSX.Element;
50
56
  /**
51
57
  * XRift ワールドの情報を取得するhook
52
58
  * ワールドプロジェクト側でアセットの相対パスを絶対パスに変換する際に使用
@@ -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;AAUxF,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,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,gFAK3B,KAAK,4CAoCP,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,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;AAUrF,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,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0GAM3B,KAAK,4CAsCP,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,CAAA"}
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useCallback, useContext, useMemo, useState } from 'react';
3
3
  import { InstanceStateProvider } from './InstanceStateContext';
4
4
  import { ScreenShareProvider } from './ScreenShareContext';
5
+ import { SpawnPointProvider } from './SpawnPointContext';
5
6
  // デフォルトの画面共有実装(開発環境用)
6
7
  const createDefaultScreenShareImplementation = () => ({
7
8
  videoElement: null,
@@ -19,7 +20,7 @@ export const XRiftContext = createContext(null);
19
20
  * Module Federationで動的にロードされたワールドコンポーネントに
20
21
  * 必要な情報を注入するために使用
21
22
  */
22
- export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, children, }) => {
23
+ export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShareImplementation, spawnPointImplementation, children, }) => {
23
24
  // インタラクト可能なオブジェクトの管理
24
25
  const [interactableObjects] = useState(() => new Set());
25
26
  // 画面共有の実装(指定がない場合はデフォルト実装を使用)
@@ -37,7 +38,7 @@ export const XRiftProvider = ({ baseUrl, instanceStateImplementation, screenShar
37
38
  interactableObjects,
38
39
  registerInteractable,
39
40
  unregisterInteractable,
40
- }, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: children }) }) }));
41
+ }, children: _jsx(ScreenShareProvider, { value: screenShareImpl, children: _jsx(InstanceStateProvider, { implementation: instanceStateImplementation, children: _jsx(SpawnPointProvider, { implementation: spawnPointImplementation, children: children }) }) }) }));
41
42
  };
42
43
  /**
43
44
  * 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;AAExF,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;AAiBzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,2BAA2B,EAC3B,yBAAyB,EACzB,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,YAC/D,QAAQ,GACa,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"}
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;AAErF,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;AAsBzE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,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,YACzD,QAAQ,GACU,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"}
@@ -0,0 +1,17 @@
1
+ import { type SpawnPoint } from '../contexts/SpawnPointContext';
2
+ /**
3
+ * 現在設定されているスポーン地点を取得するhook
4
+ * 主にプラットフォーム側(xrift-frontend)で使用される
5
+ *
6
+ * @example
7
+ * // プラットフォーム側での使用例
8
+ * const spawnPoint = useSpawnPoint()
9
+ * if (spawnPoint) {
10
+ * player.position.set(...spawnPoint.position)
11
+ * player.rotation.y = THREE.MathUtils.degToRad(spawnPoint.yaw)
12
+ * }
13
+ *
14
+ * @returns スポーン地点情報(未設定時はnull)
15
+ */
16
+ export declare const useSpawnPoint: () => SpawnPoint | null;
17
+ //# sourceMappingURL=useSpawnPoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSpawnPoint.d.ts","sourceRoot":"","sources":["../../src/hooks/useSpawnPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,+BAA+B,CAAA;AAErF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,QAAO,UAAU,GAAG,IAG7C,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { useSpawnPointContext } from '../contexts/SpawnPointContext';
2
+ /**
3
+ * 現在設定されているスポーン地点を取得するhook
4
+ * 主にプラットフォーム側(xrift-frontend)で使用される
5
+ *
6
+ * @example
7
+ * // プラットフォーム側での使用例
8
+ * const spawnPoint = useSpawnPoint()
9
+ * if (spawnPoint) {
10
+ * player.position.set(...spawnPoint.position)
11
+ * player.rotation.y = THREE.MathUtils.degToRad(spawnPoint.yaw)
12
+ * }
13
+ *
14
+ * @returns スポーン地点情報(未設定時はnull)
15
+ */
16
+ export const useSpawnPoint = () => {
17
+ const { spawnPoint } = useSpawnPointContext();
18
+ return spawnPoint;
19
+ };
20
+ //# sourceMappingURL=useSpawnPoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSpawnPoint.js","sourceRoot":"","sources":["../../src/hooks/useSpawnPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAErF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAsB,EAAE;IACnD,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAC7C,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  export { XRiftContext, XRiftProvider, useXRift, type XRiftContextValue, } from './contexts/XRiftContext';
2
2
  export { InstanceStateContext, useInstanceStateContext, type InstanceStateContextValue, } from './contexts/InstanceStateContext';
3
3
  export { ScreenShareContext, ScreenShareProvider, useScreenShareContext, type ScreenShareContextValue, } from './contexts/ScreenShareContext';
4
+ export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, type SpawnPoint as SpawnPointData, type SpawnPointContextValue, } from './contexts/SpawnPointContext';
4
5
  export { Interactable, type InteractableProps, } from './components/Interactable';
5
6
  export { Mirror, type MirrorProps } from './components/Mirror';
6
7
  export { Skybox, type SkyboxProps } from './components/Skybox';
7
8
  export { VideoScreen, type VideoScreenProps, type VideoState, } from './components/VideoScreen';
8
9
  export { ScreenShareDisplay, type ScreenShareDisplayProps, } from './components/ScreenShareDisplay';
10
+ export { SpawnPoint, type SpawnPointProps, } from './components/SpawnPoint';
9
11
  export { useInstanceState } from './hooks/useInstanceState';
12
+ export { useSpawnPoint } from './hooks/useSpawnPoint';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAGtC,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;AAGxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,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;AAGrC,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"}
package/dist/index.js CHANGED
@@ -2,12 +2,15 @@
2
2
  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
+ export { SpawnPointContext, SpawnPointProvider, useSpawnPointContext, } from './contexts/SpawnPointContext';
5
6
  // Components
6
7
  export { Interactable, } from './components/Interactable';
7
8
  export { Mirror } from './components/Mirror';
8
9
  export { Skybox } from './components/Skybox';
9
10
  export { VideoScreen, } from './components/VideoScreen';
10
11
  export { ScreenShareDisplay, } from './components/ScreenShareDisplay';
12
+ export { SpawnPoint, } from './components/SpawnPoint';
11
13
  // Hooks
12
14
  export { useInstanceState } from './hooks/useInstanceState';
15
+ export { useSpawnPoint } from './hooks/useSpawnPoint';
13
16
  //# sourceMappingURL=index.js.map
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,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,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xrift/world-components",
3
- "version": "0.10.5",
3
+ "version": "0.11.0",
4
4
  "description": "Shared components and utilities for Xrift worlds",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",