@luma.gl/engine 9.0.0-alpha.15 → 9.0.0-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/animation/key-frames.d.ts +1 -1
  2. package/dist/animation/key-frames.d.ts.map +1 -1
  3. package/dist/animation/key-frames.js +51 -72
  4. package/dist/animation/timeline.d.ts +4 -4
  5. package/dist/animation/timeline.d.ts.map +1 -1
  6. package/dist/animation/timeline.js +94 -131
  7. package/dist/animation-loop/animation-loop.d.ts +2 -3
  8. package/dist/animation-loop/animation-loop.d.ts.map +1 -1
  9. package/dist/animation-loop/animation-loop.js +414 -473
  10. package/dist/animation-loop/animation-props.d.ts +1 -2
  11. package/dist/animation-loop/animation-props.d.ts.map +1 -1
  12. package/dist/animation-loop/animation-props.js +0 -1
  13. package/dist/animation-loop/make-animation-loop.d.ts +1 -1
  14. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -1
  15. package/dist/animation-loop/make-animation-loop.js +26 -31
  16. package/dist/animation-loop/render-loop.js +17 -7
  17. package/dist/bundle.js +2 -2
  18. package/dist/dist.min.js +31 -0
  19. package/dist/es5/animation/key-frames.js +84 -0
  20. package/dist/es5/animation/key-frames.js.map +1 -0
  21. package/dist/es5/animation/timeline.js +183 -0
  22. package/dist/es5/animation/timeline.js.map +1 -0
  23. package/dist/es5/animation-loop/animation-loop.js +534 -0
  24. package/dist/es5/animation-loop/animation-loop.js.map +1 -0
  25. package/dist/es5/animation-loop/animation-props.js +2 -0
  26. package/dist/es5/animation-loop/animation-props.js.map +1 -0
  27. package/dist/es5/animation-loop/make-animation-loop.js +53 -0
  28. package/dist/es5/animation-loop/make-animation-loop.js.map +1 -0
  29. package/dist/es5/animation-loop/render-loop.js +39 -0
  30. package/dist/es5/animation-loop/render-loop.js.map +1 -0
  31. package/dist/es5/bundle.js +6 -0
  32. package/dist/es5/bundle.js.map +1 -0
  33. package/dist/es5/geometries/cone-geometry.js +43 -0
  34. package/dist/es5/geometries/cone-geometry.js.map +1 -0
  35. package/dist/es5/geometries/cube-geometry.js +84 -0
  36. package/dist/es5/geometries/cube-geometry.js.map +1 -0
  37. package/dist/es5/geometries/cylinder-geometry.js +39 -0
  38. package/dist/es5/geometries/cylinder-geometry.js.map +1 -0
  39. package/dist/es5/geometries/ico-sphere-geometry.js +185 -0
  40. package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -0
  41. package/dist/es5/geometries/plane-geometry.js +137 -0
  42. package/dist/es5/geometries/plane-geometry.js.map +1 -0
  43. package/dist/es5/geometries/sphere-geometry.js +120 -0
  44. package/dist/es5/geometries/sphere-geometry.js.map +1 -0
  45. package/dist/es5/geometries/truncated-cone-geometry.js +160 -0
  46. package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -0
  47. package/dist/es5/geometry/geometry-table.js +2 -0
  48. package/dist/es5/geometry/geometry-table.js.map +1 -0
  49. package/dist/es5/geometry/geometry-utils.js +39 -0
  50. package/dist/es5/geometry/geometry-utils.js.map +1 -0
  51. package/dist/es5/geometry/geometry.js +150 -0
  52. package/dist/es5/geometry/geometry.js.map +1 -0
  53. package/dist/es5/geometry/primitive-utils.js +2 -0
  54. package/dist/es5/geometry/primitive-utils.js.map +1 -0
  55. package/dist/es5/index.js +112 -0
  56. package/dist/es5/index.js.map +1 -0
  57. package/dist/es5/lib/clip-space.js +2 -0
  58. package/dist/es5/lib/clip-space.js.map +1 -0
  59. package/dist/es5/lib/model-utils.js +52 -0
  60. package/dist/es5/lib/model-utils.js.map +1 -0
  61. package/dist/es5/lib/model.js +173 -0
  62. package/dist/es5/lib/model.js.map +1 -0
  63. package/dist/es5/lib/pipeline-factory.js +244 -0
  64. package/dist/es5/lib/pipeline-factory.js.map +1 -0
  65. package/dist/esm/animation/key-frames.js +57 -0
  66. package/dist/esm/animation/key-frames.js.map +1 -0
  67. package/dist/esm/animation/timeline.js +113 -0
  68. package/dist/esm/animation/timeline.js.map +1 -0
  69. package/dist/esm/animation-loop/animation-loop.js +367 -0
  70. package/dist/esm/animation-loop/animation-loop.js.map +1 -0
  71. package/dist/esm/animation-loop/animation-props.js +2 -0
  72. package/dist/esm/animation-loop/animation-props.js.map +1 -0
  73. package/dist/esm/animation-loop/make-animation-loop.js +28 -0
  74. package/dist/esm/animation-loop/make-animation-loop.js.map +1 -0
  75. package/dist/esm/animation-loop/render-loop.js +7 -0
  76. package/dist/esm/animation-loop/render-loop.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/geometries/cone-geometry.js +21 -0
  80. package/dist/esm/geometries/cone-geometry.js.map +1 -0
  81. package/dist/esm/geometries/cube-geometry.js +67 -0
  82. package/dist/esm/geometries/cube-geometry.js.map +1 -0
  83. package/dist/esm/geometries/cylinder-geometry.js +18 -0
  84. package/dist/esm/geometries/cylinder-geometry.js.map +1 -0
  85. package/dist/esm/geometries/ico-sphere-geometry.js +170 -0
  86. package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -0
  87. package/dist/esm/geometries/plane-geometry.js +119 -0
  88. package/dist/esm/geometries/plane-geometry.js.map +1 -0
  89. package/dist/esm/geometries/sphere-geometry.js +102 -0
  90. package/dist/esm/geometries/sphere-geometry.js.map +1 -0
  91. package/dist/esm/geometries/truncated-cone-geometry.js +136 -0
  92. package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -0
  93. package/dist/esm/geometry/geometry-table.js +2 -0
  94. package/dist/esm/geometry/geometry-table.js.map +1 -0
  95. package/dist/esm/geometry/geometry-utils.js +37 -0
  96. package/dist/esm/geometry/geometry-utils.js.map +1 -0
  97. package/dist/esm/geometry/geometry.js +119 -0
  98. package/dist/esm/geometry/geometry.js.map +1 -0
  99. package/dist/esm/geometry/primitive-utils.js +2 -0
  100. package/dist/esm/geometry/primitive-utils.js.map +1 -0
  101. package/dist/esm/index.js +16 -0
  102. package/dist/esm/index.js.map +1 -0
  103. package/dist/esm/lib/clip-space.js +2 -0
  104. package/dist/esm/lib/clip-space.js.map +1 -0
  105. package/dist/esm/lib/model-utils.js +40 -0
  106. package/dist/esm/lib/model-utils.js.map +1 -0
  107. package/dist/esm/lib/model.js +146 -0
  108. package/dist/esm/lib/model.js.map +1 -0
  109. package/dist/esm/lib/pipeline-factory.js +180 -0
  110. package/dist/esm/lib/pipeline-factory.js.map +1 -0
  111. package/dist/geometries/cone-geometry.d.ts +1 -1
  112. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  113. package/dist/geometries/cone-geometry.js +12 -17
  114. package/dist/geometries/cube-geometry.d.ts +1 -1
  115. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  116. package/dist/geometries/cube-geometry.js +187 -56
  117. package/dist/geometries/cylinder-geometry.d.ts +1 -1
  118. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  119. package/dist/geometries/cylinder-geometry.js +10 -14
  120. package/dist/geometries/ico-sphere-geometry.d.ts +1 -1
  121. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  122. package/dist/geometries/ico-sphere-geometry.js +141 -170
  123. package/dist/geometries/plane-geometry.d.ts +1 -1
  124. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  125. package/dist/geometries/plane-geometry.js +93 -121
  126. package/dist/geometries/sphere-geometry.d.ts +1 -1
  127. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  128. package/dist/geometries/sphere-geometry.js +76 -100
  129. package/dist/geometries/truncated-cone-geometry.d.ts +1 -1
  130. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  131. package/dist/geometries/truncated-cone-geometry.js +104 -131
  132. package/dist/geometry/geometry-table.d.ts +1 -1
  133. package/dist/geometry/geometry-table.d.ts.map +1 -1
  134. package/dist/geometry/geometry-table.js +0 -1
  135. package/dist/geometry/geometry-utils.js +22 -41
  136. package/dist/geometry/geometry.d.ts +4 -4
  137. package/dist/geometry/geometry.d.ts.map +1 -1
  138. package/dist/geometry/geometry.js +96 -142
  139. package/dist/geometry/primitive-utils.js +30 -1
  140. package/dist/index.js +20 -16
  141. package/dist/lib/clip-space.js +50 -1
  142. package/dist/lib/model-utils.js +97 -29
  143. package/dist/lib/model.d.ts +1 -1
  144. package/dist/lib/model.d.ts.map +1 -1
  145. package/dist/lib/model.js +122 -166
  146. package/dist/lib/pipeline-factory.d.ts +3 -3
  147. package/dist/lib/pipeline-factory.d.ts.map +1 -1
  148. package/dist/lib/pipeline-factory.js +136 -204
  149. package/package.json +11 -10
  150. package/dist/animation/key-frames.js.map +0 -1
  151. package/dist/animation/timeline.js.map +0 -1
  152. package/dist/animation-loop/animation-loop.js.map +0 -1
  153. package/dist/animation-loop/animation-props.js.map +0 -1
  154. package/dist/animation-loop/make-animation-loop.js.map +0 -1
  155. package/dist/animation-loop/render-loop.js.map +0 -1
  156. package/dist/bundle.js.map +0 -1
  157. package/dist/geometries/cone-geometry.js.map +0 -1
  158. package/dist/geometries/cube-geometry.js.map +0 -1
  159. package/dist/geometries/cylinder-geometry.js.map +0 -1
  160. package/dist/geometries/ico-sphere-geometry.js.map +0 -1
  161. package/dist/geometries/plane-geometry.js.map +0 -1
  162. package/dist/geometries/sphere-geometry.js.map +0 -1
  163. package/dist/geometries/truncated-cone-geometry.js.map +0 -1
  164. package/dist/geometry/geometry-table.js.map +0 -1
  165. package/dist/geometry/geometry-utils.js.map +0 -1
  166. package/dist/geometry/geometry.js.map +0 -1
  167. package/dist/geometry/primitive-utils.js.map +0 -1
  168. package/dist/index.js.map +0 -1
  169. package/dist/lib/clip-space.js.map +0 -1
  170. package/dist/lib/model-utils.js.map +0 -1
  171. package/dist/lib/model.js.map +0 -1
  172. package/dist/lib/pipeline-factory.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PlaneGeometry = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _api = require("@luma.gl/api");
