Skip to content

Commit

Permalink
Merge pull request #7573 from virtualcitySYSTEMS/feature-reactiveStyl…
Browse files Browse the repository at this point in the history
…eObject

Feature reactive Cesium3DTileStyle.style object
  • Loading branch information
lilleyse authored Mar 30, 2019
2 parents 646faf6 + 5f05495 commit 46cdb02
Show file tree
Hide file tree
Showing 3 changed files with 1,202 additions and 23 deletions.
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Change Log

##### Breaking Changes :mega:
* `Resource.fetchImage` now returns an `ImageBitmap` instead of `Image` when supported. This allows for decoding images while fetching using `createImageBitmap` to greatly speed up texture upload and decrease frame drops when loading models with large textures. [#7579](https://github.com/AnalyticalGraphicsInc/cesium/pull/7579)
* `Cesium3DTileStyle.style` now has an empty `Object` as its default value, instead of `undefined`. [#7567](https://github.com/AnalyticalGraphicsInc/cesium/issues/7567)

##### Deprecated :hourglass_flowing_sand:
* `Resource.fetchImage` now takes an options object. Use `resource.fetchImage({ preferBlob: true })` instead of `resource.fetchImage(true)`. The previous function definition will no longer work in 1.57. [#7579](https://github.com/AnalyticalGraphicsInc/cesium/pull/7579)
Expand All @@ -13,6 +14,7 @@ Change Log
* `Resource.fetchImage` now has a `flipY` option to vertically flip an image during fetch & decode. It is only valid when `ImageBitmapOptions` is supported by the browser. [#7579](https://github.com/AnalyticalGraphicsInc/cesium/pull/7579)
* Added `backFaceCulling` and `normalShading` options to `PointCloudShading`. Both options are only applicable for point clouds containing normals. [#7399](https://github.com/AnalyticalGraphicsInc/cesium/pull/7399)
* Added support for touch and hold gesture. The touch and hold delay can be customized by updating `ScreenSpaceEventHandler.touchHoldDelayMilliseconds`. [#7286](https://github.com/AnalyticalGraphicsInc/cesium/pull/7286)
* `Cesium3DTileStyle.style` reacts to updates and represents the current state of the style. [#7567](https://github.com/AnalyticalGraphicsInc/cesium/issues/7567)

##### Fixes :wrench:
* Fixed the value for `BlendFunction.ONE_MINUS_CONSTANT_COLOR`. [#7624](https://github.com/AnalyticalGraphicsInc/cesium/pull/7624)
Expand Down
47 changes: 42 additions & 5 deletions Source/Scene/Cesium3DTileStyle.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ define([
* @see {@link https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification/Styling|3D Tiles Styling language}
*/
function Cesium3DTileStyle(style) {
this._style = undefined;
this._style = {};
this._ready = false;

this._show = undefined;
Expand Down Expand Up @@ -112,9 +112,8 @@ define([
}

function setup(that, styleJson) {
that._style = clone(styleJson, true);

styleJson = defaultValue(styleJson, defaultValue.EMPTY_OBJECT);
styleJson = defaultValue(clone(styleJson, true), that._style);
that._style = styleJson;

that.show = styleJson.show;
that.color = styleJson.color;
Expand Down Expand Up @@ -161,6 +160,7 @@ define([

function getExpression(tileStyle, value) {
var defines = defaultValue(tileStyle._style, defaultValue.EMPTY_OBJECT).defines;

if (!defined(value)) {
return undefined;
} else if (typeof value === 'boolean' || typeof value === 'number') {
Expand All @@ -173,6 +173,17 @@ define([
return value;
}

function getJsonFromExpression(expression) {
if (!defined(expression)) {
return undefined;
} else if (defined(expression.expression)) {
return expression.expression;
} else if (defined(expression.conditionsExpression)) {
return clone(expression.conditionsExpression, true);
}
return expression;
}

defineProperties(Cesium3DTileStyle.prototype, {
/**
* Gets the object defining the style using the
Expand All @@ -183,7 +194,7 @@ define([
* @type {Object}
* @readonly
*
* @default undefined
* @default {}
*
* @exception {DeveloperError} The style is not loaded. Use Cesium3DTileStyle.readyPromise or wait for Cesium3DTileStyle.ready to be true.
*/
Expand Down Expand Up @@ -295,6 +306,7 @@ define([
},
set : function(value) {
this._show = getExpression(this, value);
this._style.show = getJsonFromExpression(this._show);
this._showShaderFunctionReady = false;
}
},
Expand Down Expand Up @@ -357,6 +369,7 @@ define([
},
set : function(value) {
this._color = getExpression(this, value);
this._style.color = getJsonFromExpression(this._color);
this._colorShaderFunctionReady = false;
}
},
Expand Down Expand Up @@ -424,6 +437,7 @@ define([
},
set : function(value) {
this._pointSize = getExpression(this, value);
this._style.pointSize = getJsonFromExpression(this._pointSize);
this._pointSizeShaderFunctionReady = false;
}
},
Expand Down Expand Up @@ -473,6 +487,7 @@ define([
},
set : function(value) {
this._pointOutlineColor = getExpression(this, value);
this._style.pointOutlineColor = getJsonFromExpression(this._pointOutlineColor);
}
},

Expand Down Expand Up @@ -521,6 +536,7 @@ define([
},
set : function(value) {
this._pointOutlineWidth = getExpression(this, value);
this._style.pointOutlineWidth = getJsonFromExpression(this._pointOutlineWidth);
}
},

Expand Down Expand Up @@ -569,6 +585,7 @@ define([
},
set : function(value) {
this._labelColor = getExpression(this, value);
this._style.labelColor = getJsonFromExpression(this._labelColor);
}
},

Expand Down Expand Up @@ -617,6 +634,7 @@ define([
},
set : function(value) {
this._labelOutlineColor = getExpression(this, value);
this._style.labelOutlineColor = getJsonFromExpression(this._labelOutlineColor);
}
},

Expand Down Expand Up @@ -665,6 +683,7 @@ define([
},
set : function(value) {
this._labelOutlineWidth = getExpression(this, value);
this._style.labelOutlineWidth = getJsonFromExpression(this._labelOutlineWidth);
}
},

Expand Down Expand Up @@ -713,6 +732,7 @@ define([
},
set : function(value) {
this._font = getExpression(this, value);
this._style.font = getJsonFromExpression(this._font);
}
},

Expand Down Expand Up @@ -761,6 +781,7 @@ define([
},
set : function(value) {
this._labelStyle = getExpression(this, value);
this._style.labelStyle = getJsonFromExpression(this._labelStyle);
}
},

Expand Down Expand Up @@ -809,6 +830,7 @@ define([
},
set : function(value) {
this._labelText = getExpression(this, value);
this._style.labelText = getJsonFromExpression(this._labelText);
}
},

Expand Down Expand Up @@ -857,6 +879,7 @@ define([
},
set : function(value) {
this._backgroundColor = getExpression(this, value);
this._style.backgroundColor = getJsonFromExpression(this._backgroundColor);
}
},

Expand Down Expand Up @@ -896,6 +919,7 @@ define([
},
set : function(value) {
this._backgroundPadding = getExpression(this, value);
this._style.backgroundPadding = getJsonFromExpression(this._backgroundPadding);
}
},

Expand Down Expand Up @@ -944,6 +968,7 @@ define([
},
set : function(value) {
this._backgroundEnabled = getExpression(this, value);
this._style.backgroundEnabled = getJsonFromExpression(this._backgroundEnabled);
}
},

Expand Down Expand Up @@ -983,6 +1008,7 @@ define([
},
set : function(value) {
this._scaleByDistance = getExpression(this, value);
this._style.scaleByDistance = getJsonFromExpression(this._scaleByDistance);
}
},

Expand Down Expand Up @@ -1022,6 +1048,7 @@ define([
},
set : function(value) {
this._translucencyByDistance = getExpression(this, value);
this._style.translucencyByDistance = getJsonFromExpression(this._translucencyByDistance);
}
},

Expand Down Expand Up @@ -1061,6 +1088,7 @@ define([
},
set : function(value) {
this._distanceDisplayCondition = getExpression(this, value);
this._style.distanceDisplayCondition = getJsonFromExpression(this._distanceDisplayCondition);
}
},

Expand Down Expand Up @@ -1109,6 +1137,7 @@ define([
},
set : function(value) {
this._heightOffset = getExpression(this, value);
this._style.heightOffset = getJsonFromExpression(this._heightOffset);
}
},

Expand Down Expand Up @@ -1157,6 +1186,7 @@ define([
},
set : function(value) {
this._anchorLineEnabled = getExpression(this, value);
this._style.anchorLineEnabled = getJsonFromExpression(this._anchorLineEnabled);
}
},

Expand Down Expand Up @@ -1205,6 +1235,7 @@ define([
},
set : function(value) {
this._anchorLineColor = getExpression(this, value);
this._style.anchorLineColor = getJsonFromExpression(this._anchorLineColor);
}
},

Expand Down Expand Up @@ -1253,6 +1284,7 @@ define([
},
set : function(value) {
this._image = getExpression(this, value);
this._style.image = getJsonFromExpression(this._image);
}
},

Expand Down Expand Up @@ -1292,6 +1324,7 @@ define([
},
set : function(value) {
this._disableDepthTestDistance = getExpression(this, value);
this._style.disableDepthTestDistance = getJsonFromExpression(this._disableDepthTestDistance);
}
},

Expand Down Expand Up @@ -1340,6 +1373,7 @@ define([
},
set : function(value) {
this._horizontalOrigin = getExpression(this, value);
this._style.horizontalOrigin = getJsonFromExpression(this._horizontalOrigin);
}
},

Expand Down Expand Up @@ -1388,6 +1422,7 @@ define([
},
set : function(value) {
this._verticalOrigin = getExpression(this, value);
this._style.verticalOrigin = getJsonFromExpression(this._verticalOrigin);
}
},

Expand Down Expand Up @@ -1436,6 +1471,7 @@ define([
},
set : function(value) {
this._labelHorizontalOrigin = getExpression(this, value);
this._style.labelHorizontalOrigin = getJsonFromExpression(this._labelHorizontalOrigin);
}
},

Expand Down Expand Up @@ -1484,6 +1520,7 @@ define([
},
set : function(value) {
this._labelVerticalOrigin = getExpression(this, value);
this._style.labelVerticalOrigin = getJsonFromExpression(this._labelVerticalOrigin);
}
},

Expand Down
Loading

0 comments on commit 46cdb02

Please sign in to comment.