I'll try to implement that tomorrow.
It shouldn't be that difficult. (I take it back.) It actually might get really tricky if what you want is to trigger a special every time something lands on a platform, even an idle platform.
Ok, I've added a third empty virtual function that allows you to handle special actors as they are detected in a BlockThingsIterator search. And with it I've managed to get around the EOA_WeakPoint actors.
Those actors always make themselves solid if their owner is solid which works for us just fine.
All we have to do is clear its bSolid flag so it doesn't get in the way of other passengers.
Fetch the last commit, and then either find the function SpecialBTIActor and fill it out
or make a subclass of FCW_Platform and override it, like so
Code: Select all
override bool SpecialBTIActor (Actor mo)
{
if (mo.GetClassName() == "EOA_WeakPoint")
{
mo.bSolid = false;
return true;
}
return false;
}
and test it out with your map. Granted, this isn't fool proof but I'm curious if it makes a difference with things falling off.
In my case, it solves the "passenger getting left behind" problem with one platform in TEST01, but another one still gets stuck half-way on its path. I'm gonna need to investigate that tomorrow.