Hey all,
I have written up 3 suggestion on github. They are all realted, but to keep it simple I seperated them. Please go and upvote if you find these useful.
----
First, GetCollisionEngine is not included in the sdk API, meaning officially, we can't make behaviors like 8Direction and Platformer. This is a request to, at minimum add that call to the sdk, though I would like expanded access to GetCollisionCandidates, GetSolidCandidates, PushOutSolid, and a few others.
github.com/Scirra/Construct-feature-requests/issues/153
----
Secondly, PushoutSolid naively assumes users only wish to resolve overlaps with a solid object. It also is tied to Custom Movement, which limits its usefullness across families. I want this functionality available to any object, regardless of whether or not one has the solid attribute. Any object with a collision poly, should be able to perform these actions. Have you ever wanted two of your characters in a game to not overlap? Yeah. There is no reason PushOutSolid is restricted to resolving Solids, and is not simply, PushOut.
github.com/Scirra/Construct-feature-requests/issues/154
----
Lastly, PushOut action has a hardcoded max distance that it checks, if no solution has been found, it aborts. My suggestion is that an additional property is added that allows the user to define this distance. Each game is different, and this hard coded number creates performance issues. Secondly, many collision engines allow for partial resolutions, instead of a full solution in one frame. By adding an additional property "Should Always Resolve", if no solution was found, the instance will still be pushed in the desired direction, by the maximum specified distance.
The benefit is that for many collisions performance will be improved while at the same time the quality of customization and use will be increased.
There is no reason for the behavior to have hard coded assumptions about what the user needs, especially when it takes a significant performance hit to undo what it does.
This suggestion would allow dt based push-outs over multiple frames easy to implement, and importantly, much better performing.
github.com/Scirra/Construct-feature-requests/issues/155
---
TLDR: These should all be easy to add and will vastly improve the the usability of PushOut while increasing performance in specific cases as well.
---
Additional points. While I can't make a common set of ACES, I have made a behavior that does the above, and use it instead of custom movement. But it uses undocumented calls to c3 internals. It is not possible to make the above without at least having an expanded api.