[This is preliminary documentation and is subject to change.]

Caution:

The only supported platforms are .NET and Unity Pro on Windows. This topic exists only because attempts are being made to keep CAINav interop friendly.

The only provided distributions for CIANav are for the Windows OS. But follows are some tips if you choose to try to get it working on other platforms.

For the native code, you'll need to recompile the cai-nmgen-rcn and cai-nav-rcn libraries for your target platform. The native code is simple, with no Windows dependent headers. If you are inspecting the current libraries and wondering about some unexpected dependancies, don't worry. They are compiled with the /clr (common languare runtime) flag because it makes testing and debugging a whole lot easier. It isn't technically required.

Some platforms, including iOS, require that the C# source code be added directly to the Unity project. This is easy. Simply browse to \cai-nav-x.x.x\source\src\main\Assets in the distribution and copy the CAI folder into your project's Asset folder.

Caution:

A lot of the code protection depends on internal scoping. So take care not to accidentally use internally scoped elements if you are using a source distribution.

Another item you need to be aware of is a serialization gotcha. Never use the .NET ISerializable interface to serialize CAINav objects. Use the various byte[] serialization methods instead. It will save you a lot of headaches down the road if you need to transfer serialized assets between projects on different platforms.