Проверьте свойства, которые изменились с последнего интервала в NodeJS - PullRequest
0 голосов
/ 23 мая 2019

В nodeJS, допустим, у меня есть немного setInterval:

setInterval(() => {
   // ...
}, 50)

И он отправляет клиентским объектам:

setInterval(() => {
   socket.emit("entities", { ... })
}, 50)

Объекты выглядят так:

{
  "0": {
    "collisionRadius": 40,
    "entityClass": "Prop",
    "health": 100,
    "maxHealth": 100,
    "model": "Tree",
    "position": {
      "x": 1970,
      "y": 1477
    },
    "uid": 0,
    "damage": 10,
    "dead": 0,
    "height": 32,
    "hits": [],
    "interpolatedYaw": 0,
    "slowed": 0,
    "stunned": 0,
    "timeDead": 0,
    "width": 32,
    "yaw": 0
  },
  "1": {
    "collisionRadius": 40,
    "entityClass": "Prop",
    "health": 100,
    "maxHealth": 100,
    "model": "Tree",
    "position": {
      "x": 1240,
      "y": 1866
    },
    "uid": 1,
    "damage": 10,
    "dead": 0,
    "height": 32,
    "hits": [],
    "interpolatedYaw": 0,
    "slowed": 0,
    "stunned": 0,
    "timeDead": 0,
    "width": 32,
    "yaw": 0
  },
  "2": {
    "collisionRadius": 40,
    "entityClass": "Prop",
    "health": 100,
    "maxHealth": 100,
    "model": "Tree",
    "position": {
      "x": 2195,
      "y": 2034
    },
    "uid": 2,
    "damage": 10,
    "dead": 0,
    "height": 32,
    "hits": [],
    "interpolatedYaw": 0,
    "slowed": 0,
    "stunned": 0,
    "timeDead": 0,
    "width": 32,
    "yaw": 0
  }
}

Как в каждый интервал отправлять только обновленные свойства от всех сущностей, а если все сущности не изменились, отправлять только true?

Полученные сущности должны выглядеть следующим образомэто:

{
  "0": true,
  "1": {
    "health": 99,
    "position": {
      "x": 1245, /** position and health changed, send them **/
      "y": 1866 /** even if only the x changed, send y too **/
    }
  },
  "2": true /** all the entity stayed the same, so send `true` **/
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...