Это кажется мне несколько странной архитектурой - вы будете вынуждены проделать большую работу, чтобы синхронизировать два отдельных графа сцены, и вы, вероятно, сочтете невозможным полностью отключить их (ситуация, которую вы описываете в вопрос пример, но будет намного больше .....)
Я бы посоветовал вам подумать об одном графе игровых объектов. У вас все еще могут быть физические стратегии и стратегии рендеринга для каждого объекта, но я бы посоветовал рассматривать их скорее как «плагины» для игрового объекта, а не как отдельные графы объектов. Таким образом, у игрового объекта могут быть векторы положения / вращения, к которым имеют доступ как физические компоненты, так и компоненты рендеринга.
Альтернативой, если вам не нравится ре-архитектура для одного графа игровых объектов, было бы выделение информации о положении / вращении в отдельную структуру, например, большой массив векторов. Объекты физики и рендеринга могут иметь общий доступ к этой структуре.
Это будет означать:
- Как физическим объектам, так и объектам рендеринга необходимо знать индекс их собственной позиции в массиве (либо путем непосредственного хранения индекса, либо с помощью некоторой формы поиска в хэше)
- Объекты физики и рендеринга должны быть довольны одинаковыми форматами положения / вращения
- При создании / уничтожении объектов вам понадобится дополнительная бухгалтерия.
- Вы должны быть немного осторожны с параллелизмом, например. что произойдет, если новые объекты физики будут добавлены во время рендеринга?
В целом, я не уверен, что это принесет вам большую пользу ...... но это может иметь смысл, если у вас есть какие-то другие ограничения, такие как дизайн сторонней библиотеки физики.