Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
139 stars 2 forks source link

[ProtoFlux] New node to allow more options for setting user Position / Rotation #3144

Open Zyro1331 opened 1 week ago

Zyro1331 commented 1 week ago

Is your feature request related to a problem? Please describe.

I've ran into a problem while developing a game world, I normally use the "Set Feet Position" ProtoFlux node to teleport users between various locations. Image

The Set Feet Position node is currently being offset by the Procedural Animation System, which causes it to be wildly inaccurate upon setting a user's Feet Position after a large change in velocity. Here's a screenshot showcasing said offset. Image

There is no time for a user's avatar animations to settle down after their velocity is reset and their position is restored, so it causes the feet to be wildly offset from where their intended respawn position is. I'd like to try and propose two new nodes that allow me to reliably set the position of a user, that also gives more options to not be offset by the Procedural Animation System.

Describe the solution you'd like

Currently, the only nodes to discreetly set the position of a user is Set Head Position, Set Hips Position, and Set Feet Position. All of which seem to be offset by the Procedural Animation System. (It's the same story with their rotational counterparts too.)

Something that would help with my endeavor is something like a "Set UserNode Position" node. It's certainly an odd name but it would massively increase the reliability of teleporting users to various points with ease. It would allow more flexibility than it's already existing counterparts by simply allowing users to select what UserNode to use as a basis. This node could also replace the above Set Feet, Set Hips, and Set Head nodes since it would already capable of doing those same things depending on the option chosen. Image

Set Head Direction / Rotation suffers from the same offset by the Procedural Animation System when in Desktop mode. So if you want to orient a user's Viewport to directly point at a certain object or direction, the "Set UserNode Rotation" node would allow this without any weirdness. Another scenario, If you wished to use the center direction of a user's playspace as a reference point to rotate off of, you could do exactly that too.

Describe alternatives you've considered

I'm not aware of any other ProtoFlux implementations that allow me to Set Position / Rotation of a user while ignoring any offsets the Procedural Animation System would introduce. I feel that the above solution would be great as it could clean up those six other nodes and simplify it to just two, as well as increase the capabilities.

Additional Context

UserNode (AKA UserRoot+UserNode) is seen in many components, but I'm surprised to not see it used anywhere in ProtoFlux. You can get a full list of components that utilize it here: https://wiki.resonite.com/index.php?search=UserNode&title=Special%3ASearch&profile=default&fulltext=1

Requesters

@zyro1331

shiftyscales commented 1 week ago

There is no time for a user's avatar animations to settle down after their velocity is reset and their position is restored, so it causes the feet to be wildly offset from where their intended respawn position is.

This portion is effectively the same issue I highlight in #2850.