(
runtimeScene: gdjs.RuntimeScene
)
| 1644 | }; |
| 1645 | |
| 1646 | const handleUpdateSceneMessagesToSend = ( |
| 1647 | runtimeScene: gdjs.RuntimeScene |
| 1648 | ): void => { |
| 1649 | if (!gdjs.multiplayer.isReadyToSendOrReceiveGameUpdateMessages()) { |
| 1650 | // Don't send messages if the multiplayer is not ready. |
| 1651 | return; |
| 1652 | } |
| 1653 | |
| 1654 | const sceneNetworkSyncData = runtimeScene.getNetworkSyncData({ |
| 1655 | playerNumber: gdjs.multiplayer.getCurrentPlayerNumber(), |
| 1656 | isHost: gdjs.multiplayer.isCurrentPlayerHost(), |
| 1657 | }); |
| 1658 | if (!sceneNetworkSyncData) { |
| 1659 | return; |
| 1660 | } |
| 1661 | |
| 1662 | const isSceneSyncDataDifferent = |
| 1663 | isSceneDifferentFromLastSync(sceneNetworkSyncData); |
| 1664 | const shouldSyncScene = |
| 1665 | !hasSceneBeenSyncedRecently() || |
| 1666 | isSceneSyncDataDifferent || |
| 1667 | numberOfForcedSceneUpdates > 0; |
| 1668 | |
| 1669 | if (isSceneSyncDataDifferent) { |
| 1670 | numberOfForcedSceneUpdates = 3; |
| 1671 | } |
| 1672 | |
| 1673 | if (!shouldSyncScene) { |
| 1674 | return; |
| 1675 | } |
| 1676 | |
| 1677 | const connectedPeerIds = gdjs.multiplayerPeerJsHelper.getAllPeers(); |
| 1678 | const { messageName, messageData } = createUpdateSceneMessage({ |
| 1679 | sceneNetworkSyncData, |
| 1680 | }); |
| 1681 | |
| 1682 | sendDataTo(connectedPeerIds, messageName, messageData); |
| 1683 | |
| 1684 | lastSceneSyncTimestamp = getTimeNow(); |
| 1685 | lastSentSceneSyncData = sceneNetworkSyncData; |
| 1686 | numberOfForcedSceneUpdates = Math.max(numberOfForcedSceneUpdates - 1, 0); |
| 1687 | }; |
| 1688 | |
| 1689 | const handleUpdateSceneMessagesReceived = ( |
| 1690 | runtimeScene: gdjs.RuntimeScene |
nothing calls this directly
no test coverage detected