#include <sys/stat.h>
#include <fstream>
#include <sstream>
-#include <algorithm> // for std::sort
#include <simgear/nasal/nasal.h>
#include <simgear/props/props.hxx>
#include "NasalPositioned.hxx"
#include "NasalCanvas.hxx"
#include "NasalClipboard.hxx"
+#include "NasalCondition.hxx"
#include <Main/globals.hxx>
#include <Main/util.hxx>
case props::DOUBLE:
{
double dv = p->getDoubleValue();
- if (osg::isNaN(dv)) {
+ if (SGMisc<double>::isNaN(dv)) {
SG_LOG(SG_NASAL, SG_ALERT, "Nasal getprop: property " << p->getPath() << " is NaN");
return naNil();
}
if(naIsNil(n))
naRuntimeError(c, "setprop() value is not string or number");
- if (osg::isNaN(n.num)) {
+ if (SGMisc<double>::isNaN(n.num)) {
naRuntimeError(c, "setprop() passed a NaN");
}
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);
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<scripts.size(); ++i) {
SGPath fullpath(scripts[i]);
SGPath file = fullpath.file();