@multitapio/multitap 0.0.19 → 0.0.20

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/lib.js CHANGED
@@ -9139,7 +9139,7 @@ var SessionContext = createContext(null);
9139
9139
  function createPlayerStore(schema) {
9140
9140
  return createStore((_set, get) => ({
9141
9141
  players: [],
9142
- update: (stateView2, allParticipants, currentPlayerId) => {
9142
+ update: (stateView2, allParticipants) => {
9143
9143
  const stateBuffer = new Uint8Array(stateView2.buffer, stateView2.byteOffset, stateView2.byteLength);
9144
9144
  const currentTick = getTick(stateBuffer);
9145
9145
  const incoming = allParticipants.filter((p) => p.joined <= currentTick);
@@ -9163,9 +9163,7 @@ function createPlayerStore(schema) {
9163
9163
  }
9164
9164
  acc[index] = {
9165
9165
  ...participant,
9166
- entity,
9167
- // currentPlayerId may be empty string if not yet joined - isCurrentPlayer will be false
9168
- isCurrentPlayer: currentPlayerId !== "" && participant.id === currentPlayerId
9166
+ entity
9169
9167
  };
9170
9168
  return acc;
9171
9169
  }, []);
@@ -9186,7 +9184,6 @@ function SessionProvider({ config, children }) {
9186
9184
  const [inputBindings, setInputBindings] = useState(null);
9187
9185
  const initRef = useRef(false);
9188
9186
  const currentStateRef = useRef(EMPTY_VIEW);
9189
- const currentPlayerIdRef = useRef("");
9190
9187
  const onSessionReady = useCallback((s) => {
9191
9188
  sessionRef.current = s;
9192
9189
  setInputBindings(s.getInputBindings());
@@ -9220,14 +9217,13 @@ function SessionProvider({ config, children }) {
9220
9217
  }, [config, onSessionReady, onSessionError]);
9221
9218
  const join = useCallback(
9222
9219
  async (playerKey, options) => {
9223
- if (!session) {
9220
+ if (!session?.join) {
9224
9221
  throw new Error("Session not initialized");
9225
9222
  }
9226
9223
  const sender = await session.join(playerKey, options);
9227
- currentPlayerIdRef.current = sender.currentPlayerId;
9228
9224
  return sender;
9229
9225
  },
9230
- [session]
9226
+ [session?.join]
9231
9227
  );
9232
9228
  useFiberFrame(() => {
9233
9229
  if (!session) {
@@ -9235,7 +9231,7 @@ function SessionProvider({ config, children }) {
9235
9231
  }
9236
9232
  const state = stateView(session.getState());
9237
9233
  currentStateRef.current = state;
9238
- participants.getState().update(state, session.getParticipants(), currentPlayerIdRef.current);
9234
+ participants.getState().update(state, session.getParticipants());
9239
9235
  }, HIGHEST_USE_FRAME_PRIORITY);
9240
9236
  const value = useMemo(
9241
9237
  () => inputBindings && config && session ? {
@@ -9291,30 +9287,33 @@ function FullscreenNotice({ message }) {
9291
9287
 
9292
9288
  // src/react/providers/ParticipantProvider.tsx
9293
9289
  import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useState as useState2, useCallback as useCallback2, useMemo as useMemo2 } from "react";
9294
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
9290
+ import { jsx as jsx2 } from "react/jsx-runtime";
9295
9291
  var ParticipantContext = createContext2(null);
9296
- function ParticipantProvider({ playerKey, joinOptions, children }) {
9292
+ function ParticipantProvider({ playerKey, joinOptions, children, autoJoin = true }) {
9297
9293
  const session = useSessionContext();
9298
9294
  const [inputSender, setInputSender] = useState2(null);
9299
9295
  const [isJoined, setIsJoined] = useState2(false);
9300
- const [error, setError] = useState2(null);
9301
9296
  const currentPlayerId = useMemo2(() => bytesToHex2(pubKeyFromPrivate(playerKey)), [playerKey]);
9302
9297
  useEffect2(() => {
9303
- if (!session.isReady) return;
9298
+ setInputSender(null);
9299
+ setIsJoined(false);
9300
+ }, [session?.config]);
9301
+ useEffect2(() => {
9302
+ if (!session?.isReady) return;
9303
+ if (!autoJoin) return;
9304
9304
  let cancelled = false;
9305
- session.join(playerKey, joinOptions).then((sender) => {
9305
+ session?.join(playerKey, joinOptions).then((sender) => {
9306
9306
  if (cancelled) return;
9307
9307
  setInputSender(sender);
9308
9308
  setIsJoined(true);
9309
9309
  }).catch((err2) => {
9310
9310
  if (cancelled) return;
9311
9311
  console.error("Failed to join session:", err2);
9312
- setError(err2 instanceof Error ? err2 : new Error(String(err2)));
9313
9312
  });
9314
9313
  return () => {
9315
9314
  cancelled = true;
9316
9315
  };
9317
- }, [session, playerKey, joinOptions]);
9316
+ }, [session?.isReady, session?.join, autoJoin, playerKey, joinOptions]);
9318
9317
  const sendInput = useCallback2(
9319
9318
  (input) => {
9320
9319
  if (!inputSender) {
@@ -9333,11 +9332,8 @@ function ParticipantProvider({ playerKey, joinOptions, children }) {
9333
9332
  }),
9334
9333
  [sendInput, currentPlayerId, isJoined]
9335
9334
  );
9336
- if (error) {
9337
- return /* @__PURE__ */ jsxs("div", { style: { color: "red" }, children: [
9338
- "Failed to join: ",
9339
- error.message
9340
- ] });
9335
+ if (!isJoined) {
9336
+ return null;
9341
9337
  }
9342
9338
  return /* @__PURE__ */ jsx2(ParticipantContext.Provider, { value, children });
9343
9339
  }
@@ -10804,7 +10800,7 @@ function usePlayerPose() {
10804
10800
  import { useRef as useRef4, useMemo as useMemo3 } from "react";
10805
10801
  import { Html as Html2 } from "@react-three/drei";
10806
10802
  import { useFrame as useFrame2 } from "@react-three/fiber";
10807
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
10803
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
10808
10804
  var SIZE = 12;
10809
10805
  var LINE_WIDTH = 1;
10810
10806
  var OPACITY = 0.4;
@@ -10843,7 +10839,7 @@ function Crosshair({ mode, offsetY = 0 }) {
10843
10839
  top: mode === "center" ? `${topPosition}%` : "50%",
10844
10840
  transform: "translate(-50%, -50%)"
10845
10841
  },
10846
- children: /* @__PURE__ */ jsxs2(
10842
+ children: /* @__PURE__ */ jsxs(
10847
10843
  "div",
10848
10844
  {
10849
10845
  style: {
@@ -10890,7 +10886,7 @@ function Crosshair({ mode, offsetY = 0 }) {
10890
10886
  }
10891
10887
 
10892
10888
  // src/react/Player.tsx
10893
- import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
10889
+ import { Fragment, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
10894
10890
  var DEFAULT_POSITION = [0, 0, 0];
10895
10891
  var DEFAULT_ROTATION = [0, 0, 0, 1];
10896
10892
  var DEFAULT_VIEW = "thirdPerson";
@@ -11069,7 +11065,7 @@ var Player = forwardRef(function Player2({
11069
11065
  }),
11070
11066
  []
11071
11067
  );
11072
- return /* @__PURE__ */ jsxs3(Fragment, { children: [
11068
+ return /* @__PURE__ */ jsxs2(Fragment, { children: [
11073
11069
  /* @__PURE__ */ jsx4(PlayerPoseContext.Provider, { value: pose, children: /* @__PURE__ */ jsx4("group", { ref: groupRef, visible: view !== "map" && (view !== "firstPerson" || !enableCamera), children }) }),
11074
11070
  /* @__PURE__ */ jsx4("group", { ref: pivotRef, children: /* @__PURE__ */ jsx4(
11075
11071
  "perspectiveCamera",
@@ -19,6 +19,7 @@ export interface ParticipantProviderProps {
19
19
  /** Options for joining (e.g., enableP2P) */
20
20
  joinOptions?: JoinOptions;
21
21
  children: React.ReactNode;
22
+ autoJoin?: boolean;
22
23
  }
23
24
  /**
24
25
  * ParticipantProvider - manages joining a session and sending inputs
@@ -35,7 +36,7 @@ export interface ParticipantProviderProps {
35
36
  * </SessionProvider>
36
37
  * ```
37
38
  */
38
- export declare function ParticipantProvider({ playerKey, joinOptions, children }: ParticipantProviderProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function ParticipantProvider({ playerKey, joinOptions, children, autoJoin }: ParticipantProviderProps): import("react/jsx-runtime").JSX.Element | null;
39
40
  /**
40
41
  * Hook to access participant context
41
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ParticipantProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/ParticipantProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CA0DjG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAE1D"}
1
+ {"version":3,"file":"ParticipantProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/ParticipantProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAe,EAAE,EAAE,wBAAwB,kDA8DlH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAE1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA6D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA4GzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
1
+ {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA0D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAuGzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
@@ -11,7 +11,6 @@ import type { InputCodec } from '../../input-codec';
11
11
  */
12
12
  export interface Player extends Participant {
13
13
  entity: EntityRef;
14
- isCurrentPlayer: boolean;
15
14
  }
16
15
  /**
17
16
  * Zustand store for tracking entities matching a query
@@ -36,7 +35,7 @@ export type QuerySelector<T> = (entities: EntityRef[], context: QuerySelectorCon
36
35
  */
37
36
  export type PlayerStore = {
38
37
  players: Player[];
39
- update: (state: DataView, allParticipants: readonly Participant[], currentPlayerId: string) => void;
38
+ update: (state: DataView, allParticipants: readonly Participant[]) => void;
40
39
  };
41
40
  /**
42
41
  * Session context value provided by SessionProvider
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export interface ParticipantProviderProps {
19
19
  /** Options for joining (e.g., enableP2P) */
20
20
  joinOptions?: JoinOptions;
21
21
  children: React.ReactNode;
22
+ autoJoin?: boolean;
22
23
  }
23
24
  /**
24
25
  * ParticipantProvider - manages joining a session and sending inputs
@@ -35,7 +36,7 @@ export interface ParticipantProviderProps {
35
36
  * </SessionProvider>
36
37
  * ```
37
38
  */
38
- export declare function ParticipantProvider({ playerKey, joinOptions, children }: ParticipantProviderProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function ParticipantProvider({ playerKey, joinOptions, children, autoJoin }: ParticipantProviderProps): import("react/jsx-runtime").JSX.Element | null;
39
40
  /**
40
41
  * Hook to access participant context
41
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ParticipantProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/ParticipantProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CA0DjG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAE1D"}
1
+ {"version":3,"file":"ParticipantProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/ParticipantProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAe,EAAE,EAAE,wBAAwB,kDA8DlH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAE1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA6D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA4GzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
1
+ {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA0D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAuGzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
@@ -11,7 +11,6 @@ import type { InputCodec } from '../../input-codec';
11
11
  */
12
12
  export interface Player extends Participant {
13
13
  entity: EntityRef;
14
- isCurrentPlayer: boolean;
15
14
  }
16
15
  /**
17
16
  * Zustand store for tracking entities matching a query
@@ -36,7 +35,7 @@ export type QuerySelector<T> = (entities: EntityRef[], context: QuerySelectorCon
36
35
  */
37
36
  export type PlayerStore = {
38
37
  players: Player[];
39
- update: (state: DataView, allParticipants: readonly Participant[], currentPlayerId: string) => void;
38
+ update: (state: DataView, allParticipants: readonly Participant[]) => void;
40
39
  };
41
40
  /**
42
41
  * Session context value provided by SessionProvider
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@multitapio/multitap",
3
3
  "type": "module",
4
- "version": "0.0.19",
4
+ "version": "0.0.20",
5
5
  "description": "Rollback networking SDK for fast-paced multiplayer games",
6
6
  "main": "./dist/lib.js",
7
7
  "types": "./dist/lib.d.ts",