Нащот трассы через портал, разжую предварительно:
1. упираемся в портал
2. находим его конечную точку.
3. трансформируем ОСТАТОЧНУЮ фракцию трассы в локальном пространстве портала. Остаточную фракцию берем с момента упирания в портал. Пример: трасса длинной 2048 юнитов, уперлась в портал, для простоты на фракции 0.5.
Значит из портала выйдет ровно полтрассы, которые мы трансформируем согласно настройкам портала (это несложно) и запустим уже на выходе.
4. разрулим ситуацию с потенциальной рекурсией (вызов трассы внутри трассы),
забавным моментом, когда startsolid может получится на выходе трассы из портала и еще парой прикольных моментов.
5. перепишем код таких штук как FindEntityinPVS и FindClientInPVS с учётом порталов.
6. перепишем код, которые придется поделить на два ( первый закончится, уперевшись в портал, другой начнется на выходе из него же).
Ну по сути с физикой - всё.
1. упираемся в портал
2. находим его конечную точку.
3. трансформируем ОСТАТОЧНУЮ фракцию трассы в локальном пространстве портала. Остаточную фракцию берем с момента упирания в портал. Пример: трасса длинной 2048 юнитов, уперлась в портал, для простоты на фракции 0.5.
Значит из портала выйдет ровно полтрассы, которые мы трансформируем согласно настройкам портала (это несложно) и запустим уже на выходе.
4. разрулим ситуацию с потенциальной рекурсией (вызов трассы внутри трассы),
забавным моментом, когда startsolid может получится на выходе трассы из портала и еще парой прикольных моментов.
5. перепишем код таких штук как FindEntityinPVS и FindClientInPVS с учётом порталов.
6. перепишем код, которые придется поделить на два ( первый закончится, уперевшись в портал, другой начнется на выходе из него же).
Ну по сути с физикой - всё.

