Skip to content

Commit 87bd1d3

Browse files
committed
Fixed ConvertLuaTableToVectorOfType() to work with non-pointer types
1 parent 8fbc359 commit 87bd1d3

File tree

2 files changed

+8
-16
lines changed

2 files changed

+8
-16
lines changed

Source/Lua/LuaAdapters.cpp

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -613,11 +613,7 @@ std::list<Entity*>* LuaAdaptersPresetMan::GetAllEntitiesOfGroup(PresetMan& prese
613613
}
614614

615615
MOID LuaAdaptersSceneMan::CastMORay1(SceneMan& sceneMan, const Vector& start, const Vector& ray, const luabind::object& ignoreMOIDs, int ignoreTeam, unsigned char ignoreMaterial, bool ignoreAllTerrain, int skip) {
616-
std::vector<MOID*> ptrVec = ConvertLuaTableToVectorOfType<MOID*>(ignoreMOIDs);
617-
std::vector<MOID> ignoreMOIDsVec;
618-
for (auto ptr : ptrVec) {
619-
ignoreMOIDsVec.push_back(*ptr);
620-
}
616+
std::vector<MOID> ignoreMOIDsVec = ConvertLuaTableToVectorOfType<MOID>(ignoreMOIDs);
621617
return sceneMan.CastMORay(start, ray, ignoreMOIDsVec, ignoreTeam, ignoreMaterial, ignoreAllTerrain, skip);
622618
}
623619

@@ -627,20 +623,12 @@ MOID LuaAdaptersSceneMan::CastMORay2(SceneMan& sceneMan, const Vector& start, co
627623
}
628624

629625
const std::vector<MovableObject*>* LuaAdaptersSceneMan::CastAllMOsRay(SceneMan& sceneMan, const Vector& start, const Vector& ray, const luabind::object& ignoreMOIDs, int ignoreTeam, unsigned char ignoreMaterial, bool ignoreAllTerrain, int skip) {
630-
std::vector<MOID*> ptrVec = ConvertLuaTableToVectorOfType<MOID*>(ignoreMOIDs);
631-
std::vector<MOID> ignoreMOIDsVec;
632-
for (auto ptr : ptrVec) {
633-
ignoreMOIDsVec.push_back(*ptr);
634-
}
626+
std::vector<MOID> ignoreMOIDsVec = ConvertLuaTableToVectorOfType<MOID>(ignoreMOIDs);
635627
return sceneMan.CastAllMOsRay(start, ray, ignoreMOIDsVec, ignoreTeam, ignoreMaterial, ignoreAllTerrain, skip);
636628
}
637629

638630
float LuaAdaptersSceneMan::CastObstacleRay1(SceneMan& sceneMan, const Vector& start, const Vector& ray, Vector& obstaclePos, Vector& freePos, const luabind::object& ignoreMOIDs, int ignoreTeam, unsigned char ignoreMaterial, int skip) {
639-
std::vector<MOID*> ptrVec = ConvertLuaTableToVectorOfType<MOID*>(ignoreMOIDs);
640-
std::vector<MOID> ignoreMOIDsVec;
641-
for (auto ptr : ptrVec) {
642-
ignoreMOIDsVec.push_back(*ptr);
643-
}
631+
std::vector<MOID> ignoreMOIDsVec = ConvertLuaTableToVectorOfType<MOID>(ignoreMOIDs);
644632
return sceneMan.CastObstacleRay(start, ray, obstaclePos, freePos, ignoreMOIDsVec, ignoreTeam, ignoreMaterial, skip);
645633
}
646634

Source/Lua/LuabindDefinitions.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,11 @@ namespace RTE {
7272
std::vector<Type> outVector = {};
7373
if (luaObject.is_valid() && luabind::type(luaObject) == LUA_TTABLE) {
7474
for (luabind::iterator tableItr(luaObject), tableEnd; tableItr != tableEnd; ++tableItr) {
75-
outVector.emplace_back(luabind::object_cast<Type>(*tableItr, luabind::adopt(luabind::result)));
75+
if constexpr (std::is_pointer_v<Type>) {
76+
outVector.emplace_back(luabind::object_cast<Type>(*tableItr, luabind::adopt(luabind::result)));
77+
} else {
78+
outVector.emplace_back(luabind::object_cast<Type>(*tableItr));
79+
}
7680
}
7781
}
7882
return outVector;

0 commit comments

Comments
 (0)