@xrift/world-components 0.46.0 → 0.49.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/components/BillboardY/hooks.d.ts +1 -1
- package/dist/components/BillboardY/hooks.d.ts.map +1 -1
- package/dist/components/BillboardY/index.d.ts +1 -1
- package/dist/components/BillboardY/index.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/ControlsHelp.d.ts +1 -1
- package/dist/components/DevEnvironment/components/ControlsHelp.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/Crosshair.d.ts +1 -1
- package/dist/components/DevEnvironment/components/Crosshair.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts +1 -1
- package/dist/components/DevEnvironment/components/GrabSystem/index.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts +1 -1
- package/dist/components/DevEnvironment/components/PhysicsPlayer.d.ts.map +1 -1
- package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts +1 -1
- package/dist/components/DevEnvironment/components/PointerLockStatus.d.ts.map +1 -1
- package/dist/components/DevEnvironment/index.d.ts +1 -1
- package/dist/components/DevEnvironment/index.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts +1 -1
- package/dist/components/EntryLogBoard/components/AvatarIcon.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/components/LogRow.d.ts +1 -1
- package/dist/components/EntryLogBoard/components/LogRow.d.ts.map +1 -1
- package/dist/components/EntryLogBoard/index.d.ts +1 -1
- package/dist/components/EntryLogBoard/index.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/index.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/components/LiveVideoTexture.d.ts.map +1 -1
- package/dist/components/LiveVideoPlayer/index.d.ts +1 -1
- package/dist/components/LiveVideoPlayer/index.d.ts.map +1 -1
- package/dist/components/Mirror/index.d.ts +1 -1
- package/dist/components/Mirror/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalGlow/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalGlow/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalParticles/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalParticles/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalPedestal/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalPedestal/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalThumbnail/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalThumbnail/index.d.ts.map +1 -1
- package/dist/components/Portal/components/PortalVortex/index.d.ts +1 -1
- package/dist/components/Portal/components/PortalVortex/index.d.ts.map +1 -1
- package/dist/components/Portal/index.d.ts +1 -1
- package/dist/components/Portal/index.d.ts.map +1 -1
- package/dist/components/ScreenShareDisplay/index.d.ts +1 -1
- package/dist/components/ScreenShareDisplay/index.d.ts.map +1 -1
- package/dist/components/Skybox/index.d.ts +1 -1
- package/dist/components/Skybox/index.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagChip.d.ts +1 -1
- package/dist/components/TagBoard/components/TagChip.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagDisplay/index.d.ts +1 -1
- package/dist/components/TagBoard/components/TagDisplay/index.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/ActionButton.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/components/TagButton.d.ts.map +1 -1
- package/dist/components/TagBoard/components/TagSelector/index.d.ts +1 -1
- package/dist/components/TagBoard/components/TagSelector/index.d.ts.map +1 -1
- package/dist/components/TagBoard/index.d.ts +1 -1
- package/dist/components/TagBoard/index.d.ts.map +1 -1
- package/dist/components/Video180Sphere/EyeView.d.ts +1 -1
- package/dist/components/Video180Sphere/EyeView.d.ts.map +1 -1
- package/dist/components/Video180Sphere/index.d.ts +1 -1
- package/dist/components/Video180Sphere/index.d.ts.map +1 -1
- package/dist/components/VideoPlayer/components/ControlPanel.d.ts +1 -1
- package/dist/components/VideoPlayer/components/ControlPanel.d.ts.map +1 -1
- package/dist/components/VideoPlayer/index.d.ts +1 -1
- package/dist/components/VideoPlayer/index.d.ts.map +1 -1
- package/dist/components/VideoScreen/constants.d.ts +27 -0
- package/dist/components/VideoScreen/constants.d.ts.map +1 -0
- package/dist/components/VideoScreen/constants.js +27 -0
- package/dist/components/VideoScreen/constants.js.map +1 -0
- package/dist/components/VideoScreen/hooks.d.ts +19 -0
- package/dist/components/VideoScreen/hooks.d.ts.map +1 -0
- package/dist/components/VideoScreen/hooks.js +69 -0
- package/dist/components/VideoScreen/hooks.js.map +1 -0
- package/dist/components/VideoScreen/index.d.ts +1 -1
- package/dist/components/VideoScreen/index.d.ts.map +1 -1
- package/dist/components/VideoScreen/index.js +22 -17
- package/dist/components/VideoScreen/index.js.map +1 -1
- package/dist/components/VideoScreen/types.d.ts +14 -4
- package/dist/components/VideoScreen/types.d.ts.map +1 -1
- package/dist/components/VideoScreen/utils.d.ts +73 -0
- package/dist/components/VideoScreen/utils.d.ts.map +1 -0
- package/dist/components/VideoScreen/utils.js +74 -0
- package/dist/components/VideoScreen/utils.js.map +1 -0
- package/dist/components/commons/IconButton/index.d.ts +1 -1
- package/dist/components/commons/IconButton/index.d.ts.map +1 -1
- package/dist/components/commons/PlaceholderScreen/index.d.ts +1 -1
- package/dist/components/commons/PlaceholderScreen/index.d.ts.map +1 -1
- package/dist/components/commons/VideoMesh/index.d.ts +1 -1
- package/dist/components/commons/VideoMesh/index.d.ts.map +1 -1
- package/dist/components/commons/VolumeControl/index.d.ts +1 -1
- package/dist/components/commons/VolumeControl/index.d.ts.map +1 -1
- package/dist/contexts/AudioVolumeContext.d.ts +2 -2
- package/dist/contexts/AudioVolumeContext.d.ts.map +1 -1
- package/dist/contexts/ConfirmContext.d.ts +1 -1
- package/dist/contexts/ConfirmContext.d.ts.map +1 -1
- package/dist/contexts/FileInputContext.d.ts +1 -1
- package/dist/contexts/FileInputContext.d.ts.map +1 -1
- package/dist/contexts/GrabbableContext.d.ts +1 -1
- package/dist/contexts/GrabbableContext.d.ts.map +1 -1
- package/dist/contexts/InstanceContext.d.ts +1 -1
- package/dist/contexts/InstanceContext.d.ts.map +1 -1
- package/dist/contexts/InstanceEventContext.d.ts +1 -1
- package/dist/contexts/InstanceEventContext.d.ts.map +1 -1
- package/dist/contexts/InstanceStateContext.d.ts +1 -1
- package/dist/contexts/InstanceStateContext.d.ts.map +1 -1
- package/dist/contexts/ItemContext.d.ts +23 -3
- package/dist/contexts/ItemContext.d.ts.map +1 -1
- package/dist/contexts/ItemContext.js +7 -3
- package/dist/contexts/ItemContext.js.map +1 -1
- package/dist/contexts/PlacementStateContext.d.ts +1 -1
- package/dist/contexts/PlacementStateContext.d.ts.map +1 -1
- package/dist/contexts/ScreenShareContext.d.ts +1 -1
- package/dist/contexts/ScreenShareContext.d.ts.map +1 -1
- package/dist/contexts/ServerClockContext.d.ts +108 -0
- package/dist/contexts/ServerClockContext.d.ts.map +1 -0
- package/dist/contexts/ServerClockContext.js +48 -0
- package/dist/contexts/ServerClockContext.js.map +1 -0
- package/dist/contexts/SharedFileContext.d.ts +1 -1
- package/dist/contexts/SharedFileContext.d.ts.map +1 -1
- package/dist/contexts/SpawnPointContext.d.ts +1 -1
- package/dist/contexts/SpawnPointContext.d.ts.map +1 -1
- package/dist/contexts/TeleportContext.d.ts +1 -1
- package/dist/contexts/TeleportContext.d.ts.map +1 -1
- package/dist/contexts/TextInputContext.d.ts +1 -1
- package/dist/contexts/TextInputContext.d.ts.map +1 -1
- package/dist/contexts/UsersContext.d.ts +1 -1
- package/dist/contexts/UsersContext.d.ts.map +1 -1
- package/dist/contexts/WorldContext.d.ts +1 -1
- package/dist/contexts/WorldContext.d.ts.map +1 -1
- package/dist/contexts/WorldStorageContext.d.ts +1 -1
- package/dist/contexts/WorldStorageContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.d.ts +7 -1
- package/dist/contexts/XRiftContext.d.ts.map +1 -1
- package/dist/contexts/XRiftContext.js +5 -1
- package/dist/contexts/XRiftContext.js.map +1 -1
- package/dist/hooks/useServerClock.d.ts +60 -0
- package/dist/hooks/useServerClock.d.ts.map +1 -0
- package/dist/hooks/useServerClock.js +58 -0
- package/dist/hooks/useServerClock.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/dist/components/BillboardY/__tests__/utils.test.d.ts +0 -2
- package/dist/components/BillboardY/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/BillboardY/__tests__/utils.test.js +0 -45
- package/dist/components/BillboardY/__tests__/utils.test.js.map +0 -1
- package/dist/components/DevEnvironment/__tests__/utils.test.d.ts +0 -2
- package/dist/components/DevEnvironment/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/__tests__/utils.test.js +0 -24
- package/dist/components/DevEnvironment/__tests__/utils.test.js.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts +0 -2
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js +0 -114
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/store.test.js.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts +0 -2
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js +0 -103
- package/dist/components/DevEnvironment/components/GrabSystem/__tests__/utils.test.js.map +0 -1
- package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts +0 -2
- package/dist/components/EntryLogBoard/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/EntryLogBoard/__tests__/utils.test.js +0 -231
- package/dist/components/EntryLogBoard/__tests__/utils.test.js.map +0 -1
- package/dist/components/Grabbable/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Grabbable/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Grabbable/__tests__/utils.test.js +0 -59
- package/dist/components/Grabbable/__tests__/utils.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts +0 -8
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js +0 -11
- package/dist/components/LiveVideoPlayer/components/ControlPanel/LiveIndicator.js.map +0 -1
- package/dist/components/LiveVideoPlayer/components/index.d.ts +0 -3
- package/dist/components/LiveVideoPlayer/components/index.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/components/index.js +0 -3
- package/dist/components/LiveVideoPlayer/components/index.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js +0 -196
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/__tests__/utils.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js +0 -146
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/HlsJsPlayer.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js +0 -94
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/NativeHlsPlayer.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts +0 -2
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js +0 -74
- package/dist/components/LiveVideoPlayer/hooks/useHlsVideo/classes/__tests__/RecoveryTracker.test.js.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts +0 -25
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.d.ts.map +0 -1
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js +0 -97
- package/dist/components/LiveVideoPlayer/hooks/useLiveVideoPlayer/index.js.map +0 -1
- package/dist/components/Mirror/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Mirror/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Mirror/__tests__/utils.test.js +0 -42
- package/dist/components/Mirror/__tests__/utils.test.js.map +0 -1
- package/dist/components/MsdfText/index.d.ts +0 -24
- package/dist/components/MsdfText/index.d.ts.map +0 -1
- package/dist/components/MsdfText/index.js +0 -24
- package/dist/components/MsdfText/index.js.map +0 -1
- package/dist/components/Portal/__tests__/utils.test.d.ts +0 -2
- package/dist/components/Portal/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/Portal/__tests__/utils.test.js +0 -56
- package/dist/components/Portal/__tests__/utils.test.js.map +0 -1
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts +0 -2
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.js +0 -47
- package/dist/components/ScreenShareDisplay/__tests__/utils.test.js.map +0 -1
- package/dist/components/TroikaText/index.d.ts +0 -4
- package/dist/components/TroikaText/index.d.ts.map +0 -1
- package/dist/components/TroikaText/index.js +0 -50
- package/dist/components/TroikaText/index.js.map +0 -1
- package/dist/components/TroikaText/types.d.ts +0 -19
- package/dist/components/TroikaText/types.d.ts.map +0 -1
- package/dist/components/TroikaText/types.js +0 -2
- package/dist/components/TroikaText/types.js.map +0 -1
- package/dist/components/VideoPlayer/ControlPanel.d.ts +0 -3
- package/dist/components/VideoPlayer/ControlPanel.d.ts.map +0 -1
- package/dist/components/VideoPlayer/ControlPanel.js +0 -34
- package/dist/components/VideoPlayer/ControlPanel.js.map +0 -1
- package/dist/components/VideoPlayer/ProgressBar.d.ts +0 -3
- package/dist/components/VideoPlayer/ProgressBar.d.ts.map +0 -1
- package/dist/components/VideoPlayer/ProgressBar.js +0 -21
- package/dist/components/VideoPlayer/ProgressBar.js.map +0 -1
- package/dist/components/VideoPlayer/__tests__/utils.test.d.ts +0 -2
- package/dist/components/VideoPlayer/__tests__/utils.test.d.ts.map +0 -1
- package/dist/components/VideoPlayer/__tests__/utils.test.js +0 -23
- package/dist/components/VideoPlayer/__tests__/utils.test.js.map +0 -1
- package/dist/components/VideoPlayer/components/ProgressBar.d.ts +0 -12
- package/dist/components/VideoPlayer/components/ProgressBar.d.ts.map +0 -1
- package/dist/components/VideoPlayer/components/ProgressBar.js +0 -21
- package/dist/components/VideoPlayer/components/ProgressBar.js.map +0 -1
- package/dist/components/VideoPlayer/components/index.d.ts +0 -3
- package/dist/components/VideoPlayer/components/index.d.ts.map +0 -1
- package/dist/components/VideoPlayer/components/index.js +0 -3
- package/dist/components/VideoPlayer/components/index.js.map +0 -1
- package/dist/components/VideoPlayer/types.d.ts +0 -44
- package/dist/components/VideoPlayer/types.d.ts.map +0 -1
- package/dist/components/VideoPlayer/types.js +0 -2
- package/dist/components/VideoPlayer/types.js.map +0 -1
- package/dist/components/VideoPlayer/utils.test.d.ts +0 -2
- package/dist/components/VideoPlayer/utils.test.d.ts.map +0 -1
- package/dist/components/VideoPlayer/utils.test.js +0 -23
- package/dist/components/VideoPlayer/utils.test.js.map +0 -1
- package/dist/components/commons/utils.test.d.ts +0 -2
- package/dist/components/commons/utils.test.d.ts.map +0 -1
- package/dist/components/commons/utils.test.js +0 -79
- package/dist/components/commons/utils.test.js.map +0 -1
- package/dist/contexts/FontContext.d.ts +0 -17
- package/dist/contexts/FontContext.d.ts.map +0 -1
- package/dist/contexts/FontContext.js +0 -25
- package/dist/contexts/FontContext.js.map +0 -1
- package/dist/contexts/InstanceInfoContext.d.ts +0 -39
- package/dist/contexts/InstanceInfoContext.d.ts.map +0 -1
- package/dist/contexts/InstanceInfoContext.js +0 -42
- package/dist/contexts/InstanceInfoContext.js.map +0 -1
- package/dist/contexts/PortalContext.d.ts +0 -39
- package/dist/contexts/PortalContext.d.ts.map +0 -1
- package/dist/contexts/PortalContext.js +0 -42
- package/dist/contexts/PortalContext.js.map +0 -1
- package/dist/contexts/WorldEventContext.d.ts +0 -32
- package/dist/contexts/WorldEventContext.d.ts.map +0 -1
- package/dist/contexts/WorldEventContext.js +0 -54
- package/dist/contexts/WorldEventContext.js.map +0 -1
- package/dist/contexts/__tests__/WorldStorageContext.test.d.ts +0 -2
- package/dist/contexts/__tests__/WorldStorageContext.test.d.ts.map +0 -1
- package/dist/contexts/__tests__/WorldStorageContext.test.js +0 -120
- package/dist/contexts/__tests__/WorldStorageContext.test.js.map +0 -1
- package/dist/fonts/FontContext.d.ts +0 -9
- package/dist/fonts/FontContext.d.ts.map +0 -1
- package/dist/fonts/FontContext.js +0 -5
- package/dist/fonts/FontContext.js.map +0 -1
- package/dist/fonts/FontProvider.d.ts +0 -31
- package/dist/fonts/FontProvider.d.ts.map +0 -1
- package/dist/fonts/FontProvider.js +0 -40
- package/dist/fonts/FontProvider.js.map +0 -1
- package/dist/fonts/FontReadyContainer.d.ts +0 -35
- package/dist/fonts/FontReadyContainer.d.ts.map +0 -1
- package/dist/fonts/FontReadyContainer.js +0 -40
- package/dist/fonts/FontReadyContainer.js.map +0 -1
- package/dist/fonts/constants.d.ts +0 -5
- package/dist/fonts/constants.d.ts.map +0 -1
- package/dist/fonts/constants.js +0 -5
- package/dist/fonts/constants.js.map +0 -1
- package/dist/fonts/loadTTF.d.ts +0 -18
- package/dist/fonts/loadTTF.d.ts.map +0 -1
- package/dist/fonts/loadTTF.js +0 -36
- package/dist/fonts/loadTTF.js.map +0 -1
- package/dist/fonts/useTTF.d.ts +0 -7
- package/dist/fonts/useTTF.d.ts.map +0 -1
- package/dist/fonts/useTTF.js +0 -9
- package/dist/fonts/useTTF.js.map +0 -1
- package/dist/hooks/useJapaneseFont.d.ts +0 -7
- package/dist/hooks/useJapaneseFont.d.ts.map +0 -1
- package/dist/hooks/useJapaneseFont.js +0 -25
- package/dist/hooks/useJapaneseFont.js.map +0 -1
- package/dist/hooks/useMsdfFont.d.ts +0 -11
- package/dist/hooks/useMsdfFont.d.ts.map +0 -1
- package/dist/hooks/useMsdfFont.js +0 -19
- package/dist/hooks/useMsdfFont.js.map +0 -1
- package/dist/hooks/usePortalNavigation.d.ts +0 -10
- package/dist/hooks/usePortalNavigation.d.ts.map +0 -1
- package/dist/hooks/usePortalNavigation.js +0 -46
- package/dist/hooks/usePortalNavigation.js.map +0 -1
- package/dist/hooks/useWorldEvent.d.ts +0 -25
- package/dist/hooks/useWorldEvent.d.ts.map +0 -1
- package/dist/hooks/useWorldEvent.js +0 -45
- package/dist/hooks/useWorldEvent.js.map +0 -1
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
+
/** アイテムを設置したユーザー */
|
|
3
|
+
export type ItemPlacer = {
|
|
4
|
+
/** 設置者の userId。サーバーが確定した値で、常に入る */
|
|
5
|
+
id: string;
|
|
6
|
+
/** 表示名。設置者が退室済みなどでプロフィールを解決できない場合は null */
|
|
7
|
+
displayName: string | null;
|
|
8
|
+
/** アイコン URL。解決できない場合は null */
|
|
9
|
+
avatarUrl: string | null;
|
|
10
|
+
/** 自分(ローカルユーザー)が設置したものか */
|
|
11
|
+
isLocalUser: boolean;
|
|
12
|
+
};
|
|
2
13
|
export type ItemContextValue = {
|
|
14
|
+
/** 配置オブジェクトの固有ID */
|
|
3
15
|
id: string;
|
|
16
|
+
/**
|
|
17
|
+
* 設置者。プラットフォームはプレビュー中(配置前)に自分を渡す想定。
|
|
18
|
+
* 設置者を特定できない場合(永続シーン由来、Provider に渡されていない)は null
|
|
19
|
+
*/
|
|
20
|
+
placedBy: ItemPlacer | null;
|
|
4
21
|
};
|
|
5
|
-
|
|
22
|
+
interface Props {
|
|
6
23
|
id: string;
|
|
24
|
+
placedBy?: ItemPlacer | null;
|
|
7
25
|
children: ReactNode;
|
|
8
|
-
}
|
|
26
|
+
}
|
|
27
|
+
export declare function ItemProvider({ id, placedBy, children }: Props): import("react").JSX.Element;
|
|
9
28
|
/**
|
|
10
|
-
* 配置されたアイテムの固有ID
|
|
29
|
+
* 配置されたアイテムの固有IDと設置者情報を取得するhook
|
|
11
30
|
* Provider 外では例外をスローする
|
|
12
31
|
*/
|
|
13
32
|
export declare function useItem(): ItemContextValue;
|
|
33
|
+
export {};
|
|
14
34
|
//# sourceMappingURL=ItemContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ItemContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAE1E,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"ItemContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ItemContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAE1E,oBAAoB;AACpB,MAAM,MAAM,UAAU,GAAG;IACvB,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV;;;OAGG;IACH,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAA;CAC5B,CAAA;AAID,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,QAAe,EAAE,QAAQ,EAAE,EAAE,KAAK,+BAUpE;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,gBAAgB,CAI1C"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useMemo } from 'react';
|
|
3
3
|
const ItemContext = createContext(null);
|
|
4
|
-
export function ItemProvider({ id,
|
|
5
|
-
|
|
4
|
+
export function ItemProvider({ id, placedBy = null, children }) {
|
|
5
|
+
// placedBy はプラットフォーム側で毎レンダー組み直される可能性があるため、
|
|
6
|
+
// オブジェクト参照ではなく各フィールドの値を依存にして安定化する
|
|
7
|
+
const value = useMemo(() => ({ id, placedBy }),
|
|
8
|
+
// eslint 未導入のため exhaustive-deps の警告は出ない。ItemPlacer にフィールドを足したらここにも追加する
|
|
9
|
+
[id, placedBy?.id, placedBy?.displayName, placedBy?.avatarUrl, placedBy?.isLocalUser]);
|
|
6
10
|
return _jsx(ItemContext.Provider, { value: value, children: children });
|
|
7
11
|
}
|
|
8
12
|
/**
|
|
9
|
-
* 配置されたアイテムの固有ID
|
|
13
|
+
* 配置されたアイテムの固有IDと設置者情報を取得するhook
|
|
10
14
|
* Provider 外では例外をスローする
|
|
11
15
|
*/
|
|
12
16
|
export function useItem() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemContext.js","sourceRoot":"","sources":["../../src/contexts/ItemContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ItemContext.js","sourceRoot":"","sources":["../../src/contexts/ItemContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAwB1E,MAAM,WAAW,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAA;AAQhE,MAAM,UAAU,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,EAAS;IACnE,2CAA2C;IAC3C,kCAAkC;IAClC,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACxB,uEAAuE;IACvE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CACtF,CAAA;IAED,OAAO,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAwB,CAAA;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IACrE,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type PlacementStateContextValue = {
|
|
|
6
6
|
export declare function PlacementStateProvider({ mode, children, }: {
|
|
7
7
|
mode: PlacementMode;
|
|
8
8
|
children: ReactNode;
|
|
9
|
-
}): import("react
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
10
|
/**
|
|
11
11
|
* アイテムの配置状態を取得するhook
|
|
12
12
|
* Provider 外では 'placed' をフォールバック
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlacementStateContext.d.ts","sourceRoot":"","sources":["../../src/contexts/PlacementStateContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhD,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAMD,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB
|
|
1
|
+
{"version":3,"file":"PlacementStateContext.d.ts","sourceRoot":"","sources":["../../src/contexts/PlacementStateContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAE1E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEhD,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAMD,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB,+BAOA;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,0BAA0B,CAI9D"}
|
|
@@ -23,7 +23,7 @@ interface Props {
|
|
|
23
23
|
/**
|
|
24
24
|
* 画面共有の状態を提供するContextProvider
|
|
25
25
|
*/
|
|
26
|
-
export declare const ScreenShareProvider: ({ value, children }: Props) => import("react
|
|
26
|
+
export declare const ScreenShareProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
27
27
|
/**
|
|
28
28
|
* 画面共有の状態を取得するhook
|
|
29
29
|
* @throws {Error} ScreenShareProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenShareContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ScreenShareContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACrC,cAAc;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW;IACX,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW;IACX,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,gBAAgB;IAChB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yDAAsD,CAAA;AAErF,UAAU,KAAK;IACb,KAAK,EAAE,uBAAuB,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"ScreenShareContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ScreenShareContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACrC,cAAc;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW;IACX,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW;IACX,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,gBAAgB;IAChB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yDAAsD,CAAA;AAErF,UAAU,KAAK;IACb,KAAK,EAAE,uBAAuB,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,qBAAqB,KAAK,gCAE7D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,uBAMxC,CAAA"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 用途ごとに要求する時刻精度のプリセット
|
|
4
|
+
*
|
|
5
|
+
* - `media`: 動画・音楽の再生位置合わせ。数百 ms のズレは体感しにくい
|
|
6
|
+
* - `motion`: 決定論的アニメーション(動く床・観覧車)、アバター補間
|
|
7
|
+
*
|
|
8
|
+
* 早押しやゴール判定のような**公平性が要る用途のプリセットは用意していない**。
|
|
9
|
+
* 経路の往復が非対称なぶんの誤差はクライアント側から検出できず、しかも
|
|
10
|
+
* セッション中ほぼ一定なので繰り返しても平均化されない(=同じ人が毎回勝ち、
|
|
11
|
+
* 同じ人が毎回負ける)。判定はサーバー側で裁定すること。
|
|
12
|
+
*/
|
|
13
|
+
export type ServerClockAccuracy = 'media' | 'motion';
|
|
14
|
+
/** プリセットが要求する `uncertainty` の上限(ms) */
|
|
15
|
+
export declare const SERVER_CLOCK_ACCURACY_THRESHOLD: Record<ServerClockAccuracy, number>;
|
|
16
|
+
/**
|
|
17
|
+
* 共有時計の Context 値
|
|
18
|
+
*
|
|
19
|
+
* **注入側(プラットフォーム)への契約:**
|
|
20
|
+
*
|
|
21
|
+
* `uncertainty` / `synced` / `timeJumpCount` はただの値なので、この Context の
|
|
22
|
+
* reactivity は「注入側が**新しいオブジェクトに差し替えること**」に全面的に依存する。
|
|
23
|
+
* 同じオブジェクトを持ち続けると(getter 付きの可変オブジェクトを1個渡す等)、
|
|
24
|
+
* 一度レンダーした値のまま永久に更新されず、**下のフックの使用例が黙って壊れる**
|
|
25
|
+
* (飛びを観測できないので基準を取り直せない)。
|
|
26
|
+
*
|
|
27
|
+
* 差し替えるタイミング:
|
|
28
|
+
* 1. オフセットを採用したとき(≒45秒ごとの再同期)
|
|
29
|
+
* 2. `synced` が変化したとき
|
|
30
|
+
* 3. 時刻が飛んだとき
|
|
31
|
+
*
|
|
32
|
+
* この頻度なら `uncertainty` の鮮度は最大45秒遅れ = ドリフト換算で +2ms 程度。
|
|
33
|
+
* しきい値(100 / 300ms)に対して無視できる。
|
|
34
|
+
*/
|
|
35
|
+
export interface ServerClockContextValue {
|
|
36
|
+
/**
|
|
37
|
+
* サーバ時刻の推定値(ms)
|
|
38
|
+
*
|
|
39
|
+
* 値ではなく関数。`useFrame` の中から再レンダーなしで呼べる。
|
|
40
|
+
* 一度も同期していなければ `Date.now()` にフォールバックする。
|
|
41
|
+
*/
|
|
42
|
+
now: () => number;
|
|
43
|
+
/**
|
|
44
|
+
* 推定誤差の上界(ms)。一度も同期していなければ Infinity
|
|
45
|
+
*
|
|
46
|
+
* 経過時間による劣化を含む値。往路と復路が非対称だった場合の誤差上界であり、
|
|
47
|
+
* 実際の再現性はこれよりずっと良いことが多い(実測で 2 桁違う)。
|
|
48
|
+
* ただしその差はクライアント側からは検出できないため、これが唯一の保証値になる。
|
|
49
|
+
*/
|
|
50
|
+
uncertainty: number;
|
|
51
|
+
/**
|
|
52
|
+
* いま同期が有効か
|
|
53
|
+
*
|
|
54
|
+
* 切断中は false になるが `now()` は直前の推定を返し続ける(通信が切れただけで
|
|
55
|
+
* 端末の時計は動いているため)。切断が続くと `uncertainty` が膨らんでいく。
|
|
56
|
+
*/
|
|
57
|
+
synced: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* `now()` のタイムラインが飛んだ回数
|
|
60
|
+
*
|
|
61
|
+
* 通常の補正は徐々に寄せる(時刻は巻き戻らない)が、次の場合だけは飛ぶ。
|
|
62
|
+
* 1. 端末のスリープ等で推定を捨てたとき
|
|
63
|
+
* 2. フォールバックから推定へ戻ったとき(初回同期・採り直しの完了)
|
|
64
|
+
* 3. 補正量が大きすぎて徐々に寄せられないとき
|
|
65
|
+
*
|
|
66
|
+
* **時刻から位置を計算しているワールドは、この値の変化を見て基準を取り直すこと。**
|
|
67
|
+
* 取り直さないと、飛んだぶんだけオブジェクトがワープしたまま戻らない。
|
|
68
|
+
*
|
|
69
|
+
* 名前はプラットフォーム側の実装(`ServerClock.timeJumpCount`)と一致させてある。
|
|
70
|
+
* あちらの `discontinuityCount` は「端末時計の不連続の**検出**回数」という別物なので、
|
|
71
|
+
* 注入するときに取り違えないこと。
|
|
72
|
+
*/
|
|
73
|
+
timeJumpCount: number;
|
|
74
|
+
/** 直近に飛んだ量(ms)。負なら時刻が戻った */
|
|
75
|
+
lastTimeJumpMs: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* デフォルト実装(プラットフォームが実装を注入しない場合に使用される)
|
|
79
|
+
*
|
|
80
|
+
* 端末のローカル時計をそのまま返す。他の端末とは 0.1〜数秒ずれている前提なので、
|
|
81
|
+
* `synced` は false・`uncertainty` は Infinity で「信用できない」ことを明示する。
|
|
82
|
+
*/
|
|
83
|
+
export declare const createDefaultServerClockImplementation: () => ServerClockContextValue;
|
|
84
|
+
/**
|
|
85
|
+
* 用途に対して時刻が十分な精度かを判定する
|
|
86
|
+
*
|
|
87
|
+
* false のときの振る舞いはワールドの判断。動画なら同期を諦める(再生継続を優先)、
|
|
88
|
+
* 決定論的アニメーションなら合わせにいかずそのまま動かす、など。
|
|
89
|
+
*/
|
|
90
|
+
export declare const isServerClockAccurateEnough: (clock: Pick<ServerClockContextValue, "synced" | "uncertainty">, accuracy: ServerClockAccuracy) => boolean;
|
|
91
|
+
/**
|
|
92
|
+
* インスタンス共有時計(サーバ時刻)を提供する Context
|
|
93
|
+
* xrift-frontend 側で実装を注入し、ワールド側で利用できる
|
|
94
|
+
*/
|
|
95
|
+
export declare const ServerClockContext: import("react").Context<ServerClockContextValue | null>;
|
|
96
|
+
interface Props {
|
|
97
|
+
value: ServerClockContextValue;
|
|
98
|
+
children: ReactNode;
|
|
99
|
+
}
|
|
100
|
+
/** 共有時計を提供する ContextProvider */
|
|
101
|
+
export declare const ServerClockProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
102
|
+
/**
|
|
103
|
+
* 共有時計の Context を取得する hook
|
|
104
|
+
* @throws {Error} ServerClockProvider の外で呼び出された場合
|
|
105
|
+
*/
|
|
106
|
+
export declare const useServerClockContext: () => ServerClockContextValue;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=ServerClockContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerClockContext.d.ts","sourceRoot":"","sources":["../../src/contexts/ServerClockContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEpD,uCAAuC;AACvC,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAG/E,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;;;;;;;;OAcG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,QAAO,uBAMxD,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,aAAa,CAAC,EAC9D,UAAU,mBAAmB,KAC5B,OAAyF,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,kBAAkB,yDAAsD,CAAA;AAErF,UAAU,KAAK;IACb,KAAK,EAAE,uBAAuB,CAAA;IAC9B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,gCAAgC;AAChC,eAAO,MAAM,mBAAmB,GAAI,qBAAqB,KAAK,gCAE7D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,uBAMxC,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
/** プリセットが要求する `uncertainty` の上限(ms) */
|
|
4
|
+
export const SERVER_CLOCK_ACCURACY_THRESHOLD = {
|
|
5
|
+
media: 300,
|
|
6
|
+
motion: 100,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* デフォルト実装(プラットフォームが実装を注入しない場合に使用される)
|
|
10
|
+
*
|
|
11
|
+
* 端末のローカル時計をそのまま返す。他の端末とは 0.1〜数秒ずれている前提なので、
|
|
12
|
+
* `synced` は false・`uncertainty` は Infinity で「信用できない」ことを明示する。
|
|
13
|
+
*/
|
|
14
|
+
export const createDefaultServerClockImplementation = () => ({
|
|
15
|
+
now: () => Date.now(),
|
|
16
|
+
uncertainty: Number.POSITIVE_INFINITY,
|
|
17
|
+
synced: false,
|
|
18
|
+
timeJumpCount: 0,
|
|
19
|
+
lastTimeJumpMs: 0,
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* 用途に対して時刻が十分な精度かを判定する
|
|
23
|
+
*
|
|
24
|
+
* false のときの振る舞いはワールドの判断。動画なら同期を諦める(再生継続を優先)、
|
|
25
|
+
* 決定論的アニメーションなら合わせにいかずそのまま動かす、など。
|
|
26
|
+
*/
|
|
27
|
+
export const isServerClockAccurateEnough = (clock, accuracy) => clock.synced && clock.uncertainty <= SERVER_CLOCK_ACCURACY_THRESHOLD[accuracy];
|
|
28
|
+
/**
|
|
29
|
+
* インスタンス共有時計(サーバ時刻)を提供する Context
|
|
30
|
+
* xrift-frontend 側で実装を注入し、ワールド側で利用できる
|
|
31
|
+
*/
|
|
32
|
+
export const ServerClockContext = createContext(null);
|
|
33
|
+
/** 共有時計を提供する ContextProvider */
|
|
34
|
+
export const ServerClockProvider = ({ value, children }) => {
|
|
35
|
+
return _jsx(ServerClockContext.Provider, { value: value, children: children });
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* 共有時計の Context を取得する hook
|
|
39
|
+
* @throws {Error} ServerClockProvider の外で呼び出された場合
|
|
40
|
+
*/
|
|
41
|
+
export const useServerClockContext = () => {
|
|
42
|
+
const context = useContext(ServerClockContext);
|
|
43
|
+
if (!context) {
|
|
44
|
+
throw new Error('useServerClockContext must be used within ServerClockProvider');
|
|
45
|
+
}
|
|
46
|
+
return context;
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=ServerClockContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerClockContext.js","sourceRoot":"","sources":["../../src/contexts/ServerClockContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAA;AAejE,uCAAuC;AACvC,MAAM,CAAC,MAAM,+BAA+B,GAAwC;IAClF,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;CACZ,CAAA;AAgED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,GAA4B,EAAE,CAAC,CAAC;IACpF,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IACrB,WAAW,EAAE,MAAM,CAAC,iBAAiB;IACrC,MAAM,EAAE,KAAK;IACb,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;CAClB,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAA8D,EAC9D,QAA6B,EACpB,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,+BAA+B,CAAC,QAAQ,CAAC,CAAA;AAE5F;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAiC,IAAI,CAAC,CAAA;AAOrF,gCAAgC;AAChC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAS,EAAE,EAAE;IAChE,OAAO,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA+B,CAAA;AAC5F,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAA4B,EAAE;IACjE,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -74,7 +74,7 @@ interface Props {
|
|
|
74
74
|
/**
|
|
75
75
|
* 共有ファイルのContextProvider
|
|
76
76
|
*/
|
|
77
|
-
export declare const SharedFileProvider: ({ value, children }: Props) => import("react
|
|
77
|
+
export declare const SharedFileProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
78
78
|
/**
|
|
79
79
|
* 共有ファイルの機能を取得するhook
|
|
80
80
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharedFileContext.d.ts","sourceRoot":"","sources":["../../src/contexts/SharedFileContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACvC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,gBAAgB,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvC,OAAO,CAAC,EAAE,uBAAuB,KAC9B,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5B;;OAEG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAC/C;;OAEG;IACH,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC/E;;;OAGG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9F;;;OAGG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAED;;;GAGG;AACH,eAAO,MAAM,qCAAqC,QAAO,sBAkDvD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wDAAqD,CAAA;AAEnF,UAAU,KAAK;IACb,KAAK,EAAE,sBAAsB,CAAA;IAC7B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"SharedFileContext.d.ts","sourceRoot":"","sources":["../../src/contexts/SharedFileContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACvC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,gBAAgB,EAAE,CAChB,IAAI,EAAE,IAAI,EACV,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvC,OAAO,CAAC,EAAE,uBAAuB,KAC9B,OAAO,CAAC,cAAc,CAAC,CAAA;IAC5B;;OAEG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IAC/C;;OAEG;IACH,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC/E;;;OAGG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9F;;;OAGG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD;AAED;;;GAGG;AACH,eAAO,MAAM,qCAAqC,QAAO,sBAkDvD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,wDAAqD,CAAA;AAEnF,UAAU,KAAK;IACb,KAAK,EAAE,sBAAsB,CAAA;IAC7B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,qBAAqB,KAAK,gCAE5D,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAAO,sBAQvC,CAAA"}
|
|
@@ -43,7 +43,7 @@ interface Props {
|
|
|
43
43
|
* <WorldComponent />
|
|
44
44
|
* </SpawnPointProvider>
|
|
45
45
|
*/
|
|
46
|
-
export declare const SpawnPointProvider: ({ implementation, children }: Props) => import("react
|
|
46
|
+
export declare const SpawnPointProvider: ({ implementation, children }: Props) => import("react").JSX.Element;
|
|
47
47
|
/**
|
|
48
48
|
* スポーン地点のContextを取得するhook
|
|
49
49
|
* 通常、ワールド作成者は直接このhookを使用せず、useSpawnPointを使用する
|
|
@@ -1 +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,
|
|
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,gCAkBrE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAO,sBAEvC,CAAA"}
|
|
@@ -24,7 +24,7 @@ interface Props {
|
|
|
24
24
|
/**
|
|
25
25
|
* テレポート機能を提供する ContextProvider
|
|
26
26
|
*/
|
|
27
|
-
export declare const TeleportProvider: ({ value, children }: Props) => import("react
|
|
27
|
+
export declare const TeleportProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
28
28
|
/**
|
|
29
29
|
* テレポートの Context を取得する hook
|
|
30
30
|
* @throws {Error} TeleportProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeleportContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TeleportContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,IAAI,CAAA;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,QAAO,oBAGrD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,sDAAmD,CAAA;AAE/E,UAAU,KAAK;IACb,KAAK,EAAE,oBAAoB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"TeleportContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TeleportContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,IAAI,CAAA;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC,QAAO,oBAGrD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,sDAAmD,CAAA;AAE/E,UAAU,KAAK;IACb,KAAK,EAAE,oBAAoB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,qBAAqB,KAAK,gCAE1D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,oBAMrC,CAAA"}
|
|
@@ -46,7 +46,7 @@ interface Props {
|
|
|
46
46
|
/**
|
|
47
47
|
* テキスト入力のContextProvider
|
|
48
48
|
*/
|
|
49
|
-
export declare const TextInputProvider: ({ value, children }: Props) => import("react
|
|
49
|
+
export declare const TextInputProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
50
50
|
/**
|
|
51
51
|
* テキスト入力の機能を取得するhook
|
|
52
52
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInputContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TextInputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU;IACV,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBAYtD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uDAAoD,CAAA;AAEjF,UAAU,KAAK;IACb,KAAK,EAAE,qBAAqB,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"TextInputContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TextInputContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU;IACV,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,QAAO,qBAYtD,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uDAAoD,CAAA;AAEjF,UAAU,KAAK;IACb,KAAK,EAAE,qBAAqB,CAAA;IAC5B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,qBAAqB,KAAK,gCAE3D,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,QAAO,qBAQtC,CAAA"}
|
|
@@ -71,7 +71,7 @@ interface Props {
|
|
|
71
71
|
* <WorldComponent />
|
|
72
72
|
* </UsersProvider>
|
|
73
73
|
*/
|
|
74
|
-
export declare const UsersProvider: ({ implementation, children }: Props) => import("react
|
|
74
|
+
export declare const UsersProvider: ({ implementation, children }: Props) => import("react").JSX.Element;
|
|
75
75
|
/**
|
|
76
76
|
* ユーザー情報を取得するhook
|
|
77
77
|
* ワールド作成者が現在のユーザー情報(自分+他の参加者)を取得するために使用
|
|
@@ -1 +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,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,yBAAyB;IACzB,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;AAuBD;;;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;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;IAC9D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,YAAY,CAAA;CAC1C;AAeD;;;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,
|
|
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,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,yBAAyB;IACzB,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;AAuBD;;;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;IACtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAA;IAC9D;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,YAAY,CAAA;CAC1C;AAeD;;;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,gCAQhE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAE3B,CAAA"}
|
|
@@ -36,7 +36,7 @@ interface Props {
|
|
|
36
36
|
/**
|
|
37
37
|
* ワールド情報の取得機能を提供する ContextProvider
|
|
38
38
|
*/
|
|
39
|
-
export declare const WorldProvider: ({ value, children }: Props) => import("react
|
|
39
|
+
export declare const WorldProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
40
40
|
/**
|
|
41
41
|
* ワールドの Context を取得する hook
|
|
42
42
|
* @throws {Error} WorldProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorldContext.d.ts","sourceRoot":"","sources":["../../src/contexts/WorldContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;CACtD;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAO,iBAelD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAA;AAEzE,UAAU,KAAK;IACb,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,qBAAqB,KAAK,
|
|
1
|
+
{"version":3,"file":"WorldContext.d.ts","sourceRoot":"","sources":["../../src/contexts/WorldContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAc,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAA;CACtD;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAO,iBAelD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,mDAAgD,CAAA;AAEzE,UAAU,KAAK;IACb,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,qBAAqB,KAAK,gCAEvD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,iBAMlC,CAAA"}
|
|
@@ -130,7 +130,7 @@ interface Props {
|
|
|
130
130
|
/**
|
|
131
131
|
* World Storage を提供する ContextProvider
|
|
132
132
|
*/
|
|
133
|
-
export declare const WorldStorageProvider: ({ value, children }: Props) => import("react
|
|
133
|
+
export declare const WorldStorageProvider: ({ value, children }: Props) => import("react").JSX.Element;
|
|
134
134
|
/**
|
|
135
135
|
* World Storage の Context を取得する hook
|
|
136
136
|
* @throws {Error} WorldStorageProvider の外で呼び出された場合
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorldStorageContext.d.ts","sourceRoot":"","sources":["../../src/contexts/WorldStorageContext.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WorldStorageContext.d.ts","sourceRoot":"","sources":["../../src/contexts/WorldStorageContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ import { type PlacementMode } from './PlacementStateContext';
|
|
|
16
16
|
import { type AudioVolumeContextValue } from './AudioVolumeContext';
|
|
17
17
|
import { type SharedFileContextValue } from './SharedFileContext';
|
|
18
18
|
import { type WorldStorageContextValue } from './WorldStorageContext';
|
|
19
|
+
import { type ServerClockContextValue } from './ServerClockContext';
|
|
19
20
|
export interface XRiftContextValue {
|
|
20
21
|
/**
|
|
21
22
|
* ワールドのベースURL(CDNのディレクトリパス)
|
|
@@ -118,6 +119,11 @@ interface Props {
|
|
|
118
119
|
* 指定しない場合はデフォルト実装(インメモリ・リロードで消える)が使用される
|
|
119
120
|
*/
|
|
120
121
|
worldStorageImplementation?: WorldStorageContextValue;
|
|
122
|
+
/**
|
|
123
|
+
* インスタンス共有時計(サーバ時刻)の実装(オプション)
|
|
124
|
+
* 指定しない場合はデフォルト実装(端末のローカル時計・synced=false)が使用される
|
|
125
|
+
*/
|
|
126
|
+
serverClockImplementation?: ServerClockContextValue;
|
|
121
127
|
/**
|
|
122
128
|
* アイテムの配置状態(オプション)
|
|
123
129
|
* 'preview': プレビュー中、'placed': 設置済み
|
|
@@ -131,7 +137,7 @@ interface Props {
|
|
|
131
137
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
132
138
|
* 必要な情報を注入するために使用
|
|
133
139
|
*/
|
|
134
|
-
export declare const XRiftProvider: ({ baseUrl, confirmImplementation, instanceStateImplementation, instanceImplementation, screenShareImplementation, spawnPointImplementation, teleportImplementation, textInputImplementation, usersImplementation, worldImplementation, instanceEventImplementation, audioVolumeImplementation, fileInputImplementation, sharedFileImplementation, grabbableImplementation, worldStorageImplementation, placementMode, children, }: Props) =>
|
|
140
|
+
export declare const XRiftProvider: ({ baseUrl, confirmImplementation, instanceStateImplementation, instanceImplementation, screenShareImplementation, spawnPointImplementation, teleportImplementation, textInputImplementation, usersImplementation, worldImplementation, instanceEventImplementation, audioVolumeImplementation, fileInputImplementation, sharedFileImplementation, grabbableImplementation, worldStorageImplementation, serverClockImplementation, placementMode, children, }: Props) => React.JSX.Element;
|
|
135
141
|
/**
|
|
136
142
|
* XRift ワールドの情報を取得するhook
|
|
137
143
|
* ワールドプロジェクト側でアセットの相対パスを絶対パスに変換する際に使用
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACxG,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,EAGL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"XRiftContext.d.ts","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAA8C,MAAM,OAAO,CAAA;AACxG,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,EAGL,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAA;AAW7B,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,yCAAgD,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,qBAAqB,CAAC,EAAE,mBAAmB,CAAA;IAC3C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,oBAAoB,CAAA;IAC7C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,oBAAoB,CAAA;IAC7C;;;OAGG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;IACvC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,iBAAiB,CAAA;IACvC;;;OAGG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAA;IACvD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,uBAAuB,CAAA;IACnD;;;OAGG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;OAGG;IACH,wBAAwB,CAAC,EAAE,sBAAsB,CAAA;IACjD;;;OAGG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,CAAA;IAC/C;;;OAGG;IACH,0BAA0B,CAAC,EAAE,wBAAwB,CAAA;IACrD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,uBAAuB,CAAA;IACnD;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAeD;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,8bAoB3B,KAAK,sBAyHP,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,QAAO,iBAQ3B,CAAA"}
|
|
@@ -16,6 +16,7 @@ import { PlacementStateProvider } from './PlacementStateContext';
|
|
|
16
16
|
import { AudioVolumeProvider, createDefaultAudioVolumeImplementation, } from './AudioVolumeContext';
|
|
17
17
|
import { SharedFileProvider, createDefaultSharedFileImplementation, } from './SharedFileContext';
|
|
18
18
|
import { WorldStorageProvider, createDefaultWorldStorageImplementation, } from './WorldStorageContext';
|
|
19
|
+
import { ServerClockProvider, createDefaultServerClockImplementation, } from './ServerClockContext';
|
|
19
20
|
// デフォルトの画面共有実装(開発環境用)
|
|
20
21
|
const createDefaultScreenShareImplementation = () => ({
|
|
21
22
|
videoElement: null,
|
|
@@ -39,7 +40,7 @@ const composeProviders = (providers, children) => providers.reduceRight((acc, [P
|
|
|
39
40
|
* Module Federationで動的にロードされたワールドコンポーネントに
|
|
40
41
|
* 必要な情報を注入するために使用
|
|
41
42
|
*/
|
|
42
|
-
export const XRiftProvider = ({ baseUrl, confirmImplementation, instanceStateImplementation, instanceImplementation, screenShareImplementation, spawnPointImplementation, teleportImplementation, textInputImplementation, usersImplementation, worldImplementation, instanceEventImplementation, audioVolumeImplementation, fileInputImplementation, sharedFileImplementation, grabbableImplementation, worldStorageImplementation, placementMode, children, }) => {
|
|
43
|
+
export const XRiftProvider = ({ baseUrl, confirmImplementation, instanceStateImplementation, instanceImplementation, screenShareImplementation, spawnPointImplementation, teleportImplementation, textInputImplementation, usersImplementation, worldImplementation, instanceEventImplementation, audioVolumeImplementation, fileInputImplementation, sharedFileImplementation, grabbableImplementation, worldStorageImplementation, serverClockImplementation, placementMode, children, }) => {
|
|
43
44
|
// インタラクト可能なオブジェクトの管理
|
|
44
45
|
const [interactableObjects] = useState(() => new Set());
|
|
45
46
|
// 画面共有の実装(指定がない場合はデフォルト実装を使用)
|
|
@@ -64,6 +65,8 @@ export const XRiftProvider = ({ baseUrl, confirmImplementation, instanceStateImp
|
|
|
64
65
|
const sharedFileImpl = useMemo(() => sharedFileImplementation ?? createDefaultSharedFileImplementation(), [sharedFileImplementation]);
|
|
65
66
|
// World Storage の実装(指定がない場合はデフォルト実装を使用)
|
|
66
67
|
const worldStorageImpl = useMemo(() => worldStorageImplementation ?? createDefaultWorldStorageImplementation(), [worldStorageImplementation]);
|
|
68
|
+
// 共有時計の実装(指定がない場合はデフォルト実装 = 端末のローカル時計を使用)
|
|
69
|
+
const serverClockImpl = useMemo(() => serverClockImplementation ?? createDefaultServerClockImplementation(), [serverClockImplementation]);
|
|
67
70
|
// オブジェクトの登録
|
|
68
71
|
const registerInteractable = useCallback((object) => {
|
|
69
72
|
interactableObjects.add(object);
|
|
@@ -94,6 +97,7 @@ export const XRiftProvider = ({ baseUrl, confirmImplementation, instanceStateImp
|
|
|
94
97
|
[InstanceProvider, { value: instanceImpl }],
|
|
95
98
|
[AudioVolumeProvider, { value: audioVolumeImpl }],
|
|
96
99
|
[WorldStorageProvider, { value: worldStorageImpl }],
|
|
100
|
+
[ServerClockProvider, { value: serverClockImpl }],
|
|
97
101
|
];
|
|
98
102
|
if (placementMode) {
|
|
99
103
|
providers.push([PlacementStateProvider, { mode: placementMode }]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAkB,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExG,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,EACL,eAAe,EACf,kCAAkC,GAEnC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,gBAAgB,EAChB,mCAAmC,GAEpC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,aAAa,EACb,gCAAgC,GAEjC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,mCAAmC,GAEpC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,oCAAoC,GAErC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,iBAAiB,EACjB,oCAAoC,GAErC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAA0B,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA8B,MAAM,oBAAoB,CAAA;AAClF,OAAO,EACL,qBAAqB,EACrB,wCAAwC,GAEzC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAsB,MAAM,yBAAyB,CAAA;AACpF,OAAO,EACL,mBAAmB,EACnB,sCAAsC,GAEvC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,kBAAkB,EAClB,qCAAqC,GAEtC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,oBAAoB,EACpB,uCAAuC,GAExC,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"XRiftContext.js","sourceRoot":"","sources":["../../src/contexts/XRiftContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type ServerClockAccuracy, type ServerClockContextValue } from '../contexts/ServerClockContext';
|
|
2
|
+
export interface UseServerClockResult extends ServerClockContextValue {
|
|
3
|
+
/**
|
|
4
|
+
* `require` で指定した用途に対して時刻が十分な精度か。
|
|
5
|
+
* `require` を指定しない場合は `synced` と同じ。
|
|
6
|
+
*/
|
|
7
|
+
trustworthy: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* インスタンス内の全端末で共有できる時計(サーバ時刻)を提供するフック
|
|
11
|
+
*
|
|
12
|
+
* 端末の `Date.now()` は互いに 0.1〜数秒ずれているため、動画の再生位置同期・
|
|
13
|
+
* カウントダウン・同時演出・決定論的アニメーションはこれを使う。
|
|
14
|
+
*
|
|
15
|
+
* 指針:
|
|
16
|
+
* - **`now` は関数**。値ではないので `useFrame` の中から再レンダーなしで呼べる
|
|
17
|
+
* - **`timeJumpCount` の変化を見て基準を取り直す。** 通常は時刻が巻き戻らない
|
|
18
|
+
* よう徐々に補正するが、スリープ復帰などでは飛ぶ。時刻から位置を計算している
|
|
19
|
+
* ワールドは、飛んだときに基準を取り直さないとワープしたままになる
|
|
20
|
+
* - **補正のコストが誤差より大きいなら補正しない。** 動画で言えば、ズレを直すために
|
|
21
|
+
* シークしてバッファが切れるくらいなら、ズレたまま再生を続けるほうが体験は良い
|
|
22
|
+
* - 早押し・ゴール判定のような**公平性が要る用途には使わない**。経路の非対称ぶんの
|
|
23
|
+
* 誤差は検出できず、繰り返しても平均化されない(同じ人が毎回勝つ)
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // 動画の再生位置を合わせる
|
|
27
|
+
* const clock = useServerClock({ require: 'media' })
|
|
28
|
+
*
|
|
29
|
+
* useFrame(() => {
|
|
30
|
+
* if (!clock.trustworthy) return // 精度が出ていないなら諦める
|
|
31
|
+
* const target = (clock.now() - epoch) / 1000 % duration
|
|
32
|
+
* const diff = target - video.currentTime
|
|
33
|
+
* if (Math.abs(diff) < 0.3) {
|
|
34
|
+
* video.playbackRate = 1 // dead band。戻し忘れると振動し続ける
|
|
35
|
+
* return
|
|
36
|
+
* }
|
|
37
|
+
* if (Math.abs(diff) < 5) video.playbackRate = 1 + Math.sign(diff) * 0.05
|
|
38
|
+
* else if (isBuffered(video, target)) video.currentTime = target
|
|
39
|
+
* // バッファ外なら何もしない(同期より再生継続を優先)
|
|
40
|
+
* })
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* // 全員で一致する動く床(通信ゼロ。後から入った人も即座に正しい位置になる)
|
|
44
|
+
* const { now, timeJumpCount } = useServerClock()
|
|
45
|
+
* const seen = useRef(timeJumpCount)
|
|
46
|
+
*
|
|
47
|
+
* useFrame(() => {
|
|
48
|
+
* if (seen.current !== timeJumpCount) {
|
|
49
|
+
* seen.current = timeJumpCount
|
|
50
|
+
* resetBaseline() // 時刻が飛んだので基準を取り直す
|
|
51
|
+
* }
|
|
52
|
+
* floor.current.position.y = Math.sin(now() / 1000) * 2
|
|
53
|
+
* })
|
|
54
|
+
*
|
|
55
|
+
* @throws {Error} XRiftProvider の外で呼び出された場合
|
|
56
|
+
*/
|
|
57
|
+
export declare const useServerClock: (options?: {
|
|
58
|
+
require?: ServerClockAccuracy;
|
|
59
|
+
}) => UseServerClockResult;
|
|
60
|
+
//# sourceMappingURL=useServerClock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useServerClock.d.ts","sourceRoot":"","sources":["../../src/hooks/useServerClock.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAE7B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,oBAAqB,SAAQ,uBAAuB;IACnE;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAE,KAAG,oBAO5E,CAAA"}
|