It was possible for the render thread to iterate over a map while the main thread mutates the same map.
This could have led to memory corruption and crashes.
To fix this we make a copy of the collection and pass the copy to the lambda that executes on the render thread.
Hooked up Bullet's internal debug draw functionality to our client.
Under the Developer > Physics Menu there are five new items:
* Show Bullet Collision - will draw all collision shapes in wireframe. WARNING: can be slow on large scenes.
* Show Bullet Bounding Boxes - will draw axis aligned bounding boxes around all physics shapes.
* Show Bullet Contact Points - will draw all contact points where two or more objects are colliding.
* Show Bullet Constraints - will render wire frame axes for each constraint connecting bodies together.
* Show Bullet Constraint Limits - will render the joint limits for each constraint.
* Bug fix for eye tracking in HMD, the "up" orientation of your eyes now match your head.
* DebugDraw: added drawRay method.
* Application: Renamed preRender to postUpdate
* AvatarManager: added postUpdate method that iterates over all avatars.
* MyAvatar: Renamed preRender to preDisplaySide
* MyAvatar: split preRender code into postUpdate and preDisplaySide.
* Removed "Show who is looking at me", "Render focus indicator" and "Render lookat target" debug draw.
* Split "Show Look At Vectors" into "Show My Look At Vectors" and "Show Other Look At Vectors", to make it easier to debug eye tracking.
* "Show Look at Vectors" now draws the right eye red and the left eye blue.
* Removed Avatar and MyAvatar renderBody
* Removed look at rendering from head.
* GLMHelpers: Bugfix for generateBasisVectors when up primary and secondary axis were orthogonal
* In HMD mode head orientation and position is set.
* When not in HMD only orientation is set, position should
default to the underlying pose position.
* AnimSkeleton now returns AnimPoses by const ref.
* AnimDebugDraw: uses references to Poses on the stack instead of copies
within inner loops.
* AnimDebugDraw: Removed unnecessary universal refs in range based for loops.
* Now always works, regardless of whether or not Rig or AnimGraph animations
are enabled.
* Changed joint radius to 1 cm.
* Changed xyz axis length to 4 cm.
* Debug Draw Bind Pose - used to display the current avatar's bind pose
* Debug Draw Animation - used to display the current avatar's AnimGraph animation.
Currently does not work with old animation so it's only valid when Enable Anim Graph is true.
* Draw Mesh - used to hide or display the avatar mesh.