AnalyticalGraphicsInc/cesium — pull request #1080 by mramato (2013-08-26 21:01:54+00:00)
Title: Refactor DyanmicScene Properties

This is a huge pull request that technically has many breaking changes, but in reality; almost all of our users' own code will be unaffected (for example, no sandcastle examples needed to be modified). This change is stage 1 of the DynamicScene & DataSource roadmap (#1045) and vastly improves the underlying property system used by DynamicScene. The monolithic DynamicProperty has been split into many smaller purpose-built objects that make writing DataSources much easier.

This pull request is all about infrastructure, there is no change to current functionality other than exposing new API and removing some obsolete ones. Stage 2 will consist of rewriting the Visualizers to take advantage of the new property system and greatly optimize rendering, by both reducing the amount of work done for static objects as well as taking alternate rendering paths when Geometry and Appearances can be used. This will make static data like GeoJSON and KML fly, and should also provide improvements to dynamic demos like Lots of Satellites.

I don't care if this goes into `b20`. I even started a `b21` for CHANGES because I figured it will take a while for this to merge. I know @shunter has already been looking at this, @emackey this should barely affect the code in your app (if at all), but if you want to try it out and confirm that before we merge as a beta test, that would be great.

Directly from CHANGES
* Breaking changes:
* Removed `processCzml`, use `CzmlDataSource` instead.
* Completely refactored the `DynamicScene` property system. See [#1080](https://github.com/AnalyticalGraphicsInc/cesium/pull/1080) for complete details.
* Removed `CzmlBoolean`, `CzmlCartesian2`, `CzmlCartesian3`, `CzmlColor`, `CzmlDefaults`, `CzmlDirection`, `CzmlHorizontalOrigin`, `CzmlImage`, `CzmlLabelStyle`, `CzmlNumber`, `CzmlPosition`, `CzmlString`, `CzmlUnitCartesian3`, `CzmlUnitQuaternion`, `CzmlUnitSpherical`, and `CzmlVerticalOrigin` since they are no longer needed.
* Removed `DynamicProperty`, `DynamicMaterialProperty`, `DynamicDirectionsProperty`, and `DynamicVertexPositionsProperty`; replacing them with an all new system of properties.
* `Property` - base interface for all properties.
* `CompositeProperty` - a property composed of other properties.
* `ConstantProperty` - a property whose value never changes.
* `SampledProperty` - a property whose value is interpolated from a set of samples.
* `TimeIntervalCollectionProperty` - a property whose value changes based on time interval.
* `MaterialProperty` - base interface for all material properties.
* `CompositeMaterialProperty` - a `CompositeProperty` for materials.
* `ColorMaterialProperty` - a property that maps to a color material. (replaces `DynamicColorMaterial`)
* `GridMaterialProperty` - a property that maps to a grid material. (replaces `DynamicGridMaterial`)
* `ImageMaterialProperty` - a property that maps to an image material. (replaces `DynamicImageMaterial`)
* `PositionProperty`- base interface for all position properties.
* `CompositePositionProperty` - a `CompositeProperty` for positions.
* `ConstantPositionProperty` - a whose value does not change in respect to the `ReferenceFrame` in which is it defined.
* `SampledPositionProperty` - a `SampledProperty` for positions.
* `TimeIntervalCollectionPositionProperty` - A `TimeIntervalCollectionProperty` for positions.
* Added `Packable` and `PackableForInterpolation` interfaces to aid interpolation and in-memory data storage. Also made most core Cesium types implement them.
* Added `InterpolationAlgorithm` interface to codify the base interface already being used by `LagrangePolynomialApproximation`, `LinearApproximation`, and `HermitePolynomialApproximation`.