Permalink
Browse files

Merge branch 'master' into request-scheduler-again

  • Loading branch information...
2 parents 76660c3 + 71a5273 commit 01bcc7d08f2dcc520d675ca4db7e566ecd39f662 @lilleyse lilleyse committed Jun 13, 2017
Showing with 2,567 additions and 1,202 deletions.
  1. +0 −40 .eslintrc
  2. +6 −0 .eslintrc.json
  3. +2 −2 .idea/jsLibraryMappings.xml
  4. +1 −1 Apps/Sandcastle/{.eslintrc → .eslintrc.json}
  5. +106 −0 Apps/Sandcastle/gallery/Callback Property.html
  6. BIN Apps/Sandcastle/gallery/Callback Property.jpg
  7. +5 −0 CHANGES.md
  8. +22 −19 Source/Core/CesiumTerrainProvider.js
  9. +17 −31 Source/Core/Ellipsoid.js
  10. +3 −4 Source/Core/EllipsoidTerrainProvider.js
  11. +35 −30 Source/Core/GoogleEarthEnterpriseMetadata.js
  12. +52 −29 Source/Core/GoogleEarthEnterpriseTerrainProvider.js
  13. +100 −78 Source/Core/Heap.js
  14. +128 −22 Source/Core/Request.js
  15. +319 −335 Source/Core/RequestScheduler.js
  16. +64 −0 Source/Core/RequestState.js
  17. +30 −1 Source/Core/RequestType.js
  18. +3 −3 Source/Core/TerrainProvider.js
  19. +19 −15 Source/Core/VRTheWorldTerrainProvider.js
  20. +29 −0 Source/Core/isBlobUri.js
  21. +6 −6 Source/Core/isDataUri.js
  22. +7 −6 Source/Core/loadArrayBuffer.js
  23. +7 −6 Source/Core/loadBlob.js
  24. +10 −5 Source/Core/loadCRN.js
  25. +36 −12 Source/Core/loadImage.js
  26. +6 −9 Source/Core/loadImageFromTypedArray.js
  27. +18 −10 Source/Core/loadImageViaBlob.js
  28. +11 −5 Source/Core/loadJson.js
  29. +30 −20 Source/Core/loadJsonp.js
  30. +9 −4 Source/Core/loadKTX.js
  31. +7 −5 Source/Core/loadText.js
  32. +42 −10 Source/Core/loadWithXhr.js
  33. +7 −5 Source/Core/loadXML.js
  34. +1 −1 Source/Core/sampleTerrain.js
  35. +0 −95 Source/Core/throttleRequestByServer.js
  36. +2 −2 Source/Renderer/loadCubeMap.js
  37. +3 −2 Source/Scene/ArcGisMapServerImageryProvider.js
  38. +3 −2 Source/Scene/BingMapsImageryProvider.js
  39. +49 −19 Source/Scene/Camera.js
  40. +31 −1 Source/Scene/GlobeSurfaceTile.js
  41. +15 −6 Source/Scene/GoogleEarthEnterpriseImageryProvider.js
  42. +3 −2 Source/Scene/GoogleEarthEnterpriseMapsProvider.js
  43. +1 −1 Source/Scene/GoogleEarthImageryProvider.js
  44. +2 −1 Source/Scene/GridImageryProvider.js
  45. +5 −2 Source/Scene/Imagery.js
  46. +26 −2 Source/Scene/ImageryLayer.js
  47. +10 −9 Source/Scene/ImageryProvider.js
  48. +3 −2 Source/Scene/MapboxImageryProvider.js
  49. +2 −2 Source/Scene/Model.js
  50. +0 −1 Source/Scene/QuadtreePrimitive.js
  51. +1 −0 Source/Scene/QuadtreeTile.js
  52. +1 −1 Source/Scene/Scene.js
  53. +2 −1 Source/Scene/SingleTileImageryProvider.js
  54. +2 −1 Source/Scene/TileCoordinatesImageryProvider.js
  55. +2 −2 Source/Scene/TileImagery.js
  56. +33 −15 Source/Scene/TileTerrain.js
  57. +5 −5 Source/Scene/UrlTemplateImageryProvider.js
  58. +3 −2 Source/Scene/WebMapServiceImageryProvider.js
  59. +3 −2 Source/Scene/WebMapTileServiceImageryProvider.js
  60. +1 −1 Specs/{.eslintrc → .eslintrc.json}
  61. +20 −6 Specs/Core/CesiumTerrainProviderSpec.js
  62. +11 −6 Specs/Core/GoogleEarthEnterpriseMetadataSpec.js
  63. +21 −9 Specs/Core/GoogleEarthEnterpriseTerrainProviderSpec.js
  64. +103 −22 Specs/Core/HeapSpec.js
  65. +482 −232 Specs/Core/RequestSchedulerSpec.js
  66. +17 −6 Specs/Core/VRTheWorldTerrainProviderSpec.js
  67. +27 −0 Specs/Core/isBlobUriSpec.js
  68. +6 −1 Specs/Core/isDataUriSpec.js
  69. +21 −2 Specs/Core/loadArrayBufferSpec.js
  70. +21 −2 Specs/Core/loadBlobSpec.js
  71. +21 −2 Specs/Core/loadCRNSpec.js
  72. +19 −0 Specs/Core/loadImageSpec.js
  73. +19 −0 Specs/Core/loadImageViaBlobSpec.js
  74. +21 −2 Specs/Core/loadJsonSpec.js
  75. +21 −2 Specs/Core/loadJsonpSpec.js
  76. +21 −2 Specs/Core/loadKTXSpec.js
  77. +21 −2 Specs/Core/loadTextSpec.js
  78. +24 −2 Specs/Core/loadWithXhrSpec.js
  79. +21 −2 Specs/Core/loadXMLSpec.js
  80. +12 −2 Specs/DomEventSimulator.js
  81. +10 −0 Specs/Scene/ArcGisMapServerImageryProviderSpec.js
  82. +10 −0 Specs/Scene/BingMapsImageryProviderSpec.js
  83. +46 −0 Specs/Scene/CameraSpec.js
  84. +15 −0 Specs/Scene/GlobeSurfaceTileSpec.js
  85. +10 −0 Specs/Scene/GoogleEarthEnterpriseImageryProviderSpec.js
  86. +6 −0 Specs/Scene/GoogleEarthEnterpriseMapsProviderSpec.js
  87. +9 −0 Specs/Scene/ImageryLayerSpec.js
  88. +10 −0 Specs/Scene/MapboxImageryProviderSpec.js
  89. +10 −0 Specs/Scene/UrlTemplateImageryProviderSpec.js
  90. +10 −0 Specs/Scene/WebMapServiceImageryProviderSpec.js
  91. +10 −0 Specs/Scene/WebMapTileServiceImageryProviderSpec.js
  92. +10 −0 Specs/Scene/createOpenStreetMapImageryProviderSpec.js
  93. +10 −0 Specs/Scene/createTileMapServiceImageryProviderSpec.js
  94. +3 −0 Tools/eslint-config-cesium/.eslintrc.json
  95. +6 −0 Tools/eslint-config-cesium/CHANGES.md
  96. +29 −0 Tools/eslint-config-cesium/README.md
  97. +12 −0 Tools/eslint-config-cesium/browser.js
  98. +37 −0 Tools/eslint-config-cesium/index.js
  99. +8 −0 Tools/eslint-config-cesium/node.js
  100. +25 −0 Tools/eslint-config-cesium/package.json
  101. +2 −2 package.json
  102. +2 −3 server.js
  103. +2 −2 web.config
