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,229 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'../Core/DeveloperError',
|
|
4
|
+
'../Core/ComponentDatatype',
|
|
5
|
+
'../Renderer/BufferUsage',
|
|
6
|
+
'../Core/IndexDatatype'
|
|
7
|
+
], function(
|
|
8
|
+
DeveloperError,
|
|
9
|
+
ComponentDatatype,
|
|
10
|
+
BufferUsage,
|
|
11
|
+
IndexDatatype) {
|
|
12
|
+
"use strict";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Provides terrain or other geometry for the surface of an ellipsoid. The surface geometry is
|
|
16
|
+
* organized into a pyramid of tiles according to a {@link TilingScheme}. This type describes an
|
|
17
|
+
* interface and is not intended to be instantiated directly.
|
|
18
|
+
*
|
|
19
|
+
* @alias TerrainProvider
|
|
20
|
+
* @constructor
|
|
21
|
+
* @private
|
|
22
|
+
*
|
|
23
|
+
* @see EllipsoidTerrainProvider
|
|
24
|
+
*/
|
|
25
|
+
function TerrainProvider() {
|
|
26
|
+
/**
|
|
27
|
+
* The tiling scheme used to tile the surface.
|
|
28
|
+
*
|
|
29
|
+
* @type TilingScheme
|
|
30
|
+
*/
|
|
31
|
+
this.tilingScheme = undefined;
|
|
32
|
+
|
|
33
|
+
this.levelZeroMaximumGeometricError = undefined;
|
|
34
|
+
|
|
35
|
+
throw new DeveloperError('This type should not be instantiated directly.');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Specifies the indices of the attributes of the terrain geometry.
|
|
40
|
+
*
|
|
41
|
+
* @memberof TerrainProvider
|
|
42
|
+
*/
|
|
43
|
+
TerrainProvider.attributeIndices = {
|
|
44
|
+
position3D : 0,
|
|
45
|
+
textureCoordinates : 1
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
TerrainProvider.wireframe = false;
|
|
49
|
+
|
|
50
|
+
var regularGridIndexArrays = [];
|
|
51
|
+
|
|
52
|
+
TerrainProvider.getRegularGridIndices = function(width, height) {
|
|
53
|
+
var byWidth = regularGridIndexArrays[width];
|
|
54
|
+
if (typeof byWidth === 'undefined') {
|
|
55
|
+
regularGridIndexArrays[width] = byWidth = [];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var indices = byWidth[height];
|
|
59
|
+
if (typeof indices === 'undefined') {
|
|
60
|
+
indices = byWidth[height] = new Uint16Array((width - 1) * (height - 1) * 6);
|
|
61
|
+
|
|
62
|
+
var index = 0;
|
|
63
|
+
var indicesIndex = 0;
|
|
64
|
+
for ( var i = 0; i < height - 1; ++i) {
|
|
65
|
+
for ( var j = 0; j < width - 1; ++j) {
|
|
66
|
+
var upperLeft = index;
|
|
67
|
+
var lowerLeft = upperLeft + width;
|
|
68
|
+
var lowerRight = lowerLeft + 1;
|
|
69
|
+
var upperRight = upperLeft + 1;
|
|
70
|
+
|
|
71
|
+
indices[indicesIndex++] = upperLeft;
|
|
72
|
+
indices[indicesIndex++] = lowerLeft;
|
|
73
|
+
indices[indicesIndex++] = upperRight;
|
|
74
|
+
indices[indicesIndex++] = upperRight;
|
|
75
|
+
indices[indicesIndex++] = lowerLeft;
|
|
76
|
+
indices[indicesIndex++] = lowerRight;
|
|
77
|
+
|
|
78
|
+
++index;
|
|
79
|
+
}
|
|
80
|
+
++index;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return indices;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
function addTriangle(lines, linesIndex, i0, i1, i2) {
|
|
88
|
+
lines[linesIndex++] = i0;
|
|
89
|
+
lines[linesIndex++] = i1;
|
|
90
|
+
|
|
91
|
+
lines[linesIndex++] = i1;
|
|
92
|
+
lines[linesIndex++] = i2;
|
|
93
|
+
|
|
94
|
+
lines[linesIndex++] = i2;
|
|
95
|
+
lines[linesIndex++] = i0;
|
|
96
|
+
|
|
97
|
+
return linesIndex;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function trianglesToLines(triangles) {
|
|
101
|
+
var count = triangles.length;
|
|
102
|
+
var lines = new Uint16Array(2 * count);
|
|
103
|
+
var linesIndex = 0;
|
|
104
|
+
for ( var i = 0; i < count; i += 3) {
|
|
105
|
+
linesIndex = addTriangle(lines, linesIndex, triangles[i], triangles[i + 1], triangles[i + 2]);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return lines;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
TerrainProvider.createTileEllipsoidGeometryFromBuffers = function(context, tile, buffers) {
|
|
112
|
+
var datatype = ComponentDatatype.FLOAT;
|
|
113
|
+
var typedArray = buffers.vertices;
|
|
114
|
+
var buffer = context.createVertexBuffer(typedArray, BufferUsage.STATIC_DRAW);
|
|
115
|
+
var stride = 5 * datatype.sizeInBytes;
|
|
116
|
+
var attributes = [{
|
|
117
|
+
index : TerrainProvider.attributeIndices.position3D,
|
|
118
|
+
vertexBuffer : buffer,
|
|
119
|
+
componentDatatype : datatype,
|
|
120
|
+
componentsPerAttribute : 3,
|
|
121
|
+
offsetInBytes : 0,
|
|
122
|
+
strideInBytes : stride
|
|
123
|
+
}, {
|
|
124
|
+
index : TerrainProvider.attributeIndices.textureCoordinates,
|
|
125
|
+
vertexBuffer : buffer,
|
|
126
|
+
componentDatatype : datatype,
|
|
127
|
+
componentsPerAttribute : 2,
|
|
128
|
+
offsetInBytes : 3 * datatype.sizeInBytes,
|
|
129
|
+
strideInBytes : stride
|
|
130
|
+
}];
|
|
131
|
+
|
|
132
|
+
var indexBuffers = buffers.indices.indexBuffers || {};
|
|
133
|
+
var indexBuffer = indexBuffers[context.getId()];
|
|
134
|
+
if (typeof indexBuffer === 'undefined' || indexBuffer.isDestroyed()) {
|
|
135
|
+
var indices = buffers.indices;
|
|
136
|
+
if (TerrainProvider.wireframe) {
|
|
137
|
+
indices = trianglesToLines(buffers.indices);
|
|
138
|
+
}
|
|
139
|
+
indexBuffer = context.createIndexBuffer(indices, BufferUsage.STATIC_DRAW, IndexDatatype.UNSIGNED_SHORT);
|
|
140
|
+
indexBuffer.setVertexArrayDestroyable(false);
|
|
141
|
+
indexBuffer.referenceCount = 1;
|
|
142
|
+
indexBuffers[context.getId()] = indexBuffer;
|
|
143
|
+
buffers.indices.indexBuffers = indexBuffers;
|
|
144
|
+
} else {
|
|
145
|
+
++indexBuffer.referenceCount;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
tile.vertexArray = context.createVertexArray(attributes, indexBuffer);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Specifies the quality of terrain created from heightmaps. A value of 1.0 will
|
|
153
|
+
* ensure that adjacent heightmap vertices are separated by no more than
|
|
154
|
+
* {@link CentralBodySurface._maxScreenSpaceError} screen pixels and will probably go very slowly.
|
|
155
|
+
* A value of 0.5 will cut the estimated level zero geometric error in half, allowing twice the
|
|
156
|
+
* screen pixels between adjacent heightmap vertices and thus rendering more quickly.
|
|
157
|
+
*/
|
|
158
|
+
TerrainProvider.heightmapTerrainQuality = 0.25;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Determines an appropriate geometric error estimate when the geometry comes from a heightmap.
|
|
162
|
+
*
|
|
163
|
+
* @param ellipsoid The ellipsoid to which the terrain is attached.
|
|
164
|
+
* @param tileImageWidth The width, in pixels, of the heightmap associated with a single tile.
|
|
165
|
+
* @param numberOfTilesAtLevelZero The number of tiles in the horizontal direction at tile level zero.
|
|
166
|
+
* @returns {Number} An estimated geometric error.
|
|
167
|
+
*/
|
|
168
|
+
TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap = function(ellipsoid, tileImageWidth, numberOfTilesAtLevelZero) {
|
|
169
|
+
return ellipsoid.getMaximumRadius() * 2 * Math.PI * TerrainProvider.heightmapTerrainQuality / (tileImageWidth * numberOfTilesAtLevelZero);
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Gets the maximum geometric error allowed in a tile at a given level.
|
|
174
|
+
*
|
|
175
|
+
* @param {Number} level The tile level for which to get the maximum geometric error.
|
|
176
|
+
* @returns {Number} The maximum geometric error.
|
|
177
|
+
*/
|
|
178
|
+
TerrainProvider.prototype.getLevelMaximumGeometricError = function(level) {
|
|
179
|
+
return this.levelZeroMaximumGeometricError / (1 << level);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// Is there a limit on 'level' of the tile that can be passed in? It seems
|
|
183
|
+
// natural to have a maxLevel, but this would cause problems if we have hi-res imagery
|
|
184
|
+
// and low-res terrain. So I'd say we can continue to refine terrain tiles arbitrarily
|
|
185
|
+
// until both the terrain and all the imagery layers have no more detail to give. In that
|
|
186
|
+
// case, this method is expected to be able to produce geometry for an arbitrarily-deep
|
|
187
|
+
// tile tree.
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Request the tile geometry from the remote server. Once complete, the
|
|
191
|
+
* tile state should be set to RECEIVED. Alternatively, tile state can be set to
|
|
192
|
+
* UNLOADED to indicate that the request should be attempted again next update, if the tile
|
|
193
|
+
* is still needed.
|
|
194
|
+
*
|
|
195
|
+
* @param {Tile} The tile to request geometry for.
|
|
196
|
+
*/
|
|
197
|
+
TerrainProvider.prototype.requestTileGeometry = function(tile) {
|
|
198
|
+
throw new DeveloperError('This type should not be instantiated directly.');
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Transform the tile geometry from the format requested from the remote server
|
|
203
|
+
* into a format suitable for resource creation. Once complete, the tile
|
|
204
|
+
* state should be set to TRANSFORMED. Alternatively, tile state can be set to
|
|
205
|
+
* RECEIVED to indicate that the transformation should be attempted again next update, if the tile
|
|
206
|
+
* is still needed.
|
|
207
|
+
*
|
|
208
|
+
* @param {Context} context The context to use to create resources.
|
|
209
|
+
* @param {Tile} tile The tile to transform geometry for.
|
|
210
|
+
*/
|
|
211
|
+
TerrainProvider.prototype.transformGeometry = function(context, tile) {
|
|
212
|
+
throw new DeveloperError('This type should not be instantiated directly.');
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Create WebGL resources for the tile using whatever data the transformGeometry step produced.
|
|
217
|
+
* Once complete, the tile state should be set to READY. Alternatively, tile state can be set to
|
|
218
|
+
* TRANSFORMED to indicate that resource creation should be attempted again next update, if the tile
|
|
219
|
+
* is still needed.
|
|
220
|
+
*
|
|
221
|
+
* @param {Context} context The context to use to create resources.
|
|
222
|
+
* @param {Tile} tile The tile to create resources for.
|
|
223
|
+
*/
|
|
224
|
+
TerrainProvider.prototype.createResources = function(context, tile) {
|
|
225
|
+
throw new DeveloperError('This type should not be instantiated directly.');
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
return TerrainProvider;
|
|
229
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'../Core/destroyObject',
|
|
4
|
+
'../Core/DeveloperError',
|
|
5
|
+
'../Renderer/PixelDatatype',
|
|
6
|
+
'../Renderer/PixelFormat',
|
|
7
|
+
'../Renderer/Texture'
|
|
8
|
+
], function(
|
|
9
|
+
destroyObject,
|
|
10
|
+
DeveloperError,
|
|
11
|
+
PixelDatatype,
|
|
12
|
+
PixelFormat,
|
|
13
|
+
Texture) {
|
|
14
|
+
"use strict";
|
|
15
|
+
|
|
16
|
+
var PooledTexture;
|
|
17
|
+
function createPooledTexture(texture, textureTypeKey, pool) {
|
|
18
|
+
if (typeof PooledTexture === 'undefined') {
|
|
19
|
+
// define the class only when needed, so we can use modern
|
|
20
|
+
// language features without breaking legacy browsers at setup time.
|
|
21
|
+
PooledTexture = function(texture, textureTypeKey, pool) {
|
|
22
|
+
this._texture = texture;
|
|
23
|
+
this._textureTypeKey = textureTypeKey;
|
|
24
|
+
this._pool = pool;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// pass through all methods to the underlying texture
|
|
28
|
+
Object.keys(Texture.prototype).forEach(function(methodName) {
|
|
29
|
+
PooledTexture.prototype[methodName] = function() {
|
|
30
|
+
var texture = this._texture;
|
|
31
|
+
return texture[methodName].apply(texture, arguments);
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// except for destroy, which releases back into the pool
|
|
36
|
+
PooledTexture.prototype.destroy = function() {
|
|
37
|
+
var freeList = this._pool._free[this._textureTypeKey];
|
|
38
|
+
if (typeof freeList === 'undefined') {
|
|
39
|
+
freeList = this._pool._free[this._textureTypeKey] = [];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (freeList.length >= 8) {
|
|
43
|
+
this._texture.destroy();
|
|
44
|
+
} else {
|
|
45
|
+
freeList.push(this);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return new PooledTexture(texture, textureTypeKey, pool);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A pool of textures. Textures created from the pool will be released back into the pool
|
|
55
|
+
* when destroy() is called, so future calls to create may re-use a released texture.
|
|
56
|
+
* <br/><br/>
|
|
57
|
+
* Texture pools are useful when textures are being created and destroyed repeatedly.
|
|
58
|
+
*
|
|
59
|
+
* @alias Texture2DPool
|
|
60
|
+
* @constructor
|
|
61
|
+
*
|
|
62
|
+
* @see Texture
|
|
63
|
+
*/
|
|
64
|
+
var TexturePool = function() {
|
|
65
|
+
this._free = {};
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Create a texture. This function takes the same arguments as {@link Context#createTexture2D},
|
|
70
|
+
* but may return a pooled texture if there are any available. If a pooled texture is re-used,
|
|
71
|
+
* and no source is provided, the new texture will still retain its old contents.
|
|
72
|
+
*
|
|
73
|
+
* @memberof TexturePool
|
|
74
|
+
*
|
|
75
|
+
* @param {Context} context The context to use to create textures when needed.
|
|
76
|
+
*
|
|
77
|
+
* @exception {DeveloperError} description is required.
|
|
78
|
+
*
|
|
79
|
+
* @see Context#createTexture2D
|
|
80
|
+
*/
|
|
81
|
+
TexturePool.prototype.createTexture2D = function(context, description) {
|
|
82
|
+
if (!description) {
|
|
83
|
+
throw new DeveloperError('description is required.');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
var source = description.source;
|
|
87
|
+
var width = typeof source !== 'undefined' ? source.width : description.width;
|
|
88
|
+
var height = typeof source !== 'undefined' ? source.height : description.height;
|
|
89
|
+
//coerce values to primitive numbers to make textureTypeKey smaller.
|
|
90
|
+
var pixelFormat = +(description.pixelFormat || PixelFormat.RGBA);
|
|
91
|
+
var pixelDatatype = +(description.pixelDatatype || PixelDatatype.UNSIGNED_BYTE);
|
|
92
|
+
var preMultiplyAlpha = +(description.preMultiplyAlpha || pixelFormat === PixelFormat.RGB || pixelFormat === PixelFormat.LUMINANCE);
|
|
93
|
+
|
|
94
|
+
var textureTypeKey = JSON.stringify([width, height, pixelFormat, pixelDatatype, preMultiplyAlpha]);
|
|
95
|
+
|
|
96
|
+
var freeList = this._free[textureTypeKey];
|
|
97
|
+
if (typeof freeList !== 'undefined' && freeList.length > 0) {
|
|
98
|
+
var texture = freeList.pop();
|
|
99
|
+
if (typeof source !== 'undefined') {
|
|
100
|
+
texture.copyFrom(source);
|
|
101
|
+
}
|
|
102
|
+
return texture;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return createPooledTexture(context.createTexture2D(description), textureTypeKey, this);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Returns true if this object was destroyed; otherwise, false.
|
|
110
|
+
* <br /><br />
|
|
111
|
+
* If this object was destroyed, it should not be used; calling any function other than
|
|
112
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
|
|
113
|
+
*
|
|
114
|
+
* @memberof TexturePool
|
|
115
|
+
*
|
|
116
|
+
* @return {Boolean} True if this object was destroyed; otherwise, false.
|
|
117
|
+
*
|
|
118
|
+
* @see TexturePool#destroy
|
|
119
|
+
*/
|
|
120
|
+
TexturePool.prototype.isDestroyed = function() {
|
|
121
|
+
return false;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
|
|
126
|
+
* release of WebGL resources, instead of relying on the garbage collector to destroy this object.
|
|
127
|
+
* <br /><br />
|
|
128
|
+
* Once an object is destroyed, it should not be used; calling any function other than
|
|
129
|
+
* <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
|
|
130
|
+
* assign the return value (<code>undefined</code>) to the object as done in the example.
|
|
131
|
+
*
|
|
132
|
+
* @memberof TexturePool
|
|
133
|
+
*
|
|
134
|
+
* @return {undefined}
|
|
135
|
+
*
|
|
136
|
+
* @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
|
|
137
|
+
*
|
|
138
|
+
* @see TexturePool#isDestroyed
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* pool = pool && pool.destroy();
|
|
142
|
+
*/
|
|
143
|
+
TexturePool.prototype.destroy = function() {
|
|
144
|
+
var free = this._free;
|
|
145
|
+
Object.keys(free).forEach(function(textureTypeKey) {
|
|
146
|
+
free[textureTypeKey].forEach(function(texture) {
|
|
147
|
+
texture._texture.destroy();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
return destroyObject(this);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
return TexturePool;
|
|
154
|
+
});
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'../Core/DeveloperError',
|
|
4
|
+
'./TileState'
|
|
5
|
+
], function(
|
|
6
|
+
DeveloperError,
|
|
7
|
+
TileState) {
|
|
8
|
+
"use strict";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A node in the quadtree representing the surface of a {@link CentralBody}.
|
|
12
|
+
* A tile holds the surface geometry for its horizontal extent and zero or
|
|
13
|
+
* more imagery textures overlaid on the geometry.
|
|
14
|
+
*
|
|
15
|
+
* @alias Tile
|
|
16
|
+
* @constructor
|
|
17
|
+
* @private
|
|
18
|
+
*
|
|
19
|
+
* @param {TilingScheme} description.tilingScheme The tiling scheme of which the new tile is a part, such as a
|
|
20
|
+
* {@link WebMercatorTilingScheme} or a {@link GeographicTilingScheme}.
|
|
21
|
+
* @param {Number} description.x The tile x coordinate.
|
|
22
|
+
* @param {Number} description.y The tile y coordinate.
|
|
23
|
+
* @param {Number} description.level The tile level-of-detail.
|
|
24
|
+
* @param {Tile} description.parent The parent of this tile in a tile tree system.
|
|
25
|
+
*
|
|
26
|
+
* @exception {DeveloperError} Either description.extent or both description.x and description.y is required.
|
|
27
|
+
* @exception {DeveloperError} description.level is required.
|
|
28
|
+
*/
|
|
29
|
+
var Tile = function(description) {
|
|
30
|
+
if (typeof description === 'undefined') {
|
|
31
|
+
throw new DeveloperError('description is required.');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (typeof description.x === 'undefined' || typeof description.y === 'undefined') {
|
|
35
|
+
if (typeof description.extent === 'undefined') {
|
|
36
|
+
throw new DeveloperError('Either description.extent is required or description.x and description.y are required.');
|
|
37
|
+
}
|
|
38
|
+
} else if (description.x < 0 || description.y < 0) {
|
|
39
|
+
throw new DeveloperError('description.x and description.y must be greater than or equal to zero.');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (typeof description.level === 'undefined' || description.zoom < 0) {
|
|
43
|
+
throw new DeveloperError('description.level is required and must be greater than or equal to zero.');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (typeof description.tilingScheme === 'undefined') {
|
|
47
|
+
throw new DeveloperError('description.tilingScheme is required.');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The tiling scheme used to tile the surface.
|
|
52
|
+
* @type TilingScheme
|
|
53
|
+
*/
|
|
54
|
+
this.tilingScheme = description.tilingScheme;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The x coordinate.
|
|
58
|
+
* @type Number
|
|
59
|
+
*/
|
|
60
|
+
this.x = description.x;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The y coordinate.
|
|
64
|
+
* @type Number
|
|
65
|
+
*/
|
|
66
|
+
this.y = description.y;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The level-of-detail, where zero is the coarsest, least-detailed.
|
|
70
|
+
* @type Number
|
|
71
|
+
*/
|
|
72
|
+
this.level = description.level;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The parent of this tile in a tiling scheme.
|
|
76
|
+
* @type Tile
|
|
77
|
+
*/
|
|
78
|
+
this.parent = description.parent;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The children of this tile in a tiling scheme.
|
|
82
|
+
* @type Array
|
|
83
|
+
*/
|
|
84
|
+
this.children = undefined;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The cartographic extent of the tile, with north, south, east and
|
|
88
|
+
* west properties in radians.
|
|
89
|
+
* @type Extent
|
|
90
|
+
*/
|
|
91
|
+
this.extent = this.tilingScheme.tileXYToExtent(this.x, this.y, this.level);
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The {@link VertexArray} defining the geometry of this tile. This property
|
|
95
|
+
* is expected to be set before the tile enter's the {@link TileState.READY}
|
|
96
|
+
* {@link state}.
|
|
97
|
+
* @type VertexArray
|
|
98
|
+
*/
|
|
99
|
+
this.vertexArray = undefined;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The center of this tile. The {@link vertexArray} is rendered
|
|
103
|
+
* relative-to-center (RTC) using this center. Note that the center of the
|
|
104
|
+
* {@link boundingSphere3D} is not necessarily the same as this center.
|
|
105
|
+
* This property is expected to be set before the tile enter's the
|
|
106
|
+
* {@link TileState.READY} {@link state}.
|
|
107
|
+
* @type Cartesian3
|
|
108
|
+
*/
|
|
109
|
+
this.center = undefined;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The maximum height of terrain in this tile, in meters above the ellipsoid.
|
|
113
|
+
* @type Number
|
|
114
|
+
*/
|
|
115
|
+
this.maxHeight = undefined;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* A sphere that completely contains this tile on the globe. This property may be
|
|
119
|
+
* undefined until the tile's {@link vertexArray} is loaded.
|
|
120
|
+
* @type BoundingSphere
|
|
121
|
+
*/
|
|
122
|
+
this.boundingSphere3D = undefined;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* The current state of the tile in the tile load pipeline.
|
|
126
|
+
* @type TileState
|
|
127
|
+
*/
|
|
128
|
+
this.state = TileState.UNLOADED;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* The previous tile in the {@link TileLoadQueue}.
|
|
132
|
+
* @type Tile
|
|
133
|
+
*/
|
|
134
|
+
this.loadPrevious = undefined;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* The next tile in the {@link TileLoadQueue}.
|
|
138
|
+
* @type Tile
|
|
139
|
+
*/
|
|
140
|
+
this.loadNext = undefined;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* The previous tile in the {@link TileReplacementQueue}.
|
|
144
|
+
* @type Tile
|
|
145
|
+
*/
|
|
146
|
+
this.replacementPrevious = undefined;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The next tile in the {@link TileReplacementQueue}.
|
|
150
|
+
* @type Tile
|
|
151
|
+
*/
|
|
152
|
+
this.replacementNext = undefined;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* The {@link TileImagery} attached to this tile.
|
|
156
|
+
* @type Array
|
|
157
|
+
*/
|
|
158
|
+
this.imagery = [];
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Transient data stored during the load process. The exact content
|
|
162
|
+
* of this property is a function of the tile's current {@link state} and
|
|
163
|
+
* the {@link TerrainProvider} that is loading the tile.
|
|
164
|
+
* @type Object
|
|
165
|
+
*/
|
|
166
|
+
this.transientData = undefined;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* The distance from the camera to this tile, updated when the tile is selected
|
|
170
|
+
* for rendering. We can get rid of this if we have a better way to sort by
|
|
171
|
+
* distance - for example, by using the natural ordering of a quadtree.
|
|
172
|
+
* @type Number
|
|
173
|
+
*/
|
|
174
|
+
this.distance = 0.0;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* The world coordinates of the southwest corner of the tile's extent.
|
|
178
|
+
*
|
|
179
|
+
* @type Cartesian3
|
|
180
|
+
*/
|
|
181
|
+
this.southwestCornerCartesian = undefined;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The world coordinates of the northeast corner of the tile's extent.
|
|
185
|
+
*
|
|
186
|
+
* @type Cartesian3
|
|
187
|
+
*/
|
|
188
|
+
this.northeastCornerCartesian = undefined;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* A normal that, along with southwestCornerCartesian, defines a plane at the western edge of
|
|
192
|
+
* the tile. Any position above (in the direction of the normal) this plane is outside the tile.
|
|
193
|
+
*
|
|
194
|
+
* @type Cartesian3
|
|
195
|
+
*/
|
|
196
|
+
this.westNormal = undefined;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* A normal that, along with southwestCornerCartesian, defines a plane at the southern edge of
|
|
200
|
+
* the tile. Any position above (in the direction of the normal) this plane is outside the tile.
|
|
201
|
+
* Because points of constant latitude do not necessary lie in a plane, positions below this
|
|
202
|
+
* plane are not necessarily inside the tile, but they are close.
|
|
203
|
+
*
|
|
204
|
+
* @type Cartesian3
|
|
205
|
+
*/
|
|
206
|
+
this.southNormal = undefined;
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
|
|
210
|
+
* the tile. Any position above (in the direction of the normal) this plane is outside the tile.
|
|
211
|
+
*
|
|
212
|
+
* @type Cartesian3
|
|
213
|
+
*/
|
|
214
|
+
this.eastNormal = undefined;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
|
|
218
|
+
* the tile. Any position above (in the direction of the normal) this plane is outside the tile.
|
|
219
|
+
* Because points of constant latitude do not necessary lie in a plane, positions below this
|
|
220
|
+
* plane are not necessarily inside the tile, but they are close.
|
|
221
|
+
*
|
|
222
|
+
* @type Cartesian3
|
|
223
|
+
*/
|
|
224
|
+
this.northNormal = undefined;
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* A proxy point to use for this tile for horizon culling. If this point is below the horizon, the
|
|
228
|
+
* entire tile is below the horizon as well. The point is expressed in the ellipsoid-scaled
|
|
229
|
+
* space. To transform a point from world coordinates centered on the ellipsoid to ellipsoid-scaled
|
|
230
|
+
* coordinates, multiply the world coordinates by {@link Ellipsoid#getOneOverRadii}. See
|
|
231
|
+
* <a href="http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/">http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/</a>
|
|
232
|
+
* for information the proxy point.
|
|
233
|
+
*
|
|
234
|
+
* @type {Cartesian3}
|
|
235
|
+
*/
|
|
236
|
+
this.occludeePointInScaledSpace = undefined;
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Returns an array of tiles that would be at the next level of the tile tree.
|
|
241
|
+
*
|
|
242
|
+
* @memberof Tile
|
|
243
|
+
*
|
|
244
|
+
* @return {Array} The list of child tiles.
|
|
245
|
+
*/
|
|
246
|
+
Tile.prototype.getChildren = function() {
|
|
247
|
+
if (typeof this.children === 'undefined') {
|
|
248
|
+
var tilingScheme = this.tilingScheme;
|
|
249
|
+
var level = this.level + 1;
|
|
250
|
+
var x = this.x * 2;
|
|
251
|
+
var y = this.y * 2;
|
|
252
|
+
this.children = [new Tile({
|
|
253
|
+
tilingScheme : tilingScheme,
|
|
254
|
+
x : x,
|
|
255
|
+
y : y,
|
|
256
|
+
level : level,
|
|
257
|
+
parent : this
|
|
258
|
+
}), new Tile({
|
|
259
|
+
tilingScheme : tilingScheme,
|
|
260
|
+
x : x + 1,
|
|
261
|
+
y : y,
|
|
262
|
+
level : level,
|
|
263
|
+
parent : this
|
|
264
|
+
}), new Tile({
|
|
265
|
+
tilingScheme : tilingScheme,
|
|
266
|
+
x : x,
|
|
267
|
+
y : y + 1,
|
|
268
|
+
level : level,
|
|
269
|
+
parent : this
|
|
270
|
+
}), new Tile({
|
|
271
|
+
tilingScheme : tilingScheme,
|
|
272
|
+
x : x + 1,
|
|
273
|
+
y : y + 1,
|
|
274
|
+
level : level,
|
|
275
|
+
parent : this
|
|
276
|
+
})];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return this.children;
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
Tile.prototype.freeResources = function() {
|
|
283
|
+
this.state = TileState.UNLOADED;
|
|
284
|
+
this.doneLoading = false;
|
|
285
|
+
this.renderable = false;
|
|
286
|
+
|
|
287
|
+
if (typeof this.vertexArray !== 'undefined') {
|
|
288
|
+
var indexBuffer = this.vertexArray.getIndexBuffer();
|
|
289
|
+
|
|
290
|
+
this.vertexArray.destroy();
|
|
291
|
+
this.vertexArray = undefined;
|
|
292
|
+
|
|
293
|
+
if (!indexBuffer.isDestroyed() && typeof indexBuffer.referenceCount !== 'undefined') {
|
|
294
|
+
--indexBuffer.referenceCount;
|
|
295
|
+
if (indexBuffer.referenceCount === 0) {
|
|
296
|
+
indexBuffer.destroy();
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (typeof this.transientData !== 'undefined' && typeof this.transientData.destroy !== 'undefined') {
|
|
302
|
+
this.transientData.destroy();
|
|
303
|
+
}
|
|
304
|
+
this.transientData = undefined;
|
|
305
|
+
|
|
306
|
+
var i, len;
|
|
307
|
+
|
|
308
|
+
var imageryList = this.imagery;
|
|
309
|
+
for (i = 0, len = imageryList.length; i < len; ++i) {
|
|
310
|
+
imageryList[i].freeResources();
|
|
311
|
+
}
|
|
312
|
+
this.imagery.length = 0;
|
|
313
|
+
|
|
314
|
+
if (typeof this.children !== 'undefined') {
|
|
315
|
+
for (i = 0, len = this.children.length; i < len; ++i) {
|
|
316
|
+
this.children[i].freeResources();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
return Tile;
|
|
322
|
+
});
|