@voltro/plugin-rooms 0.0.0-stage → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24329 -0
- package/LICENSE +61 -0
- package/README.md +9204 -2
- package/SECURITY.md +56 -0
- package/THIRD-PARTY-NOTICES.md +11322 -0
- package/dist/actor.js +1474 -0
- package/dist/apiBinding.js +678 -0
- package/dist/apiRegistryBinding.js +399 -0
- package/dist/apiReservations.js +433 -0
- package/dist/baselines.js +73 -0
- package/dist/bots.d.ts +1485 -0
- package/dist/bots.js +563 -0
- package/dist/catalog.js +80 -0
- package/dist/checkpointJson.js +24 -0
- package/dist/checkpointStore.js +386 -0
- package/dist/client.js +56 -0
- package/dist/clockSync.js +51 -0
- package/dist/collision.js +156 -0
- package/dist/commandDelivery.js +101 -0
- package/dist/commandRecord.js +11 -0
- package/dist/commandWithdrawal.js +183 -0
- package/dist/connection.js +497 -0
- package/dist/controlCarrier.js +375 -0
- package/dist/controlRegistry.js +79 -0
- package/dist/controlTarget.js +45 -0
- package/dist/controlTransport.js +574 -0
- package/dist/developmentBinding.js +113 -0
- package/dist/directory.js +323 -0
- package/dist/directoryProjection.js +117 -0
- package/dist/errors.d.ts +125 -0
- package/dist/errors.js +53 -0
- package/dist/fixed.d.ts +284 -0
- package/dist/fixed.js +10 -0
- package/dist/fixed32.js +134 -0
- package/dist/fixedCollision.js +60 -0
- package/dist/fixedCollision32.js +109 -0
- package/dist/fixedMath.js +56 -0
- package/dist/fixedRaw.js +11 -0
- package/dist/fixedSlabs.js +34 -0
- package/dist/fixedTrig.js +48 -0
- package/dist/fixedTrig32.js +38 -0
- package/dist/fixedVectors.js +113 -0
- package/dist/fixedVectors32.js +95 -0
- package/dist/fixedWide.js +50 -0
- package/dist/fixedWords.js +46 -0
- package/dist/gateway.js +57 -0
- package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.server.tsx +4 -0
- package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.tsx +14 -0
- package/dist/geometry-worker/worker.d.mts +2 -0
- package/dist/geometry-worker/worker.mjs +50 -0
- package/dist/geometry.d.ts +2249 -0
- package/dist/geometry.js +40 -0
- package/dist/geometryActivation.js +82 -0
- package/dist/geometryActorInventory.js +108 -0
- package/dist/geometryAdminClient.js +87 -0
- package/dist/geometryAdminData.js +32 -0
- package/dist/geometryAdminFixtures.js +50 -0
- package/dist/geometryAdminPorts.js +5 -0
- package/dist/geometryAdminRpc.js +58 -0
- package/dist/geometryAdminRpcRoutes.js +49 -0
- package/dist/geometryAdminSchemas.js +39 -0
- package/dist/geometryAdministration.js +190 -0
- package/dist/geometryAdministrationPorts.js +5 -0
- package/dist/geometryApiBinding.js +165 -0
- package/dist/geometryAppStorage.js +58 -0
- package/dist/geometryArtifacts.js +198 -0
- package/dist/geometryAssetBundle.js +117 -0
- package/dist/geometryAssetClient.js +25 -0
- package/dist/geometryAssetData.js +106 -0
- package/dist/geometryAssetHttp.js +123 -0
- package/dist/geometryAssetPorts.js +5 -0
- package/dist/geometryAssetRpc.js +30 -0
- package/dist/geometryAssetRpcRoutes.js +40 -0
- package/dist/geometryAssetStorageGrant.js +103 -0
- package/dist/geometryBoxOverlap.js +110 -0
- package/dist/geometryCatalogueDigest.js +111 -0
- package/dist/geometryCellCoverage.js +85 -0
- package/dist/geometryCellLoader.js +28 -0
- package/dist/geometryChannel.js +134 -0
- package/dist/geometryChunkHttp.js +54 -0
- package/dist/geometryChunkLeases.js +22 -0
- package/dist/geometryClient.d.ts +1429 -0
- package/dist/geometryClient.js +149 -0
- package/dist/geometryClientChunks.js +330 -0
- package/dist/geometryClientDelta.js +25 -0
- package/dist/geometryClientHttp.js +37 -0
- package/dist/geometryClientInterest.js +109 -0
- package/dist/geometryClientStatic.js +34 -0
- package/dist/geometryCms.d.ts +763 -0
- package/dist/geometryCms.js +217 -0
- package/dist/geometryCommitCoordinator.js +241 -0
- package/dist/geometryCompactionFixture.js +84 -0
- package/dist/geometryCompactionStrategies.js +38 -0
- package/dist/geometryConnectionClient.js +23 -0
- package/dist/geometryDerivationFixtures.js +141 -0
- package/dist/geometryDerivationStrategies.js +27 -0
- package/dist/geometryDigest.js +13 -0
- package/dist/geometryEditChannel.js +70 -0
- package/dist/geometryEditIngress.js +263 -0
- package/dist/geometryEdits.js +366 -0
- package/dist/geometryEnvelope.js +41 -0
- package/dist/geometryGridRaycast.js +92 -0
- package/dist/geometryGridSweep.js +92 -0
- package/dist/geometryHeightfield.js +166 -0
- package/dist/geometryHeightfieldRaycast.js +74 -0
- package/dist/geometryHeightfieldSweep.js +85 -0
- package/dist/geometryHeightfieldVolume.js +45 -0
- package/dist/geometryHost.js +322 -0
- package/dist/geometryHostDirectory.js +207 -0
- package/dist/geometryHostMutations.js +137 -0
- package/dist/geometryHostStreams.js +124 -0
- package/dist/geometryHttpBody.js +76 -0
- package/dist/geometryHttpRoutes.js +112 -0
- package/dist/geometryImportGltf.js +300 -0
- package/dist/geometryImportLdtk.js +54 -0
- package/dist/geometryImportPng.js +144 -0
- package/dist/geometryImportPublication.js +67 -0
- package/dist/geometryImportTiled.js +39 -0
- package/dist/geometryImportTiles.js +136 -0
- package/dist/geometryImportVox.js +130 -0
- package/dist/geometryImportedSource.js +101 -0
- package/dist/geometryInspectEndpoint.js +248 -0
- package/dist/geometryInspection.js +92 -0
- package/dist/geometryInstall.js +121 -0
- package/dist/geometryJournalArchiveData.js +21 -0
- package/dist/geometryJournalArchiveIndex.js +330 -0
- package/dist/geometryJournalArchiveTable.js +21 -0
- package/dist/geometryJournalCompaction.js +100 -0
- package/dist/geometryJournalPatch.js +47 -0
- package/dist/geometryJournalRetention.js +112 -0
- package/dist/geometryJournalRetentionSchemas.js +36 -0
- package/dist/geometryJournalRetentionSweep.js +112 -0
- package/dist/geometryJournalRetentionWorkflow.js +28 -0
- package/dist/geometryJournalRetentionWorkflowData.js +31 -0
- package/dist/geometryJournalStorage.js +148 -0
- package/dist/geometryLoader.js +118 -0
- package/dist/geometryManifest.js +113 -0
- package/dist/geometryManifestChannel.js +93 -0
- package/dist/geometryManifestClient.js +122 -0
- package/dist/geometryManifestData.js +49 -0
- package/dist/geometryManifestPorts.js +5 -0
- package/dist/geometryManifestPublication.js +109 -0
- package/dist/geometryManifestSource.js +68 -0
- package/dist/geometryMigrationJournal.js +14 -0
- package/dist/geometryMigrationStrategies.js +7 -0
- package/dist/geometryMigrations.js +323 -0
- package/dist/geometryNativeMetadata.js +52 -0
- package/dist/geometryPatch.js +170 -0
- package/dist/geometryPersistence.js +449 -0
- package/dist/geometryPersistenceCapture.js +69 -0
- package/dist/geometryPersistenceData.js +140 -0
- package/dist/geometryPersistencePorts.js +5 -0
- package/dist/geometryPlayerAdmission.js +34 -0
- package/dist/geometryPlayerEditOwner.js +265 -0
- package/dist/geometryPlayerEdits.js +49 -0
- package/dist/geometryPrepared.js +188 -0
- package/dist/geometryPrivacyFence.js +24 -0
- package/dist/geometryProceduralPublication.js +91 -0
- package/dist/geometryProceduralWorker.js +164 -0
- package/dist/geometryPublication.js +110 -0
- package/dist/geometryRayAlgebra.js +116 -0
- package/dist/geometryReadClient.js +157 -0
- package/dist/geometryReadPorts.js +5 -0
- package/dist/geometryReadRpc.js +27 -0
- package/dist/geometryReadRpcRoutes.js +47 -0
- package/dist/geometryReliablePublication.js +82 -0
- package/dist/geometryReloadPorts.js +46 -0
- package/dist/geometryReloadSource.js +278 -0
- package/dist/geometryRenderCache.js +165 -0
- package/dist/geometryRenderLod.js +102 -0
- package/dist/geometryRollback.js +125 -0
- package/dist/geometryRollbackCoordinator.js +203 -0
- package/dist/geometryRollbackPorts.js +46 -0
- package/dist/geometryRollbackSource.js +209 -0
- package/dist/geometryRollbackStore.js +198 -0
- package/dist/geometrySchemas.js +27 -0
- package/dist/geometryServer.d.ts +2766 -0
- package/dist/geometryServer.js +62 -0
- package/dist/geometryShapeRaycast.js +111 -0
- package/dist/geometryShapeSegments.js +34 -0
- package/dist/geometryShapes.js +223 -0
- package/dist/geometrySnapshot.js +76 -0
- package/dist/geometrySnapshotChannel.js +160 -0
- package/dist/geometrySnapshotClient.js +159 -0
- package/dist/geometrySnapshotPreparation.js +76 -0
- package/dist/geometrySnapshotServer.js +191 -0
- package/dist/geometrySqlOwner.js +21 -0
- package/dist/geometryStorage.js +127 -0
- package/dist/geometryStorageGrant.js +69 -0
- package/dist/geometryStorageIdentity.js +9 -0
- package/dist/geometryTileArtifact.js +10 -0
- package/dist/geometryTileCodec.js +194 -0
- package/dist/geometryTileCollision.js +96 -0
- package/dist/geometryTileNavigation.js +128 -0
- package/dist/geometryTileView.js +35 -0
- package/dist/geometryVersionActivation.js +114 -0
- package/dist/geometryVersionClient.js +238 -0
- package/dist/geometryVersionCompare.js +40 -0
- package/dist/geometryVersionMigration.js +106 -0
- package/dist/geometryVoxel.js +253 -0
- package/dist/geometryWorldEntitySubject.js +32 -0
- package/dist/geometryWorldExtent.js +12 -0
- package/dist/geometryWorldMetadata.js +38 -0
- package/dist/geometryWorldStrategyFixtures.js +127 -0
- package/dist/geometryWorldView.js +307 -0
- package/dist/host.js +128 -0
- package/dist/hostBinding.js +277 -0
- package/dist/hostCellObservation.js +114 -0
- package/dist/hostClientCapacity.js +90 -0
- package/dist/hostCommandScope.js +64 -0
- package/dist/hostController.js +3094 -0
- package/dist/hostDeployment.js +65 -0
- package/dist/hostDrain.js +152 -0
- package/dist/hostDrainPorts.js +5 -0
- package/dist/hostDriver.js +179 -0
- package/dist/hostLane.js +288 -0
- package/dist/hostListener.js +79 -0
- package/dist/hostListenerBinding.js +19 -0
- package/dist/hostLoopObservation.js +90 -0
- package/dist/hostMetrics.js +56 -0
- package/dist/hostRegistryBinding.js +418 -0
- package/dist/hostSelection.js +16 -0
- package/dist/hostShutdown.js +47 -0
- package/dist/hostTurnObservation.js +53 -0
- package/dist/identities.js +4 -0
- package/dist/index.d.ts +8632 -0
- package/dist/index.js +232 -0
- package/dist/inputReceipts.js +63 -0
- package/dist/inputRedundancy.js +55 -0
- package/dist/inspect.js +238 -0
- package/dist/lockstep.d.ts +436 -0
- package/dist/lockstep.js +382 -0
- package/dist/lockstepAdmission.js +262 -0
- package/dist/lockstepAdmissionCodec.js +94 -0
- package/dist/lockstepAdmissionPorts.js +5 -0
- package/dist/lockstepClientSession.js +578 -0
- package/dist/lockstepDefinition.js +148 -0
- package/dist/lockstepHostLoop.js +243 -0
- package/dist/lockstepInitialAdmission.js +67 -0
- package/dist/lockstepInitialStrategyFixtures.js +45 -0
- package/dist/lockstepJournal.js +395 -0
- package/dist/lockstepJournalCodec.js +254 -0
- package/dist/lockstepJournalPorts.js +5 -0
- package/dist/lockstepJournalRebuild.js +208 -0
- package/dist/lockstepJournalRows.js +57 -0
- package/dist/lockstepMembers.js +131 -0
- package/dist/lockstepMessages.js +47 -0
- package/dist/lockstepOwnedRoom.js +764 -0
- package/dist/lockstepPolicies.js +84 -0
- package/dist/lockstepReact.js +47 -0
- package/dist/lockstepRecoveryTruth.js +121 -0
- package/dist/lockstepRosterConfig.js +32 -0
- package/dist/lockstepSeed.js +12 -0
- package/dist/lockstepSeedFixture.js +20 -0
- package/dist/lockstepServer.d.ts +3897 -0
- package/dist/lockstepServer.js +325 -0
- package/dist/lockstepServerConfig.js +101 -0
- package/dist/lockstepServerRoles.js +403 -0
- package/dist/lockstepServerStrategyFixtures.js +33 -0
- package/dist/lockstepStrategies.js +6 -0
- package/dist/lockstepStrategyFixtures.js +137 -0
- package/dist/lockstepTerminal.js +90 -0
- package/dist/lockstepTerminalPorts.js +5 -0
- package/dist/lockstepTransport.js +773 -0
- package/dist/lockstepTransportConfig.js +32 -0
- package/dist/lockstepWireRoster.js +34 -0
- package/dist/matchRoomProvider.js +32 -0
- package/dist/matchRooms.js +19 -0
- package/dist/membershipObserver.js +47 -0
- package/dist/moderation.js +98 -0
- package/dist/movementSpecials.js +104 -0
- package/dist/ownership.js +17 -0
- package/dist/ownershipWithdrawal.js +18 -0
- package/dist/pcg32.js +96 -0
- package/dist/ports.d.ts +1241 -0
- package/dist/ports.js +11 -0
- package/dist/quaternion.js +70 -0
- package/dist/react.d.ts +406 -0
- package/dist/react.js +109 -0
- package/dist/reaper-app/rooms.reaper.workflow.server.tsx +5 -0
- package/dist/reaper-app/rooms.reaper.workflow.tsx +13 -0
- package/dist/reaper.js +243 -0
- package/dist/reaperSchemas.js +42 -0
- package/dist/reaperWorkflow.js +70 -0
- package/dist/recovery.js +189 -0
- package/dist/recoverySeats.js +26 -0
- package/dist/replay.d.ts +273 -0
- package/dist/replay.js +485 -0
- package/dist/replayPorts.js +5 -0
- package/dist/replayRecording.js +67 -0
- package/dist/replaySchema.js +157 -0
- package/dist/replayStorage.d.ts +149 -0
- package/dist/replayStorage.js +485 -0
- package/dist/reservationBatch.js +422 -0
- package/dist/reservationSchemas.js +17 -0
- package/dist/reservations.js +259 -0
- package/dist/reservePort.js +69 -0
- package/dist/resolvedOptions.js +4 -0
- package/dist/room.d.ts +1006 -0
- package/dist/room.js +284 -0
- package/dist/roomAccessSweep.js +95 -0
- package/dist/roomAppCommandControl.js +59 -0
- package/dist/roomAuthoringStrategy.js +17 -0
- package/dist/roomErasure.js +198 -0
- package/dist/roomPoolRuntimeDefaults.js +24 -0
- package/dist/roomPoolSelection.js +19 -0
- package/dist/roomPoolTopology.js +212 -0
- package/dist/rpc.d.ts +551 -0
- package/dist/rpc.js +112 -0
- package/dist/rpcClient.js +152 -0
- package/dist/rpcRoutes.js +28 -0
- package/dist/runtime.js +1123 -0
- package/dist/schemaHistory.js +98 -0
- package/dist/seatStore.js +151 -0
- package/dist/seatStrategyFixtures.js +52 -0
- package/dist/seatSubject.js +32 -0
- package/dist/seats.js +130 -0
- package/dist/serverSession.js +811 -0
- package/dist/serverSessionConfig.js +43 -0
- package/dist/sessionAdmission.js +53 -0
- package/dist/sidecarAdmission.js +103 -0
- package/dist/sidecarConfig.js +116 -0
- package/dist/sidecarConfigPublication.js +64 -0
- package/dist/sidecarHostListener.js +208 -0
- package/dist/sidecarIpc.js +205 -0
- package/dist/sidecarPeer.js +310 -0
- package/dist/sidecarProcessPort.js +28 -0
- package/dist/sidecarRuntime.js +168 -0
- package/dist/sidecarSelection.js +142 -0
- package/dist/sidecarWire.js +178 -0
- package/dist/sidecarWrites.js +163 -0
- package/dist/simulation.d.ts +391 -0
- package/dist/simulation.js +282 -0
- package/dist/simulationAuthoring.js +29 -0
- package/dist/simulationBytes.js +27 -0
- package/dist/simulationConformance.js +305 -0
- package/dist/simulationInputHistoryCapture.js +35 -0
- package/dist/simulationInputHistoryWire.js +193 -0
- package/dist/simulationOptionsWire.js +78 -0
- package/dist/simulationRecoveryWire.js +134 -0
- package/dist/simulationReplay.js +127 -0
- package/dist/simulationSnapshotWire.js +112 -0
- package/dist/simulationState.js +178 -0
- package/dist/snapshotBlob.js +126 -0
- package/dist/snapshotBlobCleanup.js +93 -0
- package/dist/snapshotBlobIndex.js +38 -0
- package/dist/snapshotBudget.js +80 -0
- package/dist/snapshotChain.js +185 -0
- package/dist/snapshotErasure.js +172 -0
- package/dist/snapshotInspection.js +105 -0
- package/dist/snapshotSegmentBlobs.js +58 -0
- package/dist/snapshotUploads.js +166 -0
- package/dist/socketTransport.js +253 -0
- package/dist/spatial.js +104 -0
- package/dist/spectatorPolicy.js +26 -0
- package/dist/spectatorProducer.js +89 -0
- package/dist/startFailureCause.js +4 -0
- package/dist/stateCodec.js +658 -0
- package/dist/strategies.d.ts +210 -0
- package/dist/strategies.js +8 -0
- package/dist/strategiesServer.d.ts +286 -0
- package/dist/strategiesServer.js +11 -0
- package/dist/strategyFixtures.js +182 -0
- package/dist/streamFraming.js +122 -0
- package/dist/streamTransport.js +266 -0
- package/dist/subjectAdmission.js +50 -0
- package/dist/subjectPrivacy.js +281 -0
- package/dist/subjectPrivacyBinding.js +90 -0
- package/dist/systemManifest.js +182 -0
- package/dist/tables.js +159 -0
- package/dist/testHarness.js +89 -0
- package/dist/testing.d.ts +3684 -0
- package/dist/testing.js +221 -0
- package/dist/testingPorts.js +271 -0
- package/dist/testingServer.d.ts +4060 -0
- package/dist/testingServer.js +18 -0
- package/dist/transform.d.ts +692 -0
- package/dist/transform.js +217 -0
- package/dist/transform3d.js +118 -0
- package/dist/transformCollection.js +24 -0
- package/dist/transformCollection3d.js +24 -0
- package/dist/transformCollectionCore.js +156 -0
- package/dist/transformFrames.js +121 -0
- package/dist/transformPrediction3d.js +127 -0
- package/dist/transformRules.js +123 -0
- package/dist/transformSchemas.js +20 -0
- package/dist/transport.js +32 -0
- package/dist/transportAuthoring.js +29 -0
- package/dist/transportCleanup.js +22 -0
- package/dist/transportConformance.js +124 -0
- package/dist/transportConnector.js +82 -0
- package/dist/transportEndpoints.js +38 -0
- package/dist/transportsServer.d.ts +5515 -0
- package/dist/transportsServer.js +6 -0
- package/dist/viewProjection.js +16 -0
- package/dist/web.d.ts +2286 -0
- package/dist/web.js +518 -0
- package/dist/webTransportClient.js +173 -0
- package/dist/wire.d.ts +992 -0
- package/dist/wire.js +492 -0
- package/dist/withdrawalPort.js +28 -0
- package/dist/world.d.ts +1894 -0
- package/dist/world.js +333 -0
- package/dist/worldActorReceipts.js +48 -0
- package/dist/worldActorTransferSnapshot.js +14 -0
- package/dist/worldAdmissionPending.js +8 -0
- package/dist/worldBoundaryCoordinator.js +148 -0
- package/dist/worldCatalog.js +81 -0
- package/dist/worldCellAllocation.js +203 -0
- package/dist/worldCellDestination.js +68 -0
- package/dist/worldCells.js +489 -0
- package/dist/worldChange.js +32 -0
- package/dist/worldClient.js +664 -0
- package/dist/worldClientControl.js +141 -0
- package/dist/worldClientPendingInput.js +16 -0
- package/dist/worldClientRpc.js +133 -0
- package/dist/worldClientRpcRoutes.js +43 -0
- package/dist/worldClientSchemas.js +28 -0
- package/dist/worldCommands.js +140 -0
- package/dist/worldData.js +42 -0
- package/dist/worldDefaultBinding.js +377 -0
- package/dist/worldDefaultGroupAdmission.js +82 -0
- package/dist/worldDefaultGroupAppServices.js +31 -0
- package/dist/worldDefaultGroupCompensation.js +109 -0
- package/dist/worldDefaultGroupContinuation.js +96 -0
- package/dist/worldDefaultGroupControl.js +72 -0
- package/dist/worldDefaultGroupMembers.js +85 -0
- package/dist/worldDefaultGroups.js +21 -0
- package/dist/worldDefaultPending.js +79 -0
- package/dist/worldDefaultService.js +245 -0
- package/dist/worldEntities.js +2980 -0
- package/dist/worldEntityCodec.js +21 -0
- package/dist/worldEntityHandoffView.js +154 -0
- package/dist/worldGeometry.js +170 -0
- package/dist/worldGhostAdmission.js +65 -0
- package/dist/worldGhostDestination.js +118 -0
- package/dist/worldGhostGateway.js +132 -0
- package/dist/worldGhostHandshake.js +108 -0
- package/dist/worldGhostHost.js +42 -0
- package/dist/worldGhostIngress.js +132 -0
- package/dist/worldGhostNeighborhood.js +70 -0
- package/dist/worldGhostNeighbors.js +86 -0
- package/dist/worldGhostOutbound.js +110 -0
- package/dist/worldGhostPublisher.js +216 -0
- package/dist/worldGhostReceiver.js +213 -0
- package/dist/worldGhostSender.js +146 -0
- package/dist/worldGhostSocket.js +78 -0
- package/dist/worldGhostWire.js +172 -0
- package/dist/worldGroupCommand.js +49 -0
- package/dist/worldGroupDeadline.js +115 -0
- package/dist/worldGroupPreparation.js +115 -0
- package/dist/worldGroupReadyControl.js +128 -0
- package/dist/worldGroupSupervisor.js +120 -0
- package/dist/worldHandoffMetrics.js +59 -0
- package/dist/worldHandoffView.js +100 -0
- package/dist/worldHostSource.js +69 -0
- package/dist/worldInspectEndpoint.js +250 -0
- package/dist/worldInspection.js +109 -0
- package/dist/worldInstanceAdmission.js +31 -0
- package/dist/worldInstanceAllocation.js +116 -0
- package/dist/worldInstanceDestination.js +64 -0
- package/dist/worldInstanceExpiry.js +282 -0
- package/dist/worldInstanceExpirySupervisor.js +88 -0
- package/dist/worldInstanceLifecycle.js +103 -0
- package/dist/worldInstanceState.js +52 -0
- package/dist/worldInstances.js +478 -0
- package/dist/worldJoin.js +56 -0
- package/dist/worldLayers.js +151 -0
- package/dist/worldLeases.js +78 -0
- package/dist/worldManifest.js +25 -0
- package/dist/worldMovement.js +63 -0
- package/dist/worldPersistence.js +134 -0
- package/dist/worldProjection.js +221 -0
- package/dist/worldReact.js +110 -0
- package/dist/worldRecoveryActor.js +35 -0
- package/dist/worldReturnAnchor.js +49 -0
- package/dist/worldRoomHooks.js +57 -0
- package/dist/worldRoomPool.js +27 -0
- package/dist/worldRoomSteps.js +133 -0
- package/dist/worldSeatBinding.js +36 -0
- package/dist/worldServer.d.ts +6936 -0
- package/dist/worldServer.js +48 -0
- package/dist/worldSourceSeatPending.js +9 -0
- package/dist/worldStrategyFixtures.js +164 -0
- package/dist/worldTesting.js +27 -0
- package/dist/worldTransitionDefaults.js +198 -0
- package/dist/worldTransitionExecutor.js +519 -0
- package/dist/worldTransitionGroup.js +113 -0
- package/dist/worldTransitionPhysicalSteps.js +40 -0
- package/dist/worldTransitionResolver.js +228 -0
- package/dist/worldTransitionSeatGroup.js +64 -0
- package/dist/worldTransitionSeats.js +260 -0
- package/dist/worldTransitionState.js +95 -0
- package/dist/worldTransitions.js +101 -0
- package/package.json +189 -4
|
@@ -0,0 +1,692 @@
|
|
|
1
|
+
import { Result } from 'effect';
|
|
2
|
+
import { Schema } from 'effect';
|
|
3
|
+
import { YieldableError } from 'effect/Cause';
|
|
4
|
+
|
|
5
|
+
export declare interface AttachedEntity2D extends AttachedTransform2D {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare const AttachedTransform2D: Schema.Struct<{
|
|
10
|
+
readonly t: Schema.Struct<{
|
|
11
|
+
readonly x: Schema.Number;
|
|
12
|
+
readonly y: Schema.Number;
|
|
13
|
+
readonly rot: Schema.Number;
|
|
14
|
+
readonly vx: Schema.optional<Schema.Number>;
|
|
15
|
+
readonly vy: Schema.optional<Schema.Number>;
|
|
16
|
+
}>;
|
|
17
|
+
readonly owner: Schema.optional<Schema.String>;
|
|
18
|
+
readonly attachedTo: Schema.optional<Schema.String>;
|
|
19
|
+
}>;
|
|
20
|
+
|
|
21
|
+
export declare type AttachedTransform2D = (typeof AttachedTransform2D)["Type"];
|
|
22
|
+
|
|
23
|
+
export declare interface AttachedTransformOptions {
|
|
24
|
+
readonly maxEntities?: number;
|
|
25
|
+
readonly maxDepth?: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export declare const attachTransform2D: (offered: AttachedEntity2D, parentId: string, local: Transform2D) => AttachedEntity2D;
|
|
29
|
+
|
|
30
|
+
export declare const BallisticProjectile2D: Schema.Struct<{
|
|
31
|
+
readonly spawnTick: Schema.Int;
|
|
32
|
+
readonly x: Schema.Number;
|
|
33
|
+
readonly y: Schema.Number;
|
|
34
|
+
readonly rot: Schema.Number;
|
|
35
|
+
readonly vx: Schema.Number;
|
|
36
|
+
readonly vy: Schema.Number;
|
|
37
|
+
readonly ax: Schema.Number;
|
|
38
|
+
readonly ay: Schema.Number;
|
|
39
|
+
}>;
|
|
40
|
+
|
|
41
|
+
export declare type BallisticProjectile2D = (typeof BallisticProjectile2D)["Type"];
|
|
42
|
+
|
|
43
|
+
/** Capture native functions only when explicitly requested in a browser. */
|
|
44
|
+
export declare const browserRoomAnimationFrames: () => RoomAnimationFramePort;
|
|
45
|
+
|
|
46
|
+
/** Deterministic discrete collision helper; it never accepts player positions.
|
|
47
|
+
* Static tiles and dynamic bodies share the server-owned bounded broadphase.
|
|
48
|
+
* Continuous movement/world-geometry integration remains a separate layer. */
|
|
49
|
+
export declare const collide: (transform: Transform2D, body: CollisionBody2D, world: CollisionWorld2D, exclude?: string) => CollisionResult2D;
|
|
50
|
+
|
|
51
|
+
export declare type CollisionBody2D = {
|
|
52
|
+
readonly kind: 'circle';
|
|
53
|
+
readonly radius: number;
|
|
54
|
+
} | {
|
|
55
|
+
readonly kind: 'aabb';
|
|
56
|
+
readonly halfWidth: number;
|
|
57
|
+
readonly halfHeight: number;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export declare interface CollisionEntity2D {
|
|
61
|
+
readonly position: SpatialPoint2D;
|
|
62
|
+
readonly body: CollisionBody2D;
|
|
63
|
+
readonly solid: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export declare interface CollisionResult2D {
|
|
67
|
+
readonly transform: Transform2D;
|
|
68
|
+
readonly collided: ReadonlyArray<string>;
|
|
69
|
+
readonly iterations: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Default world provider validates extents at insertion, before broadphase can
|
|
73
|
+
* hide an oversized body. Position has one source for geometry and cell keys. */
|
|
74
|
+
export declare const collisionWorld: (options: SpatialGridOptions & {
|
|
75
|
+
readonly maxObstacleRadius: number;
|
|
76
|
+
readonly maxIterations: number;
|
|
77
|
+
}) => Readonly<{
|
|
78
|
+
maxObstacleRadius: number;
|
|
79
|
+
maxIterations: number;
|
|
80
|
+
set: (id: string, entity: CollisionEntity2D) => void;
|
|
81
|
+
delete: (id: string) => boolean;
|
|
82
|
+
get: (id: string) => CollisionEntity2D | undefined;
|
|
83
|
+
nearby: (position: SpatialPoint2D, radius: number) => readonly {
|
|
84
|
+
readonly id: string;
|
|
85
|
+
readonly value: CollisionEntity2D;
|
|
86
|
+
readonly distance: number;
|
|
87
|
+
}[];
|
|
88
|
+
}>;
|
|
89
|
+
|
|
90
|
+
export declare interface CollisionWorld2D {
|
|
91
|
+
/** Maximum circumscribed obstacle radius, supplied by the world owner. */
|
|
92
|
+
readonly maxObstacleRadius: number;
|
|
93
|
+
readonly maxIterations: number;
|
|
94
|
+
nearby(position: SpatialPoint2D, radius: number): ReadonlyArray<{
|
|
95
|
+
readonly id: string;
|
|
96
|
+
readonly value: CollisionEntity2D;
|
|
97
|
+
}>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Fixed little-endian 2-bit index + three unsigned quantized components. */
|
|
101
|
+
export declare const decodeQuaternionSmallestThree: (bytes: Uint8Array, bits?: number) => Result.Result<QuaternionComponents, ProtocolError>;
|
|
102
|
+
|
|
103
|
+
export declare const dequantize: (value: number, options: Quantization) => number;
|
|
104
|
+
|
|
105
|
+
export declare const detachTransform2D: (offered: AttachedEntity2D, world: Transform2D) => AttachedEntity2D;
|
|
106
|
+
|
|
107
|
+
/** Canonical hemisphere of a normalized rotation. No position/physics authority. */
|
|
108
|
+
export declare const encodeQuaternionSmallestThree: (value: QuaternionComponents, bits?: number) => Result.Result<Uint8Array, ProtocolError>;
|
|
109
|
+
|
|
110
|
+
export declare const fieldId: (id: number) => <S extends Schema.Codec<unknown, unknown>>(schema: S) => S;
|
|
111
|
+
|
|
112
|
+
export declare const interpolate: (mode?: "linear" | "angle" | "none") => <S extends Schema.Codec<unknown, unknown>>(schema: S) => S;
|
|
113
|
+
|
|
114
|
+
export declare const interpolateTransform2D: (a: Transform2D, b: Transform2D, fraction: number, durationSeconds: number, mode: TransformRules2D["interpolation"], deriveVelocity?: boolean) => Transform2D;
|
|
115
|
+
|
|
116
|
+
/** Presentation-only interpolation. Position uses linear/Hermite; rotation uses
|
|
117
|
+
* shortest-arc normalized slerp. Optional endpoint velocities are local derived
|
|
118
|
+
* presentation data, never added to the seven-component wire transform. */
|
|
119
|
+
export declare const interpolateTransform3D: (from: Transform3D, to: Transform3D, fraction: number, durationSeconds: number, mode: TransformRules3D["interpolation"], velocityFrom?: TransformVelocity3D, velocityTo?: TransformVelocity3D) => Transform3D;
|
|
120
|
+
|
|
121
|
+
export declare const precision: (format: "f32" | "f64") => <S extends Schema.Codec<unknown, unknown>>(schema: S) => S;
|
|
122
|
+
|
|
123
|
+
export declare interface PredictedInput<I> {
|
|
124
|
+
readonly seq: number;
|
|
125
|
+
readonly input: I;
|
|
126
|
+
readonly dt: number;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
declare class ProtocolError extends ProtocolError_base {
|
|
130
|
+
get message(): string;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
declare const ProtocolError_base: Schema.Class<ProtocolError, Schema.TaggedStruct<"ProtocolError", {
|
|
134
|
+
readonly detail: Schema.String;
|
|
135
|
+
}>, YieldableError>;
|
|
136
|
+
|
|
137
|
+
export declare interface Quantization {
|
|
138
|
+
readonly min: number;
|
|
139
|
+
readonly max: number;
|
|
140
|
+
readonly step?: number | undefined;
|
|
141
|
+
readonly bits?: number | undefined;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export declare const quantizationStep: (options: Quantization) => number;
|
|
145
|
+
|
|
146
|
+
export declare const quantize: (value: number, options: Quantization) => number;
|
|
147
|
+
|
|
148
|
+
export declare const quantized: (options: Quantization) => <S extends Schema.Codec<unknown, unknown>>(schema: S) => S;
|
|
149
|
+
|
|
150
|
+
export declare const quaternionByteLength: (bits?: number) => number;
|
|
151
|
+
|
|
152
|
+
export declare interface QuaternionComponents {
|
|
153
|
+
readonly qx: number;
|
|
154
|
+
readonly qy: number;
|
|
155
|
+
readonly qz: number;
|
|
156
|
+
readonly qw: number;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** Resolve only the supplied server/player-projected graph. Parent-relative
|
|
160
|
+
* poses rotate/translate and compose linear velocities. No angular-velocity
|
|
161
|
+
* physics, hidden parent lookup or automatic prediction binding is implied. */
|
|
162
|
+
export declare const resolveAttachedTransforms2D: (offered: ReadonlyArray<AttachedEntity2D>, options?: AttachedTransformOptions) => ReadonlyArray<ResolvedAttachedEntity2D>;
|
|
163
|
+
|
|
164
|
+
export declare interface ResolvedAttachedEntity2D {
|
|
165
|
+
readonly id: string;
|
|
166
|
+
readonly owner: string | null;
|
|
167
|
+
readonly t: Transform2D;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/** One owned animation request or accepted callback; no borrowed resource close. */
|
|
171
|
+
export declare class RoomAnimationFrameLoop {
|
|
172
|
+
private readonly request;
|
|
173
|
+
private readonly cancel;
|
|
174
|
+
private readonly onFrame;
|
|
175
|
+
private ticket;
|
|
176
|
+
private callbackTask;
|
|
177
|
+
private closingTask;
|
|
178
|
+
private running;
|
|
179
|
+
private closing;
|
|
180
|
+
private closed;
|
|
181
|
+
private currentError;
|
|
182
|
+
constructor(onFrame: (localTimeMs: number) => void | Promise<void>, frames?: RoomAnimationFramePort);
|
|
183
|
+
get error(): unknown;
|
|
184
|
+
get status(): 'idle' | 'running' | 'failed' | 'closing' | 'closed';
|
|
185
|
+
start(): void;
|
|
186
|
+
private schedule;
|
|
187
|
+
close(): Promise<void>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export declare interface RoomAnimationFramePort {
|
|
191
|
+
request(callback: (localTimeMs: number) => void): number;
|
|
192
|
+
cancel(id: number): void;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
declare interface RoomClock {
|
|
196
|
+
now(): number;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
declare interface RoomDeliveredState<S> {
|
|
200
|
+
readonly epoch: number;
|
|
201
|
+
readonly tick: number;
|
|
202
|
+
/** Local transport observation, not an authoritative server timestamp. */
|
|
203
|
+
readonly receivedAt: number;
|
|
204
|
+
readonly state: S;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export declare const RoomFieldId: unique symbol;
|
|
208
|
+
|
|
209
|
+
export declare const RoomInterpolation: unique symbol;
|
|
210
|
+
|
|
211
|
+
export declare const RoomPrecision: unique symbol;
|
|
212
|
+
|
|
213
|
+
export declare const RoomQuantization: unique symbol;
|
|
214
|
+
|
|
215
|
+
export declare const RoomTransform: unique symbol;
|
|
216
|
+
|
|
217
|
+
/** Dimension-specific history binding over the shared bounded collection owner. */
|
|
218
|
+
export declare class RoomTransformCollection2D<S> extends RoomTransformCollectionCore<S, Transform2D> {
|
|
219
|
+
constructor(source: RoomTransformSource2D<S>, options: RoomTransformCollectionOptions2D<S>);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/** Dimension-specific history binding over the shared bounded collection owner. */
|
|
223
|
+
export declare class RoomTransformCollection3D<S> extends RoomTransformCollectionCore<S, Transform3D> {
|
|
224
|
+
constructor(source: RoomTransformSource3D<S>, options: RoomTransformCollectionOptions3D<S>);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/** Framework-free subscribed render history. It owns no transport, timers or
|
|
228
|
+
* authority, and projects only already delivered player-visible state. */
|
|
229
|
+
declare class RoomTransformCollectionCore<S, T> {
|
|
230
|
+
private entries;
|
|
231
|
+
private epoch;
|
|
232
|
+
private tick;
|
|
233
|
+
private previous;
|
|
234
|
+
private jitter;
|
|
235
|
+
private currentError;
|
|
236
|
+
private closing;
|
|
237
|
+
private closed;
|
|
238
|
+
private closeTask;
|
|
239
|
+
private readonly read;
|
|
240
|
+
private readonly serverTime;
|
|
241
|
+
private readonly release;
|
|
242
|
+
private readonly select;
|
|
243
|
+
private readonly timeAtTick;
|
|
244
|
+
private readonly makeHistory;
|
|
245
|
+
private readonly capacity;
|
|
246
|
+
private readonly maxEntities;
|
|
247
|
+
private readonly minDelay;
|
|
248
|
+
private readonly maxDelay;
|
|
249
|
+
private readonly interval;
|
|
250
|
+
private readonly maxLossIntervals;
|
|
251
|
+
private readonly loss;
|
|
252
|
+
private readonly jitterWindow;
|
|
253
|
+
private readonly jitterMultiplier;
|
|
254
|
+
constructor(source: RoomTransformSource<S>, options: RoomTransformCollectionCoreOptions<S, T>, makeHistory: (capacity: number) => RoomTransformHistory<T>);
|
|
255
|
+
private reset;
|
|
256
|
+
private observe;
|
|
257
|
+
get error(): unknown;
|
|
258
|
+
delayMs(): number;
|
|
259
|
+
ids(): ReadonlyArray<string>;
|
|
260
|
+
renderTime(): number | null;
|
|
261
|
+
at(id: string, renderTimeMs?: number): RoomTransformSample<T> | null;
|
|
262
|
+
close(): Promise<void>;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
declare interface RoomTransformCollectionCoreOptions<S, T> {
|
|
266
|
+
readonly select: (state: S) => ReadonlyArray<RoomTransformEntity<T>>;
|
|
267
|
+
/** Explicit server timeline; local receivedAt cannot substitute for this. */
|
|
268
|
+
readonly timeAtTick: (epoch: number, tick: number) => number;
|
|
269
|
+
readonly capacity: number;
|
|
270
|
+
readonly maxEntities: number;
|
|
271
|
+
readonly maxRetainedSnapshots: number;
|
|
272
|
+
readonly sendIntervalMs: number;
|
|
273
|
+
readonly minDelayMs?: number;
|
|
274
|
+
readonly maxDelayMs?: number;
|
|
275
|
+
readonly jitterWindow?: number;
|
|
276
|
+
readonly jitterMultiplier?: number;
|
|
277
|
+
/** Extra send intervals of delay at most, added for reported datagram loss (default 2): one per 10 % loss, rounded. */
|
|
278
|
+
readonly maxLossIntervals?: number;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export declare interface RoomTransformCollectionOptions2D<S> extends RoomTransformCollectionCoreOptions<S, Transform2D> {
|
|
282
|
+
readonly rules: TransformRules2D;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export declare interface RoomTransformCollectionOptions3D<S> extends RoomTransformCollectionCoreOptions<S, Transform3D> {
|
|
286
|
+
readonly rules: TransformRules3D;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
declare interface RoomTransformEntity<T> {
|
|
290
|
+
readonly id: string;
|
|
291
|
+
readonly transform: T;
|
|
292
|
+
readonly teleport?: boolean;
|
|
293
|
+
/** Animation or other presentation data, sampled at the same history time. */
|
|
294
|
+
readonly data?: unknown;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export declare interface RoomTransformEntity2D {
|
|
298
|
+
readonly id: string;
|
|
299
|
+
readonly transform: Transform2D;
|
|
300
|
+
readonly teleport?: boolean;
|
|
301
|
+
readonly data?: unknown;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export declare interface RoomTransformEntity3D {
|
|
305
|
+
readonly id: string;
|
|
306
|
+
readonly transform: Transform3D;
|
|
307
|
+
readonly teleport?: boolean;
|
|
308
|
+
readonly data?: unknown;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export declare interface RoomTransformFrame2D {
|
|
312
|
+
readonly localTimeMs: number;
|
|
313
|
+
readonly serverTimeMs: number | null;
|
|
314
|
+
readonly entities: ReadonlyArray<{
|
|
315
|
+
readonly id: string;
|
|
316
|
+
readonly sample: RoomTransformSample2D;
|
|
317
|
+
}>;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export declare interface RoomTransformFrame3D {
|
|
321
|
+
readonly localTimeMs: number;
|
|
322
|
+
readonly serverTimeMs: number | null;
|
|
323
|
+
readonly entities: ReadonlyArray<{
|
|
324
|
+
readonly id: string;
|
|
325
|
+
readonly sample: RoomTransformSample3D;
|
|
326
|
+
}>;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/** Shared scheduler with a single captured server render time for all entities. */
|
|
330
|
+
export declare class RoomTransformFrameLoop2D extends RoomAnimationFrameLoop {
|
|
331
|
+
constructor(view: RoomTransformView2D, onFrame: (frame: RoomTransformFrame2D) => void | Promise<void>, frames?: RoomAnimationFramePort);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/** Same scheduler/cleanup and one captured server time for 3D presentation. */
|
|
335
|
+
export declare class RoomTransformFrameLoop3D extends RoomAnimationFrameLoop {
|
|
336
|
+
constructor(view: RoomTransformView3D, onFrame: (frame: RoomTransformFrame3D) => void | Promise<void>, frames?: RoomAnimationFramePort);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
declare interface RoomTransformHistory<T> {
|
|
340
|
+
copy(): RoomTransformHistory<T>;
|
|
341
|
+
push(snapshot: {
|
|
342
|
+
readonly tick: number;
|
|
343
|
+
readonly timeMs: number;
|
|
344
|
+
readonly transform: T;
|
|
345
|
+
readonly teleport: boolean;
|
|
346
|
+
}): boolean;
|
|
347
|
+
at(timeMs: number): {
|
|
348
|
+
readonly transform: T;
|
|
349
|
+
readonly stale: boolean;
|
|
350
|
+
} | null;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
declare interface RoomTransformSample<T> {
|
|
354
|
+
readonly epoch: number;
|
|
355
|
+
readonly tick: number;
|
|
356
|
+
readonly transform: T;
|
|
357
|
+
readonly stale: boolean;
|
|
358
|
+
readonly data?: unknown;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export declare interface RoomTransformSample2D {
|
|
362
|
+
readonly epoch: number;
|
|
363
|
+
readonly tick: number;
|
|
364
|
+
readonly transform: Transform2D;
|
|
365
|
+
readonly stale: boolean;
|
|
366
|
+
readonly data?: unknown;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
export declare interface RoomTransformSample3D {
|
|
370
|
+
readonly epoch: number;
|
|
371
|
+
readonly tick: number;
|
|
372
|
+
readonly transform: Transform3D;
|
|
373
|
+
readonly stale: boolean;
|
|
374
|
+
readonly data?: unknown;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
declare interface RoomTransformSource<S> {
|
|
378
|
+
deliveredSnapshot(): RoomDeliveredState<S> | null;
|
|
379
|
+
serverNow(): number | null;
|
|
380
|
+
subscribe(listener: () => void): () => void | Promise<void>;
|
|
381
|
+
/** Estimated datagram loss (0–1, null until measured); a lossy client buffers longer. */
|
|
382
|
+
readonly lossRate?: number | null;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
export declare interface RoomTransformSource2D<S> {
|
|
386
|
+
deliveredSnapshot(): RoomDeliveredState<S> | null;
|
|
387
|
+
serverNow(): number | null;
|
|
388
|
+
subscribe(listener: () => void): () => void | Promise<void>;
|
|
389
|
+
/** Estimated datagram loss (0–1, null until measured); a lossy client buffers longer. */
|
|
390
|
+
readonly lossRate?: number | null;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
export declare interface RoomTransformSource3D<S> {
|
|
394
|
+
deliveredSnapshot(): RoomDeliveredState<S> | null;
|
|
395
|
+
serverNow(): number | null;
|
|
396
|
+
subscribe(listener: () => void): () => void | Promise<void>;
|
|
397
|
+
/** Estimated datagram loss (0–1, null until measured); a lossy client buffers longer. */
|
|
398
|
+
readonly lossRate?: number | null;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export declare interface RoomTransformView2D {
|
|
402
|
+
ids(): ReadonlyArray<string>;
|
|
403
|
+
renderTime(): number | null;
|
|
404
|
+
at(id: string, renderTimeMs: number): RoomTransformSample2D | null;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export declare interface RoomTransformView3D {
|
|
408
|
+
ids(): ReadonlyArray<string>;
|
|
409
|
+
renderTime(): number | null;
|
|
410
|
+
at(id: string, renderTimeMs: number): RoomTransformSample3D | null;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/** Constant acceleration from one server-owned spawn. Both sides compute the
|
|
414
|
+
* same pure pose; this helper has no hit authority, clock, RNG or persistence. */
|
|
415
|
+
export declare const sampleBallisticProjectile2D: (projectile: BallisticProjectile2D, tick: number, tickRate: number) => Transform2D;
|
|
416
|
+
|
|
417
|
+
/** Server authors update ordinary state with these detached values. Neither
|
|
418
|
+
* helper admits a player-supplied owner, parent or world pose. */
|
|
419
|
+
export declare const setTransformOwner2D: (offered: AttachedEntity2D, owner: string | null) => AttachedEntity2D;
|
|
420
|
+
|
|
421
|
+
export declare const spatialGrid: <A>(options: SpatialGridOptions) => SpatialGrid2D<A>;
|
|
422
|
+
|
|
423
|
+
/** Bounded, deterministic in-memory spatial index. No persistence or timers. */
|
|
424
|
+
export declare class SpatialGrid2D<A> {
|
|
425
|
+
private readonly entities;
|
|
426
|
+
private readonly cells;
|
|
427
|
+
readonly options: SpatialGridOptions;
|
|
428
|
+
constructor(options: SpatialGridOptions);
|
|
429
|
+
private coordinate;
|
|
430
|
+
key(position: SpatialPoint2D): string;
|
|
431
|
+
set(id: string, position: SpatialPoint2D, value: A): void;
|
|
432
|
+
private removeFromCell;
|
|
433
|
+
delete(id: string): boolean;
|
|
434
|
+
get(id: string): A | undefined;
|
|
435
|
+
nearby(position: SpatialPoint2D, radius: number, maxResults?: number): ReadonlyArray<{
|
|
436
|
+
readonly id: string;
|
|
437
|
+
readonly value: A;
|
|
438
|
+
readonly distance: number;
|
|
439
|
+
}>;
|
|
440
|
+
size(): number;
|
|
441
|
+
cellCount(): number;
|
|
442
|
+
clear(): void;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
export declare interface SpatialGridOptions {
|
|
446
|
+
readonly cell: number;
|
|
447
|
+
readonly maxEntities: number;
|
|
448
|
+
readonly maxQueryCells: number;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/** Server-owned membership hysteresis; players supply neither the view nor its
|
|
452
|
+
* retained IDs. A hard entity budget resolves ties by distance, then id. */
|
|
453
|
+
export declare class SpatialInterest2D<A> {
|
|
454
|
+
readonly grid: SpatialGrid2D<A>;
|
|
455
|
+
readonly radius: number;
|
|
456
|
+
readonly hysteresis: number;
|
|
457
|
+
readonly maxEntities: number;
|
|
458
|
+
private visible;
|
|
459
|
+
constructor(grid: SpatialGrid2D<A>, radius: number, hysteresis: number, maxEntities: number);
|
|
460
|
+
update(position: SpatialPoint2D): {
|
|
461
|
+
readonly entities: ReadonlyArray<{
|
|
462
|
+
readonly id: string;
|
|
463
|
+
readonly value: A;
|
|
464
|
+
readonly distance: number;
|
|
465
|
+
}>;
|
|
466
|
+
readonly entered: ReadonlyArray<string>;
|
|
467
|
+
readonly left: ReadonlyArray<string>;
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
export declare interface SpatialPoint2D {
|
|
472
|
+
readonly x: number;
|
|
473
|
+
readonly y: number;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/** Pure shared movement helper; a direction can never multiply movement speed. */
|
|
477
|
+
export declare const stepTransform2D: (t: Transform2D, input: {
|
|
478
|
+
readonly dx: number;
|
|
479
|
+
readonly dy: number;
|
|
480
|
+
}, dt: number, rules: TransformRules2D) => Transform2D;
|
|
481
|
+
|
|
482
|
+
/** One captured static grid and the existing bounded dynamic broadphase. */
|
|
483
|
+
export declare const tileCollisionWorld2D: (options: TileCollisionWorldOptions2D) => Readonly<{
|
|
484
|
+
maxObstacleRadius: number;
|
|
485
|
+
maxIterations: number;
|
|
486
|
+
set: (id: string, entity: CollisionEntity2D) => void;
|
|
487
|
+
delete: (id: string) => boolean;
|
|
488
|
+
get: (id: string) => CollisionEntity2D | undefined;
|
|
489
|
+
nearby: (position: SpatialPoint2D, radius: number) => readonly {
|
|
490
|
+
readonly id: string;
|
|
491
|
+
readonly value: CollisionEntity2D;
|
|
492
|
+
readonly distance: number;
|
|
493
|
+
}[];
|
|
494
|
+
}>;
|
|
495
|
+
|
|
496
|
+
export declare interface TileCollisionWorldOptions2D extends SpatialGridOptions {
|
|
497
|
+
readonly origin: SpatialPoint2D;
|
|
498
|
+
readonly tileSize: number;
|
|
499
|
+
readonly width: number;
|
|
500
|
+
readonly height: number;
|
|
501
|
+
/** Dense row-major occupancy, supplied by the world owner, never by an input. */
|
|
502
|
+
readonly solid: ReadonlyArray<boolean>;
|
|
503
|
+
readonly maxTiles: number;
|
|
504
|
+
readonly maxObstacleRadius: number;
|
|
505
|
+
readonly maxIterations: number;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
export declare const transform: (rules: TransformRules) => <S extends Schema.Codec<unknown, unknown>>(schema: S) => S;
|
|
509
|
+
|
|
510
|
+
export declare const Transform2D: Schema.Struct<{
|
|
511
|
+
readonly x: Schema.Number;
|
|
512
|
+
readonly y: Schema.Number;
|
|
513
|
+
readonly rot: Schema.Number;
|
|
514
|
+
readonly vx: Schema.optional<Schema.Number>;
|
|
515
|
+
readonly vy: Schema.optional<Schema.Number>;
|
|
516
|
+
}>;
|
|
517
|
+
|
|
518
|
+
export declare type Transform2D = (typeof Transform2D)["Type"];
|
|
519
|
+
|
|
520
|
+
export declare const Transform3D: Schema.Struct<{
|
|
521
|
+
readonly x: Schema.Number;
|
|
522
|
+
readonly y: Schema.Number;
|
|
523
|
+
readonly z: Schema.Number;
|
|
524
|
+
readonly qx: Schema.Number;
|
|
525
|
+
readonly qy: Schema.Number;
|
|
526
|
+
readonly qz: Schema.Number;
|
|
527
|
+
readonly qw: Schema.Number;
|
|
528
|
+
}>;
|
|
529
|
+
|
|
530
|
+
export declare type Transform3D = (typeof Transform3D)["Type"];
|
|
531
|
+
|
|
532
|
+
/** Bounded shared history for rendering and server-side rewind. */
|
|
533
|
+
export declare class TransformHistory2D {
|
|
534
|
+
readonly capacity: number;
|
|
535
|
+
private readonly snapshots;
|
|
536
|
+
readonly rules: TransformRules2D;
|
|
537
|
+
constructor(capacity: number, rules: TransformRules2D);
|
|
538
|
+
copy(): TransformHistory2D;
|
|
539
|
+
push(snapshot: TransformSnapshot2D): boolean;
|
|
540
|
+
at(timeMs: number): (Transform2D & {
|
|
541
|
+
readonly stale: boolean;
|
|
542
|
+
}) | null;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/** Bounded renderer history, without physics authority. Velocity derives from
|
|
546
|
+
* position snapshots; extrapolation holds the last rotation and freezes after
|
|
547
|
+
* the declared position horizon. The wire schema and hashes are unchanged. */
|
|
548
|
+
export declare class TransformHistory3D {
|
|
549
|
+
readonly capacity: number;
|
|
550
|
+
private readonly snapshots;
|
|
551
|
+
readonly rules: TransformRules3D;
|
|
552
|
+
constructor(capacity: number, rules: TransformRules3D);
|
|
553
|
+
copy(): TransformHistory3D;
|
|
554
|
+
push(snapshot: TransformSnapshot3D): boolean;
|
|
555
|
+
at(timeMs: number): (Transform3D & {
|
|
556
|
+
readonly stale: boolean;
|
|
557
|
+
}) | null;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/** Replays unacknowledged intentions from the server state, never from a client claim. */
|
|
561
|
+
export declare class TransformPrediction2D<I, R> {
|
|
562
|
+
private readonly step;
|
|
563
|
+
readonly capacity: number;
|
|
564
|
+
private readonly pending;
|
|
565
|
+
private predicted;
|
|
566
|
+
private lastSeq;
|
|
567
|
+
private lastAck;
|
|
568
|
+
private readonly rules;
|
|
569
|
+
constructor(initial: Transform2D, rules: R, step: TransformStep<I, R>, capacity: number);
|
|
570
|
+
send(seq: number, input: I, dt: number): Transform2D;
|
|
571
|
+
reconcile(lastAppliedSeq: number, authoritative: Transform2D): Transform2D;
|
|
572
|
+
state(): Transform2D;
|
|
573
|
+
queued(): number;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/** Correct simulation immediately; decay only the detached presentation offset. */
|
|
577
|
+
export declare class TransformRenderPrediction2D<I, R> {
|
|
578
|
+
private readonly prediction;
|
|
579
|
+
private readonly now;
|
|
580
|
+
private readonly threshold;
|
|
581
|
+
private readonly blendMs;
|
|
582
|
+
private lastTime;
|
|
583
|
+
private lastAck;
|
|
584
|
+
private correctionAt;
|
|
585
|
+
private offset;
|
|
586
|
+
constructor(initial: Transform2D, rules: R, step: TransformStep<I, R>, options: TransformRenderPredictionOptions);
|
|
587
|
+
private time;
|
|
588
|
+
private at;
|
|
589
|
+
send(seq: number, input: I, dt: number): Transform2D;
|
|
590
|
+
reconcile(lastAppliedSeq: number, authoritative: Transform2D, teleport?: boolean): Transform2D;
|
|
591
|
+
state(): Transform2D;
|
|
592
|
+
render(): Transform2D;
|
|
593
|
+
queued(): number;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/** Immediate simulation correction with detached positional/quaternion render
|
|
597
|
+
* offsets. Pure author step runs only on demand; no transport or frame owner. */
|
|
598
|
+
export declare class TransformRenderPrediction3D<I, R> {
|
|
599
|
+
private pending;
|
|
600
|
+
private predicted;
|
|
601
|
+
private readonly rules;
|
|
602
|
+
private readonly step;
|
|
603
|
+
private readonly now;
|
|
604
|
+
private readonly capacity;
|
|
605
|
+
private readonly threshold;
|
|
606
|
+
private readonly blendMs;
|
|
607
|
+
private lastTime;
|
|
608
|
+
private lastSeq;
|
|
609
|
+
private lastAck;
|
|
610
|
+
private correctionAt;
|
|
611
|
+
private offset;
|
|
612
|
+
private rotationOffset;
|
|
613
|
+
private operation;
|
|
614
|
+
constructor(initial: Transform3D, rules: R, step: TransformStep3D<I, R>, options: TransformRenderPredictionOptions);
|
|
615
|
+
private enter;
|
|
616
|
+
private time;
|
|
617
|
+
private at;
|
|
618
|
+
send(seq: number, input: I, dt: number): Transform3D;
|
|
619
|
+
reconcile(lastAppliedSeq: number, authoritative: Transform3D, teleport?: boolean): Transform3D;
|
|
620
|
+
state(): Transform3D;
|
|
621
|
+
render(): Transform3D;
|
|
622
|
+
queued(): number;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
export declare interface TransformRenderPredictionOptions {
|
|
626
|
+
readonly clock: RoomClock;
|
|
627
|
+
readonly capacity: number;
|
|
628
|
+
readonly teleportThreshold: number;
|
|
629
|
+
/** Author-selected render budget, not a measured latency guarantee. */
|
|
630
|
+
readonly correctionBlendMs?: number;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
export declare type TransformRules = TransformRules2D | TransformRules3D;
|
|
634
|
+
|
|
635
|
+
export declare interface TransformRules2D {
|
|
636
|
+
readonly bounds: {
|
|
637
|
+
readonly min: readonly [number, number];
|
|
638
|
+
readonly max: readonly [number, number];
|
|
639
|
+
};
|
|
640
|
+
readonly maxSpeed: number;
|
|
641
|
+
readonly maxAccel: number;
|
|
642
|
+
readonly precision: number;
|
|
643
|
+
readonly rotation?: {
|
|
644
|
+
readonly bits: number;
|
|
645
|
+
} | undefined;
|
|
646
|
+
readonly velocity?: 'send' | 'derive' | 'none' | undefined;
|
|
647
|
+
readonly interpolation: 'linear' | 'hermite' | 'none';
|
|
648
|
+
readonly extrapolateMs: number;
|
|
649
|
+
readonly teleportThreshold: number;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
export declare interface TransformRules3D {
|
|
653
|
+
readonly bounds: {
|
|
654
|
+
readonly min: readonly [number, number, number];
|
|
655
|
+
readonly max: readonly [number, number, number];
|
|
656
|
+
};
|
|
657
|
+
readonly maxSpeed: number;
|
|
658
|
+
readonly maxAccel: number;
|
|
659
|
+
readonly precision: number;
|
|
660
|
+
readonly rotation?: {
|
|
661
|
+
readonly bits: number;
|
|
662
|
+
} | undefined;
|
|
663
|
+
readonly interpolation: 'linear' | 'hermite' | 'none';
|
|
664
|
+
readonly extrapolateMs: number;
|
|
665
|
+
readonly teleportThreshold: number;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
export declare interface TransformSnapshot2D {
|
|
669
|
+
readonly tick: number;
|
|
670
|
+
readonly timeMs: number;
|
|
671
|
+
readonly transform: Transform2D;
|
|
672
|
+
readonly teleport: boolean;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
export declare interface TransformSnapshot3D {
|
|
676
|
+
readonly tick: number;
|
|
677
|
+
readonly timeMs: number;
|
|
678
|
+
readonly transform: Transform3D;
|
|
679
|
+
readonly teleport: boolean;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
export declare type TransformStep<I, R> = (state: Transform2D, input: I, dt: number, rules: R) => Transform2D;
|
|
683
|
+
|
|
684
|
+
export declare type TransformStep3D<I, R> = (state: Transform3D, input: I, dt: number, rules: R) => Transform3D;
|
|
685
|
+
|
|
686
|
+
export declare interface TransformVelocity3D {
|
|
687
|
+
readonly x: number;
|
|
688
|
+
readonly y: number;
|
|
689
|
+
readonly z: number;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
export { }
|