1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-16 22:46:34 +00:00

Use Context::initializeOnce

This commit is contained in:
Evil Eye 2025-07-17 16:42:24 +02:00
parent 183652e51d
commit b61d8fb585

View file

@ -299,35 +299,33 @@ namespace MWLua
}; };
} }
if (view["openmw_cellbindings"] != sol::nil) if (context.initializeOnce("openmw_cellbindings"))
return; // Only add the usertype once {
auto pathGridT = view.new_usertype<ESM::Pathgrid>("ESM3_PathGrid");
auto pathGridT = view.new_usertype<ESM::Pathgrid>("ESM3_PathGrid"); pathGridT[sol::meta_function::to_string] = [](const ESM::Pathgrid& rec) -> std::string {
pathGridT[sol::meta_function::to_string] = [](const ESM::Pathgrid& rec) -> std::string { return "ESM3_PathGrid[" + rec.mCell.toDebugString() + "]";
return "ESM3_PathGrid[" + rec.mCell.toDebugString() + "]"; };
}; pathGridT["getPoints"] = [](sol::this_state lua, const ESM::Pathgrid& rec) -> sol::table {
pathGridT["getPoints"] = [](sol::this_state lua, const ESM::Pathgrid& rec) -> sol::table { sol::table points(lua, sol::create);
sol::table points(lua, sol::create); for (const ESM::Pathgrid::Point& point : rec.mPoints)
for (const ESM::Pathgrid::Point& point : rec.mPoints) {
{ sol::table table(lua, sol::create);
sol::table table(lua, sol::create); table["autoGenerated"] = point.mAutogenerated == 0;
table["autoGenerated"] = point.mAutogenerated == 0; table["relativePosition"] = osg::Vec3f(point.mX, point.mY, point.mZ);
table["relativePosition"] = osg::Vec3f(point.mX, point.mY, point.mZ); sol::table edges(lua, sol::create);
sol::table edges(lua, sol::create); table["connections"] = edges;
table["connections"] = edges; points.add(table);
points.add(table); }
} for (const ESM::Pathgrid::Edge& edge : rec.mEdges)
for (const ESM::Pathgrid::Edge& edge : rec.mEdges) {
{ sol::table p1 = points[edge.mV0 + 1];
sol::table p1 = points[edge.mV0 + 1]; sol::table p2 = points[edge.mV1 + 1];
sol::table p2 = points[edge.mV1 + 1]; p1.get<sol::table>("connections").add(p2);
p1.get<sol::table>("connections").add(p2); p2.get<sol::table>("connections").add(p1);
p2.get<sol::table>("connections").add(p1); }
} return points;
return points; };
}; }
view["openmw_cellbindings"] = true;
} }
void initCellBindingsForLocalScripts(const Context& context) void initCellBindingsForLocalScripts(const Context& context)