highfidelity/hifi — pull request #2582 by ey6es (2014-04-01 01:33:16+00:00)
Title: More metavoxel work.

- For version resilience, added support for streaming metadata for QObjects and types compiled with mtc. With hash metadata, QObjects/types can be read and thrown out if their fields don't match the local version. With full metadata, we can remap properties/fields so that we can add/remove/rename/retype properties/fields and still read the shared subset between old and new. In either case, if the fields match exactly, we can use the more efficient generated streaming operators (as opposed to the generated accessors).
- Added basic delta streaming, using our combination of reflection, code generation, and templates to handle object deltas without writing tons of boilerplate code. Includes deltas (and streaming) for collections like lists, maps, and sets.
- Voxelize spanners on insertion into a special set of layers (e.g. spannerColor, spannerNormal), and switch between rendering meshes and voxels based on LOD.
- Provide a mask attribute for spanners, allowing one to set a voxel region and have the spanners clipped according to the mask. Still pretty rough and inefficient.