double FGRadioTransmission::ITM_calculate_attenuation(SGGeod pos, double freq, int transmission_type) {
-
+ if((freq < 40.0) || (freq > 20000.0)) // frequency out of recommended range
+ return -1;
/** ITM default parameters
TODO: take them from tile materials (especially for sea)?
**/
while (elevations.size() <= e_size) {
probe_distance += point_distance;
SGGeod probe = SGGeod::fromGeoc(center.advanceRadM( course, probe_distance ));
- const SGMaterial *mat = 0;
+ const simgear::BVHMaterial *material = 0;
double elevation_m = 0.0;
- if (scenery->get_elevation_m( probe, elevation_m, &mat )) {
+ if (scenery->get_elevation_m( probe, elevation_m, &material )) {
+ const SGMaterial *mat;
+ mat = dynamic_cast<const SGMaterial*>(material);
if((transmission_type == 3) || (transmission_type == 4)) {
elevations.push_back(elevation_m);
if(mat) {