diff --git a/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs b/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs index 422c52d..d5e2dac 100644 --- a/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs +++ b/packages/org.gamecult.eve.unity-scene/Runtime/CultMesh/EveUnityCultMeshLiveProviderTransport.cs @@ -56,6 +56,7 @@ namespace GameCult.Eve.UnityScene private EveProviderAdvertisementDocument? _advertisement; private EveAdvertisedSurface? _advertisedSurface; private CultMeshBodyPublicationResolver? _bodyResolver; + private DateTime _nextReceiptPollUtc; public EveUnityCultMeshLiveProviderTransport( string replicaPath, @@ -141,6 +142,26 @@ namespace GameCult.Eve.UnityScene else if (document is EveCommandReceiptDocument receipt) PublishReceipt(receipt); } + PollPendingReceipts(); + } + + private void PollPendingReceipts() + { + if (_pendingCommandIds.Count == 0 || DateTime.UtcNow < _nextReceiptPollUtc) + return; + _nextReceiptPollUtc = DateTime.UtcNow.AddMilliseconds(250); + var interaction = RequireWorldInteraction(); + if (string.IsNullOrWhiteSpace(interaction.ReceiptRecordRef)) + return; + var receipts = _snapshot! + .FetchDocumentsAsync( + recordKeys: _pendingCommandIds + .Select(commandId => ChildRecordKey(interaction.ReceiptRecordRef, commandId)) + .ToArray(), + schemaIds: new[] { EveCommandReceiptDocument.SchemaId }) + .GetAwaiter().GetResult(); + foreach (var receipt in receipts) + PublishReceipt(receipt); } public void SubmitCommand(EveSurfaceCommandRequest request) diff --git a/packages/org.gamecult.eve.unity-scene/package.json b/packages/org.gamecult.eve.unity-scene/package.json index 89cdd9a..ebd9a68 100644 --- a/packages/org.gamecult.eve.unity-scene/package.json +++ b/packages/org.gamecult.eve.unity-scene/package.json @@ -1,7 +1,7 @@ { "name": "org.gamecult.eve.unity-scene", "displayName": "Eve Unity Scene Lowering", - "version": "0.3.13", + "version": "0.3.14", "unity": "2021.3", "description": "Provider-agnostic Unity scene shell for gamecult.eve.surface.v1 interactive world surfaces.", "dependencies": {