RecastnavigationDelphi
Порт переоценки навигации в Delphi
Расположение исходного кода: https://github.com/memononen/recastnavigation
Версия исходного кода: около 01 ноября 2014 г.
Руководящие принципы переноса:
- RecastnavigationDelphi - это прямой клон рецистнавигации с максимально небольшими изменениями, чтобы позволить проектам синхронизироваться в будущем.
- Любые изменения/улучшения в функциональности LIB должны быть сначала включены в Master C ++, чтобы избежать разделения.
- RND очень внимательно следует за структурой RN, за исключением GUI, который является VCL для простоты, а не в решении IMGUI.
- Все имена файлов одинаковы, но с префиксом «rn_».
- Некоторые единицы были разделены, чтобы избежать круговых зависимостей, они называются rn_unitnamehelper.
Намекает на код:
- Multi Condition «для« петли и петли, где итератор изменяется внутри петли, были преобразованы в петли/повтор. Код цикла необходимо повторить, прежде чем «продолжить».
- Метод перемещения Первые два аргумента (SRC, DST) должны быть поменены в Delphi.
- Delphi необходимо обернуть переполненные манипуляции с помощью директивы {$ O} в превосходных ошибках.
- Delphi нуждается в ручной утилизации объектов, созданных в рамках записи, поскольку в них нет встроенной поддержки деструкторов.
- Чтобы упростить хитрость указателя, {$ poinmermath on} должен был быть включен почти в каждом блоке.
- Настройка @ оператора - большая помощь, но, к сожалению, иногда не работает.
Общие ловушки во время портирования:
- Передача аргумента @somepointer вместо какого -либо точки . Typed @ помогает поймать их, но не всегда.
- Вызовы методов перемещения/заполнения без замены аргументов мест.
- Написание для .. чтобы .. делать петлю вместо .. Должна ... делай в редких случаях.
Тодос:
- Исправьте множество утечек памяти вокруг кода.
- Tempobstacles Демо.
- Некоторые детали прокомментированы, ожидая переноса.
- Синхронизируется с текущим состоянием исходного кода.