- time.reset( new double[timeNodes.size()] );
- for( simgear::PropertyList::size_type n = 0; n < timeNodes.size(); n++ ) {
- time[n] = timeNodes[n]->getDoubleValue();
+ time.reset( new double[num_times] );
+ if( !timeNodes.empty() ) {
+ for( simgear::PropertyList::size_type n = 0; n < num_times; n++ ) {
+ time[n] = timeNodes[n]->getDoubleValue();
+ }
+ } else {
+ for( simgear::PropertyList::size_type n = 0; n < num_times; n++ ) {
+ double delta = value[n]
+ - (n > 0 ? value[n - 1] : prop->getDoubleValue());
+ time[n] = fabs(delta / rateNodes[n]->getDoubleValue());
+ }