Как работает CreateEntity PDU?
Я пытаюсь изучить DIS для небольшого проекта, который я имею в виду.
По сути, у меня есть процесс, который запускает сценарий, и он может получать внешние команды для создания и удаления объектов.
У меня есть другой процесс, карта, которая может отправлять команды процессу сценария, и у меня есть два случая:
- Процесс карты отправляет команду для создания нового объекта, процесс сценария получает его и создает новый объект.
- Процесс карты может создать новый объект без внешних команд (т. Е. Вызванный внутренней логикой сценария). Этот новый объект должен быть уведомлен в DIS.
DIS CreateEntity PDU имеет следующие поля:
- OriginatingEntityID
- ReceivingEntityID
Какие данные должны быть вставлены сюда процессом карты для отправки команды CreteEntity? Как я могу указать, какого типа игрока я хочу создать (F15, Soldier)?
Во втором случае, как я могу уведомить, что новый игрок был создан без внешних команд?
Во втором случае
1 ответ
Все зависит от дизайна вашей симуляции.
SM (менеджер моделирования - который вы должны создать) будет создавать EntityID, и вы будете использовать эти идентификаторы в вашем PDE CreateEntity. Вы также можете жестко их закодировать или создать собственный алгоритм для их генерации. DIS сам по себе не определяет механизм генерации EntityID, но требует, чтобы каждый EntityID был уникальным.
При этом DIS требует, чтобы все объекты обновлялись не реже одного раза в 5 секунд (что не так уж и верно для DIS v7, поскольку теперь эта задержка может управляться для каждого объекта).
Большинство известных мне DIS-совместимых программ контролируют EntityState PDU для обнаружения новых объектов. Если объект не был замечен в течение более 5 секунд, вы можете предположить, что он был уничтожен.
Надеюсь это поможет.