cesium 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,125 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/JulianDate',
4
+ '../Core/TimeInterval',
5
+ '../Core/TimeIntervalCollection',
6
+ '../Core/Iso8601',
7
+ './DynamicColorMaterial',
8
+ './DynamicImageMaterial'
9
+ ], function(
10
+ JulianDate,
11
+ TimeInterval,
12
+ TimeIntervalCollection,
13
+ Iso8601,
14
+ DynamicColorMaterial,
15
+ DynamicImageMaterial) {
16
+ "use strict";
17
+
18
+ var potentialMaterials = [DynamicColorMaterial, DynamicImageMaterial];
19
+
20
+ /**
21
+ * A dynamic property which stores data for multiple types of materials
22
+ * associated with the same property over time. Rather than creating instances
23
+ * of this object directly, it's typically created and managed via loading CZML
24
+ * data into a DynamicObjectCollection.
25
+ *
26
+ * @alias DynamicMaterialProperty
27
+ * @internalconstructor
28
+ *
29
+ * @see DynamicObject
30
+ * @see DynamicProperty
31
+ * @see ReferenceProperty
32
+ * @see DynamicPositionProperty
33
+ * @see DynamicDirectionsProperty
34
+ * @see DynamicVertexPositionsProperty
35
+ */
36
+ var DynamicMaterialProperty = function() {
37
+ this._intervals = new TimeIntervalCollection();
38
+ };
39
+
40
+
41
+ /**
42
+ * Processes the provided CZML interval or intervals into this property.
43
+ * @memberof DynamicMaterialProperty
44
+ *
45
+ * @param {Object} czmlIntervals The CZML data to process.
46
+ * @param {TimeInterval} [constrainedInterval] Constrains the processing so that any times outside of this interval are ignored.
47
+ * @param {String} [sourceUri] The originating url of the CZML being processed.
48
+ */
49
+ DynamicMaterialProperty.prototype.processCzmlIntervals = function(czmlIntervals, constrainedInterval, sourceUri) {
50
+ if (Array.isArray(czmlIntervals)) {
51
+ for ( var i = 0, len = czmlIntervals.length; i < len; i++) {
52
+ this._addCzmlInterval(czmlIntervals[i], constrainedInterval, sourceUri);
53
+ }
54
+ } else {
55
+ this._addCzmlInterval(czmlIntervals, constrainedInterval, sourceUri);
56
+ }
57
+ };
58
+
59
+ /**
60
+ * Returns the value of the property at the specified time.
61
+ * @memberof DynamicMaterialProperty
62
+ *
63
+ * @param {JulianDate} time The time for which to retrieve the value.
64
+ * @param {Context} [context] The context in which the material exists.
65
+ * @param {Object} [result] The object to store the value into, if omitted, a new instance is created and returned.
66
+ * @returns The modified result parameter or a new instance if the result parameter was not supplied.
67
+ */
68
+ DynamicMaterialProperty.prototype.getValue = function(time, context, existingMaterial) {
69
+ var value = this._intervals.findIntervalContainingDate(time);
70
+ var material = typeof value !== 'undefined' ? value.data : undefined;
71
+ if (typeof material !== 'undefined') {
72
+ return material.getValue(time, context, existingMaterial);
73
+ }
74
+ return existingMaterial;
75
+ };
76
+
77
+ DynamicMaterialProperty.prototype._addCzmlInterval = function(czmlInterval, constrainedInterval, sourceUri) {
78
+ var iso8601Interval = czmlInterval.interval;
79
+ if (typeof iso8601Interval === 'undefined') {
80
+ iso8601Interval = Iso8601.MAXIMUM_INTERVAL.clone();
81
+ } else {
82
+ iso8601Interval = TimeInterval.fromIso8601(iso8601Interval);
83
+ }
84
+
85
+ if (typeof constrainedInterval !== 'undefined') {
86
+ iso8601Interval = iso8601Interval.intersect(constrainedInterval);
87
+ }
88
+
89
+ //See if we already have data at that interval.
90
+ var thisIntervals = this._intervals;
91
+ var existingInterval = thisIntervals.findInterval(iso8601Interval.start, iso8601Interval.stop);
92
+ var foundMaterial = false;
93
+ var existingMaterial;
94
+
95
+ if (typeof existingInterval !== 'undefined') {
96
+ //We have an interval, but we need to make sure the
97
+ //new data is the same type of material as the old data.
98
+ existingMaterial = existingInterval.data;
99
+ foundMaterial = existingMaterial.isMaterial(czmlInterval);
100
+ } else {
101
+ //If not, create it.
102
+ existingInterval = iso8601Interval;
103
+ thisIntervals.addInterval(existingInterval);
104
+ }
105
+
106
+ //If the new data was a different type, look for a handler for this type.
107
+ if (foundMaterial === false) {
108
+ for ( var i = 0, len = potentialMaterials.length; i < len; i++) {
109
+ var PotentialMaterial = potentialMaterials[i];
110
+ foundMaterial = PotentialMaterial.isMaterial(czmlInterval);
111
+ if (foundMaterial) {
112
+ existingInterval.data = existingMaterial = new PotentialMaterial();
113
+ break;
114
+ }
115
+ }
116
+ }
117
+
118
+ //We could handle the data, prcess it.
119
+ if (foundMaterial) {
120
+ existingMaterial.processCzmlIntervals(czmlInterval, sourceUri);
121
+ }
122
+ };
123
+
124
+ return DynamicMaterialProperty;
125
+ });
@@ -0,0 +1,364 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/createGuid',
4
+ '../Core/DeveloperError',
5
+ '../Core/TimeInterval',
6
+ '../Core/defaultValue',
7
+ './DynamicProperty',
8
+ './DynamicPositionProperty',
9
+ './DynamicVertexPositionsProperty',
10
+ './CzmlUnitQuaternion',
11
+ './CzmlCartesian3'
12
+ ], function(
13
+ createGuid,
14
+ DeveloperError,
15
+ TimeInterval,
16
+ defaultValue,
17
+ DynamicProperty,
18
+ DynamicPositionProperty,
19
+ DynamicVertexPositionsProperty,
20
+ CzmlUnitQuaternion,
21
+ CzmlCartesian3) {
22
+ "use strict";
23
+
24
+ /**
25
+ * DynamicObject instances are the primary data store for processed CZML data.
26
+ * They are used primarily by the visualizers to create and maintain graphic
27
+ * primitives that represent the DynamicObject's properties at a specific time.
28
+ * @alias DynamicObject
29
+ * @constructor
30
+ *
31
+ * @param {Object} [id] A unique identifier for this object. If no id is provided, a GUID is generated.
32
+ *
33
+ * @see DynamicProperty
34
+ * @see DynamicPositionProperty
35
+ * @see DynamicVertexiPositionsProperty
36
+ * @see DynamicObjectCollection
37
+ * @see CompositeDynamicObjectCollection
38
+ * @see DynamicBillboard
39
+ * @see DynamicCone
40
+ * @see DynamicLabel
41
+ * @see DynamicPoint
42
+ * @see DynamicPolygon
43
+ * @see DynamicPolyline
44
+ * @see DynamicPyramid
45
+ */
46
+ var DynamicObject = function(id) {
47
+ this._cachedAvailabilityDate = undefined;
48
+ this._cachedAvailabilityValue = undefined;
49
+
50
+ if (typeof id === 'undefined') {
51
+ id = createGuid();
52
+ }
53
+
54
+ /**
55
+ * A unique id associated with this object.
56
+ */
57
+ this.id = id;
58
+
59
+ //Add standard CZML properties. Even though they won't all be used
60
+ //for each object, having the superset explicitly listed here will allow the
61
+ //compiler to optimize this class. It also allows us to document them.
62
+ //Any changes to this list should coincide with changes to CzmlDefaults.updaters
63
+
64
+ /**
65
+ * The availability TimeInterval, if any, associated with this object.
66
+ * If availability is undefined, it is assumed that this object's
67
+ * other properties will return valid data for any provided time.
68
+ * If availability exists, the objects other properties will only
69
+ * provide valid data if queried within the given interval.
70
+ * @type TimeInterval
71
+ */
72
+ this.availability = undefined;
73
+
74
+ /**
75
+ * Gets or sets the position.
76
+ * @type DynamicPositionProperty
77
+ */
78
+ this.position = undefined;
79
+
80
+ /**
81
+ * Gets or sets the orientation.
82
+ * @type DynamicProperty
83
+ */
84
+ this.orientation = undefined;
85
+
86
+ /**
87
+ * Gets or sets the billboard.
88
+ * @type DynamicBillboard
89
+ */
90
+ this.billboard = undefined;
91
+
92
+ /**
93
+ * Gets or sets the cone.
94
+ * @type DynamicCone
95
+ */
96
+ this.cone = undefined;
97
+
98
+ /**
99
+ * Gets or sets the ellipsoid.
100
+ * @type DynamicEllipsoid
101
+ */
102
+ this.ellipsoid = undefined;
103
+
104
+ /**
105
+ * Gets or sets the label.
106
+ * @type DynamicLabel
107
+ */
108
+ this.label = undefined;
109
+
110
+ /**
111
+ * Gets or sets the path.
112
+ * @type DynamicPath
113
+ */
114
+ this.path = undefined;
115
+
116
+ /**
117
+ * Gets or sets the point graphic.
118
+ * @type DynamicPoint
119
+ */
120
+ this.point = undefined;
121
+
122
+ /**
123
+ * Gets or sets the polygon.
124
+ * @type DynamicPolygon
125
+ */
126
+ this.polygon = undefined;
127
+
128
+ /**
129
+ * Gets or sets the polyline.
130
+ * @type DynamicPolyline
131
+ */
132
+ this.polyline = undefined;
133
+
134
+ /**
135
+ * Gets or sets the pyramid.
136
+ * @type DynamicPyramid
137
+ */
138
+ this.pyramid = undefined;
139
+
140
+ /**
141
+ * Gets or sets the vertex positions.
142
+ * @type DynamicVertexPositionsProperty
143
+ */
144
+ this.vertexPositions = undefined;
145
+
146
+ /**
147
+ * Gets or sets the suggested initial offset for viewing this object
148
+ * with the camera. The offset is defined in the east-north-up reference frame.
149
+ * @type Cartesian3
150
+ */
151
+ this.viewFrom = undefined;
152
+ };
153
+
154
+ /**
155
+ * Given a time, returns true if this object should have data during that time.
156
+ * @param {JulianDate} time The time to check availability for.
157
+ * @exception {DeveloperError} time is required.
158
+ * @returns true if the object should have data during the provided time, false otherwise.
159
+ */
160
+ DynamicObject.prototype.isAvailable = function(time) {
161
+ if (typeof time === 'undefined') {
162
+ throw new DeveloperError('time is required.');
163
+ }
164
+ if (typeof this.availability === 'undefined') {
165
+ return true;
166
+ }
167
+ if (this._cachedAvailabilityDate === time) {
168
+ return this._cachedAvailabilityValue;
169
+ }
170
+ this._cachedAvailabilityDate = time;
171
+ return this._cachedAvailabilityValue = this.availability.contains(time);
172
+ };
173
+
174
+ /**
175
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's position
176
+ * property. This method is not normally called directly, but is part of the array of CZML processing
177
+ * functions that is passed into the DynamicObjectCollection constructor.
178
+ *
179
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the position data.
180
+ * @param {Object} packet The CZML packet to process.
181
+ * @returns {Boolean} true if the property was newly created while processing the packet, false otherwise.
182
+ *
183
+ * @see DynamicPositionProperty
184
+ * @see DynamicObjectCollection
185
+ * @see CzmlDefaults#updaters
186
+ */
187
+ DynamicObject.processCzmlPacketPosition = function(dynamicObject, packet) {
188
+ var positionData = packet.position;
189
+ if (typeof positionData === 'undefined') {
190
+ return false;
191
+ }
192
+
193
+ var position = dynamicObject.position;
194
+ var propertyCreated = typeof position === 'undefined';
195
+ if (propertyCreated) {
196
+ dynamicObject.position = position = new DynamicPositionProperty();
197
+ }
198
+ position.processCzmlIntervals(positionData);
199
+ return propertyCreated;
200
+ };
201
+
202
+ /**
203
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's viewFrom
204
+ * property. This method is not normally called directly, but is part of the array of CZML processing
205
+ * functions that is passed into the DynamicObjectCollection constructor.
206
+ *
207
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the viewFrom data.
208
+ * @param {Object} packet The CZML packet to process.
209
+ * @returns {Boolean} true if the property was newly created while processing the packet, false otherwise.
210
+ *
211
+ * @see DynamicProperty
212
+ * @see DynamicObjectCollection
213
+ * @see CzmlDefaults#updaters
214
+ */
215
+ DynamicObject.processCzmlPacketViewFrom = function(dynamicObject, packet) {
216
+ var viewFromData = packet.viewFrom;
217
+ if (typeof viewFromData === 'undefined') {
218
+ return false;
219
+ }
220
+
221
+ var viewFrom = dynamicObject.viewFrom;
222
+ var propertyCreated = typeof viewFrom === 'undefined';
223
+ if (propertyCreated) {
224
+ dynamicObject.viewFrom = viewFrom = new DynamicProperty(CzmlCartesian3);
225
+ }
226
+ viewFrom.processCzmlIntervals(viewFromData);
227
+ return propertyCreated;
228
+ };
229
+
230
+ /**
231
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's orientation
232
+ * property. This method is not normally called directly, but is part of the array of CZML processing
233
+ * functions that is passed into the DynamicObjectCollection constructor.
234
+ *
235
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the orientation data.
236
+ * @param {Object} packet The CZML packet to process.
237
+ * @returns {Boolean} true if the property was newly created while processing the packet, false otherwise.
238
+ *
239
+ * @see DynamicProperty
240
+ * @see DynamicObjectCollection
241
+ * @see CzmlDefaults#updaters
242
+ */
243
+ DynamicObject.processCzmlPacketOrientation = function(dynamicObject, packet) {
244
+ var orientationData = packet.orientation;
245
+ if (typeof orientationData === 'undefined') {
246
+ return false;
247
+ }
248
+
249
+ var orientation = dynamicObject.orientation;
250
+ var propertyCreated = typeof orientation === 'undefined';
251
+ if (propertyCreated) {
252
+ dynamicObject.orientation = orientation = new DynamicProperty(CzmlUnitQuaternion);
253
+ }
254
+ orientation.processCzmlIntervals(orientationData);
255
+ return propertyCreated;
256
+ };
257
+
258
+ /**
259
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's vertexPositions
260
+ * property. This method is not normally called directly, but is part of the array of CZML processing
261
+ * functions that is passed into the DynamicObjectCollection constructor.
262
+ *
263
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the vertexPositions data.
264
+ * @param {Object} packet The CZML packet to process.
265
+ * @param {DynamicObjectCollection} dynamicObjectCollection The collection to use to resolve any CZML properly links.
266
+ * @returns {Boolean} true if the property was newly created while processing the packet, false otherwise.
267
+ *
268
+ * @see DynamicProperty
269
+ * @see DynamicObjectCollection
270
+ * @see CzmlDefaults#updaters
271
+ */
272
+ DynamicObject.processCzmlPacketVertexPositions = function(dynamicObject, packet, dynamicObjectCollection) {
273
+ var vertexPositionsData = packet.vertexPositions;
274
+ if (typeof vertexPositionsData === 'undefined') {
275
+ return false;
276
+ }
277
+
278
+ var vertexPositions = dynamicObject.vertexPositions;
279
+ var propertyCreated = typeof dynamicObject.vertexPositions === 'undefined';
280
+ if (propertyCreated) {
281
+ dynamicObject.vertexPositions = vertexPositions = new DynamicVertexPositionsProperty();
282
+ }
283
+ vertexPositions.processCzmlIntervals(vertexPositionsData, undefined, dynamicObjectCollection);
284
+ return propertyCreated;
285
+ };
286
+
287
+ /**
288
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's availability
289
+ * property. This method is not normally called directly, but is part of the array of CZML processing
290
+ * functions that is passed into the DynamicObjectCollection constructor.
291
+ *
292
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the availability data.
293
+ * @param {Object} packet The CZML packet to process.
294
+ * @returns {Boolean} true if the property was newly created while processing the packet, false otherwise.
295
+ *
296
+ * @see DynamicProperty
297
+ * @see DynamicObjectCollection
298
+ * @see CzmlDefaults#updaters
299
+ */
300
+ DynamicObject.processCzmlPacketAvailability = function(dynamicObject, packet) {
301
+ var availability = packet.availability;
302
+ if (typeof availability === 'undefined') {
303
+ return false;
304
+ }
305
+
306
+ var propertyChanged = false;
307
+ var interval = TimeInterval.fromIso8601(availability);
308
+ if (typeof interval !== 'undefined') {
309
+ propertyChanged = dynamicObject._setAvailability(interval);
310
+ }
311
+ return propertyChanged;
312
+ };
313
+
314
+ /**
315
+ * Given two DynamicObjects, takes the position, orientation, vertexPositions and availability
316
+ * properties from the second and assigns them to the first, assuming such properties did not
317
+ * already exist. This method is not normally called directly, but is part of the array of CZML
318
+ * processing functions that is passed into the CompositeDynamicObjectCollection constructor.
319
+ *
320
+ * @param {DynamicObject} targetObject The DynamicObject which will have properties merged onto it.
321
+ * @param {DynamicObject} objectToMerge The DynamicObject containing properties to be merged.
322
+ *
323
+ * @see CzmlDefaults
324
+ */
325
+ DynamicObject.mergeProperties = function(targetObject, objectToMerge) {
326
+ targetObject.position = defaultValue(targetObject.position, objectToMerge.position);
327
+ targetObject.orientation = defaultValue(targetObject.orientation, objectToMerge.orientation);
328
+ targetObject.vertexPositions = defaultValue(targetObject.vertexPositions, objectToMerge.vertexPositions);
329
+ targetObject.viewFrom = defaultValue(targetObject.viewFrom, objectToMerge.viewFrom);
330
+ var availability = objectToMerge.availability;
331
+ if (typeof availability !== 'undefined') {
332
+ targetObject._setAvailability(availability);
333
+ }
334
+ };
335
+
336
+ /**
337
+ * Given a DynamicObject, undefines the position, orientation, vertexPositions and availability
338
+ * associated with it. This method is not normally called directly, but is part of the array of
339
+ * CZML processing functions that is passed into the CompositeDynamicObjectCollection constructor.
340
+ *
341
+ * @param {DynamicObject} dynamicObject The DynamicObject to remove the billboard from.
342
+ *
343
+ * @see CzmlDefaults
344
+ */
345
+ DynamicObject.undefineProperties = function(dynamicObject) {
346
+ dynamicObject.position = undefined;
347
+ dynamicObject.orientation = undefined;
348
+ dynamicObject.vertexPositions = undefined;
349
+ dynamicObject.viewFrom = undefined;
350
+ dynamicObject._setAvailability(undefined);
351
+ };
352
+
353
+ DynamicObject.prototype._setAvailability = function(availability) {
354
+ var changed = !TimeInterval.equals(this.availability, availability);
355
+
356
+ this.availability = availability;
357
+ this._cachedAvailabilityDate = undefined;
358
+ this._cachedAvailabilityValue = undefined;
359
+
360
+ return changed;
361
+ };
362
+
363
+ return DynamicObject;
364
+ });