Add createFlightplan Nasal hook
Allows creating a new, inactive by empty Flightplan from Nasal. Can also be used to load a flightplan: var fp1 = createFlightplan(); var fp2 = createFlightplan("p3.xml");
This commit is contained in:
parent
ca067b1a82
commit
194d17ec94
1 changed files with 31 additions and 22 deletions
|
@ -1854,32 +1854,40 @@ static naRef f_tileIndex(naContext c, naRef me, int argc, naRef* args)
|
||||||
return naNum(b.gen_index());
|
return naNum(b.gen_index());
|
||||||
}
|
}
|
||||||
|
|
||||||
static naRef f_route(naContext c, naRef me, int argc, naRef* args)
|
static naRef f_createFlightplan(naContext c, naRef me, int argc, naRef* args)
|
||||||
{
|
{
|
||||||
if (argc == 0) {
|
flightgear::FlightPlanRef fp(new flightgear::FlightPlan);
|
||||||
FGRouteMgr* rm = static_cast<FGRouteMgr*>(globals->get_subsystem("route-manager"));
|
|
||||||
return ghostForFlightPlan(c, rm->flightPlan());
|
if ((argc > 0) && naIsString(args[0])) {
|
||||||
}
|
SGPath path(naStr_data(args[0]));
|
||||||
|
if (!path.exists()) {
|
||||||
if ((argc > 0) && naIsString(args[0])) {
|
std::string pdata = path.utf8Str();
|
||||||
flightgear::FlightPlan* fp = new flightgear::FlightPlan;
|
naRuntimeError(c, "createFlightplan, no file at path %s", pdata.c_str());
|
||||||
SGPath path(naStr_data(args[0]));
|
}
|
||||||
if (!path.exists()) {
|
|
||||||
std::string pdata = path.utf8Str();
|
if (!fp->load(path)) {
|
||||||
naRuntimeError(c, "flightplan, no file at path %s", pdata.c_str());
|
SG_LOG(SG_NASAL, SG_WARN, "failed to load flight-plan from " << path);
|
||||||
|
return naNil();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fp->load(path)) {
|
return ghostForFlightPlan(c, fp.get());
|
||||||
SG_LOG(SG_NASAL, SG_WARN, "failed to load flight-plan from " << path);
|
}
|
||||||
delete fp;
|
|
||||||
return naNil();
|
static naRef f_flightplan(naContext c, naRef me, int argc, naRef* args)
|
||||||
|
{
|
||||||
|
if (argc == 0) {
|
||||||
|
FGRouteMgr* rm = static_cast<FGRouteMgr*>(globals->get_subsystem("route-manager"));
|
||||||
|
return ghostForFlightPlan(c, rm->flightPlan());
|
||||||
}
|
}
|
||||||
|
|
||||||
return ghostForFlightPlan(c, fp);
|
if ((argc > 0) && naIsString(args[0])) {
|
||||||
}
|
return f_createFlightplan(c, me, argc, args);
|
||||||
|
}
|
||||||
naRuntimeError(c, "bad arguments to flightplan()");
|
|
||||||
return naNil();
|
naRuntimeError(c, "bad arguments to flightplan()");
|
||||||
|
return naNil();
|
||||||
}
|
}
|
||||||
|
|
||||||
class NasalFPDelegate : public FlightPlan::Delegate
|
class NasalFPDelegate : public FlightPlan::Delegate
|
||||||
|
@ -2643,7 +2651,8 @@ static struct { const char* name; naCFunction func; } funcs[] = {
|
||||||
{ "findNavaidsByFrequency", f_findNavaidsByFrequency },
|
{ "findNavaidsByFrequency", f_findNavaidsByFrequency },
|
||||||
{ "findNavaidsByID", f_findNavaidsByIdent },
|
{ "findNavaidsByID", f_findNavaidsByIdent },
|
||||||
{ "findFixesByID", f_findFixesByIdent },
|
{ "findFixesByID", f_findFixesByIdent },
|
||||||
{ "flightplan", f_route },
|
{ "flightplan", f_flightplan },
|
||||||
|
{ "createFlightplan", f_createFlightplan },
|
||||||
{ "registerFlightPlanDelegate", f_registerFPDelegate },
|
{ "registerFlightPlanDelegate", f_registerFPDelegate },
|
||||||
{ "createWP", f_createWP },
|
{ "createWP", f_createWP },
|
||||||
{ "createWPFrom", f_createWPFrom },
|
{ "createWPFrom", f_createWPFrom },
|
||||||
|
|
Loading…
Add table
Reference in a new issue