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,350 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/destroyObject',
6
+ '../Core/Color',
7
+ '../Core/Math',
8
+ '../Core/Matrix3',
9
+ '../Core/Matrix4',
10
+ '../Scene/ComplexConicSensorVolume',
11
+ '../Scene/Material'
12
+ ], function(
13
+ defaultValue,
14
+ DeveloperError,
15
+ destroyObject,
16
+ Color,
17
+ CesiumMath,
18
+ Matrix3,
19
+ Matrix4,
20
+ ComplexConicSensorVolume,
21
+ Material) {
22
+ "use strict";
23
+
24
+ var matrix3Scratch = new Matrix3();
25
+
26
+ /**
27
+ * A DynamicObject visualizer which maps the DynamicCone instance
28
+ * in DynamicObject.cone to a ComplexConicSensor primitive.
29
+ * @alias DynamicConeVisualizer
30
+ * @constructor
31
+ *
32
+ * @param {Scene} scene The scene the primitives will be rendered in.
33
+ * @param {DynamicObjectCollection} [dynamicObjectCollection] The dynamicObjectCollection to visualize.
34
+ *
35
+ * @exception {DeveloperError} scene is required.
36
+ *
37
+ * @see DynamicCone
38
+ * @see Scene
39
+ * @see DynamicObject
40
+ * @see DynamicObjectCollection
41
+ * @see CompositeDynamicObjectCollection
42
+ * @see VisualizerCollection
43
+ * @see DynamicBillboardVisualizer
44
+ * @see DynamicConeVisualizerUsingCustomSensor
45
+ * @see DynamicLabelVisualizer
46
+ * @see DynamicPointVisualizer
47
+ * @see DynamicPolygonVisualizer
48
+ * @see DynamicPolylineVisualizer
49
+ * @see DynamicPyramidVisualizer
50
+ *
51
+ */
52
+ var DynamicConeVisualizer = function(scene, dynamicObjectCollection) {
53
+ if (typeof scene === 'undefined') {
54
+ throw new DeveloperError('scene is required.');
55
+ }
56
+
57
+ this._scene = scene;
58
+ this._unusedIndexes = [];
59
+ this._primitives = scene.getPrimitives();
60
+ this._coneCollection = [];
61
+ this._dynamicObjectCollection = undefined;
62
+ this.setDynamicObjectCollection(dynamicObjectCollection);
63
+ };
64
+
65
+ /**
66
+ * Returns the scene being used by this visualizer.
67
+ *
68
+ * @returns {Scene} The scene being used by this visualizer.
69
+ */
70
+ DynamicConeVisualizer.prototype.getScene = function() {
71
+ return this._scene;
72
+ };
73
+
74
+ /**
75
+ * Gets the DynamicObjectCollection being visualized.
76
+ *
77
+ * @returns {DynamicObjectCollection} The DynamicObjectCollection being visualized.
78
+ */
79
+ DynamicConeVisualizer.prototype.getDynamicObjectCollection = function() {
80
+ return this._dynamicObjectCollection;
81
+ };
82
+
83
+ /**
84
+ * Sets the DynamicObjectCollection to visualize.
85
+ *
86
+ * @param dynamicObjectCollection The DynamicObjectCollection to visualizer.
87
+ */
88
+ DynamicConeVisualizer.prototype.setDynamicObjectCollection = function(dynamicObjectCollection) {
89
+ var oldCollection = this._dynamicObjectCollection;
90
+ if (oldCollection !== dynamicObjectCollection) {
91
+ if (typeof oldCollection !== 'undefined') {
92
+ oldCollection.objectsRemoved.removeEventListener(DynamicConeVisualizer.prototype._onObjectsRemoved);
93
+ this.removeAllPrimitives();
94
+ }
95
+ this._dynamicObjectCollection = dynamicObjectCollection;
96
+ if (typeof dynamicObjectCollection !== 'undefined') {
97
+ dynamicObjectCollection.objectsRemoved.addEventListener(DynamicConeVisualizer.prototype._onObjectsRemoved, this);
98
+ }
99
+ }
100
+ };
101
+
102
+ /**
103
+ * Updates all of the primitives created by this visualizer to match their
104
+ * DynamicObject counterpart at the given time.
105
+ *
106
+ * @param {JulianDate} time The time to update to.
107
+ *
108
+ * @exception {DeveloperError} time is required.
109
+ */
110
+ DynamicConeVisualizer.prototype.update = function(time) {
111
+ if (typeof time === 'undefined') {
112
+ throw new DeveloperError('time is requied.');
113
+ }
114
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
115
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
116
+ for ( var i = 0, len = dynamicObjects.length; i < len; i++) {
117
+ this._updateObject(time, dynamicObjects[i]);
118
+ }
119
+ }
120
+ };
121
+
122
+ /**
123
+ * Removes all primitives from the scene.
124
+ */
125
+ DynamicConeVisualizer.prototype.removeAllPrimitives = function() {
126
+ var i, len;
127
+ for (i = 0, len = this._coneCollection.length; i < len; i++) {
128
+ this._primitives.remove(this._coneCollection[i]);
129
+ }
130
+
131
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
132
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
133
+ for (i = dynamicObjects.length - 1; i > -1; i--) {
134
+ dynamicObjects[i]._coneVisualizerIndex = undefined;
135
+ }
136
+ }
137
+ this._unusedIndexes = [];
138
+ this._coneCollection = [];
139
+ };
140
+
141
+ /**
142
+ * Returns true if this object was destroyed; otherwise, false.
143
+ * <br /><br />
144
+ * If this object was destroyed, it should not be used; calling any function other than
145
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
146
+ *
147
+ * @memberof DynamicConeVisualizer
148
+ *
149
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
150
+ *
151
+ * @see DynamicConeVisualizer#destroy
152
+ */
153
+ DynamicConeVisualizer.prototype.isDestroyed = function() {
154
+ return false;
155
+ };
156
+
157
+ /**
158
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
159
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
160
+ * <br /><br />
161
+ * Once an object is destroyed, it should not be used; calling any function other than
162
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
163
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
164
+ *
165
+ * @memberof DynamicConeVisualizer
166
+ *
167
+ * @return {undefined}
168
+ *
169
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
170
+ *
171
+ * @see DynamicConeVisualizer#isDestroyed
172
+ *
173
+ * @example
174
+ * visualizer = visualizer && visualizer.destroy();
175
+ */
176
+ DynamicConeVisualizer.prototype.destroy = function() {
177
+ this.removeAllPrimitives();
178
+ return destroyObject(this);
179
+ };
180
+
181
+ var position;
182
+ var orientation;
183
+ var intersectionColor;
184
+ DynamicConeVisualizer.prototype._updateObject = function(time, dynamicObject) {
185
+ var context = this._scene.getContext();
186
+ var dynamicCone = dynamicObject.cone;
187
+ if (typeof dynamicCone === 'undefined') {
188
+ return;
189
+ }
190
+
191
+ var positionProperty = dynamicObject.position;
192
+ if (typeof positionProperty === 'undefined') {
193
+ return;
194
+ }
195
+
196
+ var orientationProperty = dynamicObject.orientation;
197
+ if (typeof orientationProperty === 'undefined') {
198
+ return;
199
+ }
200
+
201
+ var cone;
202
+ var showProperty = dynamicCone.show;
203
+ var coneVisualizerIndex = dynamicObject._coneVisualizerIndex;
204
+ var show = dynamicObject.isAvailable(time) && (typeof showProperty === 'undefined' || showProperty.getValue(time));
205
+
206
+ if (!show) {
207
+ //don't bother creating or updating anything else
208
+ if (typeof coneVisualizerIndex !== 'undefined') {
209
+ cone = this._coneCollection[coneVisualizerIndex];
210
+ cone.show = false;
211
+ dynamicObject._coneVisualizerIndex = undefined;
212
+ this._unusedIndexes.push(coneVisualizerIndex);
213
+ }
214
+ return;
215
+ }
216
+
217
+ if (typeof coneVisualizerIndex === 'undefined') {
218
+ var unusedIndexes = this._unusedIndexes;
219
+ var length = unusedIndexes.length;
220
+ if (length > 0) {
221
+ coneVisualizerIndex = unusedIndexes.pop();
222
+ cone = this._coneCollection[coneVisualizerIndex];
223
+ } else {
224
+ coneVisualizerIndex = this._coneCollection.length;
225
+ cone = new ComplexConicSensorVolume();
226
+ this._coneCollection.push(cone);
227
+ this._primitives.add(cone);
228
+ }
229
+ dynamicObject._coneVisualizerIndex = coneVisualizerIndex;
230
+ cone.dynamicObject = dynamicObject;
231
+
232
+ // CZML_TODO Determine official defaults
233
+ cone.capMaterial = Material.fromType(context, Material.ColorType);
234
+ cone.innerHalfAngle = 0;
235
+ cone.outerHalfAngle = Math.PI;
236
+ cone.innerMaterial = Material.fromType(context, Material.ColorType);
237
+ cone.intersectionColor = Color.YELLOW;
238
+ cone.maximumClockAngle = CesiumMath.TWO_PI;
239
+ cone.minimumClockAngle = 0;
240
+ cone.outerMaterial = Material.fromType(context, Material.ColorType);
241
+ cone.radius = Number.POSITIVE_INFINITY;
242
+ cone.showIntersection = true;
243
+ cone.silhouetteMaterial = Material.fromType(context, Material.ColorType);
244
+ } else {
245
+ cone = this._coneCollection[coneVisualizerIndex];
246
+ }
247
+
248
+ cone.show = true;
249
+ var property = dynamicCone.minimumClockAngle;
250
+ if (typeof property !== 'undefined') {
251
+ var minimumClockAngle = property.getValue(time);
252
+ if (typeof minimumClockAngle !== 'undefined') {
253
+ cone.minimumClockAngle = minimumClockAngle;
254
+ }
255
+ }
256
+
257
+ property = dynamicCone.maximumClockAngle;
258
+ if (typeof property !== 'undefined') {
259
+ var maximumClockAngle = property.getValue(time);
260
+ if (typeof maximumClockAngle !== 'undefined') {
261
+ cone.maximumClockAngle = maximumClockAngle;
262
+ } else {
263
+ cone.maximumClockAngle = CesiumMath.TWO_PI;
264
+ }
265
+ }
266
+
267
+ property = dynamicCone.innerHalfAngle;
268
+ if (typeof property !== 'undefined') {
269
+ var innerHalfAngle = property.getValue(time);
270
+ if (typeof innerHalfAngle !== 'undefined') {
271
+ cone.innerHalfAngle = innerHalfAngle;
272
+ }
273
+ }
274
+
275
+ property = dynamicCone.outerHalfAngle;
276
+ if (typeof property !== 'undefined') {
277
+ var outerHalfAngle = property.getValue(time);
278
+ if (typeof outerHalfAngle !== 'undefined') {
279
+ cone.outerHalfAngle = outerHalfAngle;
280
+ } else {
281
+ cone.outerHalfAngle = Math.PI;
282
+ }
283
+ }
284
+
285
+ property = dynamicCone.radius;
286
+ if (typeof property !== 'undefined') {
287
+ var radius = property.getValue(time);
288
+ if (typeof radius !== 'undefined') {
289
+ cone.radius = radius;
290
+ }
291
+ }
292
+
293
+ position = defaultValue(positionProperty.getValueCartesian(time, position), cone._visualizerPosition);
294
+ orientation = defaultValue(orientationProperty.getValue(time, orientation), cone._visualizerOrientation);
295
+
296
+ if (typeof position !== 'undefined' &&
297
+ typeof orientation !== 'undefined' &&
298
+ (!position.equals(cone._visualizerPosition) ||
299
+ !orientation.equals(cone._visualizerOrientation))) {
300
+ Matrix4.fromRotationTranslation(Matrix3.fromQuaternion(orientation, matrix3Scratch), position, cone.modelMatrix);
301
+ position.clone(cone._visualizerPosition);
302
+ orientation.clone(cone._visualizerOrientation);
303
+ }
304
+
305
+ var material = dynamicCone.capMaterial;
306
+ if (typeof material !== 'undefined') {
307
+ cone.capMaterial = material.getValue(time, context, cone.capMaterial);
308
+ }
309
+
310
+ material = dynamicCone.innerMaterial;
311
+ if (typeof material !== 'undefined') {
312
+ cone.innerMaterial = material.getValue(time, context, cone.innerMaterial);
313
+ }
314
+
315
+ material = dynamicCone.outerMaterial;
316
+ if (typeof material !== 'undefined') {
317
+ cone.outerMaterial = material.getValue(time, context, cone.outerMaterial);
318
+ }
319
+
320
+ material = dynamicCone.silhouetteMaterial;
321
+ if (typeof material !== 'undefined') {
322
+ cone.silhouetteMaterial = material.getValue(time, context, cone.silhouetteMaterial);
323
+ }
324
+
325
+ property = dynamicCone.intersectionColor;
326
+ if (typeof property !== 'undefined') {
327
+ intersectionColor = property.getValue(time, intersectionColor);
328
+ if (typeof intersectionColor !== 'undefined') {
329
+ cone.intersectionColor = intersectionColor;
330
+ }
331
+ }
332
+ };
333
+
334
+ DynamicConeVisualizer.prototype._onObjectsRemoved = function(dynamicObjectCollection, dynamicObjects) {
335
+ var thisConeCollection = this._coneCollection;
336
+ var thisUnusedIndexes = this._unusedIndexes;
337
+ for ( var i = dynamicObjects.length - 1; i > -1; i--) {
338
+ var dynamicObject = dynamicObjects[i];
339
+ var coneVisualizerIndex = dynamicObject._coneVisualizerIndex;
340
+ if (typeof coneVisualizerIndex !== 'undefined') {
341
+ var cone = thisConeCollection[coneVisualizerIndex];
342
+ cone.show = false;
343
+ thisUnusedIndexes.push(coneVisualizerIndex);
344
+ dynamicObject._coneVisualizerIndex = undefined;
345
+ }
346
+ }
347
+ };
348
+
349
+ return DynamicConeVisualizer;
350
+ });
@@ -0,0 +1,389 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/destroyObject',
6
+ '../Core/Color',
7
+ '../Core/Math',
8
+ '../Core/Matrix3',
9
+ '../Core/Matrix4',
10
+ '../Core/Spherical',
11
+ '../Scene/CustomSensorVolume',
12
+ '../Scene/Material'
13
+ ], function(
14
+ defaultValue,
15
+ DeveloperError,
16
+ destroyObject,
17
+ Color,
18
+ CesiumMath,
19
+ Matrix3,
20
+ Matrix4,
21
+ Spherical,
22
+ CustomSensorVolume,
23
+ Material) {
24
+ "use strict";
25
+
26
+ //CZML_TODO DynamicConeVisualizerUsingCustomSensor is a temporary workaround
27
+ //because ComplexConicSensor has major performance issues. As soon as
28
+ //ComplexConicSensor is working, this class can be deleted and
29
+ //DynamicConeVisualizer is a drop in replacement that already does things
30
+ //"the right way".
31
+
32
+ var matrix3Scratch = new Matrix3();
33
+
34
+ function assignSpherical(index, array, clock, cone) {
35
+ var spherical = array[index];
36
+ if (typeof spherical === 'undefined') {
37
+ array[index] = spherical = new Spherical();
38
+ }
39
+ spherical.clock = clock;
40
+ spherical.cone = cone;
41
+ spherical.magnitude = 1.0;
42
+ }
43
+
44
+ function computeDirections(minimumClockAngle, maximumClockAngle, innerHalfAngle, outerHalfAngle, result) {
45
+ var angle;
46
+ var i = 0;
47
+ var angleStep = CesiumMath.toRadians(2.0);
48
+ if (minimumClockAngle === 0.0 && maximumClockAngle === CesiumMath.TWO_PI) {
49
+ // No clock angle limits, so this is just a circle.
50
+ // There might be a hole but we're ignoring it for now.
51
+ for (angle = 0.0; angle < CesiumMath.TWO_PI; angle += angleStep) {
52
+ assignSpherical(i++, result, angle, outerHalfAngle);
53
+ }
54
+ } else {
55
+ // There are clock angle limits.
56
+ for (angle = minimumClockAngle; angle < maximumClockAngle; angle += angleStep) {
57
+ assignSpherical(i++, result, angle, outerHalfAngle);
58
+ }
59
+ assignSpherical(i++, result, maximumClockAngle, outerHalfAngle);
60
+ if (innerHalfAngle) {
61
+ for (angle = maximumClockAngle; angle > minimumClockAngle; angle -= angleStep) {
62
+ assignSpherical(i++, result, angle, innerHalfAngle);
63
+ }
64
+ assignSpherical(i++, result, minimumClockAngle, innerHalfAngle);
65
+ } else {
66
+ assignSpherical(i++, result, maximumClockAngle, 0.0);
67
+ }
68
+ }
69
+ result.length = i;
70
+ return result;
71
+ }
72
+
73
+ /**
74
+ * A DynamicObject visualizer which maps the DynamicCone instance
75
+ * in DynamicObject.cone to a CustomSensor primitive.
76
+ * @alias DynamicConeVisualizerUsingCustomSensor
77
+ * @constructor
78
+ *
79
+ * @param {Scene} scene The scene the primitives will be rendered in.
80
+ * @param {DynamicObjectCollection} [dynamicObjectCollection] The dynamicObjectCollection to visualize.
81
+ *
82
+ * @exception {DeveloperError} scene is required.
83
+ *
84
+ * @see DynamicCone
85
+ * @see Scene
86
+ * @see DynamicObject
87
+ * @see DynamicObjectCollection
88
+ * @see CompositeDynamicObjectCollection
89
+ * @see VisualizerCollection
90
+ * @see DynamicBillboardVisualizer
91
+ * @see DynamicConeVisualizer
92
+ * @see DynamicLabelVisualizer
93
+ * @see DynamicPointVisualizer
94
+ * @see DynamicPolygonVisualizer
95
+ * @see DynamicPolylineVisualizer
96
+ * @see DynamicPyramidVisualizer
97
+ *
98
+ */
99
+ var DynamicConeVisualizerUsingCustomSensor = function(scene, dynamicObjectCollection) {
100
+ if (typeof scene === 'undefined') {
101
+ throw new DeveloperError('scene is required.');
102
+ }
103
+ this._scene = scene;
104
+ this._unusedIndexes = [];
105
+ this._primitives = scene.getPrimitives();
106
+ this._coneCollection = [];
107
+ this._dynamicObjectCollection = undefined;
108
+ this.setDynamicObjectCollection(dynamicObjectCollection);
109
+ };
110
+
111
+ /**
112
+ * Returns the scene being used by this visualizer.
113
+ *
114
+ * @returns {Scene} The scene being used by this visualizer.
115
+ */
116
+ DynamicConeVisualizerUsingCustomSensor.prototype.getScene = function() {
117
+ return this._scene;
118
+ };
119
+
120
+ /**
121
+ * Gets the DynamicObjectCollection being visualized.
122
+ *
123
+ * @returns {DynamicObjectCollection} The DynamicObjectCollection being visualized.
124
+ */
125
+ DynamicConeVisualizerUsingCustomSensor.prototype.getDynamicObjectCollection = function() {
126
+ return this._dynamicObjectCollection;
127
+ };
128
+
129
+ /**
130
+ * Sets the DynamicObjectCollection to visualize.
131
+ *
132
+ * @param dynamicObjectCollection The DynamicObjectCollection to visualizer.
133
+ */
134
+ DynamicConeVisualizerUsingCustomSensor.prototype.setDynamicObjectCollection = function(dynamicObjectCollection) {
135
+ var oldCollection = this._dynamicObjectCollection;
136
+ if (oldCollection !== dynamicObjectCollection) {
137
+ if (typeof oldCollection !== 'undefined') {
138
+ oldCollection.objectsRemoved.removeEventListener(DynamicConeVisualizerUsingCustomSensor.prototype._onObjectsRemoved);
139
+ this.removeAllPrimitives();
140
+ }
141
+ this._dynamicObjectCollection = dynamicObjectCollection;
142
+ if (typeof dynamicObjectCollection !== 'undefined') {
143
+ dynamicObjectCollection.objectsRemoved.addEventListener(DynamicConeVisualizerUsingCustomSensor.prototype._onObjectsRemoved, this);
144
+ }
145
+ }
146
+ };
147
+
148
+ /**
149
+ * Updates all of the primitives created by this visualizer to match their
150
+ * DynamicObject counterpart at the given time.
151
+ *
152
+ * @param {JulianDate} time The time to update to.
153
+ *
154
+ * @exception {DeveloperError} time is required.
155
+ */
156
+ DynamicConeVisualizerUsingCustomSensor.prototype.update = function(time) {
157
+ if (typeof time === 'undefined') {
158
+ throw new DeveloperError('time is requied.');
159
+ }
160
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
161
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
162
+ for ( var i = 0, len = dynamicObjects.length; i < len; i++) {
163
+ this._updateObject(time, dynamicObjects[i]);
164
+ }
165
+ }
166
+ };
167
+
168
+ /**
169
+ * Removes all primitives from the scene.
170
+ */
171
+ DynamicConeVisualizerUsingCustomSensor.prototype.removeAllPrimitives = function() {
172
+ var i, len;
173
+ for (i = 0, len = this._coneCollection.length; i < len; i++) {
174
+ this._primitives.remove(this._coneCollection[i]);
175
+ }
176
+
177
+ if (typeof this._dynamicObjectCollection !== 'undefined') {
178
+ var dynamicObjects = this._dynamicObjectCollection.getObjects();
179
+ for (i = dynamicObjects.length - 1; i > -1; i--) {
180
+ dynamicObjects[i]._coneVisualizerIndex = undefined;
181
+ }
182
+ }
183
+
184
+ this._unusedIndexes = [];
185
+ this._coneCollection = [];
186
+ };
187
+
188
+ /**
189
+ * Returns true if this object was destroyed; otherwise, false.
190
+ * <br /><br />
191
+ * If this object was destroyed, it should not be used; calling any function other than
192
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
193
+ *
194
+ * @memberof DynamicConeVisualizerUsingCustomSensor
195
+ *
196
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
197
+ *
198
+ * @see DynamicConeVisualizerUsingCustomSensor#destroy
199
+ */
200
+ DynamicConeVisualizerUsingCustomSensor.prototype.isDestroyed = function() {
201
+ return false;
202
+ };
203
+
204
+ /**
205
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
206
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
207
+ * <br /><br />
208
+ * Once an object is destroyed, it should not be used; calling any function other than
209
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
210
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
211
+ *
212
+ * @memberof DynamicConeVisualizerUsingCustomSensor
213
+ *
214
+ * @return {undefined}
215
+ *
216
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
217
+ *
218
+ * @see DynamicConeVisualizerUsingCustomSensor#isDestroyed
219
+ *
220
+ * @example
221
+ * visualizer = visualizer && visualizer.destroy();
222
+ */
223
+ DynamicConeVisualizerUsingCustomSensor.prototype.destroy = function() {
224
+ this.removeAllPrimitives();
225
+ return destroyObject(this);
226
+ };
227
+
228
+ var position;
229
+ var orientation;
230
+ var intersectionColor;
231
+ DynamicConeVisualizerUsingCustomSensor.prototype._updateObject = function(time, dynamicObject) {
232
+ var context = this._scene.getContext();
233
+ var dynamicCone = dynamicObject.cone;
234
+ if (typeof dynamicCone === 'undefined') {
235
+ return;
236
+ }
237
+
238
+ var positionProperty = dynamicObject.position;
239
+ if (typeof positionProperty === 'undefined') {
240
+ return;
241
+ }
242
+
243
+ var orientationProperty = dynamicObject.orientation;
244
+ if (typeof orientationProperty === 'undefined') {
245
+ return;
246
+ }
247
+
248
+ var cone;
249
+ var showProperty = dynamicCone.show;
250
+ var coneVisualizerIndex = dynamicObject._coneVisualizerIndex;
251
+ var show = dynamicObject.isAvailable(time) && (typeof showProperty === 'undefined' || showProperty.getValue(time));
252
+
253
+ if (!show) {
254
+ //don't bother creating or updating anything else
255
+ if (typeof coneVisualizerIndex !== 'undefined') {
256
+ cone = this._coneCollection[coneVisualizerIndex];
257
+ cone.show = false;
258
+ dynamicObject._coneVisualizerIndex = undefined;
259
+ this._unusedIndexes.push(coneVisualizerIndex);
260
+ }
261
+ return;
262
+ }
263
+
264
+ if (typeof coneVisualizerIndex === 'undefined') {
265
+ var unusedIndexes = this._unusedIndexes;
266
+ var length = unusedIndexes.length;
267
+ if (length > 0) {
268
+ coneVisualizerIndex = unusedIndexes.pop();
269
+ cone = this._coneCollection[coneVisualizerIndex];
270
+ } else {
271
+ coneVisualizerIndex = this._coneCollection.length;
272
+ cone = new CustomSensorVolume();
273
+ cone._directionsScratch = [];
274
+ this._coneCollection.push(cone);
275
+ this._primitives.add(cone);
276
+ }
277
+ dynamicObject._coneVisualizerIndex = coneVisualizerIndex;
278
+ cone.dynamicObject = dynamicObject;
279
+
280
+ // CZML_TODO Determine official defaults
281
+ cone.material = Material.fromType(context, Material.ColorType);
282
+ cone.intersectionColor = Color.YELLOW;
283
+ cone.radius = Number.POSITIVE_INFINITY;
284
+ cone.showIntersection = true;
285
+ } else {
286
+ cone = this._coneCollection[coneVisualizerIndex];
287
+ }
288
+
289
+ cone.show = true;
290
+
291
+ var minimumClockAngle;
292
+ var property = dynamicCone.minimumClockAngle;
293
+ if (typeof property !== 'undefined') {
294
+ minimumClockAngle = property.getValue(time);
295
+ }
296
+ if (typeof minimumClockAngle === 'undefined') {
297
+ minimumClockAngle = 0;
298
+ }
299
+
300
+ var maximumClockAngle;
301
+ property = dynamicCone.maximumClockAngle;
302
+ if (typeof property !== 'undefined') {
303
+ maximumClockAngle = property.getValue(time);
304
+ }
305
+ if (typeof maximumClockAngle === 'undefined') {
306
+ maximumClockAngle = CesiumMath.TWO_PI;
307
+ }
308
+
309
+ var innerHalfAngle;
310
+ property = dynamicCone.innerHalfAngle;
311
+ if (typeof property !== 'undefined') {
312
+ innerHalfAngle = property.getValue(time);
313
+ }
314
+ if (typeof innerHalfAngle === 'undefined') {
315
+ innerHalfAngle = 0;
316
+ }
317
+
318
+ var outerHalfAngle;
319
+ property = dynamicCone.outerHalfAngle;
320
+ if (typeof property !== 'undefined') {
321
+ outerHalfAngle = property.getValue(time);
322
+ }
323
+ if (typeof outerHalfAngle === 'undefined') {
324
+ outerHalfAngle = Math.PI;
325
+ }
326
+
327
+ if (minimumClockAngle !== cone.minimumClockAngle ||
328
+ maximumClockAngle !== cone.maximumClockAngle ||
329
+ innerHalfAngle !== cone.innerHalfAngle ||
330
+ outerHalfAngle !== cone.outerHalfAngle) {
331
+
332
+ cone.setDirections(computeDirections(minimumClockAngle, maximumClockAngle, innerHalfAngle, outerHalfAngle, cone._directionsScratch));
333
+ cone.innerHalfAngle = innerHalfAngle;
334
+ cone.maximumClockAngle = maximumClockAngle;
335
+ cone.outerHalfAngle = outerHalfAngle;
336
+ cone.minimumClockAngle = minimumClockAngle;
337
+ }
338
+
339
+ property = dynamicCone.radius;
340
+ if (typeof property !== 'undefined') {
341
+ var radius = property.getValue(time);
342
+ if (typeof radius !== 'undefined') {
343
+ cone.radius = radius;
344
+ }
345
+ }
346
+
347
+ position = defaultValue(positionProperty.getValueCartesian(time, position), cone._visualizerPosition);
348
+ orientation = defaultValue(orientationProperty.getValue(time, orientation), cone._visualizerOrientation);
349
+
350
+ if (typeof position !== 'undefined' &&
351
+ typeof orientation !== 'undefined' &&
352
+ (!position.equals(cone._visualizerPosition) ||
353
+ !orientation.equals(cone._visualizerOrientation))) {
354
+ Matrix4.fromRotationTranslation(Matrix3.fromQuaternion(orientation, matrix3Scratch), position, cone.modelMatrix);
355
+ position.clone(cone._visualizerPosition);
356
+ orientation.clone(cone._visualizerOrientation);
357
+ }
358
+
359
+ var material = dynamicCone.outerMaterial;
360
+ if (typeof material !== 'undefined') {
361
+ cone.material = material.getValue(time, context, cone.material);
362
+ }
363
+
364
+ property = dynamicCone.intersectionColor;
365
+ if (typeof property !== 'undefined') {
366
+ intersectionColor = property.getValue(time, intersectionColor);
367
+ if (typeof intersectionColor !== 'undefined') {
368
+ cone.intersectionColor = intersectionColor;
369
+ }
370
+ }
371
+ };
372
+
373
+ DynamicConeVisualizerUsingCustomSensor.prototype._onObjectsRemoved = function(dynamicObjectCollection, dynamicObjects) {
374
+ var thisConeCollection = this._coneCollection;
375
+ var thisUnusedIndexes = this._unusedIndexes;
376
+ for ( var i = dynamicObjects.length - 1; i > -1; i--) {
377
+ var dynamicObject = dynamicObjects[i];
378
+ var coneVisualizerIndex = dynamicObject._coneVisualizerIndex;
379
+ if (typeof coneVisualizerIndex !== 'undefined') {
380
+ var cone = thisConeCollection[coneVisualizerIndex];
381
+ cone.show = false;
382
+ thisUnusedIndexes.push(coneVisualizerIndex);
383
+ dynamicObject._coneVisualizerIndex = undefined;
384
+ }
385
+ }
386
+ };
387
+
388
+ return DynamicConeVisualizerUsingCustomSensor;
389
+ });