Objects spawned from a VRC Object Pool no longer call
OnDeserialization()
for late joiners.
Objects get spawned by the pool and placed in the world by the user, after that,
RequestSerialization()
is called. (So it is not related to this issue)
It properly runs and syncs with people already in the world.
Late joiners now will run
Start()
(which, a year ago object pool objects did not run
Start()
or
OnEnable()
, that got fixed now) but never
OnDeserialization()
.
A current workaround is: the
Start()
is called very late and has the variables synced already, so any placement logic can go in there, but that requires updating old worlds.
The documentation says, any networked object is calling
OnDeserialization()
for late joiners, which it doesn't in this case.