diff --git a/BlockLua.dll b/BlockLua.dll index 6d9a7bf..58d6e45 100644 Binary files a/BlockLua.dll and b/BlockLua.dll differ diff --git a/readme.md b/readme.md index b06faf4..1e5e5c2 100644 --- a/readme.md +++ b/readme.md @@ -25,6 +25,7 @@ Lua scripting for Blockland `bl.varName` - Read a TorqueScript global variable `bl['varName']` - Read a TorqueScript global variable (i.e. with special characters in the name, or from an array) `bl.set('varName', value)` - Write a TorqueScript global variable +`bl['namespaceName::funcName'](args)` - Call a namespaced TorqueScript function ### Accessing Torque Objects from Lua `bl.objectName` - Access a Torque object by name diff --git a/src/util/libbl-support.cs b/src/util/libbl-support.cs index f2be6e6..c4032d0 100644 --- a/src/util/libbl-support.cs +++ b/src/util/libbl-support.cs @@ -1,7 +1,7 @@ // Private - Utilities used by libbl from the Lua side -package _bllua_smartEval { +package smartEval { // Allow prepending ' to console commands to eval in lua instead of TS // Also wraps TS lines with echo(...); if they don't end in ; or } function ConsoleEntry::eval() { @@ -28,7 +28,7 @@ package _bllua_smartEval { } } }; -activatePackage(_bllua_smartEval); +activatePackage(smartEval); package _bllua_objectDeletionHook { // Hook object deletion to clean up its lua data diff --git a/src/util/libbl.lua b/src/util/libbl.lua index 34c6357..efd5889 100644 --- a/src/util/libbl.lua +++ b/src/util/libbl.lua @@ -303,7 +303,10 @@ local tsObjectMeta = { for inh in objectInheritedMetas(rawget(t,'_tsClassName')) do if inh[name] then return inh[name] end end - if tsIsFunctionNs(rawget(t,'_tsNamespace'), name) then + if + tsIsFunctionNs(rawget(t,'_tsNamespace'), name) or + tsIsFunctionNs(rawget(t,'_tsName'), name) + then return function(t, ...) local args = {...} local argsS = arglistToTs(args) @@ -921,10 +924,12 @@ end -- bl.new and bl.datablock local function createTsObj(keyword, class, name, inherit, props) local propsT = {} - for k,v in pairs(props) do - if not isValidFuncName(k) then - error('bl.new/bl.datablock: invalid property name \''..k..'\'') end - table.insert(propsT, k..'="'..valToTs(v)..'";') + if props then + for k,v in pairs(props) do + if not isValidFuncName(k) then + error('bl.new/bl.datablock: invalid property name \''..k..'\'') end + table.insert(propsT, k..'="'..valToTs(v)..'";') + end end local objS = _bllua_ts.eval(