@luma.gl/engine 8.5.15 → 8.5.17

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 (79) hide show
  1. package/dist/dist.js +5946 -6070
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/animation/key-frames.js.map +1 -1
  4. package/dist/es5/animation/timeline.js +1 -1
  5. package/dist/es5/animation/timeline.js.map +1 -1
  6. package/dist/es5/geometries/cone-geometry.js +6 -4
  7. package/dist/es5/geometries/cone-geometry.js.map +1 -1
  8. package/dist/es5/geometries/cube-geometry.js +6 -4
  9. package/dist/es5/geometries/cube-geometry.js.map +1 -1
  10. package/dist/es5/geometries/cylinder-geometry.js +6 -4
  11. package/dist/es5/geometries/cylinder-geometry.js.map +1 -1
  12. package/dist/es5/geometries/ico-sphere-geometry.js +6 -4
  13. package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -1
  14. package/dist/es5/geometries/plane-geometry.js +6 -4
  15. package/dist/es5/geometries/plane-geometry.js.map +1 -1
  16. package/dist/es5/geometries/sphere-geometry.js +6 -4
  17. package/dist/es5/geometries/sphere-geometry.js.map +1 -1
  18. package/dist/es5/geometries/truncated-cone-geometry.js +6 -4
  19. package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -1
  20. package/dist/es5/geometry/geometry-utils.js.map +1 -1
  21. package/dist/es5/geometry/geometry.js +10 -12
  22. package/dist/es5/geometry/geometry.js.map +1 -1
  23. package/dist/es5/index.js +24 -24
  24. package/dist/es5/lib/animation-loop.d.ts +1 -1
  25. package/dist/es5/lib/animation-loop.js +2 -2
  26. package/dist/es5/lib/animation-loop.js.map +1 -1
  27. package/dist/es5/lib/model-utils.js +2 -2
  28. package/dist/es5/lib/model-utils.js.map +1 -1
  29. package/dist/es5/lib/model.js +1 -1
  30. package/dist/es5/lib/model.js.map +1 -1
  31. package/dist/es5/lib/program-manager.js +8 -10
  32. package/dist/es5/lib/program-manager.js.map +1 -1
  33. package/dist/es5/transform/buffer-transform.js +1 -1
  34. package/dist/es5/transform/buffer-transform.js.map +1 -1
  35. package/dist/es5/transform/texture-transform.js.map +1 -1
  36. package/dist/es5/transform/transform-shader-utils.js +1 -1
  37. package/dist/es5/transform/transform-shader-utils.js.map +1 -1
  38. package/dist/es5/transform/transform.js +6 -8
  39. package/dist/es5/transform/transform.js.map +1 -1
  40. package/dist/es5/utils/clip-space.js +4 -2
  41. package/dist/es5/utils/clip-space.js.map +1 -1
  42. package/dist/esm/geometries/cone-geometry.js +2 -1
  43. package/dist/esm/geometries/cone-geometry.js.map +1 -1
  44. package/dist/esm/geometries/cube-geometry.js +2 -1
  45. package/dist/esm/geometries/cube-geometry.js.map +1 -1
  46. package/dist/esm/geometries/cylinder-geometry.js +2 -1
  47. package/dist/esm/geometries/cylinder-geometry.js.map +1 -1
  48. package/dist/esm/geometries/ico-sphere-geometry.js +3 -2
  49. package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -1
  50. package/dist/esm/geometries/plane-geometry.js +6 -5
  51. package/dist/esm/geometries/plane-geometry.js.map +1 -1
  52. package/dist/esm/geometries/sphere-geometry.js +2 -1
  53. package/dist/esm/geometries/sphere-geometry.js.map +1 -1
  54. package/dist/esm/geometries/truncated-cone-geometry.js +2 -1
  55. package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -1
  56. package/dist/esm/geometry/geometry.js +4 -3
  57. package/dist/esm/geometry/geometry.js.map +1 -1
  58. package/dist/esm/lib/animation-loop.d.ts +1 -1
  59. package/dist/esm/lib/animation-loop.js +19 -15
  60. package/dist/esm/lib/animation-loop.js.map +1 -1
  61. package/dist/esm/lib/model-utils.js +1 -1
  62. package/dist/esm/lib/model-utils.js.map +1 -1
  63. package/dist/esm/lib/model.js +23 -13
  64. package/dist/esm/lib/model.js.map +1 -1
  65. package/dist/esm/lib/program-manager.js +5 -3
  66. package/dist/esm/lib/program-manager.js.map +1 -1
  67. package/dist/esm/transform/buffer-transform.js +20 -10
  68. package/dist/esm/transform/buffer-transform.js.map +1 -1
  69. package/dist/esm/transform/texture-transform.js +21 -11
  70. package/dist/esm/transform/texture-transform.js.map +1 -1
  71. package/dist/esm/transform/transform-shader-utils.js +23 -25
  72. package/dist/esm/transform/transform-shader-utils.js.map +1 -1
  73. package/dist/esm/transform/transform.js +13 -6
  74. package/dist/esm/transform/transform.js.map +1 -1
  75. package/dist/esm/utils/clip-space.js +1 -16
  76. package/dist/esm/utils/clip-space.js.map +1 -1
  77. package/package.json +8 -8
  78. package/src/lib/animation-loop.d.ts +1 -1
  79. package/src/lib/model.js +1 -1
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
@@ -21,7 +23,7 @@ var _geometry = _interopRequireDefault(require("../geometry/geometry"));
21
23
 
22
24
  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); }; }
23
25
 
24
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
26
+ 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; } }
25
27
 
26
28
  var CLIPSPACE_VERTEX_SHADER = "attribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n";
27
29
  var POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];
@@ -65,7 +67,7 @@ var ClipSpace = function (_Model) {
65
67
  return _this;
66
68
  }
67
69
 
68
- return ClipSpace;
70
+ return (0, _createClass2.default)(ClipSpace);
69
71
  }(_model.default);
70
72
 
