Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

user finished loading #3398

Open Kuro-Maii opened 3 years ago

Kuro-Maii commented 3 years ago

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

when a user enters the world a logix node can fire off a pulse that they have joined, but also when they (re)spawn. this pulse can be easily used to play a sound or start a visual animation. for a spawning animation I want the animation to transition into a next stage, there seems to be no easy way to set this up currently.

Relevant issues

No response

Describe the solution you'd like

considering in the users own view there is a loading indicator with a count of objects that have been loaded and a count of total objects to load, that goes away when the user is done loading.

it would be nice to have a logix node that fires a pulse when a user is done loading. the pulse will be fired into the world by the player who just finished loading. suggested name: userFinishedLoading suggested output: pulse

alternatively a node with an input of a user or a slot that outputs true when that user or slot is done loading. suggested name: isUserDoneLoading suggested input: user suggested output: bool

potential bonus, a node with an input of a user that outputs the count of currently loaded objects and a count of the total objects to load. (this could be used to have multiple stages to a spawning animation that can be visible to users already in a world) suggested name: userLoading suggested input: user suggested output: int loaded suggested output: int total

Describe alternatives you've considered

a workaround is currently avalible, or has been suggested to me, in the form of setting the update order(?) to an extremely high value, like 2147483647, on a specific item so it will activate last and checking for it with logix. if I understood this correctly.

alternatively show the user a billboard with a "are you done loading?" with a [YES] button that they have to press.

another alternative that was suggested is by making an alternative "waiting world" that then loads the original world and only sends the player over after it has fully loaded. I believe that a variable can be used to activate the wanted animations in the target world?

but this seems even more convoluted then the first option

Additional context

No response

kulzae commented 3 years ago

Possibly related to https://github.com/Neos-Metaverse/NeosPublic/issues/943

Kuro-Maii commented 3 years ago

I don't think it would be related as the node discussed there is intended for use outside the world that is being loaded. as in, I would use it to make a tiny holding world and send the people over later, but it would need global variables to send data over to the targeted world to have effects happen while people are loading in.

to give a somewhat more complete example of the use case of the node I described: this world is already in use by somebody. a new person starts joining this world.

so all the things happen in the world that is currently being loaded.

FlameSoulis commented 3 years ago

A potential issue that I can foresee is what to consider as "finished loading" since the world and avatars occupy the same loading space. The issue is that if a user joins, begins loading, and then another user joins in with new content, should the loading condition be based on the initial load the first user received or be added to the newer content to be loaded as part of the criteria?

Kuro-Maii commented 3 years ago

I don't really see how that is a really problem because it would be a problem as well with the one that only you can see while you are loading. adding to that, the host can and most likely will set a join limit preventing the world from going into an unending loading state due to more and more people joining.

if it actually ends up that an animation or an effect ends up running for too long then there are always ways to mitigate the counter from getting bigger for the total number of assets by simply preforming a write on world join of the number of total assets to load and basing that as the trigger point for the animation to end.

and if a world is going to open a door for you to walk thru only after a complete load then one can either have the session be limited to a select group of people like contacts(+) or even private.

so it will not be a problem with the node, but potentially how world builders will use it. and players abuse it. if that is the worry...