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.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- 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
|
+
});
|