15
+ var _geometry = _interopRequireDefault(require("../geometry/geometry"));
16
+ var _geometryUtils = require("../geometry/geometry-utils");
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
20
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
21
+ var PlaneGeometry = function (_Geometry) {
22
+ (0, _inherits2.default)(PlaneGeometry, _Geometry);
23
+ var _super = _createSuper(PlaneGeometry);
24
+ function PlaneGeometry() {
25
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26
+ (0, _classCallCheck2.default)(this, PlaneGeometry);
27
+ var _props$id = props.id,
28
+ id = _props$id === void 0 ? (0, _api.uid)('plane-geometry') : _props$id;
29
+ var _tesselatePlane = tesselatePlane(props),
30
+ indices = _tesselatePlane.indices,
31
+ attributes = _tesselatePlane.attributes;
32
+ return _super.call(this, _objectSpread(_objectSpread({}, props), {}, {
33
+ id: id,
34
+ indices: indices,
35
+ attributes: _objectSpread(_objectSpread({}, attributes), props.attributes)
36
+ }));
37
+ }
38
+ return (0, _createClass2.default)(PlaneGeometry);
39
+ }(_geometry.default);
40
+ exports.PlaneGeometry = PlaneGeometry;
41
+ function tesselatePlane(props) {
42
+ var _props$type = props.type,
43
+ type = _props$type === void 0 ? 'x,y' : _props$type,
44
+ _props$offset = props.offset,
45
+ offset = _props$offset === void 0 ? 0 : _props$offset,
46
+ _props$flipCull = props.flipCull,
47
+ flipCull = _props$flipCull === void 0 ? false : _props$flipCull,
48
+ _props$unpack = props.unpack,
49
+ unpack = _props$unpack === void 0 ? false : _props$unpack;
50
+ var coords = type.split(',');
51
+ var c1len = props["".concat(coords[0], "len")] || 1;
52
+ var c2len = props["".concat(coords[1], "len")] || 1;
53
+ var subdivisions1 = props["n".concat(coords[0])] || 1;
54
+ var subdivisions2 = props["n".concat(coords[1])] || 1;
55
+ var numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);
56
+ var positions = new Float32Array(numVertices * 3);
57
+ var normals = new Float32Array(numVertices * 3);
58
+ var texCoords = new Float32Array(numVertices * 2);
59
+ if (flipCull) {
60
+ c1len = -c1len;
61
+ }
62
+ var i2 = 0;
63
+ var i3 = 0;
64
+ for (var z = 0; z <= subdivisions2; z++) {
65
+ for (var x = 0; x <= subdivisions1; x++) {
66
+ var u = x / subdivisions1;
67
+ var v = z / subdivisions2;
68
+ texCoords[i2 + 0] = flipCull ? 1 - u : u;
69
+ texCoords[i2 + 1] = v;
70
+ switch (type) {
71
+ case 'x,y':
72
+ positions[i3 + 0] = c1len * u - c1len * 0.5;
73
+ positions[i3 + 1] = c2len * v - c2len * 0.5;
74
+ positions[i3 + 2] = offset;
75
+ normals[i3 + 0] = 0;
76
+ normals[i3 + 1] = 0;
77
+ normals[i3 + 2] = flipCull ? 1 : -1;
78
+ break;
79
+ case 'x,z':
80
+ positions[i3 + 0] = c1len * u - c1len * 0.5;
81
+ positions[i3 + 1] = offset;
82
+ positions[i3 + 2] = c2len * v - c2len * 0.5;
83
+ normals[i3 + 0] = 0;
84
+ normals[i3 + 1] = flipCull ? 1 : -1;
85
+ normals[i3 + 2] = 0;
86
+ break;
87
+ case 'y,z':
88
+ positions[i3 + 0] = offset;
89
+ positions[i3 + 1] = c1len * u - c1len * 0.5;
90
+ positions[i3 + 2] = c2len * v - c2len * 0.5;
91
+ normals[i3 + 0] = flipCull ? 1 : -1;
92
+ normals[i3 + 1] = 0;
93
+ normals[i3 + 2] = 0;
94
+ break;
95
+ default:
96
+ throw new Error('PlaneGeometry: unknown type');
97
+ }
98
+ i2 += 2;
99
+ i3 += 3;
100
+ }
101
+ }
102
+ var numVertsAcross = subdivisions1 + 1;
103
+ var indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);
104
+ for (var _z = 0; _z < subdivisions2; _z++) {
105
+ for (var _x = 0; _x < subdivisions1; _x++) {
106
+ var index = (_z * subdivisions1 + _x) * 6;
107
+ indices[index + 0] = (_z + 0) * numVertsAcross + _x;
108
+ indices[index + 1] = (_z + 1) * numVertsAcross + _x;
109
+ indices[index + 2] = (_z + 0) * numVertsAcross + _x + 1;
110
+ indices[index + 3] = (_z + 1) * numVertsAcross + _x;
111
+ indices[index + 4] = (_z + 1) * numVertsAcross + _x + 1;
112
+ indices[index + 5] = (_z + 0) * numVertsAcross + _x + 1;
113
+ }
114
+ }
115
+ var geometry = {
116
+ indices: {
117
+ size: 1,
118
+ value: indices
119
+ },
120
+ attributes: {
121
+ POSITION: {
122
+ size: 3,
123
+ value: positions
124
+ },
125
+ NORMAL: {
126
+ size: 3,
127
+ value: normals
128
+ },
129
+ TEXCOORD_0: {
130
+ size: 2,
131
+ value: texCoords
132
+ }
133
+ }
134
+ };
135
+ return unpack ? (0, _geometryUtils.unpackIndexedGeometry)(geometry) : geometry;
136
+ }
137
+ //# sourceMappingURL=plane-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plane-geometry.js","names":["_api","require","_geometry","_interopRequireDefault","_geometryUtils","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","PlaneGeometry","_Geometry","_inherits2","_super","props","undefined","_classCallCheck2","_props$id","id","uid","_tesselatePlane","tesselatePlane","indices","attributes","_createClass2","Geometry","exports","_props$type","type","_props$offset","offset","_props$flipCull","flipCull","_props$unpack","unpack","coords","split","c1len","concat","c2len","subdivisions1","subdivisions2","numVertices","positions","Float32Array","normals","texCoords","i2","i3","z","x","u","v","Error","numVertsAcross","Uint16Array","index","geometry","size","value","POSITION","NORMAL","TEXCOORD_0","unpackIndexedGeometry"],"sources":["../../../src/geometries/plane-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport Geometry from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\n\nexport type PlaneGeometryProps = {\n id?: string;\n radius?: number;\n attributes?: any\n};\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\nexport class PlaneGeometry extends Geometry {\n constructor(props: PlaneGeometryProps = {}) {\n const {id = uid('plane-geometry')} = props;\n\n const {indices, attributes} = tesselatePlane(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props: any) {\n const {type = 'x,y', offset = 0, flipCull = false, unpack = false} = props;\n\n const coords = type.split(',');\n // width, height\n let c1len = props[`${coords[0]}len`] || 1;\n const c2len = props[`${coords[1]}len`] || 1;\n // subdivisionsWidth, subdivisionsDepth\n const subdivisions1 = props[`n${coords[0]}`] || 1;\n const subdivisions2 = props[`n${coords[1]}`] || 1;\n const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n if (flipCull) {\n c1len = -c1len;\n }\n\n let i2 = 0;\n let i3 = 0;\n for (let z = 0; z <= subdivisions2; z++) {\n for (let x = 0; x <= subdivisions1; x++) {\n const u = x / subdivisions1;\n const v = z / subdivisions2;\n texCoords[i2 + 0] = flipCull ? 1 - u : u;\n texCoords[i2 + 1] = v;\n\n switch (type) {\n case 'x,y':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = c2len * v - c2len * 0.5;\n positions[i3 + 2] = offset;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = flipCull ? 1 : -1;\n break;\n\n case 'x,z':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = offset;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = flipCull ? 1 : -1;\n normals[i3 + 2] = 0;\n break;\n\n case 'y,z':\n positions[i3 + 0] = offset;\n positions[i3 + 1] = c1len * u - c1len * 0.5;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = flipCull ? 1 : -1;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = 0;\n break;\n\n default:\n throw new Error('PlaneGeometry: unknown type');\n }\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n const numVertsAcross = subdivisions1 + 1;\n const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n for (let z = 0; z < subdivisions2; z++) {\n for (let x = 0; x < subdivisions1; x++) {\n const index = (z * subdivisions1 + x) * 6;\n // Make triangle 1 of quad.\n indices[index + 0] = (z + 0) * numVertsAcross + x;\n indices[index + 1] = (z + 1) * numVertsAcross + x;\n indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n\n // Make triangle 2 of quad.\n indices[index + 3] = (z + 1) * numVertsAcross + x;\n indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n }\n }\n\n const geometry = {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n\n // Optionally, unpack indexed geometry\n return unpack ? unpackIndexedGeometry(geometry) : geometry;\n}\n"],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SphereGeometry = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _api = require("@luma.gl/api");
15
+ var _geometry = _interopRequireDefault(require("../geometry/geometry"));
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
19
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
+ var SphereGeometry = function (_Geometry) {
21
+ (0, _inherits2.default)(SphereGeometry, _Geometry);
22
+ var _super = _createSuper(SphereGeometry);
23
+ function SphereGeometry() {
24
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25
+ (0, _classCallCheck2.default)(this, SphereGeometry);
26
+ var _props$id = props.id,
27
+ id = _props$id === void 0 ? (0, _api.uid)('sphere-geometry') : _props$id;
28
+ var _tesselateSphere = tesselateSphere(props),
29
+ indices = _tesselateSphere.indices,
30
+ attributes = _tesselateSphere.attributes;
31
+ return _super.call(this, _objectSpread(_objectSpread({}, props), {}, {
32
+ id: id,
33
+ indices: indices,
34
+ attributes: _objectSpread(_objectSpread({}, attributes), props.attributes)
35
+ }));
36
+ }
37
+ return (0, _createClass2.default)(SphereGeometry);
38
+ }(_geometry.default);
39
+ exports.SphereGeometry = SphereGeometry;
40
+ function tesselateSphere(props) {
41
+ var _props$nlat = props.nlat,
42
+ nlat = _props$nlat === void 0 ? 10 : _props$nlat,
43
+ _props$nlong = props.nlong,
44
+ nlong = _props$nlong === void 0 ? 10 : _props$nlong;
45
+ var startLat = 0;
46
+ var endLat = Math.PI;
47
+ var latRange = endLat - startLat;
48
+ var startLong = 0;
49
+ var endLong = 2 * Math.PI;
50
+ var longRange = endLong - startLong;
51
+ var numVertices = (nlat + 1) * (nlong + 1);
52
+ var radius = function radius(n1, n2, n3, u, v) {
53
+ return props.radius || 1;
54
+ };
55
+ var positions = new Float32Array(numVertices * 3);
56
+ var normals = new Float32Array(numVertices * 3);
57
+ var texCoords = new Float32Array(numVertices * 2);
58
+ var IndexType = numVertices > 0xffff ? Uint32Array : Uint16Array;
59
+ var indices = new IndexType(nlat * nlong * 6);
60
+ for (var y = 0; y <= nlat; y++) {
61
+ for (var x = 0; x <= nlong; x++) {
62
+ var u = x / nlong;
63
+ var v = y / nlat;
64
+ var index = x + y * (nlong + 1);
65
+ var i2 = index * 2;
66
+ var i3 = index * 3;
67
+ var theta = longRange * u;
68
+ var phi = latRange * v;
69
+ var sinTheta = Math.sin(theta);
70
+ var cosTheta = Math.cos(theta);
71
+ var sinPhi = Math.sin(phi);
72
+ var cosPhi = Math.cos(phi);
73
+ var ux = cosTheta * sinPhi;
74
+ var uy = cosPhi;
75
+ var uz = sinTheta * sinPhi;
76
+ var r = radius(ux, uy, uz, u, v);
77
+ positions[i3 + 0] = r * ux;
78
+ positions[i3 + 1] = r * uy;
79
+ positions[i3 + 2] = r * uz;
80
+ normals[i3 + 0] = ux;
81
+ normals[i3 + 1] = uy;
82
+ normals[i3 + 2] = uz;
83
+ texCoords[i2 + 0] = u;
84
+ texCoords[i2 + 1] = 1 - v;
85
+ }
86
+ }
87
+ var numVertsAround = nlong + 1;
88
+ for (var _x = 0; _x < nlong; _x++) {
89
+ for (var _y = 0; _y < nlat; _y++) {
90
+ var _index = (_x * nlat + _y) * 6;
91
+ indices[_index + 0] = _y * numVertsAround + _x;
92
+ indices[_index + 1] = _y * numVertsAround + _x + 1;
93
+ indices[_index + 2] = (_y + 1) * numVertsAround + _x;
94
+ indices[_index + 3] = (_y + 1) * numVertsAround + _x;
95
+ indices[_index + 4] = _y * numVertsAround + _x + 1;
96
+ indices[_index + 5] = (_y + 1) * numVertsAround + _x + 1;
97
+ }
98
+ }
99
+ return {
100
+ indices: {
101
+ size: 1,
102
+ value: indices
103
+ },
104
+ attributes: {
105
+ POSITION: {
106
+ size: 3,
107
+ value: positions
108
+ },
109
+ NORMAL: {
110
+ size: 3,
111
+ value: normals
112
+ },
113
+ TEXCOORD_0: {
114
+ size: 2,
115
+ value: texCoords
116
+ }
117
+ }
118
+ };
119
+ }
120
+ //# sourceMappingURL=sphere-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sphere-geometry.js","names":["_api","require","_geometry","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","SphereGeometry","_Geometry","_inherits2","_super","props","undefined","_classCallCheck2","_props$id","id","uid","_tesselateSphere","tesselateSphere","indices","attributes","_createClass2","Geometry","exports","_props$nlat","nlat","_props$nlong","nlong","startLat","endLat","Math","PI","latRange","startLong","endLong","longRange","numVertices","radius","n1","n2","n3","u","v","positions","Float32Array","normals","texCoords","IndexType","Uint32Array","Uint16Array","y","x","index","i2","i3","theta","phi","sinTheta","sin","cosTheta","cos","sinPhi","cosPhi","ux","uy","uz","r","numVertsAround","size","value","POSITION","NORMAL","TEXCOORD_0"],"sources":["../../../src/geometries/sphere-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport Geometry from '../geometry/geometry';\n\nexport type SphereGeometryProps = {\n id?: string;\n radius?: number;\n nlat?: number;\n nlong?: number;\n attributes?: any\n};\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\nexport class SphereGeometry extends Geometry {\n constructor(props: SphereGeometryProps = {}) {\n const {id = uid('sphere-geometry')} = props;\n const {indices, attributes} = tesselateSphere(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n/* eslint-disable max-statements, complexity */\nfunction tesselateSphere(props: SphereGeometryProps) {\n const {nlat = 10, nlong = 10} = props;\n\n const startLat = 0;\n const endLat = Math.PI;\n const latRange = endLat - startLat;\n const startLong = 0;\n const endLong = 2 * Math.PI;\n const longRange = endLong - startLong;\n const numVertices = (nlat + 1) * (nlong + 1);\n\n const radius = (n1: number, n2: number, n3: number, u: number, v: number) => props.radius || 1;\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n const IndexType = numVertices > 0xffff ? Uint32Array : Uint16Array;\n const indices = new IndexType(nlat * nlong * 6);\n\n // Create positions, normals and texCoords\n for (let y = 0; y <= nlat; y++) {\n for (let x = 0; x <= nlong; x++) {\n const u = x / nlong;\n const v = y / nlat;\n\n const index = x + y * (nlong + 1);\n const i2 = index * 2;\n const i3 = index * 3;\n\n const theta = longRange * u;\n const phi = latRange * v;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n const sinPhi = Math.sin(phi);\n const cosPhi = Math.cos(phi);\n const ux = cosTheta * sinPhi;\n const uy = cosPhi;\n const uz = sinTheta * sinPhi;\n\n const r = radius(ux, uy, uz, u, v);\n\n positions[i3 + 0] = r * ux;\n positions[i3 + 1] = r * uy;\n positions[i3 + 2] = r * uz;\n\n normals[i3 + 0] = ux;\n normals[i3 + 1] = uy;\n normals[i3 + 2] = uz;\n\n texCoords[i2 + 0] = u;\n texCoords[i2 + 1] = 1 - v;\n }\n }\n\n // Create indices\n const numVertsAround = nlong + 1;\n for (let x = 0; x < nlong; x++) {\n for (let y = 0; y < nlat; y++) {\n const index = (x * nlat + y) * 6;\n\n indices[index + 0] = y * numVertsAround + x;\n indices[index + 1] = y * numVertsAround + x + 1;\n indices[index + 2] = (y + 1) * numVertsAround + x;\n\n indices[index + 3] = (y + 1) * numVertsAround + x;\n indices[index + 4] = y * numVertsAround + x + 1;\n indices[index + 5] = (y + 1) * numVertsAround + x + 1;\n }\n }\n\n return {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TruncatedConeGeometry = void 0;
8
+ exports.makeTruncatedConeGeometry = makeTruncatedConeGeometry;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _api = require("@luma.gl/api");
16
+ var _geometry = _interopRequireDefault(require("../geometry/geometry"));
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
20
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
21
+ var INDEX_OFFSETS = {
22
+ x: [2, 0, 1],
23
+ y: [0, 1, 2],
24
+ z: [1, 2, 0]
25
+ };
26
+ function makeTruncatedConeGeometry(props) {
27
+ var _tesselateTruncatedCo = tesselateTruncatedCone(props),
28
+ indices = _tesselateTruncatedCo.indices,
29
+ attributes = _tesselateTruncatedCo.attributes;
30
+ return {
31
+ length: indices.length,
32
+ indices: indices,
33
+ attributes: attributes
34
+ };
35
+ }
36
+ var TruncatedConeGeometry = function (_Geometry) {
37
+ (0, _inherits2.default)(TruncatedConeGeometry, _Geometry);
38
+ var _super = _createSuper(TruncatedConeGeometry);
39
+ function TruncatedConeGeometry() {
40
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
41
+ (0, _classCallCheck2.default)(this, TruncatedConeGeometry);
42
+ var _props$id = props.id,
43
+ id = _props$id === void 0 ? (0, _api.uid)('truncated-code-geometry') : _props$id;
44
+ var _tesselateTruncatedCo2 = tesselateTruncatedCone(props),
45
+ indices = _tesselateTruncatedCo2.indices,
46
+ attributes = _tesselateTruncatedCo2.attributes;
47
+ return _super.call(this, _objectSpread(_objectSpread({}, props), {}, {
48
+ id: id,
49
+ indices: indices,
50
+ attributes: _objectSpread({
51
+ POSITION: {
52
+ size: 3,
53
+ value: attributes.POSITION
54
+ },
55
+ NORMAL: {
56
+ size: 3,
57
+ value: attributes.NORMAL
58
+ },
59
+ TEXCOORD_0: {
60
+ size: 2,
61
+ value: attributes.TEXCOORD_0
62
+ }
63
+ }, props.attributes)
64
+ }));
65
+ }
66
+ return (0, _createClass2.default)(TruncatedConeGeometry);
67
+ }(_geometry.default);
68
+ exports.TruncatedConeGeometry = TruncatedConeGeometry;
69
+ function tesselateTruncatedCone() {
70
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
71
+ var _props$bottomRadius = props.bottomRadius,
72
+ bottomRadius = _props$bottomRadius === void 0 ? 0 : _props$bottomRadius,
73
+ _props$topRadius = props.topRadius,
74
+ topRadius = _props$topRadius === void 0 ? 0 : _props$topRadius,
75
+ _props$height = props.height,
76
+ height = _props$height === void 0 ? 1 : _props$height,
77
+ _props$nradial = props.nradial,
78
+ nradial = _props$nradial === void 0 ? 10 : _props$nradial,
79
+ _props$nvertical = props.nvertical,
80
+ nvertical = _props$nvertical === void 0 ? 10 : _props$nvertical,
81
+ _props$verticalAxis = props.verticalAxis,
82
+ verticalAxis = _props$verticalAxis === void 0 ? 'y' : _props$verticalAxis,
83
+ _props$topCap = props.topCap,
84
+ topCap = _props$topCap === void 0 ? false : _props$topCap,
85
+ _props$bottomCap = props.bottomCap,
86
+ bottomCap = _props$bottomCap === void 0 ? false : _props$bottomCap;
87
+ var extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);
88
+ var numVertices = (nradial + 1) * (nvertical + 1 + extra);
89
+ var slant = Math.atan2(bottomRadius - topRadius, height);
90
+ var msin = Math.sin;
91
+ var mcos = Math.cos;
92
+ var mpi = Math.PI;
93
+ var cosSlant = mcos(slant);
94
+ var sinSlant = msin(slant);
95
+ var start = topCap ? -2 : 0;
96
+ var end = nvertical + (bottomCap ? 2 : 0);
97
+ var vertsAroundEdge = nradial + 1;
98
+ var indices = new Uint16Array(nradial * (nvertical + extra) * 6);
99
+ var indexOffset = INDEX_OFFSETS[verticalAxis];
100
+ var positions = new Float32Array(numVertices * 3);
101
+ var normals = new Float32Array(numVertices * 3);
102
+ var texCoords = new Float32Array(numVertices * 2);
103
+ var i3 = 0;
104
+ var i2 = 0;
105
+ for (var i = start; i <= end; i++) {
106
+ var v = i / nvertical;
107
+ var y = height * v;
108
+ var ringRadius = void 0;
109
+ if (i < 0) {
110
+ y = 0;
111
+ v = 1;
112
+ ringRadius = bottomRadius;
113
+ } else if (i > nvertical) {
114
+ y = height;
115
+ v = 1;
116
+ ringRadius = topRadius;
117
+ } else {
118
+ ringRadius = bottomRadius + (topRadius - bottomRadius) * (i / nvertical);
119
+ }
120
+ if (i === -2 || i === nvertical + 2) {
121
+ ringRadius = 0;
122
+ v = 0;
123
+ }
124
+ y -= height / 2;
125
+ for (var j = 0; j < vertsAroundEdge; j++) {
126
+ var sin = msin(j * mpi * 2 / nradial);
127
+ var cos = mcos(j * mpi * 2 / nradial);
128
+ positions[i3 + indexOffset[0]] = sin * ringRadius;
129
+ positions[i3 + indexOffset[1]] = y;
130
+ positions[i3 + indexOffset[2]] = cos * ringRadius;
131
+ normals[i3 + indexOffset[0]] = i < 0 || i > nvertical ? 0 : sin * cosSlant;
132
+ normals[i3 + indexOffset[1]] = i < 0 ? -1 : i > nvertical ? 1 : sinSlant;
133
+ normals[i3 + indexOffset[2]] = i < 0 || i > nvertical ? 0 : cos * cosSlant;
134
+ texCoords[i2 + 0] = j / nradial;
135
+ texCoords[i2 + 1] = v;
136
+ i2 += 2;
137
+ i3 += 3;
138
+ }
139
+ }
140
+ for (var _i = 0; _i < nvertical + extra; _i++) {
141
+ for (var _j = 0; _j < nradial; _j++) {
142
+ var index = (_i * nradial + _j) * 6;
143
+ indices[index + 0] = vertsAroundEdge * (_i + 0) + 0 + _j;
144
+ indices[index + 1] = vertsAroundEdge * (_i + 0) + 1 + _j;
145
+ indices[index + 2] = vertsAroundEdge * (_i + 1) + 1 + _j;
146
+ indices[index + 3] = vertsAroundEdge * (_i + 0) + 0 + _j;
147
+ indices[index + 4] = vertsAroundEdge * (_i + 1) + 1 + _j;
148
+ indices[index + 5] = vertsAroundEdge * (_i + 1) + 0 + _j;
149
+ }
150
+ }
151
+ return {
152
+ indices: indices,
153
+ attributes: {
154
+ POSITION: positions,
155
+ NORMAL: normals,
156
+ TEXCOORD_0: texCoords
157
+ }
158
+ };
159
+ }
160
+ //# sourceMappingURL=truncated-cone-geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncated-cone-geometry.js","names":["_api","require","_geometry","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","INDEX_OFFSETS","x","y","z","makeTruncatedConeGeometry","props","_tesselateTruncatedCo","tesselateTruncatedCone","indices","attributes","TruncatedConeGeometry","_Geometry","_inherits2","_super","undefined","_classCallCheck2","_props$id","id","uid","_tesselateTruncatedCo2","POSITION","size","value","NORMAL","TEXCOORD_0","_createClass2","Geometry","exports","_props$bottomRadius","bottomRadius","_props$topRadius","topRadius","_props$height","height","_props$nradial","nradial","_props$nvertical","nvertical","_props$verticalAxis","verticalAxis","_props$topCap","topCap","_props$bottomCap","bottomCap","extra","numVertices","slant","Math","atan2","msin","sin","mcos","cos","mpi","PI","cosSlant","sinSlant","start","end","vertsAroundEdge","Uint16Array","indexOffset","positions","Float32Array","normals","texCoords","i3","i2","v","ringRadius","j","index"],"sources":["../../../src/geometries/truncated-cone-geometry.ts"],"sourcesContent":["import {uid} from '@luma.gl/api';\nimport Geometry from '../geometry/geometry';\nimport {GeometryTable} from '../geometry/geometry-table';\n\nconst INDEX_OFFSETS = {\n x: [2, 0, 1],\n y: [0, 1, 2],\n z: [1, 2, 0]\n};\n\nexport type TruncatedConeGeometryProps = {\n topRadius?: number;\n bottomRadius?: number;\n topCap?: boolean;\n bottomCap?: boolean;\n height?: number;\n nradial?: number;\n nvertical?: number;\n verticalAxis?: 'x' | 'y' | 'z';\n};\n\n/**\n * Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n * copyright 2011 Google Inc. new BSD License\n * (http://www.opensource.org/licenses/bsd-license.php).\n */\nexport function makeTruncatedConeGeometry(props?: TruncatedConeGeometryProps): GeometryTable {\n const {indices, attributes} = tesselateTruncatedCone(props);\n return {\n length: indices.length,\n indices,\n attributes\n };\n}\n\nexport class TruncatedConeGeometry extends Geometry {\n constructor(props: TruncatedConeGeometryProps & {id?: string; attributes?: any} = {}) {\n const {id = uid('truncated-code-geometry')} = props;\n const {indices, attributes} = tesselateTruncatedCone(props);\n super({\n ...props,\n id,\n indices,\n attributes: {\n POSITION: {size: 3, value: attributes.POSITION},\n NORMAL: {size: 3, value: attributes.NORMAL},\n TEXCOORD_0: {size: 2, value: attributes.TEXCOORD_0},\n ...props.attributes}\n });\n }\n}\n\n/* eslint-disable max-statements, complexity */\nfunction tesselateTruncatedCone(props: TruncatedConeGeometryProps = {}) {\n const {\n bottomRadius = 0,\n topRadius = 0,\n height = 1,\n nradial = 10,\n nvertical = 10,\n verticalAxis = 'y',\n topCap = false,\n bottomCap = false\n } = props;\n\n const extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);\n const numVertices = (nradial + 1) * (nvertical + 1 + extra);\n\n const slant = Math.atan2(bottomRadius - topRadius, height);\n const msin = Math.sin;\n const mcos = Math.cos;\n const mpi = Math.PI;\n const cosSlant = mcos(slant);\n const sinSlant = msin(slant);\n const start = topCap ? -2 : 0;\n const end = nvertical + (bottomCap ? 2 : 0);\n const vertsAroundEdge = nradial + 1;\n\n const indices = new Uint16Array(nradial * (nvertical + extra) * 6);\n const indexOffset = INDEX_OFFSETS[verticalAxis];\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n let i3 = 0;\n let i2 = 0;\n for (let i = start; i <= end; i++) {\n let v = i / nvertical;\n let y = height * v;\n let ringRadius;\n\n if (i < 0) {\n y = 0;\n v = 1;\n ringRadius = bottomRadius;\n } else if (i > nvertical) {\n y = height;\n v = 1;\n ringRadius = topRadius;\n } else {\n ringRadius = bottomRadius + (topRadius - bottomRadius) * (i / nvertical);\n }\n if (i === -2 || i === nvertical + 2) {\n ringRadius = 0;\n v = 0;\n }\n y -= height / 2;\n for (let j = 0; j < vertsAroundEdge; j++) {\n const sin = msin((j * mpi * 2) / nradial);\n const cos = mcos((j * mpi * 2) / nradial);\n\n positions[i3 + indexOffset[0]] = sin * ringRadius;\n positions[i3 + indexOffset[1]] = y;\n positions[i3 + indexOffset[2]] = cos * ringRadius;\n\n normals[i3 + indexOffset[0]] = i < 0 || i > nvertical ? 0 : sin * cosSlant;\n normals[i3 + indexOffset[1]] = i < 0 ? -1 : i > nvertical ? 1 : sinSlant;\n normals[i3 + indexOffset[2]] = i < 0 || i > nvertical ? 0 : cos * cosSlant;\n\n texCoords[i2 + 0] = j / nradial;\n texCoords[i2 + 1] = v;\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n for (let i = 0; i < nvertical + extra; i++) {\n for (let j = 0; j < nradial; j++) {\n const index = (i * nradial + j) * 6;\n indices[index + 0] = vertsAroundEdge * (i + 0) + 0 + j;\n indices[index + 1] = vertsAroundEdge * (i + 0) + 1 + j;\n indices[index + 2] = vertsAroundEdge * (i + 1) + 1 + j;\n indices[index + 3] = vertsAroundEdge * (i + 0) + 0 + j;\n indices[index + 4] = vertsAroundEdge * (i + 1) + 1 + j;\n indices[index + 5] = vertsAroundEdge * (i + 1) + 0 + j;\n }\n }\n\n return {\n indices,\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n TEXCOORD_0: texCoords\n }\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=geometry-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-table.js","names":[],"sources":["../../../src/geometry/geometry-table.ts"],"sourcesContent":["// luma.gl, MIT license\nimport type {TypedArray, VertexFormat} from '@luma.gl/api';\n\n/** Holds one geometry */\nexport type GeometryTable = {\n length: number;\n schema?: Record<string, VertexFormat>;\n attributes: {\n POSITION: TypedArray,\n NORMAL: TypedArray,\n TEXCOORD_0: TypedArray,\n [key: string]: TypedArray,\n };\n indices?: Uint16Array | Uint32Array;\n topology?: 'point-list' | 'line-list' | 'line-strip' | 'triangle-list' | 'triangle-strip';\n}\n"],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.unpackIndexedGeometry = unpackIndexedGeometry;
7
+ function unpackIndexedGeometry(geometry) {
8
+ var indices = geometry.indices,
9
+ attributes = geometry.attributes;
10
+ if (!indices) {
11
+ return geometry;
12
+ }
13
+ var vertexCount = indices.value.length;
14
+ var unpackedAttributes = {};
15
+ for (var attributeName in attributes) {
16
+ var attribute = attributes[attributeName];
17
+ var constant = attribute.constant,
18
+ value = attribute.value,
19
+ size = attribute.size;
20
+ if (constant || !size) {
21
+ continue;
22
+ }
23
+ var unpackedValue = new value.constructor(vertexCount * size);
24
+ for (var x = 0; x < vertexCount; ++x) {
25
+ var index = indices.value[x];
26
+ for (var i = 0; i < size; i++) {
27
+ unpackedValue[x * size + i] = value[index * size + i];
28
+ }
29
+ }
30
+ unpackedAttributes[attributeName] = {
31
+ size: size,
32
+ value: unpackedValue
33
+ };
34
+ }
35
+ return {
36
+ attributes: Object.assign({}, attributes, unpackedAttributes)
37
+ };
38
+ }
39
+ //# sourceMappingURL=geometry-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-utils.js","names":["unpackIndexedGeometry","geometry","indices","attributes","vertexCount","value","length","unpackedAttributes","attributeName","attribute","constant","size","unpackedValue","constructor","x","index","i","Object","assign"],"sources":["../../../src/geometry/geometry-utils.ts"],"sourcesContent":["// import type Geometry from './geometry';\n\nexport function unpackIndexedGeometry(geometry: any) {\n const {indices, attributes} = geometry;\n if (!indices) {\n return geometry;\n }\n\n const vertexCount = indices.value.length;\n const unpackedAttributes: Record<string, any> = {};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {constant, value, size} = attribute;\n if (constant || !size) {\n continue; // eslint-disable-line\n }\n const unpackedValue = new value.constructor(vertexCount * size);\n for (let x = 0; x < vertexCount; ++x) {\n const index = indices.value[x];\n for (let i = 0; i < size; i++) {\n unpackedValue[x * size + i] = value[index * size + i];\n }\n }\n unpackedAttributes[attributeName] = {size, value: unpackedValue};\n }\n\n return {\n attributes: Object.assign({}, attributes, unpackedAttributes)\n };\n}\n"],"mappings":";;;;;;AAEO,SAASA,qBAAqBA,CAACC,QAAa,EAAE;EACnD,IAAOC,OAAO,GAAgBD,QAAQ,CAA/BC,OAAO;IAAEC,UAAU,GAAIF,QAAQ,CAAtBE,UAAU;EAC1B,IAAI,CAACD,OAAO,EAAE;IACZ,OAAOD,QAAQ;EACjB;EAEA,IAAMG,WAAW,GAAGF,OAAO,CAACG,KAAK,CAACC,MAAM;EACxC,IAAMC,kBAAuC,GAAG,CAAC,CAAC;EAElD,KAAK,IAAMC,aAAa,IAAIL,UAAU,EAAE;IACtC,IAAMM,SAAS,GAAGN,UAAU,CAACK,aAAa,CAAC;IAC3C,IAAOE,QAAQ,GAAiBD,SAAS,CAAlCC,QAAQ;MAAEL,KAAK,GAAUI,SAAS,CAAxBJ,KAAK;MAAEM,IAAI,GAAIF,SAAS,CAAjBE,IAAI;IAC5B,IAAID,QAAQ,IAAI,CAACC,IAAI,EAAE;MACrB;IACF;IACA,IAAMC,aAAa,GAAG,IAAIP,KAAK,CAACQ,WAAW,CAACT,WAAW,GAAGO,IAAI,CAAC;IAC/D,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,WAAW,EAAE,EAAEU,CAAC,EAAE;MACpC,IAAMC,KAAK,GAAGb,OAAO,CAACG,KAAK,CAACS,CAAC,CAAC;MAC9B,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,EAAEK,CAAC,EAAE,EAAE;QAC7BJ,aAAa,CAACE,CAAC,GAAGH,IAAI,GAAGK,CAAC,CAAC,GAAGX,KAAK,CAACU,KAAK,GAAGJ,IAAI,GAAGK,CAAC,CAAC;MACvD;IACF;IACAT,kBAAkB,CAACC,aAAa,CAAC,GAAG;MAACG,IAAI,EAAJA,IAAI;MAAEN,KAAK,EAAEO;IAAa,CAAC;EAClE;EAEA,OAAO;IACLT,UAAU,EAAEc,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEf,UAAU,EAAEI,kBAAkB;EAC9D,CAAC;AACH"}