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,163 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/JulianDate',
4
+ '../Core/TimeInterval',
5
+ '../Core/TimeIntervalCollection',
6
+ '../Core/Cartesian3',
7
+ '../Core/Spherical',
8
+ '../Core/Iso8601'
9
+ ], function(
10
+ JulianDate,
11
+ TimeInterval,
12
+ TimeIntervalCollection,
13
+ Cartesian3,
14
+ Spherical,
15
+ Iso8601) {
16
+ "use strict";
17
+
18
+ function ValueHolder(czmlInterval) {
19
+ var i;
20
+ var len;
21
+ var values = [];
22
+ var tmp = czmlInterval.unitSpherical;
23
+ if (typeof tmp !== 'undefined') {
24
+ for (i = 0, len = tmp.length; i < len; i += 2) {
25
+ values.push(new Spherical(tmp[i], tmp[i + 1]));
26
+ }
27
+ this.spherical = values;
28
+ }
29
+
30
+ tmp = czmlInterval.unitCartesian;
31
+ if (typeof tmp !== 'undefined') {
32
+ for (i = 0, len = tmp.length; i < len; i += 3) {
33
+ values.push(new Cartesian3(tmp[i], tmp[i + 1], tmp[i + 2], true));
34
+ }
35
+ this.cartesian = values;
36
+ }
37
+ }
38
+
39
+ ValueHolder.prototype.getValueSpherical = function() {
40
+ var sphericals = this.spherical;
41
+ if (typeof sphericals === 'undefined') {
42
+ sphericals = [];
43
+ this.spherical = sphericals;
44
+ var cartesians = this.cartesian;
45
+ for ( var i = 0, len = cartesians.length; i < len; i++) {
46
+ sphericals.push(Spherical.fromCartesian3(cartesians[i]));
47
+ }
48
+ }
49
+ return sphericals;
50
+ };
51
+
52
+ ValueHolder.prototype.getValueCartesian = function() {
53
+ var cartesians = this.cartesian;
54
+ if (typeof cartesians === 'undefined') {
55
+ cartesians = [];
56
+ this.cartesian = cartesians;
57
+ var sphericals = this.spherical;
58
+ for ( var i = 0, len = sphericals.length; i < len; i++) {
59
+ cartesians.push(Cartesian3.fromSpherical(sphericals[i]));
60
+ }
61
+ }
62
+ return cartesians;
63
+ };
64
+
65
+ /**
66
+ * A dynamic property which maintains an array of directions that can change over time.
67
+ * The directions can be represented as both Cartesian and Spherical coordinates.
68
+ * Rather than creating instances of this object directly, it's typically
69
+ * created and managed via loading CZML data into a DynamicObjectCollection.
70
+ * Instances of this type are exposed via DynamicObject and it's sub-objects
71
+ * and are responsible for interpreting and interpolating the data for visualization.
72
+ * </p>
73
+ *
74
+ * @alias DynamicDirectionsProperty
75
+ * @constructor
76
+ *
77
+ * @see DynamicObject
78
+ * @see DynamicProperty
79
+ * @see ReferenceProperty
80
+ * @see DynamicMaterialProperty
81
+ * @see DynamicPositionProperty
82
+ * @see DynamicVertexPositionsProperty
83
+ */
84
+ var DynamicDirectionsProperty = function() {
85
+ this._propertyIntervals = new TimeIntervalCollection();
86
+ };
87
+
88
+ /**
89
+ * Processes the provided CZML interval or intervals into this property.
90
+ *
91
+ * @memberof DynamicDirectionsProperty
92
+ *
93
+ * @param {Object} czmlIntervals The CZML data to process.
94
+ * @param {TimeInterval} [constrainedInterval] Constrains the processing so that any times outside of this interval are ignored.
95
+ * @param {DynamicObjectCollection} dynamicObjectCollection The DynamicObjectCollection to be used as a target for resolving links within this property.
96
+ */
97
+ DynamicDirectionsProperty.prototype.processCzmlIntervals = function(czmlIntervals, constrainedInterval, dynamicObjectCollection) {
98
+ if (Array.isArray(czmlIntervals)) {
99
+ for ( var i = 0, len = czmlIntervals.length; i < len; i++) {
100
+ this._addCzmlInterval(czmlIntervals[i], constrainedInterval, dynamicObjectCollection);
101
+ }
102
+ } else {
103
+ this._addCzmlInterval(czmlIntervals, constrainedInterval, dynamicObjectCollection);
104
+ }
105
+ };
106
+
107
+ /**
108
+ * Retrieves the values at the supplied time as Spherical coordinates.
109
+ * @memberof DynamicDirectionsProperty
110
+ *
111
+ * @param {JulianDate} time The time for which to retrieve the value.
112
+ * @returns An array of spherical coordinates for the provided time.
113
+ */
114
+ DynamicDirectionsProperty.prototype.getValueSpherical = function(time) {
115
+ var interval = this._propertyIntervals.findIntervalContainingDate(time);
116
+ if (typeof interval === 'undefined') {
117
+ return undefined;
118
+ }
119
+ return interval.data.getValueSpherical();
120
+ };
121
+
122
+ /**
123
+ * Retrieves the values at the supplied time as unit cartesian coordinates.
124
+ * @memberof DynamicDirectionsProperty
125
+ *
126
+ * @param {JulianDate} time The time for which to retrieve the value.
127
+ * @returns An array of unit cartesian coordinates for the provided time.
128
+ */
129
+ DynamicDirectionsProperty.prototype.getValueCartesian = function(time) {
130
+ var interval = this._propertyIntervals.findIntervalContainingDate(time);
131
+ if (typeof interval === 'undefined') {
132
+ return undefined;
133
+ }
134
+ return interval.data.getValueCartesian();
135
+ };
136
+
137
+ DynamicDirectionsProperty.prototype._addCzmlInterval = function(czmlInterval, constrainedInterval, dynamicObjectCollection) {
138
+ var iso8601Interval = czmlInterval.interval;
139
+ if (typeof iso8601Interval === 'undefined') {
140
+ iso8601Interval = Iso8601.MAXIMUM_INTERVAL.clone();
141
+ } else {
142
+ iso8601Interval = TimeInterval.fromIso8601(iso8601Interval);
143
+ }
144
+
145
+ if (typeof constrainedInterval !== 'undefined') {
146
+ iso8601Interval = iso8601Interval.intersect(constrainedInterval);
147
+ }
148
+
149
+ //See if we already have data at that interval.
150
+ var thisIntervals = this._propertyIntervals;
151
+ var existingInterval = thisIntervals.findInterval(iso8601Interval.start, iso8601Interval.stop);
152
+
153
+ //If not, create it.
154
+ if (typeof existingInterval === 'undefined') {
155
+ existingInterval = iso8601Interval;
156
+ thisIntervals.addInterval(existingInterval);
157
+ }
158
+
159
+ existingInterval.data = new ValueHolder(czmlInterval);
160
+ };
161
+
162
+ return DynamicDirectionsProperty;
163
+ });
@@ -0,0 +1,158 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/TimeInterval',
4
+ '../Core/defaultValue',
5
+ './CzmlBoolean',
6
+ './CzmlCartesian3',
7
+ './CzmlColor',
8
+ './DynamicProperty',
9
+ './DynamicMaterialProperty'
10
+ ], function(
11
+ TimeInterval,
12
+ defaultValue,
13
+ CzmlBoolean,
14
+ CzmlCartesian3,
15
+ CzmlColor,
16
+ DynamicProperty,
17
+ DynamicMaterialProperty) {
18
+ "use strict";
19
+
20
+ /**
21
+ * Represents a time-dynamic ellipsoid, typically used in conjunction with DynamicEllipsoidVisualizer and
22
+ * DynamicObjectCollection to visualize CZML.
23
+ *
24
+ * @alias DynamicEllipsoid
25
+ * @constructor
26
+ *
27
+ * @see DynamicObject
28
+ * @see DynamicProperty
29
+ * @see DynamicObjectCollection
30
+ * @see DynamicEllipsoidVisualizer
31
+ * @see VisualizerCollection
32
+ * @see CustomSensor
33
+ * @see CzmlDefaults
34
+ */
35
+ var DynamicEllipsoid = function() {
36
+ /**
37
+ * A DynamicProperty of type CzmlBoolean which determines the ellipsoid's visibility.
38
+ * @type DynamicProperty
39
+ */
40
+ this.show = undefined;
41
+ /**
42
+ * A DynamicProperty of type CzmlCartesian3 which determines the ellipsoid's radii.
43
+ * @type DynamicProperty
44
+ */
45
+ this.radii = undefined;
46
+ /**
47
+ * A DynamicMaterialProperty which determines the material.
48
+ * @type DynamicMaterialProperty
49
+ */
50
+ this.material = undefined;
51
+ };
52
+
53
+ /**
54
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's ellipsoid.
55
+ * If the DynamicObject does not have a ellipsoid, one is created. This method is not
56
+ * normally called directly, but is part of the array of CZML processing functions that is
57
+ * passed into the DynamicObjectCollection constructor.
58
+ *
59
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the ellipsoid data.
60
+ * @param {Object} packet The CZML packet to process.
61
+ * @param {DynamicObject} dynamicObjectCollection The DynamicObjectCollection to which the DynamicObject belongs.
62
+ *
63
+ * @returns {Boolean} true if any new properties were created while processing the packet, false otherwise.
64
+ *
65
+ * @see DynamicObject
66
+ * @see DynamicProperty
67
+ * @see DynamicObjectCollection
68
+ * @see CzmlDefaults#updaters
69
+ */
70
+ DynamicEllipsoid.processCzmlPacket = function(dynamicObject, packet, dynamicObjectCollection) {
71
+ var ellipsoidData = packet.ellipsoid;
72
+ if (typeof ellipsoidData === 'undefined') {
73
+ return false;
74
+ }
75
+
76
+ var ellipsoidUpdated = false;
77
+ var ellipsoid = dynamicObject.ellipsoid;
78
+ ellipsoidUpdated = typeof ellipsoid === 'undefined';
79
+ if (ellipsoidUpdated) {
80
+ dynamicObject.ellipsoid = ellipsoid = new DynamicEllipsoid();
81
+ }
82
+
83
+ var interval = ellipsoidData.interval;
84
+ if (typeof interval !== 'undefined') {
85
+ interval = TimeInterval.fromIso8601(interval);
86
+ }
87
+
88
+ if (typeof ellipsoidData.show !== 'undefined') {
89
+ var show = ellipsoid.show;
90
+ if (typeof show === 'undefined') {
91
+ ellipsoid.show = show = new DynamicProperty(CzmlBoolean);
92
+ ellipsoidUpdated = true;
93
+ }
94
+ show.processCzmlIntervals(ellipsoidData.show, interval);
95
+ }
96
+
97
+ if (typeof ellipsoidData.radii !== 'undefined') {
98
+ var radii = ellipsoid.radii;
99
+ if (typeof radii === 'undefined') {
100
+ ellipsoid.radii = radii = new DynamicProperty(CzmlCartesian3);
101
+ ellipsoidUpdated = true;
102
+ }
103
+ radii.processCzmlIntervals(ellipsoidData.radii, interval);
104
+ }
105
+
106
+ if (typeof ellipsoidData.material !== 'undefined') {
107
+ var material = ellipsoid.material;
108
+ if (typeof material === 'undefined') {
109
+ ellipsoid.material = material = new DynamicMaterialProperty();
110
+ ellipsoidUpdated = true;
111
+ }
112
+ material.processCzmlIntervals(ellipsoidData.material, interval);
113
+ }
114
+
115
+ return ellipsoidUpdated;
116
+ };
117
+
118
+ /**
119
+ * Given two DynamicObjects, takes the ellipsoid properties from the second
120
+ * and assigns them to the first, assuming such a property did not already exist.
121
+ * This method is not normally called directly, but is part of the array of CZML processing
122
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
123
+ *
124
+ * @param {DynamicObject} targetObject The DynamicObject which will have properties merged onto it.
125
+ * @param {DynamicObject} objectToMerge The DynamicObject containing properties to be merged.
126
+ *
127
+ * @see CzmlDefaults
128
+ */
129
+ DynamicEllipsoid.mergeProperties = function(targetObject, objectToMerge) {
130
+ var ellipsoidToMerge = objectToMerge.ellipsoid;
131
+ if (typeof ellipsoidToMerge !== 'undefined') {
132
+
133
+ var targetEllipsoid = targetObject.ellipsoid;
134
+ if (typeof targetEllipsoid === 'undefined') {
135
+ targetObject.ellipsoid = targetEllipsoid = new DynamicEllipsoid();
136
+ }
137
+
138
+ targetEllipsoid.show = defaultValue(targetEllipsoid.show, ellipsoidToMerge.show);
139
+ targetEllipsoid.radii = defaultValue(targetEllipsoid.radii, ellipsoidToMerge.radii);
140
+ targetEllipsoid.material = defaultValue(targetEllipsoid.material, ellipsoidToMerge.material);
141
+ }
142
+ };
143
+
144
+ /**
145
+ * Given a DynamicObject, undefines the ellipsoid associated with it.
146
+ * This method is not normally called directly, but is part of the array of CZML processing
147
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
148
+ *
149
+ * @param {DynamicObject} dynamicObject The DynamicObject to remove the ellipsoid from.
150
+ *
151
+ * @see CzmlDefaults
152
+ */
153
+ DynamicEllipsoid.undefineProperties = function(dynamicObject) {
154
+ dynamicObject.ellipsoid = undefined;
155
+ };
156
+
157
+ return DynamicEllipsoid;
158
+ });
@@ -0,0 +1,277 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/destroyObject',
6
+ '../Core/Color',
7
+ '../Core/Matrix3',
8
+ '../Core/Matrix4',
9
+ '../Scene/EllipsoidPrimitive',
10
+ '../Scene/Material'
11
+ ], function(
12
+ defaultValue,
13
+ DeveloperError,
14
+ destroyObject,
15
+ Color,
16
+ Matrix3,
17
+ Matrix4,
18
+ EllipsoidPrimitive,
19
+ Material) {
20
+ "use strict";
21
+
22
+ var matrix3Scratch = new Matrix3();
23
+
24
+ /**
25
+ * A DynamicObject visualizer which maps the DynamicEllipsoid instance
26
+ * in DynamicObject.ellipsoid to a Ellipsoid primitive.
27
+ * @alias DynamicEllipsoidVisualizer
28
+ * @constructor
29
+ *
30
+ * @param {Scene} scene The scene the primitives will be rendered in.
31
+ * @param {DynamicObjectCollection} [dynamicObjectCollection] The dynamicObjectCollection to visualize.
32
+ *
33
+ * @exception {DeveloperError} scene is required.
34
+ *
35
+ * @see DynamicEllipsoid
36
+ * @see Scene
37
+ * @see DynamicObject
38
+ * @see DynamicObjectCollection
39
+ * @see CompositeDynamicObjectCollection
40
+ * @see VisualizerCollection
41
+ * @see DynamicBillboardVisualizer
42
+ * @see DynamicConeVisualizer
43
+ * @see DynamicConeVisualizerUsingCustomSensorr
44
+ * @see DynamicLabelVisualizer
45
+ * @see DynamicPointVisualizer
46
+ * @see DynamicPolygonVisualizer
47
+ * @see DynamicPolylineVisualizer
48
+ */
49
+ var DynamicEllipsoidVisualizer = function(scene, dynamicObjectCollection) {
50
+ if (typeof scene === 'undefined') {
51
+ throw new DeveloperError('scene is required.');
52
+ }
53
+ this._scene = scene;
54
+ this._unusedIndexes = [];
55
+ this._primitives = scene.getPrimitives();
56
+ this._ellipsoidCollection = [];
57
+ this._dynamicObjectCollection = undefined;
58
+ this.setDynamicObjectCollection(dynamicObjectCollection);
59
+ };
60
+
61
+ /**
62
+ * Returns the scene being used by this visualizer.
63
+ *
64
+ * @returns {Scene} The scene being used by this visualizer.
65
+ */
66
+ DynamicEllipsoidVisualizer.prototype.getScene = function() {
67
+ return this._scene;
68
+ };
69
+
70
+ /**
71
+ * Gets the DynamicObjectCollection being visualized.
72
+ *
73
+ * @returns {DynamicObjectCollection} The DynamicObjectCollection being visualized.
74
+ */
75
+ DynamicEllipsoidVisualizer.prototype.getDynamicObjectCollection = function() {
76
+ return this._dynamicObjectCollection;
77
+ };
78
+
79
+ /**
80
+ * Sets the DynamicObjectCollection to visualize.
81
+ *
82
+ * @param dynamicObjectCollection The DynamicObjectCollection to visualizer.
83
+ */
84
+ DynamicEllipsoidVisualizer.prototype.setDynamicObjectCollection = function(dynamicObjectCollection) {
85
+ var oldCollection = this._dynamicObjectCollection;
86
+ if (oldCollection !== dynamicObjectCollection) {
87
+ if (typeof oldCollection !== 'undefined') {
88
+ oldCollection.objectsRemoved.removeEventListener(DynamicEllipsoidVisualizer.prototype._onObjectsRemoved);
89
+ this.removeAllPrimitives();
90
+ }
91
+ this._dynamicObjectCollection = dynamicObjectCollection;
92
+ if (typeof dynamicObjectCollection !== 'undefined') {
93
+ dynamicObjectCollection.objectsRemoved.addEventListener(DynamicEllipsoidVisualizer.prototype._onObjectsRemoved, this);
94
+ }
95
+ }
96
+ };
97
+
98
+ /**
99
+ * Updates all of the primitives created by this visualizer to match their
100
+ * DynamicObject counterpart at the given time.
101
+ *
102
+ * @param {JulianDate} time The time to update to.
103
+ *
104
+ * @exception {DeveloperError} time is required.
105
+ */
106
+ DynamicEllipsoidVisualizer.prototype.update = function(time) {
107
+ if (typeof time === 'undefined') {
108
+ throw new DeveloperError('time is requied.');
109
+ }
110
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
111
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
112
+ for ( var i = 0, len = dynamicObjects.length; i < len; i++) {
113
+ this._updateObject(time, dynamicObjects[i]);
114
+ }
115
+ }
116
+ };
117
+
118
+ /**
119
+ * Removes all primitives from the scene.
120
+ */
121
+ DynamicEllipsoidVisualizer.prototype.removeAllPrimitives = function() {
122
+ var i, len;
123
+ for (i = 0, len = this._ellipsoidCollection.length; i < len; i++) {
124
+ this._primitives.remove(this._ellipsoidCollection[i]);
125
+ }
126
+
127
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
128
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
129
+ for (i = dynamicObjects.length - 1; i > -1; i--) {
130
+ dynamicObjects[i]._ellipsoidVisualizerIndex = undefined;
131
+ }
132
+ }
133
+
134
+ this._unusedIndexes = [];
135
+ this._ellipsoidCollection = [];
136
+ };
137
+
138
+ /**
139
+ * Returns true if this object was destroyed; otherwise, false.
140
+ * <br /><br />
141
+ * If this object was destroyed, it should not be used; calling any function other than
142
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
143
+ *
144
+ * @memberof DynamicEllipsoidVisualizer
145
+ *
146
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
147
+ *
148
+ * @see DynamicEllipsoidVisualizer#destroy
149
+ */
150
+ DynamicEllipsoidVisualizer.prototype.isDestroyed = function() {
151
+ return false;
152
+ };
153
+
154
+ /**
155
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
156
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
157
+ * <br /><br />
158
+ * Once an object is destroyed, it should not be used; calling any function other than
159
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
160
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
161
+ *
162
+ * @memberof DynamicEllipsoidVisualizer
163
+ *
164
+ * @return {undefined}
165
+ *
166
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
167
+ *
168
+ * @see DynamicEllipsoidVisualizer#isDestroyed
169
+ *
170
+ * @example
171
+ * visualizer = visualizer && visualizer.destroy();
172
+ */
173
+ DynamicEllipsoidVisualizer.prototype.destroy = function() {
174
+ this.removeAllPrimitives();
175
+ return destroyObject(this);
176
+ };
177
+
178
+ var position;
179
+ var orientation;
180
+ DynamicEllipsoidVisualizer.prototype._updateObject = function(time, dynamicObject) {
181
+ var context = this._scene.getContext();
182
+ var dynamicEllipsoid = dynamicObject.ellipsoid;
183
+ if (typeof dynamicEllipsoid === 'undefined') {
184
+ return;
185
+ }
186
+
187
+ var radiiProperty = dynamicEllipsoid.radii;
188
+ if (typeof radiiProperty === 'undefined') {
189
+ return;
190
+ }
191
+
192
+ var positionProperty = dynamicObject.position;
193
+ if (typeof positionProperty === 'undefined') {
194
+ return;
195
+ }
196
+
197
+ var orientationProperty = dynamicObject.orientation;
198
+ if (typeof orientationProperty === 'undefined') {
199
+ return;
200
+ }
201
+
202
+ var ellipsoid;
203
+ var showProperty = dynamicEllipsoid.show;
204
+ var ellipsoidVisualizerIndex = dynamicObject._ellipsoidVisualizerIndex;
205
+ var show = dynamicObject.isAvailable(time) && (typeof showProperty === 'undefined' || showProperty.getValue(time));
206
+
207
+ if (!show) {
208
+ //don't bother creating or updating anything else
209
+ if (typeof ellipsoidVisualizerIndex !== 'undefined') {
210
+ ellipsoid = this._ellipsoidCollection[ellipsoidVisualizerIndex];
211
+ ellipsoid.show = false;
212
+ dynamicObject._ellipsoidVisualizerIndex = undefined;
213
+ this._unusedIndexes.push(ellipsoidVisualizerIndex);
214
+ }
215
+ return;
216
+ }
217
+
218
+ if (typeof ellipsoidVisualizerIndex === 'undefined') {
219
+ var unusedIndexes = this._unusedIndexes;
220
+ var length = unusedIndexes.length;
221
+ if (length > 0) {
222
+ ellipsoidVisualizerIndex = unusedIndexes.pop();
223
+ ellipsoid = this._ellipsoidCollection[ellipsoidVisualizerIndex];
224
+ } else {
225
+ ellipsoidVisualizerIndex = this._ellipsoidCollection.length;
226
+ ellipsoid = new EllipsoidPrimitive();
227
+
228
+ this._ellipsoidCollection.push(ellipsoid);
229
+ this._primitives.add(ellipsoid);
230
+ }
231
+ dynamicObject._ellipsoidVisualizerIndex = ellipsoidVisualizerIndex;
232
+ ellipsoid.dynamicObject = dynamicObject;
233
+
234
+ ellipsoid.material = Material.fromType(context, Material.ColorType);
235
+ } else {
236
+ ellipsoid = this._ellipsoidCollection[ellipsoidVisualizerIndex];
237
+ }
238
+
239
+ ellipsoid.show = true;
240
+
241
+ ellipsoid.radii = radiiProperty.getValue(time, ellipsoid.radii);
242
+
243
+ position = defaultValue(positionProperty.getValueCartesian(time, position), ellipsoid._visualizerPosition);
244
+ orientation = defaultValue(orientationProperty.getValue(time, orientation), ellipsoid._visualizerOrientation);
245
+
246
+ if (typeof position !== 'undefined' &&
247
+ typeof orientation !== 'undefined' &&
248
+ (!position.equals(ellipsoid._visualizerPosition) ||
249
+ !orientation.equals(ellipsoid._visualizerOrientation))) {
250
+ Matrix4.fromRotationTranslation(Matrix3.fromQuaternion(orientation, matrix3Scratch), position, ellipsoid.modelMatrix);
251
+ ellipsoid._visualizerPosition = position.clone(ellipsoid._visualizerPosition);
252
+ ellipsoid._visualizerOrientation = orientation.clone(ellipsoid._visualizerOrientation);
253
+ }
254
+
255
+ var material = dynamicEllipsoid.material;
256
+ if (typeof material !== 'undefined') {
257
+ ellipsoid.material = material.getValue(time, context, ellipsoid.material);
258
+ }
259
+ };
260
+
261
+ DynamicEllipsoidVisualizer.prototype._onObjectsRemoved = function(dynamicObjectCollection, dynamicObjects) {
262
+ var thisEllipsoidCollection = this._ellipsoidCollection;
263
+ var thisUnusedIndexes = this._unusedIndexes;
264
+ for ( var i = dynamicObjects.length - 1; i > -1; i--) {
265
+ var dynamicObject = dynamicObjects[i];
266
+ var ellipsoidVisualizerIndex = dynamicObject._ellipsoidVisualizerIndex;
267
+ if (typeof ellipsoidVisualizerIndex !== 'undefined') {
268
+ var ellipsoid = thisEllipsoidCollection[ellipsoidVisualizerIndex];
269
+ ellipsoid.show = false;
270
+ thisUnusedIndexes.push(ellipsoidVisualizerIndex);
271
+ dynamicObject._ellipsoidVisualizerIndex = undefined;
272
+ }
273
+ }
274
+ };
275
+
276
+ return DynamicEllipsoidVisualizer;
277
+ });