This FAQ answers some of the questions that programmers typically have when inquiring about NavPower. This list is based on questions we receive from you, so feel free to email us at info@navpower.com with any questions that you may have.
 
 
   
 
         
 

How does NavPower handle memory allocation?

Most clients prefer to pass in a block of memory when the NavPower system is initialized and allow the NavPower system to perform all of its dynamic memory allocation from within that block. This ensures that NavPower won't cause any fragmentation in the system heap. The amount of memory required by the NavPower system is typically less than 1 MB, though that will vary based on the number of dynamic objects created at runtime.

How does resource loading work?

Resources such as the NavGraphs are created by the build process as chunks of binary data. The client loads these binary chunks at runtime and calls AddResource() to supply them to the NavPower system. This technique allows very high-performance resource loading since the NavPower system only needs to adjust pointer locations before using a new resource. Optionally, the resource loading supports format conversion such as endian swapping so that the same resource can be used on a range of platforms.

What type of streaming support does the NavPower system have?

The NavPower system has full streaming support with the ability for NavGraphs to connect up with previously loaded NavGraphs. All of the dynamically created objects such as obstacles, jump connections, movers, etc. automatically react appropriately to a new NavGraph being loaded or unloaded in their vicinity. Additionally, the entire NavPower world can be relocated spatially, a technique used by some engines to keep the active portion of the world close to the origin for maximum floating-point accuracy.

What type of thread safety and multi-core support does the NavPower system have?

Starting with NavPower v1.1 the NavPower system has been fully thread safe with the ability to perform all of the movement simulation on a helper thread while, for example, issuing commands from the main thread or adding resources from a loading thread. Starting with NavPower v2.0 the NavPower system adds asynchronous calls for all of the other numerically intensive operations such as dynamic obstacle creation. This allows almost all of the NavPower processing to be offloaded to a separate core or hardware thread.


 
     
     
Copyright © 2010 BabelFlux LLC . All Rights Reserved.