When script calls Entities.getChildrenIDs*() it is possible to deadlock the main thread, and also invoke
the destructor of Entities and Overlays, which is very NOT thread safe.
The fix is to use a pattern already in use in several places in our codebase.
Use the custom deleter parameter of std::shared_ptr to call deleteLater() instead of destroying the object in place.
This allows any thread to use shared_ptrs of SpatiallyNestables without fear.
Previously avatar used SpatiallyNestable scale to keep track of model rendering scale.
It now uses a new member variable _modelScale instead. This is important because the
notion of "Avatar" space does NOT include scale, so this is now reflected correctly in
the SpatiallyNestable class.
Similarly, EntityItems no longer stuff dimensions into the SpatiallyNestable scale
field. a new _dimensions member variable is used instead. The SpatiallyNestable scale
field for entities should always be one.
Parent joints can now have scale if getAbsoluteJointScaleInObjectFrame() returns a non-zero scale.
This is used in the case of the faux SENSOR_TO_WORLD_MATRIX_INDEX joint.
Overlays now ignore the SpatiallyNestable scale, and render using only orientation, position and dimensions.
Added qDebug stream support for Transform class.
Add continuous drawing mode.
Add new brushes.
Remove some brushes.
Fix animation play distance for when painting in Desktop mode.
Fix Hue animation not starting from the chosen color (would always start
from red).
Fix multiple color polyline.
using the _strokeWidths[] array, as the values don't seem to correspond with
reality. Use a flat 0.075M value for the maxium half of a stroke width instead.
Changed PloyLineEntity code to calculate the scale vector
(which PolyLineEntity uses as the bouding box) and the registration point
(the offset of the bounding box from the first point in the Polyline) based
on the points in the PolyLineEntity so the bounding box is just big enough
to contain all the points in the line.