Refrestnavigationdelphi
Puerto de navegación de refundición a Delphi
Ubicación del código fuente: https://github.com/memononen/recastnavigation
Versión del código fuente: alrededor del 01 de noviembre de 2014
Pautas de portación:
- REPRESTNAVIGATIONDELPHI es un clon directo de refrescante con la menor cantidad de cambios posible, para permitir que los proyectos se sincronicen en el futuro.
- Cualquier cambio/mejoras en la funcionalidad LIB debe incluirse primero en C ++ Master para evitar la separación.
- RND sigue muy de cerca la estructura RN, a excepción de las cosas de GUI, que es VCL por simplicidad en lugar de la solución IMGUI RN.
- Todos los nombres de archivo son los mismos, pero con un prefijo "RN_".
- Algunas unidades se dividieron para evitar dependencias circulares, se llaman rn_unitnameHelper.
Sugiere el código:
- Bucles y bucles de múltiples acondicionamiento "para" donde se cambia el iterador dentro del bucle, se convirtieron en while/bucles repetidos. El código de bucle debe repetirse antes de "continuar".
- Mover el método Los primeros dos argumentos (SRC, DST) deben intercambiarse en Delphi.
- Delphi necesita envolver manipulaciones desbordantes con una directiva {$ o} para supresiones de supresión.
- Delphi necesita la eliminación manual de objetos creados dentro del registro, ya que no tienen soporte de destructor incorporado en ellos.
- Para simplificar el truco del puntero, {$ PointerMath en} tuvo que habilitarse casi en cada unidad.
- La configuración del operador de @ tipificada es de gran ayuda, pero lamentablemente no funciona a veces.
Trampas comunes durante la portada:
- Pasando argumento @SomePointer en lugar de un invasor . Escrito @ ayuda a atraparlos, pero no siempre.
- Llamar métodos de movimiento/relleno sin intercambiar lugares de argumentos.
- Escribir para ... para ... hacer el bucle en lugar de para ... downto ... hacer en casos raros.
Todos:
- Arregle la gran cantidad de fugas de memoria alrededor del código.
- Tempobstacles Demo.
- Se comentan algunas partes, esperando ser portadas.
- Sincronización con el estado actual del código fuente.