1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-11-01 20:26:39 +00:00

Merge branch 'objectifyyourtype' into 'master'

Return type as a sol::object instead of a table proxy

Closes #8757

See merge request OpenMW/openmw!4963
This commit is contained in:
Alexei Kotov 2025-10-28 12:13:03 +03:00
commit 23f843c552
3 changed files with 11 additions and 4 deletions

View file

@ -330,10 +330,9 @@ namespace MWLua
return LuaUtil::Box{ bb.center(), bb._max - bb.center() };
};
objectT["type"]
= sol::readonly_property([types = getTypeToPackageTable(context.sol())](const ObjectT& o) mutable {
return types[getLiveCellRefType(o.ptr().mRef)];
});
objectT["type"] = sol::readonly_property(
[types = getTypeToPackageTable(context.sol())](
const ObjectT& o) -> sol::object { return types[getLiveCellRefType(o.ptr().mRef)]; });
objectT["count"] = sol::readonly_property([](const ObjectT& o) { return o.ptr().getCellRef().getCount(); });
objectT[sol::meta_function::equal_to] = [](const ObjectT& a, const ObjectT& b) { return a.id() == b.id(); };

View file

@ -7,6 +7,13 @@ local vfs = require('openmw.vfs')
local world = require('openmw.world')
local I = require('openmw.interfaces')
testing.registerGlobalTest('crash in lua coroutine when accessing type (#8757)', function()
local co = coroutine.wrap(function()
testing.expectEqual(tostring(world.players[1].type), 'Player')
end)
co()
end)
testing.registerGlobalTest('timers', function()
testing.expectAlmostEqual(core.getGameTimeScale(), 30, 'incorrect getGameTimeScale() result')
testing.expectAlmostEqual(core.getSimulationTimeScale(), 1, 'incorrect getSimulationTimeScale result')

View file

@ -61,6 +61,7 @@ local function registerGlobalTest(name, description)
end)
end
registerGlobalTest('crash in lua coroutine when accessing type (#8757)')
registerGlobalTest('timers')
registerGlobalTest('teleport')
registerGlobalTest('getGMST')