The FishyPlatform class has its own custom arguments.
Platforms can be grouped together so that when one is activated the others will move with it and orbit around it as the mover rotates. This main platform will be referred to as the "origin" or "group origin".
"Group move" affects movement imposed by the group origin.
Flag 32768 is intended for very large, tightly packed platforms that have a lot of passengers.
Normally when a platform moves, all of its passengers will be moved at once without colliding with each other.
Flag 32768 changes this subtly by making sure all passengers from all platforms in the group won't collide with each other.
(This is not always desirable however. That's why it's optional.)
What's also included is a platform specific interpolation point class. (Though the old interpolation point class is still usable).
Features include: travel/hold time can be in seconds or tics. Travel/hold time can have independent time units.
Setting travel time to a negative value is interpreted as speed in map units per tic. (This also works on the old interpolation point class.)
If you want to set pitch, you have to do it from the "Properties" tab, just like angle and roll.
(Assuming you're using Ultimate Doom Builder as your map editor.)
Speaking of, you can have platforms that interpolate their roll, just like angle and pitch.
The platform interpolation point arguments are thus
Unlike PathFollower and its subclasses, platforms can intelligently use portals.
Though those are only static line portals and interactive sector portals.
There are several ACS utility functions that can be used with platforms.
Check out:
https://github.com/FishyClock/3Dplatfor ... /fplat.acs
There's also a few test maps in addition to the demo map. Feel free to look at those too.
Since v1.1.0:
- New actor flag: +CARRIABLE. (Or FishyPlatform.CARRIABLE) - allows platform to be carried by other platforms.
- New property: AirFriction. (Or FishyPlatform.AirFriction) - for +NOGRAVITY & +PUSHABLE platforms. (So they don't fly until hitting a wall.)
Since v1.1.1:
- Three empty virtual functions for modders to ease up making special actors
work with platforms:
void
PassengerPreMove(Actor mo) - which is always called before attempting to move a passenger.
void
PassengerPostMove(Actor mo, bool moved) - which is always called after attempting to move a passenger.
And
bool
SpecialBTIActor(Actor mo) - which allows intercepting actors detected in the platform's BlockThingIterator searches.
Return "true" to skip processing this actor (mo) and go to the next blockmap result.
Return "false" to do the usual checks (Is it within range, is it carriable, etc).
Since v2.0:
- Option flag 32768.
- Platform argument 5 - allowing to give platforms thing specials+arguments. This was impossible before without ruining the platform's behavior.
- Setting a negative travel time is interpreted as speed in map units per tic. Meaning you can have platforms that go at a consistent speed regardless of travel distance.
- A generic platform subclass that makes use of
A_ChangeModel to give itself a basic/generic model. The parameters to call A_ChangeModel with are set via user variables. (Check the "Custom" tab when editing Thing.) The advantage of this is you don't need to define a class and a modeldef entry per model if all you want is to use exported map geometry. The drawback is you won't see the changes in UDB's Visual Mode in real time.
- One user variable for Platform Interpolation Points (check "Custom" tab) that tells platforms to not move to this point's position. Convenient if you just wanted to use the point for rotating the platform and nothing more.
- Added ACS functions: FishyPlat_HasPassenger, *_Interpolate, *_NextNode, *_PrevNode - see
fplat.acs for more info.
Since v2.1:
- The platform's radius and height can optionally be scaled by the "Scale" values under the "Action / Tag / Misc." tab. Unlike other options, this one is a user variable that you can find under the "Custom" tab.