X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScripting%2FNasalSys.cxx;h=aee1dc54d94e4b556f81d4c14fead7fa8a2d0be8;hb=12076bce0e9fb66286f14931e8f4eb12fc0b9b82;hp=5dd28ed1ba6a169f17adb83d7171a3b0259c0e7f;hpb=aa9d0e3a8a2ef8570f18f463b1dac6afe8777953;p=flightgear.git diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index 5dd28ed1b..aee1dc54d 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -13,7 +13,6 @@ #include #include #include -#include // for std::sort #include #include @@ -29,6 +28,7 @@ #include "NasalPositioned.hxx" #include "NasalCanvas.hxx" #include "NasalClipboard.hxx" +#include "NasalCondition.hxx" #include
#include
@@ -225,7 +225,7 @@ static naRef f_getprop(naContext c, naRef me, int argc, naRef* args) case props::DOUBLE: { double dv = p->getDoubleValue(); - if (osg::isNaN(dv)) { + if (SGMisc::isNaN(dv)) { SG_LOG(SG_NASAL, SG_ALERT, "Nasal getprop: property " << p->getPath() << " is NaN"); return naNil(); } @@ -280,7 +280,7 @@ static naRef f_setprop(naContext c, naRef me, int argc, naRef* args) if(naIsNil(n)) naRuntimeError(c, "setprop() value is not string or number"); - if (osg::isNaN(n.num)) { + if (SGMisc::isNaN(n.num)) { naRuntimeError(c, "setprop() passed a NaN"); } @@ -557,9 +557,10 @@ void FGNasalSys::init() hashset(_globals, "__gcsave", _gcHash); initNasalPositioned(_globals, _context, _gcHash); - initNasalCanvas(_globals, _context, _gcHash); NasalClipboard::init(this); - + initNasalCanvas(_globals, _context, _gcHash); + initNasalCondition(_globals, _context, _gcHash); + // Now load the various source files in the Nasal directory simgear::Dir nasalDir(SGPath(globals->get_fg_root(), "Nasal")); loadScriptDirectory(nasalDir); @@ -588,6 +589,9 @@ void FGNasalSys::init() void FGNasalSys::update(double) { + if( NasalClipboard::getInstance() ) + NasalClipboard::getInstance()->update(); + if(!_dead_listener.empty()) { vector::iterator it, end = _dead_listener.end(); for(it = _dead_listener.begin(); it != end; ++it) delete *it; @@ -630,10 +634,8 @@ bool pathSortPredicate(const SGPath& p1, const SGPath& p2) void FGNasalSys::loadScriptDirectory(simgear::Dir nasalDir) { simgear::PathList scripts = nasalDir.children(simgear::Dir::TYPE_FILE, ".nas"); - // sort scripts, avoid loading sequence effects due to file system's - // random directory order - std::sort(scripts.begin(), scripts.end(), pathSortPredicate); - + // Note: simgear::Dir already reports file entries in a deterministic order, + // so a fixed loading sequence is guaranteed (same for every user) for (unsigned int i=0; i