71
73
  exports.default = ClipSpace;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/clip-space.js"],"names":["CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","gl","opts","TEX_COORDS","map","coord","Object","assign","vs","geometry","Geometry","drawMode","vertexCount","attributes","aClipSpacePosition","size","value","Float32Array","aTexCoord","aCoordinate","setVertexCount","Model"],"mappings":";;;;;;;;;;;;;;;;;AAEA;;AACA;;;;;;AAEA,IAAMA,uBAAuB,oUAA7B;AAkBA,IAAMC,SAAS,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;;IAEqBC,S;;;;;AACnB,qBAAYC,EAAZ,EAAgBC,IAAhB,EAAsB;AAAA;;AAAA;AACpB,QAAMC,UAAU,GAAGJ,SAAS,CAACK,GAAV,CAAc,UAAAC,KAAK;AAAA,aAAKA,KAAK,KAAK,CAAC,CAAX,GAAe,CAAf,GAAmBA,KAAxB;AAAA,KAAnB,CAAnB;AAEA,8BACEJ,EADF,EAEEK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,IAAlB,EAAwB;AACtBM,MAAAA,EAAE,EAAEV,uBADkB;AAEtBW,MAAAA,QAAQ,EAAE,IAAIC,iBAAJ,CAAa;AACrBC,QAAAA,QAAQ,GADa;AAErBC,QAAAA,WAAW,EAAE,CAFQ;AAGrBC,QAAAA,UAAU,EAAE;AACVC,UAAAA,kBAAkB,EAAE;AAACC,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBlB,SAAjB;AAAjB,WADV;AAEVmB,UAAAA,SAAS,EAAE;AAACH,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB,WAFD;AAGVgB,UAAAA,WAAW,EAAE;AAACJ,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB;AAHH;AAHS,OAAb;AAFY,KAAxB,CAFF;;AAeA,UAAKiB,cAAL,CAAoB,CAApB;;AAlBoB;AAmBrB;;;EApBoCC,c","sourcesContent":["// ClipSpace\nimport GL from '@luma.gl/constants';\nimport Model from '../lib/model';\nimport Geometry from '../geometry/geometry';\n\nconst CLIPSPACE_VERTEX_SHADER = `\\\nattribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n`;\n\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n\nexport default class ClipSpace extends Model {\n constructor(gl, opts) {\n const TEX_COORDS = POSITIONS.map(coord => (coord === -1 ? 0 : coord));\n\n super(\n gl,\n Object.assign({}, opts, {\n vs: CLIPSPACE_VERTEX_SHADER,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n vertexCount: 4,\n attributes: {\n aClipSpacePosition: {size: 2, value: new Float32Array(POSITIONS)},\n aTexCoord: {size: 2, value: new Float32Array(TEX_COORDS)},\n aCoordinate: {size: 2, value: new Float32Array(TEX_COORDS)}\n }\n })\n })\n );\n this.setVertexCount(4);\n }\n}\n"],"file":"clip-space.js"}
