Many render items/payloads contain smart pointers back to the
objects that added them to the scene, including entity and avatar
objects. Currently, those render items are destroyed when the
scene is destroyed very late in the application life-cycle.
There are rare crashes that can occur when these render items are
destroyed. Possibly, due to them referencing objects that have
already been destroyed via raw pointers. In an effort to
eliminate these crashes, we now destroy the scene earlier, within
Application::aboutToQuit() which is connected to the
QCoreApplication::aboutToQuit signal. Also, we guard against null
scene pointer dereferences. Any location that accesses the scene
off the main thread, now checks the validity of the scene pointer.
ZoneEntity is unique in that it is not updated
every frame that it is rendered, but only
when the avatar moves.
This introduces custom code so that the
RenderableZoneEntity initiates an update
in the EntityTreeRenderer on update,
to improve usability of zone editing.
* Removed validation logic from Resource class, Qt does this internally and is more
standards compliant. This should result in more accurate caching and faster resource
fetching when cache is stale and validation fails.
* Added loaded and failed slots to Resource class, so it does not have to be polled.
* NetworkGeometry now uses multiple Resource objects to download
the fst/mapping file and the fbx/obj models.
* NetworkGeometry is no longer a subclass of Resource
* NetworkGeometry now has signals for success and failure, you no longer
have to poll it to determine when loading is complete (except for textures *sigh*)
Some functionality was removed
* NetworkGeometry no longer has a fallback
* NetworkGeometry no longer loads LODs or has lod logic.
* The number of FBXGeometry copies is greatly reduced.
* Model::setURL no supports fallback URL, delayLoad or retainCurrent option.
This can result in a pop when switching avatars, and there's no longer a default
if avatar loading fails.