Cesium3DTileContentFactory.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import Composite3DTileContent from "./Composite3DTileContent.js";
  2. import Geometry3DTileContent from "./Geometry3DTileContent.js";
  3. import Implicit3DTileContent from "./Implicit3DTileContent.js";
  4. import Model3DTileContent from "./Model/Model3DTileContent.js";
  5. import Tileset3DTileContent from "./Tileset3DTileContent.js";
  6. import Vector3DTileContent from "./Vector3DTileContent.js";
  7. import RuntimeError from "../Core/RuntimeError.js";
  8. /**
  9. * Maps a tile's magic field in its header to a new content object for the tile's payload.
  10. *
  11. * @private
  12. */
  13. const Cesium3DTileContentFactory = {
  14. b3dm: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  15. return Model3DTileContent.fromB3dm(
  16. tileset,
  17. tile,
  18. resource,
  19. arrayBuffer,
  20. byteOffset
  21. );
  22. },
  23. pnts: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  24. return Model3DTileContent.fromPnts(
  25. tileset,
  26. tile,
  27. resource,
  28. arrayBuffer,
  29. byteOffset
  30. );
  31. },
  32. i3dm: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  33. return Model3DTileContent.fromI3dm(
  34. tileset,
  35. tile,
  36. resource,
  37. arrayBuffer,
  38. byteOffset
  39. );
  40. },
  41. cmpt: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  42. // Send in the factory in order to avoid a cyclical dependency
  43. return Composite3DTileContent.fromTileType(
  44. tileset,
  45. tile,
  46. resource,
  47. arrayBuffer,
  48. byteOffset,
  49. Cesium3DTileContentFactory
  50. );
  51. },
  52. externalTileset: function (tileset, tile, resource, json) {
  53. return Tileset3DTileContent.fromJson(tileset, tile, resource, json);
  54. },
  55. geom: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  56. return new Geometry3DTileContent(
  57. tileset,
  58. tile,
  59. resource,
  60. arrayBuffer,
  61. byteOffset
  62. );
  63. },
  64. vctr: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  65. return new Vector3DTileContent(
  66. tileset,
  67. tile,
  68. resource,
  69. arrayBuffer,
  70. byteOffset
  71. );
  72. },
  73. subt: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  74. return Implicit3DTileContent.fromSubtreeJson(
  75. tileset,
  76. tile,
  77. resource,
  78. undefined,
  79. arrayBuffer,
  80. byteOffset
  81. );
  82. },
  83. subtreeJson: function (tileset, tile, resource, json) {
  84. return Implicit3DTileContent.fromSubtreeJson(tileset, tile, resource, json);
  85. },
  86. glb: function (tileset, tile, resource, arrayBuffer, byteOffset) {
  87. const arrayBufferByteLength = arrayBuffer.byteLength;
  88. if (arrayBufferByteLength < 12) {
  89. throw new RuntimeError("Invalid glb content");
  90. }
  91. const dataView = new DataView(arrayBuffer, byteOffset);
  92. const byteLength = dataView.getUint32(8, true);
  93. const glb = new Uint8Array(arrayBuffer, byteOffset, byteLength);
  94. return Model3DTileContent.fromGltf(tileset, tile, resource, glb);
  95. },
  96. gltf: function (tileset, tile, resource, json) {
  97. return Model3DTileContent.fromGltf(tileset, tile, resource, json);
  98. },
  99. geoJson: function (tileset, tile, resource, json) {
  100. return Model3DTileContent.fromGeoJson(tileset, tile, resource, json);
  101. },
  102. };
  103. export default Cesium3DTileContentFactory;