View
@@ -1,40 +0,0 @@
-{
- "extends": "eslint:recommended",
- "env": {
- "browser": true
- },
- "globals": {
- "DataView": false,
- "ArrayBuffer": false,
- "Float32Array": false,
- "Float64Array": false,
- "Int16Array": false,
- "Int32Array": false,
- "Int8Array": false,
- "Uint16Array": false,
- "Uint32Array": false,
- "Uint8Array": false,
- "Uint8ClampedArray": false
- },
- "plugins": [
- "html"
- ],
- "rules": {
- "curly": ["error"],
- "eqeqeq": ["error"],
- "guard-for-in": ["error"],
- "new-cap": ["error", {"properties": false}],
- "no-caller": ["error"],
- "no-console": "off",
- "no-empty": ["error"],
- "no-extend-native": ["error"],
- "no-extra-boolean-cast": "off",
- "no-irregular-whitespace": ["error"],
- "no-new": ["error"],
- "no-undef": ["error"],
- "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
- "semi": ["error"],
- "strict": ["error"],
- "wrap-iife": ["error", "any"]
- }
-}
View
@@ -0,0 +1,6 @@
+{
+ "extends": "./Tools/eslint-config-cesium/browser.js",
+ "rules": {
+ "no-unused-vars": ["error", {"vars": "all", "args": "none"}]
+ }
+}
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
- <file url="file://$PROJECT_DIR$" libraries="{cesium/node_modules}" />
<includedPredefinedLibrary name="WebGL" />
+ <excludedPredefinedLibrary name="cesium/Tools/eslint-config-cesium/node_modules" />
</component>
-</project>
+</project>
@@ -1,5 +1,5 @@
{
- "extends": "../../.eslintrc",
+ "extends": "../../.eslintrc.json",
"globals": {
"JSON": true,
"require": true,
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
+ <meta name="description" content="Use Viewer to start building new applications or easily embed Cesium into existing applications.">
+ <meta name="cesium-sandcastle-labels" content="Beginner, Showcases">
+ <title>Cesium Demo</title>
+ <script type="text/javascript" src="../Sandcastle-header.js"></script>
+ <script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
+ <script type="text/javascript">
+ require.config({
+ baseUrl : '../../../Source',
+ waitSeconds : 60
+ });
+ </script>
+</head>
+<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
+<style>
+ @import url(../templates/bucket.css);
+</style>
+<div id="cesiumContainer" class="fullSize"></div>
+<div id="loadingOverlay"><h1>Loading...</h1></div>
+<div id="toolbar"></div>
+<script id="cesium_sandcastle_script">
+function startup(Cesium) {
+ 'use strict';
+//Sandcastle_Begin
+// This example illustrates a Callback Property, a property whose
+// value is lazily evaluated by a callback function.
+// Use a CallbackProperty when your data can't be pre-computed
+// or needs to be derived from other properties at runtime.
+var viewer = new Cesium.Viewer('cesiumContainer');
+
+var startLatitude = 35;
+var startLongitude = -120;
+var endLongitude;
+var startTime = Cesium.JulianDate.now();
+
+// Add a polyline to the scene. Positions are dynamic.
+var isConstant = false;
+var redLine = viewer.entities.add({
+ polyline : {
+ // This callback updates positions each frame.
+ positions : new Cesium.CallbackProperty(function(time, result) {
+ endLongitude = startLongitude + 0.001 * Cesium.JulianDate.secondsDifference(time, startTime);
+ return Cesium.Cartesian3.fromDegreesArray([startLongitude, startLatitude, endLongitude, startLatitude], Cesium.Ellipsoid.WGS84, result);
+ }, isConstant),
+ width : 5,
+ material : Cesium.Color.RED
+ }
+});
+
+var startCartographic = Cesium.Cartographic.fromDegrees(startLongitude, startLatitude);
+
+// use scratch object to avoid new allocations per frame.
+var endCartographic = new Cesium.Cartographic();
+var scratch = new Cesium.Cartographic();
+var geodesic = new Cesium.EllipsoidGeodesic();
+
+// Calculate the length of the line
+function getLength(time, result) {
+ // Get the end position from the polyLine's callback.
+ var endPoint = redLine.polyline.positions.getValue(time, result)[1];
+ endCartographic = Cesium.Cartographic.fromCartesian(endPoint);
+
+ geodesic.setEndPoints(startCartographic, endCartographic);
+ var lengthInMeters = Math.round(geodesic.surfaceDistance);
+ return (lengthInMeters / 1000).toFixed(1) + " km";
+}
+
+function getMidpoint(time, result) {
+ // Get the end position from the polyLine's callback.
+ var endPoint = redLine.polyline.positions.getValue(time, result)[1];
+ endCartographic = Cesium.Cartographic.fromCartesian(endPoint);
+
+ geodesic.setEndPoints(startCartographic, endCartographic);
+ var midpointCartographic = geodesic.interpolateUsingFraction(0.5, scratch);
+ return Cesium.Cartesian3.fromRadians(midpointCartographic.longitude, midpointCartographic.latitude);
+}
+
+// Label the polyline with calculated length.
+var label = viewer.entities.add({
+ position : new Cesium.CallbackProperty(getMidpoint, isConstant),
+ label : {
+ // This callback updates the length to print each frame.
+ text: new Cesium.CallbackProperty(getLength, isConstant),
+ font : '20px sans-serif',
+ pixelOffset : new Cesium.Cartesian2(0.0, 20)
+ }
+});
+
+// Keep the view centered.
+viewer.trackedEntity = label;
+//Sandcastle_End
+ Sandcastle.finishedLoading();
+}
+if (typeof Cesium !== "undefined") {
+ startup(Cesium);
+} else if (typeof require === "function") {
+ require(["Cesium"], startup);
+}
+</script>
+</body>
+</html>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
@@ -5,9 +5,14 @@ Change Log
* Deprecated
* `GoogleEarthImageryProvider` has been deprecated and will be removed in Cesium 1.37, use `GoogleEarthEnterpriseMapsProvider` instead.
+ * The `throttleRequest` parameter for `TerrainProvider.requestTileGeometry`, `CesiumTerrainProvider.requestTileGeometry`, `VRTheWorldTerrainProvider.requestTileGeometry`, and `EllipsoidTerrainProvider.requestTileGeometry` is deprecated and will be replaced with an optional `Request` object. The `throttleRequests` parameter will be removed in 1.37. Instead to throttle requests set the request's `throttle` property to `true`.
+ * The ability to provide a Promise for the `options.url` parameter of `loadWithXhr` and for the `url` parameter of `loadArrayBuffer`, `loadBlob`, `loadImageViaBlob`, `loadText`, `loadJson`, `loadXML`, `loadImage`, `loadCRN`, `loadKTX`, and `loadCubeMap` is deprecated. This will be removed in 1.37, instead `url` must be a string.
+* Added an `options.request` parameter to `loadWithXhr` and a `request` parameter to `loadArrayBuffer`, `loadBlob`, `loadImageViaBlob`, `loadText`, `loadJson`, `loadJsonp`, `loadXML`, `loadImageFromTypedArray`, `loadImage`, `loadCRN`, and `loadKTX`.
* Fixed bug where if polylines were set to follow the surface of an undefined globe, Cesium would crash [#5413] https://github.com/AnalyticalGraphicsInc/cesium/pull/5413
* Fixed a bug where picking clusters would return undefined instead of a list of the clustered entities. [#5286](https://github.com/AnalyticalGraphicsInc/cesium/issues/5286)
* Reduced the amount of Sun bloom post-process effect near the horizon. [#5381](https://github.com/AnalyticalGraphicsInc/cesium/issues/5381)
+* Updated glTF/glb MIME types. [#5420](https://github.com/AnalyticalGraphicsInc/cesium/issues/5420)
+* Fixed a bug where camera zooming worked incorrectly when the display height was greater than the display width [#5421] (https://github.com/AnalyticalGraphicsInc/cesium/pull/5421)
* Added Sandcastle demo for ArcticDEM data. [#5224](https://github.com/AnalyticalGraphicsInc/cesium/issues/5224)
* `CzmlDataSource` and `KmlDataSource` load functions now take an optional `query` object, which will append query parameters to all network requests. [#5419](https://github.com/AnalyticalGraphicsInc/cesium/pull/5419), [#5434](https://github.com/AnalyticalGraphicsInc/cesium/pull/5434)
* Fixed geocoder bug so geocoder can accurately handle NSEW inputs [#5407] (https://github.com/AnalyticalGraphicsInc/cesium/pull/5407)
@@ -8,6 +8,7 @@ define([
'./defaultValue',
'./defined',
'./defineProperties',
+ './deprecationWarning',
'./DeveloperError',
'./Event',
'./GeographicTilingScheme',
@@ -19,8 +20,9 @@ define([
'./Math',
'./OrientedBoundingBox',
'./QuantizedMeshTerrainData',
+ './Request',
+ './RequestType',
'./TerrainProvider',
- './throttleRequestByServer',
'./TileAvailability',
'./TileProviderError'
], function(
@@ -32,6 +34,7 @@ define([
defaultValue,
defined,
defineProperties,
+ deprecationWarning,
DeveloperError,
Event,
GeographicTilingScheme,
@@ -43,14 +46,15 @@ define([
CesiumMath,
OrientedBoundingBox,
QuantizedMeshTerrainData,
+ Request,
+ RequestType,
TerrainProvider,
- throttleRequestByServer,
TileAvailability,
TileProviderError) {
'use strict';
/**
- * A {@link TerrainProvider} that access terrain data in a Cesium terrain format.
+ * A {@link TerrainProvider} that accesses terrain data in a Cesium terrain format.
* The format is described on the
* {@link https://github.com/AnalyticalGraphicsInc/cesium/wiki/Cesium-Terrain-Server|Cesium wiki}.
*
@@ -489,17 +493,16 @@ define([
* @param {Number} x The X coordinate of the tile for which to request geometry.
* @param {Number} y The Y coordinate of the tile for which to request geometry.
* @param {Number} level The level of the tile for which to request geometry.
- * @param {Boolean} [throttleRequests=true] True if the number of simultaneous requests should be limited,
- * or false if the request should be initiated regardless of the number of requests
- * already in progress.
+ * @param {Request} [request] The request object. Intended for internal use only.
+ *
* @returns {Promise.<TerrainData>|undefined} A promise for the requested geometry. If this method
* returns undefined instead of a promise, it is an indication that too many requests are already
* pending and the request will be retried later.
*
* @exception {DeveloperError} This function must not be called before {@link CesiumTerrainProvider#ready}
* returns true.
*/
- CesiumTerrainProvider.prototype.requestTileGeometry = function(x, y, level, throttleRequests) {
+ CesiumTerrainProvider.prototype.requestTileGeometry = function(x, y, level, request) {
//>>includeStart('debug', pragmas.debug)
if (!this._ready) {
throw new DeveloperError('requestTileGeometry must not be called before the terrain provider is ready.');
@@ -522,8 +525,6 @@ define([
url = proxy.getURL(url);
}
- var promise;
-
var extensionList = [];
if (this._requestVertexNormals && this._hasVertexNormals) {
extensionList.push(this._littleEndianExtensionSize ? 'octvertexnormals' : 'vertexnormals');
@@ -532,17 +533,19 @@ define([
extensionList.push('watermask');
}
- function tileLoader(tileUrl) {
- return loadArrayBuffer(tileUrl, getRequestHeader(extensionList));
+ if (typeof request === 'boolean') {
+ deprecationWarning('throttleRequests', 'The throttleRequest parameter for requestTileGeometry was deprecated in Cesium 1.35. It will be removed in 1.37.');
+ request = new Request({
+ throttle : request,
+ throttleByServer : request,
+ type : RequestType.TERRAIN
+ });
}
- throttleRequests = defaultValue(throttleRequests, true);
- if (throttleRequests) {
- promise = throttleRequestByServer(url, tileLoader);
- if (!defined(promise)) {
- return undefined;
- }
- } else {
- promise = tileLoader(url);
+
+ var promise = loadArrayBuffer(url, getRequestHeader(extensionList), request);
+
+ if (!defined(promise)) {
+ return undefined;
}
var that = this;
Oops, something went wrong.

0 comments on commit 01bcc7d

Please sign in to comment.