1
+ {"version":3,"sources":["../../../src/utils/clip-space.js"],"names":["CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","gl","opts","TEX_COORDS","map","coord","Object","assign","vs","geometry","Geometry","drawMode","vertexCount","attributes","aClipSpacePosition","size","value","Float32Array","aTexCoord","aCoordinate","setVertexCount","Model"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA;;AACA;;;;;;AAEA,IAAMA,uBAAuB,oUAA7B;AAkBA,IAAMC,SAAS,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;;IAEqBC,S;;;;;AACnB,qBAAYC,EAAZ,EAAgBC,IAAhB,EAAsB;AAAA;;AAAA;AACpB,QAAMC,UAAU,GAAGJ,SAAS,CAACK,GAAV,CAAc,UAAAC,KAAK;AAAA,aAAKA,KAAK,KAAK,CAAC,CAAX,GAAe,CAAf,GAAmBA,KAAxB;AAAA,KAAnB,CAAnB;AAEA,8BACEJ,EADF,EAEEK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,IAAlB,EAAwB;AACtBM,MAAAA,EAAE,EAAEV,uBADkB;AAEtBW,MAAAA,QAAQ,EAAE,IAAIC,iBAAJ,CAAa;AACrBC,QAAAA,QAAQ,GADa;AAErBC,QAAAA,WAAW,EAAE,CAFQ;AAGrBC,QAAAA,UAAU,EAAE;AACVC,UAAAA,kBAAkB,EAAE;AAACC,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBlB,SAAjB;AAAjB,WADV;AAEVmB,UAAAA,SAAS,EAAE;AAACH,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB,WAFD;AAGVgB,UAAAA,WAAW,EAAE;AAACJ,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB;AAHH;AAHS,OAAb;AAFY,KAAxB,CAFF;;AAeA,UAAKiB,cAAL,CAAoB,CAApB;;AAlBoB;AAmBrB;;;EApBoCC,c","sourcesContent":["// ClipSpace\nimport GL from '@luma.gl/constants';\nimport Model from '../lib/model';\nimport Geometry from '../geometry/geometry';\n\nconst CLIPSPACE_VERTEX_SHADER = `\\\nattribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n`;\n\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n\nexport default class ClipSpace extends Model {\n constructor(gl, opts) {\n const TEX_COORDS = POSITIONS.map(coord => (coord === -1 ? 0 : coord));\n\n super(\n gl,\n Object.assign({}, opts, {\n vs: CLIPSPACE_VERTEX_SHADER,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n vertexCount: 4,\n attributes: {\n aClipSpacePosition: {size: 2, value: new Float32Array(POSITIONS)},\n aTexCoord: {size: 2, value: new Float32Array(TEX_COORDS)},\n aCoordinate: {size: 2, value: new Float32Array(TEX_COORDS)}\n }\n })\n })\n );\n this.setVertexCount(4);\n }\n}\n"],"file":"clip-space.js"}
@@ -1,7 +1,8 @@
1
1
  import TruncatedConeGeometry from './truncated-cone-geometry';
2
2
  import { uid } from '@luma.gl/webgl';
3
3
  export default class ConeGeometry extends TruncatedConeGeometry {
4
- constructor(props = {}) {
4
+ constructor() {
5
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
6
  const {
6
7
  id = uid('cone-geometry'),
7
8
  radius = 1,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/cone-geometry.js"],"names":["TruncatedConeGeometry","uid","ConeGeometry","constructor","props","id","radius","cap","topRadius","topCap","Boolean","bottomCap","bottomRadius"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,2BAAlC;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAEA,eAAe,MAAMC,YAAN,SAA2BF,qBAA3B,CAAiD;AAC9DG,EAAAA,WAAW,CAACC,KAAK,GAAG,EAAT,EAAa;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGJ,GAAG,CAAC,eAAD,CAAT;AAA4BK,MAAAA,MAAM,GAAG,CAArC;AAAwCC,MAAAA,GAAG,GAAG;AAA9C,QAAsDH,KAA5D;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJG,MAAAA,SAAS,EAAE,CAHP;AAIJC,MAAAA,MAAM,EAAEC,OAAO,CAACH,GAAD,CAJX;AAKJI,MAAAA,SAAS,EAAED,OAAO,CAACH,GAAD,CALd;AAMJK,MAAAA,YAAY,EAAEN;AANV,KAAN;AAQD;;AAX6D","sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class ConeGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cone-geometry'), radius = 1, cap = true} = props;\n super({\n ...props,\n id,\n topRadius: 0,\n topCap: Boolean(cap),\n bottomCap: Boolean(cap),\n bottomRadius: radius\n });\n }\n}\n"],"file":"cone-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/cone-geometry.js"],"names":["TruncatedConeGeometry","uid","ConeGeometry","constructor","props","id","radius","cap","topRadius","topCap","Boolean","bottomCap","bottomRadius"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,2BAAlC;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAEA,eAAe,MAAMC,YAAN,SAA2BF,qBAA3B,CAAiD;AAC9DG,EAAAA,WAAW,GAAa;AAAA,QAAZC,KAAY,uEAAJ,EAAI;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGJ,GAAG,CAAC,eAAD,CAAT;AAA4BK,MAAAA,MAAM,GAAG,CAArC;AAAwCC,MAAAA,GAAG,GAAG;AAA9C,QAAsDH,KAA5D;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJG,MAAAA,SAAS,EAAE,CAHP;AAIJC,MAAAA,MAAM,EAAEC,OAAO,CAACH,GAAD,CAJX;AAKJI,MAAAA,SAAS,EAAED,OAAO,CAACH,GAAD,CALd;AAMJK,MAAAA,YAAY,EAAEN;AANV,KAAN;AAQD;;AAX6D","sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class ConeGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cone-geometry'), radius = 1, cap = true} = props;\n super({\n ...props,\n id,\n topRadius: 0,\n topCap: Boolean(cap),\n bottomCap: Boolean(cap),\n bottomRadius: radius\n });\n }\n}\n"],"file":"cone-geometry.js"}
@@ -19,7 +19,8 @@ const ATTRIBUTES = {
19
19
  }
20
20
  };
21
21
  export default class CubeGeometry extends Geometry {
22
- constructor(props = {}) {
22
+ constructor() {
23
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
24
  const {
24
25
  id = uid('cube-geometry')
25
26
  } = props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/cube-geometry.js"],"names":["Geometry","uid","CUBE_INDICES","Uint16Array","CUBE_POSITIONS","Float32Array","CUBE_NORMALS","CUBE_TEX_COORDS","ATTRIBUTES","POSITION","size","value","NORMAL","TEXCOORD_0","CubeGeometry","constructor","props","id","indices","attributes"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAGA,MAAMC,YAAY,GAAG,IAAIC,WAAJ,CAAgB,CACnC,CADmC,EAChC,CADgC,EAC7B,CAD6B,EAC1B,CAD0B,EACvB,CADuB,EACpB,CADoB,EACjB,CADiB,EACd,CADc,EACX,CADW,EACR,CADQ,EACL,CADK,EACF,CADE,EACC,CADD,EACI,CADJ,EACO,EADP,EACW,CADX,EACc,EADd,EACkB,EADlB,EACsB,EADtB,EAC0B,EAD1B,EAEnC,EAFmC,EAE/B,EAF+B,EAE3B,EAF2B,EAEvB,EAFuB,EAEnB,EAFmB,EAEf,EAFe,EAEX,EAFW,EAEP,EAFO,EAEH,EAFG,EAEC,EAFD,EAEK,EAFL,EAES,EAFT,EAEa,EAFb,EAEiB,EAFjB,EAEqB,EAFrB,EAEyB,EAFzB,CAAhB,CAArB;AAMA,MAAMC,cAAc,GAAG,IAAIC,YAAJ,CAAiB,CACtC,CAAC,CADqC,EACjC,CAAC,CADgC,EAC5B,CAD4B,EACzB,CADyB,EACrB,CAAC,CADoB,EAChB,CADgB,EACZ,CADY,EACR,CADQ,EACJ,CADI,EACA,CAAC,CADD,EACK,CADL,EACS,CADT,EAEtC,CAAC,CAFqC,EAEjC,CAAC,CAFgC,EAE5B,CAAC,CAF2B,EAEvB,CAAC,CAFsB,EAElB,CAFkB,EAEd,CAAC,CAFa,EAET,CAFS,EAEL,CAFK,EAED,CAAC,CAFA,EAEI,CAFJ,EAEQ,CAAC,CAFT,EAEa,CAAC,CAFd,EAGtC,CAAC,CAHqC,EAGjC,CAHiC,EAG7B,CAAC,CAH4B,EAGxB,CAAC,CAHuB,EAGnB,CAHmB,EAGf,CAHe,EAGX,CAHW,EAGP,CAHO,EAGH,CAHG,EAGC,CAHD,EAGK,CAHL,EAGS,CAAC,CAHV,EAItC,CAAC,CAJqC,EAIjC,CAAC,CAJgC,EAI5B,CAAC,CAJ2B,EAIvB,CAJuB,EAInB,CAAC,CAJkB,EAId,CAAC,CAJa,EAIT,CAJS,EAIL,CAAC,CAJI,EAIA,CAJA,EAII,CAAC,CAJL,EAIS,CAAC,CAJV,EAIc,CAJd,EAKtC,CALsC,EAKlC,CAAC,CALiC,EAK7B,CAAC,CAL4B,EAKxB,CALwB,EAKpB,CALoB,EAKhB,CAAC,CALe,EAKX,CALW,EAKP,CALO,EAKH,CALG,EAKC,CALD,EAKK,CAAC,CALN,EAKU,CALV,EAMtC,CAAC,CANqC,EAMjC,CAAC,CANgC,EAM5B,CAAC,CAN2B,EAMvB,CAAC,CANsB,EAMlB,CAAC,CANiB,EAMb,CANa,EAMT,CAAC,CANQ,EAMJ,CANI,EAMA,CANA,EAMI,CAAC,CANL,EAMS,CANT,EAMa,CAAC,CANd,CAAjB,CAAvB;AAWA,MAAMC,YAAY,GAAG,IAAID,YAAJ,CAAiB,CAEpC,CAFoC,EAEhC,CAFgC,EAE5B,CAF4B,EAExB,CAFwB,EAEpB,CAFoB,EAEhB,CAFgB,EAEZ,CAFY,EAER,CAFQ,EAEJ,CAFI,EAEA,CAFA,EAEI,CAFJ,EAEQ,CAFR,EAIpC,CAJoC,EAIhC,CAJgC,EAI5B,CAAC,CAJ2B,EAIvB,CAJuB,EAInB,CAJmB,EAIf,CAAC,CAJc,EAIV,CAJU,EAIN,CAJM,EAIF,CAAC,CAJC,EAIG,CAJH,EAIO,CAJP,EAIW,CAAC,CAJZ,EAMpC,CANoC,EAMhC,CANgC,EAM5B,CAN4B,EAMxB,CANwB,EAMpB,CANoB,EAMhB,CANgB,EAMZ,CANY,EAMR,CANQ,EAMJ,CANI,EAMA,CANA,EAMI,CANJ,EAMQ,CANR,EAQpC,CARoC,EAQhC,CAAC,CAR+B,EAQ3B,CAR2B,EAQvB,CARuB,EAQnB,CAAC,CARkB,EAQd,CARc,EAQV,CARU,EAQN,CAAC,CARK,EAQD,CARC,EAQG,CARH,EAQO,CAAC,CARR,EAQY,CARZ,EAUpC,CAVoC,EAUhC,CAVgC,EAU5B,CAV4B,EAUxB,CAVwB,EAUpB,CAVoB,EAUhB,CAVgB,EAUZ,CAVY,EAUR,CAVQ,EAUJ,CAVI,EAUA,CAVA,EAUI,CAVJ,EAUQ,CAVR,EAYpC,CAAC,CAZmC,EAY/B,CAZ+B,EAY3B,CAZ2B,EAYvB,CAAC,CAZsB,EAYlB,CAZkB,EAYd,CAZc,EAYV,CAAC,CAZS,EAYL,CAZK,EAYD,CAZC,EAYG,CAAC,CAZJ,EAYQ,CAZR,EAYY,CAZZ,CAAjB,CAArB;AAgBA,MAAME,eAAe,GAAG,IAAIF,YAAJ,CAAiB,CAEvC,CAFuC,EAEnC,CAFmC,EAE/B,CAF+B,EAE3B,CAF2B,EAEvB,CAFuB,EAEnB,CAFmB,EAEf,CAFe,EAEX,CAFW,EAIvC,CAJuC,EAInC,CAJmC,EAI/B,CAJ+B,EAI3B,CAJ2B,EAIvB,CAJuB,EAInB,CAJmB,EAIf,CAJe,EAIX,CAJW,EAMvC,CANuC,EAMnC,CANmC,EAM/B,CAN+B,EAM3B,CAN2B,EAMvB,CANuB,EAMnB,CANmB,EAMf,CANe,EAMX,CANW,EAQvC,CARuC,EAQnC,CARmC,EAQ/B,CAR+B,EAQ3B,CAR2B,EAQvB,CARuB,EAQnB,CARmB,EAQf,CARe,EAQX,CARW,EAUvC,CAVuC,EAUnC,CAVmC,EAU/B,CAV+B,EAU3B,CAV2B,EAUvB,CAVuB,EAUnB,CAVmB,EAUf,CAVe,EAUX,CAVW,EAYvC,CAZuC,EAYnC,CAZmC,EAY/B,CAZ+B,EAY3B,CAZ2B,EAYvB,CAZuB,EAYnB,CAZmB,EAYf,CAZe,EAYX,CAZW,CAAjB,CAAxB;AAeA,MAAMG,UAAU,GAAG;AACjBC,EAAAA,QAAQ,EAAE;AAACC,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBD,cAAjB;AAAjB,GADO;AAEjBQ,EAAAA,MAAM,EAAE;AAACF,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBC,YAAjB;AAAjB,GAFS;AAGjBO,EAAAA,UAAU,EAAE;AAACH,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBE,eAAjB;AAAjB;AAHK,CAAnB;AAMA,eAAe,MAAMO,YAAN,SAA2Bd,QAA3B,CAAoC;AACjDe,EAAAA,WAAW,CAACC,KAAK,GAAG,EAAT,EAAa;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGhB,GAAG,CAAC,eAAD;AAAT,QAA8Be,KAApC;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJC,MAAAA,OAAO,EAAE;AAACR,QAAAA,IAAI,EAAE,CAAP;AAAUC,QAAAA,KAAK,EAAE,IAAIR,WAAJ,CAAgBD,YAAhB;AAAjB,OAHL;AAIJiB,MAAAA,UAAU,EAAE,EAAC,GAAGX,UAAJ;AAAgB,WAAGQ,KAAK,CAACG;AAAzB;AAJR,KAAN;AAMD;;AATgD","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n// prettier-ignore\nconst CUBE_INDICES = new Uint16Array([\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13,\n 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n]);\n\n// prettier-ignore\nconst CUBE_POSITIONS = new Float32Array([\n -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,\n -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1,\n -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1,\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1,\n 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1\n]);\n\n// TODO - could be Uint8\n// prettier-ignore\nconst CUBE_NORMALS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,\n // Back face\n 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1,\n // Top face\n 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n // Bottom face\n 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\n // Right face\n 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n // Left face\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0\n]);\n\n// prettier-ignore\nconst CUBE_TEX_COORDS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 1, 1, 0, 1,\n // Back face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Top face\n 0, 1, 0, 0, 1, 0, 1, 1,\n // Bottom face\n 1, 1, 0, 1, 0, 0, 1, 0,\n // Right face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Left face\n 0, 0, 1, 0, 1, 1, 0, 1\n]);\n\nconst ATTRIBUTES = {\n POSITION: {size: 3, value: new Float32Array(CUBE_POSITIONS)},\n NORMAL: {size: 3, value: new Float32Array(CUBE_NORMALS)},\n TEXCOORD_0: {size: 2, value: new Float32Array(CUBE_TEX_COORDS)}\n};\n\nexport default class CubeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('cube-geometry')} = props;\n super({\n ...props,\n id,\n indices: {size: 1, value: new Uint16Array(CUBE_INDICES)},\n attributes: {...ATTRIBUTES, ...props.attributes}\n });\n }\n}\n"],"file":"cube-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/cube-geometry.js"],"names":["Geometry","uid","CUBE_INDICES","Uint16Array","CUBE_POSITIONS","Float32Array","CUBE_NORMALS","CUBE_TEX_COORDS","ATTRIBUTES","POSITION","size","value","NORMAL","TEXCOORD_0","CubeGeometry","constructor","props","id","indices","attributes"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAGA,MAAMC,YAAY,GAAG,IAAIC,WAAJ,CAAgB,CACnC,CADmC,EAChC,CADgC,EAC7B,CAD6B,EAC1B,CAD0B,EACvB,CADuB,EACpB,CADoB,EACjB,CADiB,EACd,CADc,EACX,CADW,EACR,CADQ,EACL,CADK,EACF,CADE,EACC,CADD,EACI,CADJ,EACO,EADP,EACW,CADX,EACc,EADd,EACkB,EADlB,EACsB,EADtB,EAC0B,EAD1B,EAEnC,EAFmC,EAE/B,EAF+B,EAE3B,EAF2B,EAEvB,EAFuB,EAEnB,EAFmB,EAEf,EAFe,EAEX,EAFW,EAEP,EAFO,EAEH,EAFG,EAEC,EAFD,EAEK,EAFL,EAES,EAFT,EAEa,EAFb,EAEiB,EAFjB,EAEqB,EAFrB,EAEyB,EAFzB,CAAhB,CAArB;AAMA,MAAMC,cAAc,GAAG,IAAIC,YAAJ,CAAiB,CACtC,CAAC,CADqC,EACjC,CAAC,CADgC,EAC5B,CAD4B,EACzB,CADyB,EACrB,CAAC,CADoB,EAChB,CADgB,EACZ,CADY,EACR,CADQ,EACJ,CADI,EACA,CAAC,CADD,EACK,CADL,EACS,CADT,EAEtC,CAAC,CAFqC,EAEjC,CAAC,CAFgC,EAE5B,CAAC,CAF2B,EAEvB,CAAC,CAFsB,EAElB,CAFkB,EAEd,CAAC,CAFa,EAET,CAFS,EAEL,CAFK,EAED,CAAC,CAFA,EAEI,CAFJ,EAEQ,CAAC,CAFT,EAEa,CAAC,CAFd,EAGtC,CAAC,CAHqC,EAGjC,CAHiC,EAG7B,CAAC,CAH4B,EAGxB,CAAC,CAHuB,EAGnB,CAHmB,EAGf,CAHe,EAGX,CAHW,EAGP,CAHO,EAGH,CAHG,EAGC,CAHD,EAGK,CAHL,EAGS,CAAC,CAHV,EAItC,CAAC,CAJqC,EAIjC,CAAC,CAJgC,EAI5B,CAAC,CAJ2B,EAIvB,CAJuB,EAInB,CAAC,CAJkB,EAId,CAAC,CAJa,EAIT,CAJS,EAIL,CAAC,CAJI,EAIA,CAJA,EAII,CAAC,CAJL,EAIS,CAAC,CAJV,EAIc,CAJd,EAKtC,CALsC,EAKlC,CAAC,CALiC,EAK7B,CAAC,CAL4B,EAKxB,CALwB,EAKpB,CALoB,EAKhB,CAAC,CALe,EAKX,CALW,EAKP,CALO,EAKH,CALG,EAKC,CALD,EAKK,CAAC,CALN,EAKU,CALV,EAMtC,CAAC,CANqC,EAMjC,CAAC,CANgC,EAM5B,CAAC,CAN2B,EAMvB,CAAC,CANsB,EAMlB,CAAC,CANiB,EAMb,CANa,EAMT,CAAC,CANQ,EAMJ,CANI,EAMA,CANA,EAMI,CAAC,CANL,EAMS,CANT,EAMa,CAAC,CANd,CAAjB,CAAvB;AAWA,MAAMC,YAAY,GAAG,IAAID,YAAJ,CAAiB,CAEpC,CAFoC,EAEhC,CAFgC,EAE5B,CAF4B,EAExB,CAFwB,EAEpB,CAFoB,EAEhB,CAFgB,EAEZ,CAFY,EAER,CAFQ,EAEJ,CAFI,EAEA,CAFA,EAEI,CAFJ,EAEQ,CAFR,EAIpC,CAJoC,EAIhC,CAJgC,EAI5B,CAAC,CAJ2B,EAIvB,CAJuB,EAInB,CAJmB,EAIf,CAAC,CAJc,EAIV,CAJU,EAIN,CAJM,EAIF,CAAC,CAJC,EAIG,CAJH,EAIO,CAJP,EAIW,CAAC,CAJZ,EAMpC,CANoC,EAMhC,CANgC,EAM5B,CAN4B,EAMxB,CANwB,EAMpB,CANoB,EAMhB,CANgB,EAMZ,CANY,EAMR,CANQ,EAMJ,CANI,EAMA,CANA,EAMI,CANJ,EAMQ,CANR,EAQpC,CARoC,EAQhC,CAAC,CAR+B,EAQ3B,CAR2B,EAQvB,CARuB,EAQnB,CAAC,CARkB,EAQd,CARc,EAQV,CARU,EAQN,CAAC,CARK,EAQD,CARC,EAQG,CARH,EAQO,CAAC,CARR,EAQY,CARZ,EAUpC,CAVoC,EAUhC,CAVgC,EAU5B,CAV4B,EAUxB,CAVwB,EAUpB,CAVoB,EAUhB,CAVgB,EAUZ,CAVY,EAUR,CAVQ,EAUJ,CAVI,EAUA,CAVA,EAUI,CAVJ,EAUQ,CAVR,EAYpC,CAAC,CAZmC,EAY/B,CAZ+B,EAY3B,CAZ2B,EAYvB,CAAC,CAZsB,EAYlB,CAZkB,EAYd,CAZc,EAYV,CAAC,CAZS,EAYL,CAZK,EAYD,CAZC,EAYG,CAAC,CAZJ,EAYQ,CAZR,EAYY,CAZZ,CAAjB,CAArB;AAgBA,MAAME,eAAe,GAAG,IAAIF,YAAJ,CAAiB,CAEvC,CAFuC,EAEnC,CAFmC,EAE/B,CAF+B,EAE3B,CAF2B,EAEvB,CAFuB,EAEnB,CAFmB,EAEf,CAFe,EAEX,CAFW,EAIvC,CAJuC,EAInC,CAJmC,EAI/B,CAJ+B,EAI3B,CAJ2B,EAIvB,CAJuB,EAInB,CAJmB,EAIf,CAJe,EAIX,CAJW,EAMvC,CANuC,EAMnC,CANmC,EAM/B,CAN+B,EAM3B,CAN2B,EAMvB,CANuB,EAMnB,CANmB,EAMf,CANe,EAMX,CANW,EAQvC,CARuC,EAQnC,CARmC,EAQ/B,CAR+B,EAQ3B,CAR2B,EAQvB,CARuB,EAQnB,CARmB,EAQf,CARe,EAQX,CARW,EAUvC,CAVuC,EAUnC,CAVmC,EAU/B,CAV+B,EAU3B,CAV2B,EAUvB,CAVuB,EAUnB,CAVmB,EAUf,CAVe,EAUX,CAVW,EAYvC,CAZuC,EAYnC,CAZmC,EAY/B,CAZ+B,EAY3B,CAZ2B,EAYvB,CAZuB,EAYnB,CAZmB,EAYf,CAZe,EAYX,CAZW,CAAjB,CAAxB;AAeA,MAAMG,UAAU,GAAG;AACjBC,EAAAA,QAAQ,EAAE;AAACC,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBD,cAAjB;AAAjB,GADO;AAEjBQ,EAAAA,MAAM,EAAE;AAACF,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBC,YAAjB;AAAjB,GAFS;AAGjBO,EAAAA,UAAU,EAAE;AAACH,IAAAA,IAAI,EAAE,CAAP;AAAUC,IAAAA,KAAK,EAAE,IAAIN,YAAJ,CAAiBE,eAAjB;AAAjB;AAHK,CAAnB;AAMA,eAAe,MAAMO,YAAN,SAA2Bd,QAA3B,CAAoC;AACjDe,EAAAA,WAAW,GAAa;AAAA,QAAZC,KAAY,uEAAJ,EAAI;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGhB,GAAG,CAAC,eAAD;AAAT,QAA8Be,KAApC;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJC,MAAAA,OAAO,EAAE;AAACR,QAAAA,IAAI,EAAE,CAAP;AAAUC,QAAAA,KAAK,EAAE,IAAIR,WAAJ,CAAgBD,YAAhB;AAAjB,OAHL;AAIJiB,MAAAA,UAAU,EAAE,EAAC,GAAGX,UAAJ;AAAgB,WAAGQ,KAAK,CAACG;AAAzB;AAJR,KAAN;AAMD;;AATgD","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n// prettier-ignore\nconst CUBE_INDICES = new Uint16Array([\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13,\n 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n]);\n\n// prettier-ignore\nconst CUBE_POSITIONS = new Float32Array([\n -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,\n -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1,\n -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1,\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1,\n 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1\n]);\n\n// TODO - could be Uint8\n// prettier-ignore\nconst CUBE_NORMALS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,\n // Back face\n 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1,\n // Top face\n 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n // Bottom face\n 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\n // Right face\n 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n // Left face\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0\n]);\n\n// prettier-ignore\nconst CUBE_TEX_COORDS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 1, 1, 0, 1,\n // Back face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Top face\n 0, 1, 0, 0, 1, 0, 1, 1,\n // Bottom face\n 1, 1, 0, 1, 0, 0, 1, 0,\n // Right face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Left face\n 0, 0, 1, 0, 1, 1, 0, 1\n]);\n\nconst ATTRIBUTES = {\n POSITION: {size: 3, value: new Float32Array(CUBE_POSITIONS)},\n NORMAL: {size: 3, value: new Float32Array(CUBE_NORMALS)},\n TEXCOORD_0: {size: 2, value: new Float32Array(CUBE_TEX_COORDS)}\n};\n\nexport default class CubeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('cube-geometry')} = props;\n super({\n ...props,\n id,\n indices: {size: 1, value: new Uint16Array(CUBE_INDICES)},\n attributes: {...ATTRIBUTES, ...props.attributes}\n });\n }\n}\n"],"file":"cube-geometry.js"}
@@ -1,7 +1,8 @@
1
1
  import TruncatedConeGeometry from './truncated-cone-geometry';
2
2
  import { uid } from '@luma.gl/webgl';
3
3
  export default class CylinderGeometry extends TruncatedConeGeometry {
4
- constructor(props = {}) {
4
+ constructor() {
5
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
6
  const {
6
7
  id = uid('cylinder-geometry'),
7
8
  radius = 1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/cylinder-geometry.js"],"names":["TruncatedConeGeometry","uid","CylinderGeometry","constructor","props","id","radius","bottomRadius","topRadius"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,2BAAlC;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAEA,eAAe,MAAMC,gBAAN,SAA+BF,qBAA/B,CAAqD;AAClEG,EAAAA,WAAW,CAACC,KAAK,GAAG,EAAT,EAAa;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGJ,GAAG,CAAC,mBAAD,CAAT;AAAgCK,MAAAA,MAAM,GAAG;AAAzC,QAA8CF,KAApD;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJE,MAAAA,YAAY,EAAED,MAHV;AAIJE,MAAAA,SAAS,EAAEF;AAJP,KAAN;AAMD;;AATiE","sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class CylinderGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cylinder-geometry'), radius = 1} = props;\n super({\n ...props,\n id,\n bottomRadius: radius,\n topRadius: radius\n });\n }\n}\n"],"file":"cylinder-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/cylinder-geometry.js"],"names":["TruncatedConeGeometry","uid","CylinderGeometry","constructor","props","id","radius","bottomRadius","topRadius"],"mappings":"AAAA,OAAOA,qBAAP,MAAkC,2BAAlC;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAEA,eAAe,MAAMC,gBAAN,SAA+BF,qBAA/B,CAAqD;AAClEG,EAAAA,WAAW,GAAa;AAAA,QAAZC,KAAY,uEAAJ,EAAI;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGJ,GAAG,CAAC,mBAAD,CAAT;AAAgCK,MAAAA,MAAM,GAAG;AAAzC,QAA8CF,KAApD;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJE,MAAAA,YAAY,EAAED,MAHV;AAIJE,MAAAA,SAAS,EAAEF;AAJP,KAAN;AAMD;;AATiE","sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class CylinderGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cylinder-geometry'), radius = 1} = props;\n super({\n ...props,\n id,\n bottomRadius: radius,\n topRadius: radius\n });\n }\n}\n"],"file":"cylinder-geometry.js"}
@@ -4,7 +4,8 @@ import { uid } from '@luma.gl/webgl';
4
4
  const ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];
5
5
  const ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];
6
6
  export default class IcoSphereGeometry extends Geometry {
7
- constructor(props = {}) {
7
+ constructor() {
8
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
9
  const {
9
10
  id = uid('ico-sphere-geometry')
10
11
  } = props;
@@ -41,7 +42,7 @@ function tesselateIcosaHedron(props) {
41
42
  i2 *= 3;
42
43
  const mini = i1 < i2 ? i1 : i2;
43
44
  const maxi = i1 > i2 ? i1 : i2;
44
- const key = `${mini}|${maxi}`;
45
+ const key = "".concat(mini, "|").concat(maxi);
45
46
 
46
47
  if (key in pointMemo) {
47
48
  return pointMemo[key];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/ico-sphere-geometry.js"],"names":["Vector3","Geometry","uid","ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","constructor","props","id","indices","attributes","tesselateIcosaHedron","iterations","PI","Math","PI2","positions","push","getMiddlePoint","pointMemo","i1","i2","mini","maxi","key","x1","y1","z1","x2","y2","z2","xm","ym","zm","len","sqrt","length","i","indices2","j","a","b","c","normals","Array","texCoords","l","i3","in1","in2","in3","iu1","iu2","iu3","theta1","acos","phi1","atan2","v1","u1","theta2","phi2","v2","u2","x3","y3","z3","theta3","phi3","v3","u3","vec1","vec2","normal","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport default class IcoSphereGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo = {};\n\n return (i1, i2) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2 = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"file":"ico-sphere-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/ico-sphere-geometry.js"],"names":["Vector3","Geometry","uid","ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","constructor","props","id","indices","attributes","tesselateIcosaHedron","iterations","PI","Math","PI2","positions","push","getMiddlePoint","pointMemo","i1","i2","mini","maxi","key","x1","y1","z1","x2","y2","z2","xm","ym","zm","len","sqrt","length","i","indices2","j","a","b","c","normals","Array","texCoords","l","i3","in1","in2","in3","iu1","iu2","iu3","theta1","acos","phi1","atan2","v1","u1","theta2","phi2","v2","u2","x3","y3","z3","theta3","phi3","v3","u3","vec1","vec2","normal","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport default class IcoSphereGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo = {};\n\n return (i1, i2) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2 = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"file":"ico-sphere-geometry.js"}
@@ -2,7 +2,8 @@ import Geometry from '../geometry/geometry';
2
2
  import { unpackIndexedGeometry } from '../geometry/geometry-utils';
3
3
  import { uid } from '@luma.gl/webgl';
4
4
  export default class PlaneGeometry extends Geometry {
5
- constructor(props = {}) {
5
+ constructor() {
6
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6
7
  const {
7
8
  id = uid('plane-geometry')
8
9
  } = props;
@@ -29,10 +30,10 @@ function tesselatePlane(props) {
29
30
  unpack = false
30
31
  } = props;
31
32
  const coords = type.split(',');
32
- let c1len = props[`${coords[0]}len`] || 1;
33
- const c2len = props[`${coords[1]}len`] || 1;
34
- const subdivisions1 = props[`n${coords[0]}`] || 1;
35
- const subdivisions2 = props[`n${coords[1]}`] || 1;
33
+ let c1len = props["".concat(coords[0], "len")] || 1;
34
+ const c2len = props["".concat(coords[1], "len")] || 1;
35
+ const subdivisions1 = props["n".concat(coords[0])] || 1;
36
+ const subdivisions2 = props["n".concat(coords[1])] || 1;
36
37
  const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);
37
38
  const positions = new Float32Array(numVertices * 3);
38
39
  const normals = new Float32Array(numVertices * 3);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/plane-geometry.js"],"names":["Geometry","unpackIndexedGeometry","uid","PlaneGeometry","constructor","props","id","indices","attributes","tesselatePlane","type","offset","flipCull","unpack","coords","split","c1len","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"],"mappings":"AAAA,OAAOA,QAAP,MAAqB,sBAArB;AACA,SAAQC,qBAAR,QAAoC,4BAApC;AACA,SAAQC,GAAR,QAAkB,gBAAlB;AAEA,eAAe,MAAMC,aAAN,SAA4BH,QAA5B,CAAqC;AAClDI,EAAAA,WAAW,CAACC,KAAK,GAAG,EAAT,EAAa;AACtB,UAAM;AAACC,MAAAA,EAAE,GAAGJ,GAAG,CAAC,gBAAD;AAAT,QAA+BG,KAArC;AAEA,UAAM;AAACE,MAAAA,OAAD;AAAUC,MAAAA;AAAV,QAAwBC,cAAc,CAACJ,KAAD,CAA5C;AACA,UAAM,EACJ,GAAGA,KADC;AAEJC,MAAAA,EAFI;AAGJC,MAAAA,OAHI;AAIJC,MAAAA,UAAU,EAAE,EAAC,GAAGA,UAAJ;AAAgB,WAAGH,KAAK,CAACG;AAAzB;AAJR,KAAN;AAMD;;AAXiD;;AAmBpD,SAASC,cAAT,CAAwBJ,KAAxB,EAA+B;AAC7B,QAAM;AAACK,IAAAA,IAAI,GAAG,KAAR;AAAeC,IAAAA,MAAM,GAAG,CAAxB;AAA2BC,IAAAA,QAAQ,GAAG,KAAtC;AAA6CC,IAAAA,MAAM,GAAG;AAAtD,MAA+DR,KAArE;AAEA,QAAMS,MAAM,GAAGJ,IAAI,CAACK,KAAL,CAAW,GAAX,CAAf;AAEA,MAAIC,KAAK,GAAGX,KAAK,CAAE,GAAES,MAAM,CAAC,CAAD,CAAI,KAAd,CAAL,IAA4B,CAAxC;AACA,QAAMG,KAAK,GAAGZ,KAAK,CAAE,GAAES,MAAM,CAAC,CAAD,CAAI,KAAd,CAAL,IAA4B,CAA1C;AAEA,QAAMI,aAAa,GAAGb,KAAK,CAAE,IAAGS,MAAM,CAAC,CAAD,CAAI,EAAf,CAAL,IAA0B,CAAhD;AACA,QAAMK,aAAa,GAAGd,KAAK,CAAE,IAAGS,MAAM,CAAC,CAAD,CAAI,EAAf,CAAL,IAA0B,CAAhD;AACA,QAAMM,WAAW,GAAG,CAACF,aAAa,GAAG,CAAjB,KAAuBC,aAAa,GAAG,CAAvC,CAApB;AAEA,QAAME,SAAS,GAAG,IAAIC,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAlB;AACA,QAAMG,OAAO,GAAG,IAAID,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAhB;AACA,QAAMI,SAAS,GAAG,IAAIF,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAlB;;AAEA,MAAIR,QAAJ,EAAc;AACZI,IAAAA,KAAK,GAAG,CAACA,KAAT;AACD;;AAED,MAAIS,EAAE,GAAG,CAAT;AACA,MAAIC,EAAE,GAAG,CAAT;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIR,aAArB,EAAoCQ,CAAC,EAArC,EAAyC;AACvC,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIV,aAArB,EAAoCU,CAAC,EAArC,EAAyC;AACvC,YAAMC,CAAC,GAAGD,CAAC,GAAGV,aAAd;AACA,YAAMY,CAAC,GAAGH,CAAC,GAAGR,aAAd;AACAK,MAAAA,SAAS,CAACC,EAAE,GAAG,CAAN,CAAT,GAAoBb,QAAQ,GAAG,IAAIiB,CAAP,GAAWA,CAAvC;AACAL,MAAAA,SAAS,CAACC,EAAE,GAAG,CAAN,CAAT,GAAoBK,CAApB;;AAEA,cAAQpB,IAAR;AACE,aAAK,KAAL;AACEW,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AACAK,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AACAI,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;AAEAY,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACAH,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACAH,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;AACA;;AAEF,aAAK,KAAL;AACES,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AACAK,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;AACAU,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AAEAM,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACAH,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;AACAW,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACA;;AAEF,aAAK,KAAL;AACEL,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;AACAU,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AACAK,UAAAA,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;AAEAM,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;AACAW,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACAH,UAAAA,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;AACA;;AAEF;AACE,gBAAM,IAAIK,KAAJ,CAAU,6BAAV,CAAN;AAhCJ;;AAmCAN,MAAAA,EAAE,IAAI,CAAN;AACAC,MAAAA,EAAE,IAAI,CAAN;AACD;AACF;;AAED,QAAMM,cAAc,GAAGd,aAAa,GAAG,CAAvC;AACA,QAAMX,OAAO,GAAG,IAAI0B,WAAJ,CAAgBf,aAAa,GAAGC,aAAhB,GAAgC,CAAhD,CAAhB;;AAEA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,aAApB,EAAmCQ,CAAC,EAApC,EAAwC;AACtC,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGV,aAApB,EAAmCU,CAAC,EAApC,EAAwC;AACtC,YAAMM,KAAK,GAAG,CAACP,CAAC,GAAGT,aAAJ,GAAoBU,CAArB,IAA0B,CAAxC;AAEArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAAhD;AACArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAAhD;AACArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAA3B,GAA+B,CAApD;AAGArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAAhD;AACArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAA3B,GAA+B,CAApD;AACArB,MAAAA,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,CAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,CAA3B,GAA+B,CAApD;AACD;AACF;;AAED,QAAMO,QAAQ,GAAG;AACf5B,IAAAA,OAAO,EAAE;AAAC6B,MAAAA,IAAI,EAAE,CAAP;AAAUC,MAAAA,KAAK,EAAE9B;AAAjB,KADM;AAEfC,IAAAA,UAAU,EAAE;AACV8B,MAAAA,QAAQ,EAAE;AAACF,QAAAA,IAAI,EAAE,CAAP;AAAUC,QAAAA,KAAK,EAAEhB;AAAjB,OADA;AAEVkB,MAAAA,MAAM,EAAE;AAACH,QAAAA,IAAI,EAAE,CAAP;AAAUC,QAAAA,KAAK,EAAEd;AAAjB,OAFE;AAGViB,MAAAA,UAAU,EAAE;AAACJ,QAAAA,IAAI,EAAE,CAAP;AAAUC,QAAAA,KAAK,EAAEb;AAAjB;AAHF;AAFG,GAAjB;AAUA,SAAOX,MAAM,GAAGZ,qBAAqB,CAACkC,QAAD,CAAxB,GAAqCA,QAAlD;AACD","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class PlaneGeometry extends Geometry {\n constructor(props = {}) {\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// 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/* eslint-disable max-statements, complexity */\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props) {\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"],"file":"plane-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/plane-geometry.js"],"names":["Geometry","unpackIndexedGeometry","uid","PlaneGeometry","constructor","props","id","indices","attributes","tesselatePlane","type","offset","flipCull","unpack","coords","split","c1len","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"],"mappings":"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","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class PlaneGeometry extends Geometry {\n constructor(props = {}) {\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// 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/* eslint-disable max-statements, complexity */\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props) {\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"],"file":"plane-geometry.js"}
@@ -1,7 +1,8 @@
1
1
  import Geometry from '../geometry/geometry';
2
2
  import { uid } from '@luma.gl/webgl';
3
3
  export default class SphereGeometry extends Geometry {
4
- constructor(props = {}) {
4
+ constructor() {
5
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
6
  const {
6
7
  id = uid('sphere-geometry')
7
8
  } = props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/sphere-geometry.js"],"names":["Geometry","uid","SphereGeometry","constructor","props","id","indices","attributes","tesselateSphere","nlat","nlong","radius","startLat","endLat","Math","PI","latRange","startLong","endLong","longRange","numVertices","value","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","POSITION","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class SphereGeometry extends Geometry {\n constructor(props = {}) {\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// 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/* eslint-disable max-statements, complexity */\nfunction tesselateSphere(props) {\n const {nlat = 10, nlong = 10} = props;\n let {radius = 1} = 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 if (typeof radius === 'number') {\n const value = radius;\n radius = (n1, n2, n3, u, v) => value;\n }\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"],"file":"sphere-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/sphere-geometry.js"],"names":["Geometry","uid","SphereGeometry","constructor","props","id","indices","attributes","tesselateSphere","nlat","nlong","radius","startLat","endLat","Math","PI","latRange","startLong","endLong","longRange","numVertices","value","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","POSITION","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class SphereGeometry extends Geometry {\n constructor(props = {}) {\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// 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/* eslint-disable max-statements, complexity */\nfunction tesselateSphere(props) {\n const {nlat = 10, nlong = 10} = props;\n let {radius = 1} = 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 if (typeof radius === 'number') {\n const value = radius;\n radius = (n1, n2, n3, u, v) => value;\n }\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"],"file":"sphere-geometry.js"}
@@ -6,7 +6,8 @@ const INDEX_OFFSETS = {
6
6
  z: [1, 2, 0]
7
7
  };
8
8
  export default class TruncatedConeGeometry extends Geometry {
9
- constructor(props = {}) {
9
+ constructor() {
10
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10
11
  const {
11
12
  id = uid('truncated-code-geometry')
12
13
  } = props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometries/truncated-cone-geometry.js"],"names":["Geometry","uid","INDEX_OFFSETS","x","y","z","TruncatedConeGeometry","constructor","props","id","indices","attributes","tesselateTruncatedCone","bottomRadius","topRadius","height","nradial","nvertical","verticalAxis","topCap","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","i","v","ringRadius","j","index","POSITION","size","value","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nconst INDEX_OFFSETS = {\n x: [2, 0, 1],\n y: [0, 1, 2],\n z: [1, 2, 0]\n};\n\nexport default class TruncatedConeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('truncated-code-geometry')} = props;\n const {indices, attributes} = tesselateTruncatedCone(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\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/* eslint-disable max-statements, complexity */\nfunction tesselateTruncatedCone(props) {\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: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n}\n"],"file":"truncated-cone-geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometries/truncated-cone-geometry.js"],"names":["Geometry","uid","INDEX_OFFSETS","x","y","z","TruncatedConeGeometry","constructor","props","id","indices","attributes","tesselateTruncatedCone","bottomRadius","topRadius","height","nradial","nvertical","verticalAxis","topCap","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","i","v","ringRadius","j","index","POSITION","size","value","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nconst INDEX_OFFSETS = {\n x: [2, 0, 1],\n y: [0, 1, 2],\n z: [1, 2, 0]\n};\n\nexport default class TruncatedConeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('truncated-code-geometry')} = props;\n const {indices, attributes} = tesselateTruncatedCone(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\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/* eslint-disable max-statements, complexity */\nfunction tesselateTruncatedCone(props) {\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: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n}\n"],"file":"truncated-cone-geometry.js"}
@@ -13,7 +13,8 @@ export default class Geometry {
13
13
  return DRAW_MODE;
14
14
  }
15
15
 
16
- constructor(props = {}) {
16
+ constructor() {
17
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
18
  const {
18
19
  id = uid('geometry'),
19
20
  drawMode = DRAW_MODE.TRIANGLES,
@@ -47,7 +48,7 @@ export default class Geometry {
47
48
  }
48
49
 
49
50
  _print(attributeName) {
50
- return `Geometry ${this.id} attribute ${attributeName}`;
51
+ return "Geometry ".concat(this.id, " attribute ").concat(attributeName);
51
52
  }
52
53
 
53
54
  _setAttributes(attributes, indices) {
@@ -63,7 +64,7 @@ export default class Geometry {
63
64
  attribute = ArrayBuffer.isView(attribute) ? {
64
65
  value: attribute
65
66
  } : attribute;
66
- assert(ArrayBuffer.isView(attribute.value), `${this._print(attributeName)}: must be typed array or object with value as typed array`);
67
+ assert(ArrayBuffer.isView(attribute.value), "".concat(this._print(attributeName), ": must be typed array or object with value as typed array"));
67
68
 
68
69
  if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {
69
70
  attribute.size = 3;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geometry/geometry.js"],"names":["uid","assert","DRAW_MODE","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Geometry","constructor","props","id","drawMode","attributes","indices","vertexCount","userData","_setAttributes","_calculateVertexCount","mode","getVertexCount","getAttributes","_print","attributeName","ArrayBuffer","isView","value","size","attribute","isIndexed","undefined","Object","assign","length","Infinity","constant","Math","min","Number","isFinite"],"mappings":"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","sourcesContent":["import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n"],"file":"geometry.js"}
1
+ {"version":3,"sources":["../../../src/geometry/geometry.js"],"names":["uid","assert","DRAW_MODE","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Geometry","constructor","props","id","drawMode","attributes","indices","vertexCount","userData","_setAttributes","_calculateVertexCount","mode","getVertexCount","getAttributes","_print","attributeName","ArrayBuffer","isView","value","size","attribute","isIndexed","undefined","Object","assign","length","Infinity","constant","Math","min","Number","isFinite"],"mappings":"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","sourcesContent":["import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n"],"file":"geometry.js"}
@@ -1,6 +1,6 @@
1
1
  // TODO - remove dependency on framebuffer (bundle size impact)
2
2
  import {Query, Framebuffer} from '@luma.gl/webgl';
3
- import { Stats } from 'probe.gl'
3
+ import { Stats } from '@probe.gl/stats'
4
4
  import { Timeline } from '../animation/timeline'
5
5
 
6
6
  import {CreateGLContextOptions} from '@luma.gl/gltools'
@@ -4,7 +4,8 @@ import { isBrowser } from '@probe.gl/env';
4
4
  const isPage = isBrowser() && typeof document !== 'undefined';
5
5
  let statIdCounter = 0;
6
6
  export default class AnimationLoop {
7
- constructor(props = {}) {
7
+ constructor() {
8
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
9
  const {
9
10
  onCreateContext = opts => createGLContext(opts),
10
11
  onAddHTML = null,
@@ -18,7 +19,7 @@ export default class AnimationLoop {
18
19
  createFramebuffer = false,
19
20
  autoResizeViewport = true,
20
21
  autoResizeDrawingBuffer = true,
21
- stats = lumaStats.get(`animation-loop-${statIdCounter++}`)
22
+ stats = lumaStats.get("animation-loop-".concat(statIdCounter++))
22
23
  } = props;
23
24
  let {
24
25
  useDevicePixels = true
@@ -94,7 +95,9 @@ export default class AnimationLoop {
94
95
  return this;
95
96
  }
96
97
 
97
- start(opts = {}) {
98
+ start() {
99
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
+
98
101
  if (this._running) {
99
102
  return this;
100
103
  }
@@ -217,23 +220,24 @@ export default class AnimationLoop {
217
220
  return this.gl.isContextLost();
218
221
  }
219
222
 
220
- onCreateContext(...args) {
221
- return this.props.onCreateContext(...args);
223
+ onCreateContext() {
224
+ return this.props.onCreateContext(...arguments);
222
225
  }
223
226
 
224
- onInitialize(...args) {
225
- return this.props.onInitialize(...args);
227
+ onInitialize() {
228
+ return this.props.onInitialize(...arguments);
226
229
  }
227
230
 
228
- onRender(...args) {
229
- return this.props.onRender(...args);
231
+ onRender() {
232
+ return this.props.onRender(...arguments);
230
233
  }
231
234
 
232
- onFinalize(...args) {
233
- return this.props.onFinalize(...args);
235
+ onFinalize() {
236
+ return this.props.onFinalize(...arguments);
234
237
  }
235
238
 
236
- getHTMLControlValue(id, defaultValue = 1) {
239
+ getHTMLControlValue(id) {
240
+ let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
237
241
  const element = document.getElementById(id);
238
242
  return element ? Number(element.value) : defaultValue;
239
243
  }
@@ -308,14 +312,14 @@ export default class AnimationLoop {
308
312
  return undefined;
309
313
  }
310
314
 
311
- _renderFrame(...args) {
315
+ _renderFrame() {
312
316
  if (this.display) {
313
- this.display._renderFrame(...args);
317
+ this.display._renderFrame(...arguments);
314
318
 
315
319
  return;
316
320
  }
317
321
 
318
- this.onRender(...args);
322
+ this.onRender(...arguments);
319
323
  }
320
324
 
321
325
  _clearNeedsRedraw() {