fix named ts object method calling

This commit is contained in:
Redo
2025-10-06 00:13:00 -05:00
parent edf31c178c
commit 5f98dc017b
4 changed files with 13 additions and 7 deletions

Binary file not shown.

View File

@@ -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

View File

@@ -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

View File

@@ -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,11 +924,13 @@ end
-- bl.new and bl.datablock
local function createTsObj(keyword, class, name, inherit, props)
local propsT = {}
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(
'return '..keyword..' '..class..'('..