mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-01-18 15:42:34 +00:00
Fix and restrict level postprocessor instance
This commit is contained in:
parent
ab9b6320cb
commit
702ef493f0
1 changed files with 8 additions and 5 deletions
|
@ -56,19 +56,16 @@
|
|||
|
||||
class DLevelPostProcessor : public DObject
|
||||
{
|
||||
DECLARE_ABSTRACT_CLASS(DLevelPostProcessor, DObject)
|
||||
DECLARE_CLASS(DLevelPostProcessor, DObject)
|
||||
public:
|
||||
MapLoader *loader;
|
||||
FLevelLocals *Level;
|
||||
};
|
||||
|
||||
IMPLEMENT_CLASS(DLevelPostProcessor, true, false);
|
||||
IMPLEMENT_CLASS(DLevelPostProcessor, false, false);
|
||||
|
||||
void MapLoader::PostProcessLevel(FName checksum)
|
||||
{
|
||||
auto lc = Create<DLevelPostProcessor>();
|
||||
lc->loader = this;
|
||||
lc->Level = Level;
|
||||
for(auto cls : PClass::AllClasses)
|
||||
{
|
||||
if (cls->IsDescendantOf(RUNTIME_CLASS(DLevelPostProcessor)))
|
||||
|
@ -87,8 +84,14 @@ void MapLoader::PostProcessLevel(FName checksum)
|
|||
continue;
|
||||
}
|
||||
|
||||
auto lc = static_cast<DLevelPostProcessor*>(cls->CreateNew());
|
||||
lc->loader = this;
|
||||
lc->Level = Level;
|
||||
|
||||
VMValue param[] = { lc, checksum.GetIndex(), &Level->MapName };
|
||||
VMCall(func->Variants[0].Implementation, param, 3, nullptr, 0);
|
||||
|
||||
lc->Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue