- SGPath path( globals->get_fg_root() );
- SGPath term = path;
- term.append( "Navaids/range.term" );
- SGPath low = path;
- low.append( "Navaids/range.low" );
- SGPath high = path;
- high.append( "Navaids/range.high" );
-
- term_tbl = new SGInterpTable( term.str() );
- low_tbl = new SGInterpTable( low.str() );
- high_tbl = new SGInterpTable( high.str() );
-
+ if (!static_terminalRangeInterp.get()) {
+ // one-time interpolator init
+ SGPath path( globals->get_fg_root() );
+ SGPath term = path;
+ term.append( "Navaids/range.term" );
+ SGPath low = path;
+ low.append( "Navaids/range.low" );
+ SGPath high = path;
+ high.append( "Navaids/range.high" );
+
+ static_terminalRangeInterp.reset(new SGInterpTable(term.str()));
+ static_lowRangeInterp.reset(new SGInterpTable(low.str()));
+ static_highRangeInterp.reset(new SGInterpTable(high.str()));
+ }
+