{
  "slug": "networked-aframe-periodic-component-sync",
  "version": 1,
  "project": "networked-aframe",
  "title": "Networked-Aframe periodic component synchronization",
  "description": "The owner selects dirty schema-indexed component fields, batches entity updates and sends them through its adapter. The receiving adapter routes each networkId, then the remote component applies or interpolates matching schema fields.",
  "config": {
    "design": "architecture-environments-parallel-lanes-aligned-rows-logo-nodes",
    "name": "periodic-component-sync",
    "style": "clean",
    "palette": [
      "#3d6685"
    ],
    "parameters": {
      "lanes": [
        {
          "name": "Sending client",
          "description": "Owned, changed entities"
        },
        {
          "name": "Receiving client",
          "description": "Existing remote entities"
        }
      ],
      "nodes": [
        {
          "id": "local",
          "label": "Local components",
          "description": "Read schema-selected data",
          "icon": "tabler:cube",
          "lane": "Sending client",
          "row": 0
        },
        {
          "id": "encode",
          "label": "Schema indices",
          "description": "syncDirty(): changed fields",
          "icon": "tabler:list-numbers",
          "lane": "Sending client",
          "row": 1
        },
        {
          "id": "batch",
          "label": "Batch owned updates",
          "description": "'um': { d: [entityData] }",
          "icon": "tabler:stack",
          "lane": "Sending client",
          "row": 2
        },
        {
          "id": "send",
          "label": "NAF adapter",
          "description": "broadcastData('um', data)",
          "icon": "tabler:network",
          "lane": "Sending client",
          "row": 3
        },
        {
          "id": "remote",
          "label": "Remote components",
          "description": "Apply or interpolate data",
          "icon": "tabler:cube",
          "lane": "Receiving client",
          "row": 0
        },
        {
          "id": "decode",
          "label": "Schema indices",
          "description": "networkUpdate(): same schema",
          "icon": "tabler:list-numbers",
          "lane": "Receiving client",
          "row": 1
        },
        {
          "id": "lookup",
          "label": "Unpack and route",
          "description": "Match by networkId",
          "icon": "tabler:route",
          "lane": "Receiving client",
          "row": 2
        },
        {
          "id": "receive",
          "label": "NAF adapter",
          "description": "messageListener: 'um'",
          "icon": "tabler:network",
          "lane": "Receiving client",
          "row": 3
        }
      ],
      "edges": [
        {
          "from": "local",
          "to": "encode"
        },
        {
          "from": "encode",
          "to": "batch"
        },
        {
          "from": "batch",
          "to": "send"
        },
        {
          "from": "send",
          "to": "receive",
          "label": "Transport"
        },
        {
          "from": "receive",
          "to": "lookup"
        },
        {
          "from": "lookup",
          "to": "decode"
        },
        {
          "from": "decode",
          "to": "remote"
        }
      ]
    },
    "accessibility": {
      "title": "Networked-Aframe periodic component synchronization",
      "description": "The owner selects dirty schema-indexed component fields, batches entity updates and sends them through its adapter. The receiving adapter routes each networkId, then the remote component applies or interpolates matching schema fields."
    }
  },
  "files": {
    "svg": {
      "url": "/diagram-sources/networked-aframe-periodic-component-sync/v1/diagram.svg",
      "sha256": "77d699e1a982b3a9d62264cee02d42999e729b54f3966e8da377fc3c9dc3c831"
    },
    "png": {
      "url": "/diagram-sources/networked-aframe-periodic-component-sync/v1/diagram.png",
      "sha256": "3f9748ef84ffd3b6dc73bc0a222e5eb313eab188b557092ee777b7a8ea36e183"
    }
  }
}
