X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScripting%2FNasalSys.cxx;h=b38e0fbcd35137e43dd8d7cc8d78281380068995;hb=688d76613e2ece5fdb0e36b5d836719d7a68830c;hp=b65264a8be78a87da896542044c9fa6c4f1c770d;hpb=373d511c6948ae4737b183e0ac38471544b6f499;p=flightgear.git diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index b65264a8b..b38e0fbcd 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -27,10 +27,15 @@ #include "NasalSys.hxx" #include "NasalPositioned.hxx" +#include "NasalCanvas.hxx" +#include "NasalClipboard.hxx" +#include "NasalCondition.hxx" + #include
#include
#include
+ using std::map; static FGNasalSys* nasalSys = 0; @@ -99,6 +104,20 @@ FGNasalSys::FGNasalSys() _callCount = 0; } +// Utility. Sets a named key in a hash by C string, rather than nasal +// string object. +void FGNasalSys::hashset(naRef hash, const char* key, naRef val) +{ + naRef s = naNewString(_context); + naStr_fromdata(s, (char*)key, strlen(key)); + naHash_set(hash, s, val); +} + +void FGNasalSys::globalsSet(const char* key, naRef val) +{ + hashset(_globals, key, val); +} + naRef FGNasalSys::call(naRef code, int argc, naRef* args, naRef locals) { return callMethod(code, naNil(), argc, args, locals); @@ -168,15 +187,6 @@ FGNasalScript* FGNasalSys::parseScript(const char* src, const char* name) return script; } -// Utility. Sets a named key in a hash by C string, rather than nasal -// string object. -void FGNasalSys::hashset(naRef hash, const char* key, naRef val) -{ - naRef s = naNewString(_context); - naStr_fromdata(s, (char*)key, strlen(key)); - naHash_set(hash, s, val); -} - // The get/setprop functions accept a *list* of strings and walk // through the property tree with them to find the appropriate node. // This allows a Nasal object to hold onto a property path and use it @@ -548,6 +558,9 @@ void FGNasalSys::init() hashset(_globals, "__gcsave", _gcHash); initNasalPositioned(_globals, _context, _gcHash); + initNasalCanvas(_globals, _context, _gcHash); + NasalClipboard::init(this); + initNasalCondition(_globals, _context, _gcHash); // Now load the various source files in the Nasal directory simgear::Dir nasalDir(SGPath(globals->get_fg_root(), "Nasal")); @@ -577,6 +590,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;