Expose more runway methods to Nasal
This commit is contained in:
parent
4f4f099ad5
commit
ee1c8a8d66
1 changed files with 23 additions and 6 deletions
|
@ -379,12 +379,10 @@ static const char* airportGhostGetMember(naContext c, void* g, naRef field, naRe
|
||||||
double minLengthFt = fgGetDouble("/sim/navdb/min-runway-length-ft");
|
double minLengthFt = fgGetDouble("/sim/navdb/min-runway-length-ft");
|
||||||
for(unsigned int r=0; r<apt->numRunways(); ++r) {
|
for(unsigned int r=0; r<apt->numRunways(); ++r) {
|
||||||
FGRunway* rwy(apt->getRunwayByIndex(r));
|
FGRunway* rwy(apt->getRunwayByIndex(r));
|
||||||
|
|
||||||
// ignore unusably short runways
|
// ignore unusably short runways
|
||||||
if (rwy->lengthFt() < minLengthFt) {
|
if (rwy->lengthFt() < minLengthFt) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
naRef rwyid = stringToNasal(c, rwy->ident());
|
naRef rwyid = stringToNasal(c, rwy->ident());
|
||||||
naRef rwydata = ghostForRunway(c, rwy);
|
naRef rwydata = ghostForRunway(c, rwy);
|
||||||
naHash_set(*out, rwyid, rwydata);
|
naHash_set(*out, rwyid, rwydata);
|
||||||
|
@ -756,7 +754,9 @@ static const char* runwayGhostGetMember(naContext c, void* g, naRef field, naRef
|
||||||
FGRunway* rwy = (FGRunway*) g;
|
FGRunway* rwy = (FGRunway*) g;
|
||||||
if (!strcmp(fieldName, "threshold")) *out = naNum(rwy->displacedThresholdM());
|
if (!strcmp(fieldName, "threshold")) *out = naNum(rwy->displacedThresholdM());
|
||||||
else if (!strcmp(fieldName, "stopway")) *out = naNum(rwy->stopwayM());
|
else if (!strcmp(fieldName, "stopway")) *out = naNum(rwy->stopwayM());
|
||||||
else if (!strcmp(fieldName, "ils_frequency_mhz")) {
|
else if (!strcmp(fieldName, "reciprocal")) {
|
||||||
|
*out = ghostForRunway(c, rwy->reciprocalRunway());
|
||||||
|
} else if (!strcmp(fieldName, "ils_frequency_mhz")) {
|
||||||
*out = rwy->ILS() ? naNum(rwy->ILS()->get_freq() / 100.0) : naNil();
|
*out = rwy->ILS() ? naNum(rwy->ILS()->get_freq() / 100.0) : naNil();
|
||||||
} else if (!strcmp(fieldName, "ils")) {
|
} else if (!strcmp(fieldName, "ils")) {
|
||||||
*out = ghostForNavaid(c, rwy->ILS());
|
*out = ghostForNavaid(c, rwy->ILS());
|
||||||
|
@ -1197,6 +1197,22 @@ static naRef f_airport_runway(naContext c, naRef me, int argc, naRef* args)
|
||||||
return naNil();
|
return naNil();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static naRef f_airport_runwaysWithoutReciprocals(naContext c, naRef me, int argc, naRef* args)
|
||||||
|
{
|
||||||
|
FGAirport* apt = airportGhost(me);
|
||||||
|
if (!apt) {
|
||||||
|
naRuntimeError(c, "airport.runwaysWithoutReciprocals called on non-airport object");
|
||||||
|
}
|
||||||
|
|
||||||
|
FGRunwayList rwylist(apt->getRunwaysWithoutReciprocals());
|
||||||
|
naRef runways = naNewVector(c);
|
||||||
|
for (unsigned int r=0; r<rwylist.size(); ++r) {
|
||||||
|
FGRunway* rwy(rwylist[r]);
|
||||||
|
naVec_append(runways, ghostForRunway(c, apt->getRunwayByIdent(rwy->ident())));
|
||||||
|
}
|
||||||
|
return runways;
|
||||||
|
}
|
||||||
|
|
||||||
static naRef f_airport_taxiway(naContext c, naRef me, int argc, naRef* args)
|
static naRef f_airport_taxiway(naContext c, naRef me, int argc, naRef* args)
|
||||||
{
|
{
|
||||||
FGAirport* apt = airportGhost(me);
|
FGAirport* apt = airportGhost(me);
|
||||||
|
@ -2412,6 +2428,7 @@ naRef initNasalPositioned(naRef globals, naContext c, naRef gcSave)
|
||||||
hashset(c, gcSave, "airportProto", airportPrototype);
|
hashset(c, gcSave, "airportProto", airportPrototype);
|
||||||
|
|
||||||
hashset(c, airportPrototype, "runway", naNewFunc(c, naNewCCode(c, f_airport_runway)));
|
hashset(c, airportPrototype, "runway", naNewFunc(c, naNewCCode(c, f_airport_runway)));
|
||||||
|
hashset(c, airportPrototype, "runwaysWithoutReciprocals", naNewFunc(c, naNewCCode(c, f_airport_runwaysWithoutReciprocals)));
|
||||||
hashset(c, airportPrototype, "helipad", naNewFunc(c, naNewCCode(c, f_airport_runway)));
|
hashset(c, airportPrototype, "helipad", naNewFunc(c, naNewCCode(c, f_airport_runway)));
|
||||||
hashset(c, airportPrototype, "taxiway", naNewFunc(c, naNewCCode(c, f_airport_taxiway)));
|
hashset(c, airportPrototype, "taxiway", naNewFunc(c, naNewCCode(c, f_airport_taxiway)));
|
||||||
hashset(c, airportPrototype, "tower", naNewFunc(c, naNewCCode(c, f_airport_tower)));
|
hashset(c, airportPrototype, "tower", naNewFunc(c, naNewCCode(c, f_airport_tower)));
|
||||||
|
|
Loading…
Reference in a new issue