@luma.gl/engine 9.0.0-alpha.11 → 9.0.0-alpha.13

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 (72) hide show
  1. package/dist/{lib → animation-loop}/animation-loop.d.ts +14 -11
  2. package/dist/animation-loop/animation-loop.d.ts.map +1 -0
  3. package/dist/{lib → animation-loop}/animation-loop.js +17 -18
  4. package/dist/animation-loop/animation-loop.js.map +1 -0
  5. package/dist/{lib → animation-loop}/animation-props.d.ts +0 -0
  6. package/dist/animation-loop/animation-props.d.ts.map +1 -0
  7. package/dist/{lib → animation-loop}/animation-props.js +0 -0
  8. package/dist/{lib → animation-loop}/animation-props.js.map +0 -0
  9. package/dist/animation-loop/make-animation-loop.d.ts +6 -0
  10. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -0
  11. package/dist/animation-loop/make-animation-loop.js +34 -0
  12. package/dist/animation-loop/make-animation-loop.js.map +1 -0
  13. package/dist/animation-loop/render-loop.d.ts +23 -0
  14. package/dist/animation-loop/render-loop.d.ts.map +1 -0
  15. package/dist/animation-loop/render-loop.js +9 -0
  16. package/dist/animation-loop/render-loop.js.map +1 -0
  17. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  18. package/dist/geometries/cube-geometry.js.map +1 -1
  19. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  20. package/dist/geometries/cylinder-geometry.js.map +1 -1
  21. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  22. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  23. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  24. package/dist/geometries/plane-geometry.js.map +1 -1
  25. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  26. package/dist/geometries/sphere-geometry.js.map +1 -1
  27. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  28. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  29. package/dist/geometry/geometry-utils.d.ts.map +1 -1
  30. package/dist/geometry/geometry-utils.js.map +1 -1
  31. package/dist/geometry/geometry.d.ts +13 -0
  32. package/dist/geometry/geometry.d.ts.map +1 -1
  33. package/dist/geometry/geometry.js +7 -0
  34. package/dist/geometry/geometry.js.map +1 -1
  35. package/dist/index.d.ts +9 -7
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +5 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/lib/model-utils.js +2 -2
  40. package/dist/lib/model-utils.js.map +1 -1
  41. package/dist/lib/model.d.ts +2 -2
  42. package/dist/lib/model.d.ts.map +1 -1
  43. package/dist/lib/model.js +1 -1
  44. package/dist/lib/model.js.map +1 -1
  45. package/dist/lib/pipeline-factory.d.ts.map +1 -1
  46. package/dist/lib/pipeline-factory.js.map +1 -1
  47. package/package.json +5 -5
  48. package/src/{lib → animation-loop}/animation-loop.ts +34 -31
  49. package/src/{lib → animation-loop}/animation-props.ts +0 -0
  50. package/src/animation-loop/make-animation-loop.ts +43 -0
  51. package/src/animation-loop/render-loop.ts +23 -0
  52. package/src/geometries/cube-geometry.ts +1 -1
  53. package/src/geometries/cylinder-geometry.ts +1 -1
  54. package/src/geometries/ico-sphere-geometry.ts +3 -3
  55. package/src/geometries/plane-geometry.ts +2 -2
  56. package/src/geometries/sphere-geometry.ts +1 -1
  57. package/src/geometries/truncated-cone-geometry.ts +1 -1
  58. package/src/geometry/geometry-utils.ts +2 -2
  59. package/src/geometry/geometry.ts +9 -7
  60. package/src/index.ts +14 -8
  61. package/src/lib/clip-space.ts +1 -1
  62. package/src/lib/model-utils.ts +3 -2
  63. package/src/lib/model.ts +2 -2
  64. package/src/lib/pipeline-factory.ts +3 -3
  65. package/dist/lib/animation-loop.d.ts.map +0 -1
  66. package/dist/lib/animation-loop.js.map +0 -1
  67. package/dist/lib/animation-props.d.ts.map +0 -1
  68. package/dist/lib/render-loop.d.ts +0 -19
  69. package/dist/lib/render-loop.d.ts.map +0 -1
  70. package/dist/lib/render-loop.js +0 -53
  71. package/dist/lib/render-loop.js.map +0 -1
  72. package/src/lib/render-loop.ts +0 -60
@@ -1,23 +1,26 @@
1
1
  /// <reference types="offscreencanvas" />
2
- import { Device, DeviceProps } from '@luma.gl/api';
2
+ import { Device } from '@luma.gl/api';
3
3
  import { Timeline } from '../animation/timeline';
4
- import { AnimationProps } from '../lib/animation-props';
4
+ import { AnimationProps } from './animation-props';
5
5
  import { Stats, Stat } from '@probe.gl/stats';
6
6
  /** AnimationLoop properties */
7
7
  export declare type AnimationLoopProps = {
8
- onCreateDevice?: (props: DeviceProps) => Promise<Device>;
8
+ device: Device | Promise<Device>;
9
9
  onAddHTML?: (div: HTMLDivElement) => string;
10
10
  onInitialize?: (animationProps: AnimationProps) => Promise<unknown>;
11
11
  onRender?: (animationProps: AnimationProps) => unknown;
12
12
  onFinalize?: (animationProps: AnimationProps) => void;
13
13
  onError?: (reason: Error) => void;
14
- device?: Device | null;
15
- deviceProps?: DeviceProps;
16
14
  stats?: Stats;
17
15
  autoResizeViewport?: boolean;
18
16
  autoResizeDrawingBuffer?: boolean;
19
17
  useDevicePixels?: number | boolean;
20
18
  };
19
+ export declare type MutableAnimationLoopProps = {
20
+ autoResizeViewport?: boolean;
21
+ autoResizeDrawingBuffer?: boolean;
22
+ useDevicePixels?: number | boolean;
23
+ };
21
24
  /** Convenient animation loop */
22
25
  export declare class AnimationLoop {
23
26
  device: Device | null;
@@ -35,16 +38,16 @@ export declare class AnimationLoop {
35
38
  _running: boolean;
36
39
  _animationFrameId: any;
37
40
  _nextFramePromise: Promise<AnimationLoop> | null;
38
- _resolveNextFrame: ((AnimationLoop: any) => void) | null;
41
+ _resolveNextFrame: ((animationLoop: AnimationLoop) => void) | null;
39
42
  _cpuStartTime: number;
40
- constructor(props?: AnimationLoopProps);
43
+ constructor(props: AnimationLoopProps);
41
44
  destroy(): void;
42
45
  /** @deprecated Use .destroy() */
43
46
  delete(): void;
44
47
  setNeedsRedraw(reason: string): this;
45
- setProps(props: AnimationLoopProps): this;
48
+ setProps(props: MutableAnimationLoopProps): this;
46
49
  /** Starts a render loop if not already running */
47
- start(): Promise<this | null>;
50
+ start(): Promise<this>;
48
51
  /** Explicitly draw a frame */
49
52
  redraw(): this;
50
53
  stop(): this;
@@ -63,8 +66,8 @@ export declare class AnimationLoop {
63
66
  _initializeAnimationProps(): void;
64
67
  _getAnimationProps(): AnimationProps;
65
68
  _updateAnimationProps(): void;
66
- /** Either uses supplied or existing context, or calls provided callback to create one */
67
- _createDevice(): Promise<void>;
69
+ /** Wait for supplied device */
70
+ _initDevice(): Promise<void>;
68
71
  _createInfoDiv(): void;
69
72
  _getSizeAndAspect(): {
70
73
  width: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-loop.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-loop.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,9 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { luma } from '@luma.gl/api';
3
3
  import { requestAnimationFrame, cancelAnimationFrame } from '@luma.gl/api';
4
4
  import { Stats } from '@probe.gl/stats';
5
- import { isBrowser } from '@probe.gl/env';
6
- const isPage = isBrowser() && typeof document !== 'undefined';
7
5
  let statIdCounter = 0;
8
6
  const DEFAULT_ANIMATION_LOOP_PROPS = {
9
- onCreateDevice: props => luma.createDevice(props),
7
+ device: null,
10
8
  onAddHTML: () => '',
11
9
  onInitialize: async () => {
12
10
  return null;
@@ -14,15 +12,13 @@ const DEFAULT_ANIMATION_LOOP_PROPS = {
14
12
  onRender: () => {},
15
13
  onFinalize: () => {},
16
14
  onError: error => console.error(error),
17
- device: null,
18
- deviceProps: {},
19
15
  stats: luma.stats.get("animation-loop-".concat(statIdCounter++)),
20
16
  useDevicePixels: true,
21
- autoResizeViewport: true,
22
- autoResizeDrawingBuffer: true
17
+ autoResizeViewport: false,
18
+ autoResizeDrawingBuffer: false
23
19
  };
24
20
  export class AnimationLoop {
25
- constructor(props = {}) {
21
+ constructor(props) {
26
22
  _defineProperty(this, "device", null);
27
23
 
28
24
  _defineProperty(this, "canvas", null);
@@ -61,11 +57,14 @@ export class AnimationLoop {
61
57
  ...props
62
58
  };
63
59
  props = this.props;
60
+
61
+ if (!props.device) {
62
+ throw new Error('No device provided');
63
+ }
64
+
64
65
  let {
65
66
  useDevicePixels = true
66
67
  } = this.props;
67
- this.device = props.device || null;
68
- this.gl = this.device && this.device.gl || props.gl;
69
68
  this.stats = props.stats || new Stats({
70
69
  id: 'animation-loop-stats'
71
70
  });
@@ -130,7 +129,7 @@ export class AnimationLoop {
130
129
 
131
130
  if (!this._initialized) {
132
131
  this._initialized = true;
133
- await this._createDevice();
132
+ await this._initDevice();
134
133
 
135
134
  this._initialize();
136
135
 
@@ -372,16 +371,16 @@ export class AnimationLoop {
372
371
  this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;
373
372
  }
374
373
 
375
- async _createDevice() {
374
+ async _initDevice() {
376
375
  var _this$device$canvasCo;
377
376
 
378
- const deviceProps = { ...this.props,
379
- ...this.props.deviceProps
380
- };
381
- this.device = await this.props.onCreateDevice(deviceProps);
382
- this.canvas = (_this$device$canvasCo = this.device.canvasContext) === null || _this$device$canvasCo === void 0 ? void 0 : _this$device$canvasCo.canvas;
377
+ this.device = await this.props.device;
378
+
379
+ if (!this.device) {
380
+ throw new Error('No device provided');
381
+ }
383
382
 
384
- this._createInfoDiv();
383
+ this.canvas = ((_this$device$canvasCo = this.device.canvasContext) === null || _this$device$canvasCo === void 0 ? void 0 : _this$device$canvasCo.canvas) || null;
385
384
  }
386
385
 
387
386
  _createInfoDiv() {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animation-loop/animation-loop.ts"],"names":["luma","requestAnimationFrame","cancelAnimationFrame","Stats","statIdCounter","DEFAULT_ANIMATION_LOOP_PROPS","device","onAddHTML","onInitialize","onRender","onFinalize","onError","error","console","stats","get","useDevicePixels","autoResizeViewport","autoResizeDrawingBuffer","AnimationLoop","constructor","props","Error","id","cpuTime","gpuTime","frameRate","setProps","start","bind","stop","_onMousemove","_onMouseleave","destroy","_setDisplay","delete","setNeedsRedraw","reason","needsRedraw","_running","appContext","_initialized","_initDevice","_initialize","_getAnimationProps","_cancelAnimationFrame","_requestAnimationFrame","err","redraw","isLost","_beginTimers","_setupFrame","_updateAnimationProps","_renderFrame","_clearNeedsRedraw","_resolveNextFrame","_nextFramePromise","_endTimers","animationProps","attachTimeline","timeline","detachTimeline","waitForRender","Promise","resolve","toDataURL","canvas","HTMLCanvasElement","_startEventHandling","_initializeAnimationProps","_resizeCanvasDrawingBuffer","_resizeViewport","display","animationLoop","_animationFrameId","_animationFrame","canvasContext","width","height","aspect","time","startTime","Date","now","engineTime","tick","tock","_mousePosition","_getSizeAndAspect","update","Math","floor","getTime","_createInfoDiv","wrapperDiv","document","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","getPixelSize","clientHeight","clientWidth","gl","viewport","drawingBufferWidth","drawingBufferHeight","resize","timeEnd","timeStart","addEventListener","event","MouseEvent","offsetX","offsetY"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n\nimport {luma, Device} from '@luma.gl/api';\nimport {requestAnimationFrame, cancelAnimationFrame} from '@luma.gl/api';\nimport {Timeline} from '../animation/timeline';\nimport {AnimationProps} from './animation-props';\nimport {Stats, Stat} from '@probe.gl/stats';\n\nlet statIdCounter = 0;\n\n/** AnimationLoop properties */\nexport type AnimationLoopProps = {\n device: Device | Promise<Device>;\n\n onAddHTML?: (div: HTMLDivElement) => string; // innerHTML\n onInitialize?: (animationProps: AnimationProps) => Promise<unknown>;\n onRender?: (animationProps: AnimationProps) => unknown;\n onFinalize?: (animationProps: AnimationProps) => void;\n onError?: (reason: Error) => void;\n\n stats?: Stats;\n\n // view parameters - TODO move to CanvasContext?\n autoResizeViewport?: boolean;\n autoResizeDrawingBuffer?: boolean;\n useDevicePixels?: number | boolean;\n};\n\nexport type MutableAnimationLoopProps = {\n // view parameters\n autoResizeViewport?: boolean;\n autoResizeDrawingBuffer?: boolean;\n useDevicePixels?: number | boolean;\n}\n\n\nconst DEFAULT_ANIMATION_LOOP_PROPS: Required<AnimationLoopProps> = {\n device: null!,\n\n onAddHTML: () => '',\n onInitialize: async () => { return null; },\n onRender: () => {},\n onFinalize: () => {},\n onError: (error) => console.error(error), // eslint-disable-line no-console\n\n stats: luma.stats.get(`animation-loop-${statIdCounter++}`),\n\n // view parameters\n useDevicePixels: true,\n autoResizeViewport: false,\n autoResizeDrawingBuffer: false,\n};\n\n/** Convenient animation loop */\nexport class AnimationLoop {\n device: Device | null = null;\n canvas: HTMLCanvasElement | OffscreenCanvas | null = null;\n\n props: Required<AnimationLoopProps>;\n animationProps: AnimationProps | null = null;\n timeline: Timeline | null = null;\n stats: Stats;\n cpuTime: Stat;\n gpuTime: Stat;\n frameRate: Stat;\n\n display: any;\n\n needsRedraw: string | false = 'initialized';\n\n _initialized: boolean = false;\n _running: boolean = false;\n _animationFrameId: any = null;\n _nextFramePromise: Promise<AnimationLoop> | null = null;\n _resolveNextFrame: ((animationLoop: AnimationLoop) => void) | null = null;\n _cpuStartTime: number = 0;\n\n // _gpuTimeQuery: Query | null = null;\n\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props: AnimationLoopProps) {\n this.props = {...DEFAULT_ANIMATION_LOOP_PROPS, ...props};\n props = this.props;\n\n if (!props.device) {\n throw new Error('No device provided');\n }\n\n let {useDevicePixels = true} = this.props;\n\n // state\n this.stats = props.stats || new Stats({id: 'animation-loop-stats'});\n this.cpuTime = this.stats.get('CPU Time');\n this.gpuTime = this.stats.get('GPU Time');\n this.frameRate = this.stats.get('Frame Rate');\n\n this.setProps({\n autoResizeViewport: props.autoResizeViewport,\n autoResizeDrawingBuffer: props.autoResizeDrawingBuffer,\n useDevicePixels\n });\n\n // Bind methods\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n destroy(): void {\n this.stop();\n this._setDisplay(null);\n }\n\n /** @deprecated Use .destroy() */\n delete(): void {\n this.destroy();\n }\n\n setNeedsRedraw(reason: string): this {\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n // TODO - move to CanvasContext\n setProps(props: MutableAnimationLoopProps): this {\n if ('autoResizeViewport' in props) {\n this.props.autoResizeViewport = props.autoResizeViewport || false;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.props.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer || false;\n }\n if ('useDevicePixels' in props) {\n this.props.useDevicePixels = props.useDevicePixels || false;\n }\n return this;\n }\n\n /** Starts a render loop if not already running */\n async start() {\n if (this._running) {\n return this;\n }\n this._running = true;\n\n try {\n // check that we haven't been stopped\n if (!this._running) {\n return null;\n }\n\n let appContext;\n if (!this._initialized) {\n this._initialized = true;\n // Create the WebGL context\n await this._initDevice();\n this._initialize();\n\n // Note: onIntialize can return a promise (e.g. in case app needs to load resources)\n await this.props.onInitialize(this._getAnimationProps());\n }\n\n // check that we haven't been stopped\n if (!this._running) {\n return null;\n }\n\n // Start the loop\n if (appContext !== false) {\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame();\n this._requestAnimationFrame();\n }\n\n return this;\n } catch (err: unknown) {\n const error = err instanceof Error ? err : new Error('Unknown error')\n this.props.onError(error);\n // this._running = false; // TODO\n throw error;\n }\n }\n\n /** Explicitly draw a frame */\n redraw(): this {\n if (this.device?.isLost) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateAnimationProps();\n\n this._renderFrame(this._getAnimationProps());\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n if (this._resolveNextFrame) {\n this._resolveNextFrame(this);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n }\n\n this._endTimers();\n\n return this;\n }\n\n // Stops a render loop if already running, finalizing\n stop() {\n // console.debug(`Stopping ${this.constructor.name}`);\n if (this._running) {\n // call callback\n // If stop is called immediately, we can end up in a state where props haven't been initialized...\n if (this.animationProps) {\n this.props.onFinalize(this.animationProps);\n }\n\n this._cancelAnimationFrame();\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline: Timeline): Timeline {\n this.timeline = timeline;\n return this.timeline;\n }\n\n detachTimeline(): void {\n this.timeline = null;\n }\n\n waitForRender(): Promise<AnimationLoop> {\n this.setNeedsRedraw('waitForRender');\n\n if (!this._nextFramePromise) {\n this._nextFramePromise = new Promise((resolve) => {\n this._resolveNextFrame = resolve;\n });\n }\n return this._nextFramePromise;\n }\n\n async toDataURL(): Promise<string> {\n this.setNeedsRedraw('toDataURL');\n await this.waitForRender();\n if (this.canvas instanceof HTMLCanvasElement) {\n return this.canvas.toDataURL();\n }\n throw new Error('OffscreenCanvas');\n }\n\n // PRIVATE METHODS\n\n _initialize() {\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeAnimationProps();\n this._updateAnimationProps();\n\n // Default viewport setup, in case onInitialize wants to render\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n\n // this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n }\n\n _setDisplay(display: any) {\n if (this.display) {\n this.display.delete();\n this.display.animationLoop = null;\n }\n\n // store animation loop on the display\n if (display) {\n display.animationLoop = this;\n }\n\n this.display = display;\n }\n\n _requestAnimationFrame() {\n if (!this._running) {\n return;\n }\n\n // VR display has a separate animation frame to sync with headset\n // TODO WebVR API discontinued, replaced by WebXR: https://immersive-web.github.io/webxr/\n // See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/requestAnimationFrame\n // if (this.display && this.display.requestAnimationFrame) {\n // this._animationFrameId = this.display.requestAnimationFrame(this._animationFrame.bind(this));\n // }\n this._animationFrameId = requestAnimationFrame(this._animationFrame.bind(this));\n }\n\n _cancelAnimationFrame() {\n if (this._animationFrameId !== null) {\n return;\n }\n\n // VR display has a separate animation frame to sync with headset\n // TODO WebVR API discontinued, replaced by WebXR: https://immersive-web.github.io/webxr/\n // See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/requestAnimationFrame\n // if (this.display && this.display.cancelAnimationFrame) {\n // this.display.cancelAnimationFrame(this._animationFrameId);\n // }\n cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n }\n\n _animationFrame() {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._requestAnimationFrame();\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(animationProps: AnimationProps) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(animationProps);\n return;\n }\n\n // call callback\n this.props.onRender(this._getAnimationProps());\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = false;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeAnimationProps() {\n if (!this.device) {\n throw new Error('loop');\n }\n this.animationProps = {\n animationLoop: this,\n device: this.device,\n canvas: this.device?.canvasContext?.canvas!,\n timeline: this.timeline,\n\n // Initial values\n useDevicePixels: this.props.useDevicePixels,\n needsRedraw: false,\n\n // Placeholders\n width: 1,\n height: 1,\n aspect: 1,\n\n // Animation props\n time: 0,\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Experimental\n _mousePosition: null // Event props\n };\n }\n\n _getAnimationProps(): AnimationProps {\n if (!this.animationProps) {\n throw new Error('animationProps');\n }\n return this.animationProps;\n }\n\n // Update the context object that will be passed to app callbacks\n _updateAnimationProps(): void {\n if (!this.animationProps) {\n return;\n }\n\n const {width, height, aspect} = this._getSizeAndAspect();\n if (width !== this.animationProps.width || height !== this.animationProps.height) {\n this.setNeedsRedraw('drawing buffer resized');\n }\n if (aspect !== this.animationProps.aspect) {\n this.setNeedsRedraw('drawing buffer aspect changed');\n }\n\n this.animationProps.width = width;\n this.animationProps.height = height;\n this.animationProps.aspect = aspect;\n\n this.animationProps.needsRedraw = this.needsRedraw;\n\n // Update time properties\n this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n if (this.timeline) {\n this.timeline.update(this.animationProps.engineTime);\n }\n\n this.animationProps.tick = Math.floor((this.animationProps.time / 1000) * 60);\n this.animationProps.tock++;\n\n // For back compatibility\n this.animationProps.time = this.timeline\n ? this.timeline.getTime()\n : this.animationProps.engineTime;\n }\n\n /** Wait for supplied device */\n async _initDevice() {\n this.device = await this.props.device;\n if (!this.device) {\n throw new Error('No device provided');\n }\n this.canvas = this.device.canvasContext?.canvas || null;\n // this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.canvas && this.props.onAddHTML) {\n const wrapperDiv = document.createElement('div');\n document.body.appendChild(wrapperDiv);\n wrapperDiv.style.position = 'relative';\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '10px';\n div.style.bottom = '10px';\n div.style.width = '300px';\n div.style.background = 'white';\n if (this.canvas instanceof HTMLCanvasElement) {\n wrapperDiv.appendChild(this.canvas);\n }\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect(): {width: number; height: number; aspect: number} {\n if (!this.device) {\n return {width: 1, height: 1, aspect: 1};\n }\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const [width, height] = this.device?.canvasContext?.getPixelSize() || [1, 1];\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const canvas = this.device?.canvasContext?.canvas;\n\n // @ts-expect-error\n if (canvas && canvas.clientHeight) {\n // @ts-expect-error\n aspect = canvas.clientWidth / canvas.clientHeight;\n } else if (width > 0 && height > 0) {\n aspect = width / height;\n }\n\n return {width, height, aspect};\n }\n\n /** Default viewport setup */\n _resizeViewport() {\n // @ts-expect-error Expose on canvasContext\n if (this.props.autoResizeViewport && this.device.gl) {\n // @ts-expect-error Expose canvasContext\n this.device.gl.viewport(0, 0, this.device.gl.drawingBufferWidth, this.device.gl.drawingBufferHeight);\n }\n }\n\n /**\n * Resize the render buffer of the canvas to match canvas client size\n * Optionally multiplying with devicePixel ratio\n */\n _resizeCanvasDrawingBuffer() {\n if (this.props.autoResizeDrawingBuffer) {\n this.device?.canvasContext?.resize({useDevicePixels: this.props.useDevicePixels});\n }\n }\n\n _beginTimers() {\n this.frameRate.timeEnd();\n this.frameRate.timeStart();\n\n // Check if timer for last frame has completed.\n // GPU timer results are never available in the same\n // frame they are captured.\n // if (\n // this._gpuTimeQuery &&\n // this._gpuTimeQuery.isResultAvailable() &&\n // !this._gpuTimeQuery.isTimerDisjoint()\n // ) {\n // this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n // }\n\n // if (this._gpuTimeQuery) {\n // // GPU time query start\n // this._gpuTimeQuery.beginTimeElapsedQuery();\n // }\n\n // this.cpuTime.timeStart();\n }\n\n _endTimers() {\n this.cpuTime.timeEnd();\n\n // if (this._gpuTimeQuery) {\n // // GPU time query end. Results will be available on next frame.\n // this._gpuTimeQuery.end();\n // }\n }\n\n // Event handling\n\n _startEventHandling() {\n if (this.canvas) {\n this.canvas.addEventListener('mousemove', this._onMousemove);\n this.canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(event: Event) {\n if (event instanceof MouseEvent) {\n this._getAnimationProps()._mousePosition = [event.offsetX, event.offsetY];\n }\n }\n\n _onMouseleave(event: Event) {\n this._getAnimationProps()._mousePosition = null;\n }\n}\n"],"file":"animation-loop.js"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation-props.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-props.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAEpD,+CAA+C;AAC/C,oBAAY,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAE7B,oCAAoC;IACpC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC5C,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAG1B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC1C,CAAC"}
File without changes
@@ -0,0 +1,6 @@
1
+ import { AnimationLoopTemplate } from './render-loop';
2
+ import { AnimationLoop, AnimationLoopProps } from './animation-loop';
3
+ export declare type MakeAnimationLoopProps = Omit<AnimationLoopProps, 'onCreateDevice' | 'onInitialize' | 'onRedraw' | 'onFinalize'>;
4
+ /** Instantiates and runs the render loop */
5
+ export declare function makeAnimationLoop(AnimationLoopTemplateCtor: typeof AnimationLoopTemplate, props?: MakeAnimationLoopProps): AnimationLoop;
6
+ //# sourceMappingURL=make-animation-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-animation-loop.d.ts","sourceRoot":"","sources":["../../src/animation-loop/make-animation-loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAA;AACnD,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAA;AAGlE,oBAAY,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC;AAE7H,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,yBAAyB,EAAE,OAAO,qBAAqB,EAAE,KAAK,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAiCxI"}
@@ -0,0 +1,34 @@
1
+ import { luma } from '@luma.gl/api';
2
+ import { AnimationLoop } from './animation-loop';
3
+ export function makeAnimationLoop(AnimationLoopTemplateCtor, props) {
4
+ let renderLoop = null;
5
+ const device = (props === null || props === void 0 ? void 0 : props.device) || luma.createDevice();
6
+ const animationLoop = new AnimationLoop({ ...props,
7
+ device,
8
+
9
+ async onInitialize(animationProps) {
10
+ var _renderLoop;
11
+
12
+ renderLoop = new AnimationLoopTemplateCtor(animationProps);
13
+ return await ((_renderLoop = renderLoop) === null || _renderLoop === void 0 ? void 0 : _renderLoop.onInitialize(animationProps));
14
+ },
15
+
16
+ onRender: animationProps => {
17
+ var _renderLoop2;
18
+
19
+ return (_renderLoop2 = renderLoop) === null || _renderLoop2 === void 0 ? void 0 : _renderLoop2.onRender(animationProps);
20
+ },
21
+ onFinalize: animationProps => {
22
+ var _renderLoop3;
23
+
24
+ return (_renderLoop3 = renderLoop) === null || _renderLoop3 === void 0 ? void 0 : _renderLoop3.onFinalize(animationProps);
25
+ }
26
+ });
27
+
28
+ animationLoop.getInfo = () => {
29
+ return this.AnimationLoopTemplateCtor.info;
30
+ };
31
+
32
+ return animationLoop;
33
+ }
34
+ //# sourceMappingURL=make-animation-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animation-loop/make-animation-loop.ts"],"names":["luma","AnimationLoop","makeAnimationLoop","AnimationLoopTemplateCtor","props","renderLoop","device","createDevice","animationLoop","onInitialize","animationProps","onRender","onFinalize","getInfo","info"],"mappings":"AACA,SAAQA,IAAR,QAAmB,cAAnB;AAEA,SAAQC,aAAR,QAAgD,kBAAhD;AAMA,OAAO,SAASC,iBAAT,CAA2BC,yBAA3B,EAAoFC,KAApF,EAAmI;AACxI,MAAIC,UAAwC,GAAG,IAA/C;AAEA,QAAMC,MAAM,GAAG,CAAAF,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEE,MAAP,KAAiBN,IAAI,CAACO,YAAL,EAAhC;AAGA,QAAMC,aAAa,GAAG,IAAIP,aAAJ,CAAkB,EACtC,GAAIG,KADkC;AAGtCE,IAAAA,MAHsC;;AAKtC,UAAMG,YAAN,CAAmBC,cAAnB,EAAqE;AAAA;;AAEnEL,MAAAA,UAAU,GAAG,IAAIF,yBAAJ,CAA8BO,cAA9B,CAAb;AAEA,aAAO,sBAAML,UAAN,gDAAM,YAAYI,YAAZ,CAAyBC,cAAzB,CAAN,CAAP;AACD,KAVqC;;AAYtCC,IAAAA,QAAQ,EAAGD,cAAD;AAAA;;AAAA,6BAAoCL,UAApC,iDAAoC,aAAYM,QAAZ,CAAqBD,cAArB,CAApC;AAAA,KAZ4B;AActCE,IAAAA,UAAU,EAAGF,cAAD;AAAA;;AAAA,6BAAoCL,UAApC,iDAAoC,aAAYO,UAAZ,CAAuBF,cAAvB,CAApC;AAAA;AAd0B,GAAlB,CAAtB;;AAkBAF,EAAAA,aAAa,CAACK,OAAd,GAAwB,MAAM;AAE5B,WAAO,KAAKV,yBAAL,CAA+BW,IAAtC;AACD,GAHD;;AAQA,SAAON,aAAP;AACD","sourcesContent":["// luma.gl, MIT license\nimport {luma} from '@luma.gl/api';\nimport {AnimationLoopTemplate} from './render-loop'\nimport {AnimationLoop, AnimationLoopProps} from './animation-loop'\nimport type {AnimationProps} from './animation-props';\n\nexport type MakeAnimationLoopProps = Omit<AnimationLoopProps, 'onCreateDevice' | 'onInitialize' | 'onRedraw' | 'onFinalize'>;\n\n/** Instantiates and runs the render loop */\nexport function makeAnimationLoop(AnimationLoopTemplateCtor: typeof AnimationLoopTemplate, props?: MakeAnimationLoopProps): AnimationLoop {\n let renderLoop: AnimationLoopTemplate | null = null;\n\n const device = props?.device || luma.createDevice();\n\n // Create an animation loop;\n const animationLoop = new AnimationLoop({\n ... props,\n\n device,\n\n async onInitialize(animationProps: AnimationProps): Promise<unknown> {\n // @ts-expect-error abstract to prevent instantiation\n renderLoop = new AnimationLoopTemplateCtor(animationProps);\n // Any async loading can be handled here\n return await renderLoop?.onInitialize(animationProps);\n },\n\n onRender: (animationProps: AnimationProps) => renderLoop?.onRender(animationProps),\n \n onFinalize: (animationProps: AnimationProps) => renderLoop?.onFinalize(animationProps)\n });\n\n // @ts-expect-error Hack: adds info for the website to find\n animationLoop.getInfo = () => {\n // @ts-ignore\n return this.AnimationLoopTemplateCtor.info;\n }\n\n // Start the loop automatically\n // animationLoop.start();\n\n return animationLoop;\n}\n"],"file":"make-animation-loop.js"}
@@ -0,0 +1,23 @@
1
+ import type { AnimationProps } from './animation-props';
2
+ /**
3
+ * Minimal class that represents a "componentized" rendering life cycle
4
+ * (resource construction, repeated rendering, resource destruction)
5
+ *
6
+ * @note A motivation for this class compared to the raw animation loop is
7
+ * that it simplifies TypeScript code by allowing resources to be typed unconditionally
8
+ * since they are allocated in the constructor rather than in onInitialized
9
+ *
10
+ * @note Introduced in luma.gl v9
11
+ *
12
+ * @example AnimationLoopTemplate is intended to be subclassed,
13
+ * but the subclass should not be instantiated directly. Instead the subclass
14
+ * (i.e. the constructor of the subclass) should be used
15
+ * as an argument to create an AnimationLoop.
16
+ */
17
+ export declare abstract class AnimationLoopTemplate {
18
+ constructor(animationProps?: AnimationProps);
19
+ onInitialize(animationProps: AnimationProps): Promise<unknown>;
20
+ abstract onRender(animationProps: AnimationProps): unknown;
21
+ abstract onFinalize(animationProps: AnimationProps): void;
22
+ }
23
+ //# sourceMappingURL=render-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-loop.d.ts","sourceRoot":"","sources":["../../src/animation-loop/render-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,qBAAqB;gBAC7B,cAAc,CAAC,EAAE,cAAc;IACrC,YAAY,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IACpE,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO;IAC1D,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;CAC1D"}
@@ -0,0 +1,9 @@
1
+ export class AnimationLoopTemplate {
2
+ constructor(animationProps) {}
3
+
4
+ async onInitialize(animationProps) {
5
+ return null;
6
+ }
7
+
8
+ }
9
+ //# sourceMappingURL=render-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animation-loop/render-loop.ts"],"names":["AnimationLoopTemplate","constructor","animationProps","onInitialize"],"mappings":"AAiBA,OAAO,MAAeA,qBAAf,CAAqC;AAC1CC,EAAAA,WAAW,CAACC,cAAD,EAAkC,CAAE;;AAC7B,QAAZC,YAAY,CAACD,cAAD,EAAmD;AAAE,WAAO,IAAP;AAAc;;AAF3C","sourcesContent":["import type {AnimationProps} from './animation-props';\n\n/**\n * Minimal class that represents a \"componentized\" rendering life cycle\n * (resource construction, repeated rendering, resource destruction)\n * \n * @note A motivation for this class compared to the raw animation loop is \n * that it simplifies TypeScript code by allowing resources to be typed unconditionally \n * since they are allocated in the constructor rather than in onInitialized\n * \n * @note Introduced in luma.gl v9\n * \n * @example AnimationLoopTemplate is intended to be subclassed, \n * but the subclass should not be instantiated directly. Instead the subclass\n * (i.e. the constructor of the subclass) should be used \n * as an argument to create an AnimationLoop.\n */\nexport abstract class AnimationLoopTemplate {\n constructor(animationProps?: AnimationProps) {}\n async onInitialize(animationProps: AnimationProps): Promise<unknown> { return null; }\n abstract onRender(animationProps: AnimationProps): unknown;\n abstract onFinalize(animationProps: AnimationProps): void;\n}\n"],"file":"render-loop.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"cube-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cube-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,MAAC;CACb,CAAC;AAEF,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,KAAK,GAAE,iBAAsB;CAc1C;AAqDD,eAAO,MAAM,0BAA0B,cA0CrC,CAAC;AAIH,eAAO,MAAM,2BAA2B,cA0CtC,CAAC;AAIH,eAAO,MAAM,uBAAuB,cA0ClC,CAAC"}
1
+ {"version":3,"file":"cube-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cube-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,KAAK,GAAE,iBAAsB;CAc1C;AAqDD,eAAO,MAAM,0BAA0B,cA0CrC,CAAC;AAIH,eAAO,MAAM,2BAA2B,cA0CtC,CAAC;AAIH,eAAO,MAAM,uBAAuB,cA0ClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/geometries/cube-geometry.ts"],"names":["uid","Geometry","CubeGeometry","constructor","props","id","indices","size","value","CUBE_INDICES","attributes","ATTRIBUTES","undefined","NON_INDEXED_ATTRIBUTES","Uint16Array","CUBE_POSITIONS","Float32Array","CUBE_NORMALS","CUBE_TEX_COORDS","CUBE_NON_INDEXED_POSITIONS","CUBE_NON_INDEXED_TEX_COORDS","CUBE_NON_INDEXED_COLORS","POSITION","NORMAL","TEXCOORD_0","COLOR_0"],"mappings":"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","sourcesContent":["import {uid} from '@luma.gl/api';\nimport Geometry from '../geometry/geometry';\n// import type {GeometryType} from '../geometry/geometry-type';\n\nexport type CubeGeometryProps = {\n id?: string;\n indices?: boolean;\n attributes?;\n};\n\nexport class CubeGeometry extends Geometry {\n constructor(props: CubeGeometryProps = {}) {\n const {id = uid('cube-geometry'), indices = true} = props;\n super(indices ? {\n ...props,\n id,\n indices: {size: 1, value: CUBE_INDICES},\n attributes: {...ATTRIBUTES, ...props.attributes}\n } : {\n ...props,\n id,\n indices: undefined,\n attributes: {...NON_INDEXED_ATTRIBUTES, ...props.attributes}\n });\n }\n}\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\n// float4 position\n// prettier-ignore\nexport const CUBE_NON_INDEXED_POSITIONS = new Float32Array([\n 1, -1, 1, 1,\n -1, -1, 1, 1,\n -1, -1, -1, 1,\n 1, -1, -1, 1,\n 1, -1, 1, 1,\n -1, -1, -1, 1,\n\n 1, 1, 1, 1,\n 1, -1, 1, 1,\n 1, -1, -1, 1,\n 1, 1, -1, 1,\n 1, 1, 1, 1,\n 1, -1, -1, 1,\n\n -1, 1, 1, 1,\n 1, 1, 1, 1,\n 1, 1, -1, 1,\n -1, 1, -1, 1,\n -1, 1, 1, 1,\n 1, 1, -1, 1,\n\n -1, -1, 1, 1,\n -1, 1, 1, 1,\n -1, 1, -1, 1,\n -1, -1, -1, 1,\n -1, -1, 1, 1,\n -1, 1, -1, 1,\n\n 1, 1, 1, 1,\n -1, 1, 1, 1,\n -1, -1, 1, 1,\n -1, -1, 1, 1,\n 1, -1, 1, 1,\n 1, 1, 1, 1,\n\n 1, -1, -1, 1,\n -1, -1, -1, 1,\n -1, 1, -1, 1,\n 1, 1, -1, 1,\n 1, -1, -1, 1,\n -1, 1, -1, 1,\n]);\n\n// float2 uv,\n// prettier-ignore\nexport const CUBE_NON_INDEXED_TEX_COORDS = new Float32Array([\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 0, 0,\n 1, 0,\n 1, 1,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n]);\n\n// float4 color\n// prettier-ignore\nexport const CUBE_NON_INDEXED_COLORS = new Float32Array([\n 1, 0, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 0, 1,\n 1, 0, 0, 1,\n 1, 0, 1, 1,\n 0, 0, 0, 1,\n\n 1, 1, 1, 1,\n 1, 0, 1, 1,\n 1, 0, 0, 1,\n 1, 1, 0, 1,\n 1, 1, 1, 1,\n 1, 0, 0, 1,\n\n 0, 1, 1, 1,\n 1, 1, 1, 1,\n 1, 1, 0, 1,\n 0, 1, 0, 1,\n 0, 1, 1, 1,\n 1, 1, 0, 1,\n\n 0, 0, 1, 1,\n 0, 1, 1, 1,\n 0, 1, 0, 1,\n 0, 0, 0, 1,\n 0, 0, 1, 1,\n 0, 1, 0, 1,\n\n 1, 1, 1, 1,\n 0, 1, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 1, 1,\n 1, 0, 1, 1,\n 1, 1, 1, 1,\n\n 1, 0, 0, 1,\n 0, 0, 0, 1,\n 0, 1, 0, 1,\n 1, 1, 0, 1,\n 1, 0, 0, 1,\n 0, 1, 0, 1,\n]);\n\nconst ATTRIBUTES = {\n POSITION: {size: 3, value: CUBE_POSITIONS},\n NORMAL: {size: 3, value: CUBE_NORMALS},\n TEXCOORD_0: {size: 2, value: CUBE_TEX_COORDS}\n};\n\nconst NON_INDEXED_ATTRIBUTES = {\n POSITION: {size: 4, value: CUBE_NON_INDEXED_POSITIONS},\n // NORMAL: {size: 3, value: CUBE_NON_INDEXED_NORMALS},\n TEXCOORD_0: {size: 2, value: CUBE_NON_INDEXED_TEX_COORDS},\n COLOR_0: {size: 3, value: CUBE_NON_INDEXED_COLORS}\n};\n"],"file":"cube-geometry.js"}
1
+ {"version":3,"sources":["../../src/geometries/cube-geometry.ts"],"names":["uid","Geometry","CubeGeometry","constructor","props","id","indices","size","value","CUBE_INDICES","attributes","ATTRIBUTES","undefined","NON_INDEXED_ATTRIBUTES","Uint16Array","CUBE_POSITIONS","Float32Array","CUBE_NORMALS","CUBE_TEX_COORDS","CUBE_NON_INDEXED_POSITIONS","CUBE_NON_INDEXED_TEX_COORDS","CUBE_NON_INDEXED_COLORS","POSITION","NORMAL","TEXCOORD_0","COLOR_0"],"mappings":"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","sourcesContent":["import {uid} from '@luma.gl/api';\nimport Geometry from '../geometry/geometry';\n// import type {GeometryType} from '../geometry/geometry-type';\n\nexport type CubeGeometryProps = {\n id?: string;\n indices?: boolean;\n attributes?: any;\n};\n\nexport class CubeGeometry extends Geometry {\n constructor(props: CubeGeometryProps = {}) {\n const {id = uid('cube-geometry'), indices = true} = props;\n super(indices ? {\n ...props,\n id,\n indices: {size: 1, value: CUBE_INDICES},\n attributes: {...ATTRIBUTES, ...props.attributes}\n } : {\n ...props,\n id,\n indices: undefined,\n attributes: {...NON_INDEXED_ATTRIBUTES, ...props.attributes}\n });\n }\n}\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\n// float4 position\n// prettier-ignore\nexport const CUBE_NON_INDEXED_POSITIONS = new Float32Array([\n 1, -1, 1, 1,\n -1, -1, 1, 1,\n -1, -1, -1, 1,\n 1, -1, -1, 1,\n 1, -1, 1, 1,\n -1, -1, -1, 1,\n\n 1, 1, 1, 1,\n 1, -1, 1, 1,\n 1, -1, -1, 1,\n 1, 1, -1, 1,\n 1, 1, 1, 1,\n 1, -1, -1, 1,\n\n -1, 1, 1, 1,\n 1, 1, 1, 1,\n 1, 1, -1, 1,\n -1, 1, -1, 1,\n -1, 1, 1, 1,\n 1, 1, -1, 1,\n\n -1, -1, 1, 1,\n -1, 1, 1, 1,\n -1, 1, -1, 1,\n -1, -1, -1, 1,\n -1, -1, 1, 1,\n -1, 1, -1, 1,\n\n 1, 1, 1, 1,\n -1, 1, 1, 1,\n -1, -1, 1, 1,\n -1, -1, 1, 1,\n 1, -1, 1, 1,\n 1, 1, 1, 1,\n\n 1, -1, -1, 1,\n -1, -1, -1, 1,\n -1, 1, -1, 1,\n 1, 1, -1, 1,\n 1, -1, -1, 1,\n -1, 1, -1, 1,\n]);\n\n// float2 uv,\n// prettier-ignore\nexport const CUBE_NON_INDEXED_TEX_COORDS = new Float32Array([\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 0, 0,\n 1, 0,\n 1, 1,\n\n 1, 1,\n 0, 1,\n 0, 0,\n 1, 0,\n 1, 1,\n 0, 0,\n]);\n\n// float4 color\n// prettier-ignore\nexport const CUBE_NON_INDEXED_COLORS = new Float32Array([\n 1, 0, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 0, 1,\n 1, 0, 0, 1,\n 1, 0, 1, 1,\n 0, 0, 0, 1,\n\n 1, 1, 1, 1,\n 1, 0, 1, 1,\n 1, 0, 0, 1,\n 1, 1, 0, 1,\n 1, 1, 1, 1,\n 1, 0, 0, 1,\n\n 0, 1, 1, 1,\n 1, 1, 1, 1,\n 1, 1, 0, 1,\n 0, 1, 0, 1,\n 0, 1, 1, 1,\n 1, 1, 0, 1,\n\n 0, 0, 1, 1,\n 0, 1, 1, 1,\n 0, 1, 0, 1,\n 0, 0, 0, 1,\n 0, 0, 1, 1,\n 0, 1, 0, 1,\n\n 1, 1, 1, 1,\n 0, 1, 1, 1,\n 0, 0, 1, 1,\n 0, 0, 1, 1,\n 1, 0, 1, 1,\n 1, 1, 1, 1,\n\n 1, 0, 0, 1,\n 0, 0, 0, 1,\n 0, 1, 0, 1,\n 1, 1, 0, 1,\n 1, 0, 0, 1,\n 0, 1, 0, 1,\n]);\n\nconst ATTRIBUTES = {\n POSITION: {size: 3, value: CUBE_POSITIONS},\n NORMAL: {size: 3, value: CUBE_NORMALS},\n TEXCOORD_0: {size: 2, value: CUBE_TEX_COORDS}\n};\n\nconst NON_INDEXED_ATTRIBUTES = {\n POSITION: {size: 4, value: CUBE_NON_INDEXED_POSITIONS},\n // NORMAL: {size: 3, value: CUBE_NON_INDEXED_NORMALS},\n TEXCOORD_0: {size: 2, value: CUBE_NON_INDEXED_TEX_COORDS},\n COLOR_0: {size: 3, value: CUBE_NON_INDEXED_COLORS}\n};\n"],"file":"cube-geometry.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"cylinder-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cylinder-geometry.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,oBAAY,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,MAAA;CACZ,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,qBAAqB;gBAC7C,KAAK,GAAE,qBAA0B;CAS9C"}
1
+ {"version":3,"file":"cylinder-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/cylinder-geometry.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,oBAAY,qBAAqB,GAAG;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,qBAAqB;gBAC7C,KAAK,GAAE,qBAA0B;CAS9C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/geometries/cylinder-geometry.ts"],"names":["uid","TruncatedConeGeometry","CylinderGeometry","constructor","props","id","radius","bottomRadius","topRadius"],"mappings":"AAAA,SAAQA,GAAR,QAAkB,cAAlB;AACA,SAAQC,qBAAR,QAAoC,2BAApC;AAQA,OAAO,MAAMC,gBAAN,SAA+BD,qBAA/B,CAAqD;AAC1DE,EAAAA,WAAW,CAACC,KAA4B,GAAG,EAAhC,EAAoC;AAC7C,UAAM;AAACC,MAAAA,EAAE,GAAGL,GAAG,CAAC,mBAAD,CAAT;AAAgCM,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;;AATyD","sourcesContent":["import {uid} from '@luma.gl/api';\nimport {TruncatedConeGeometry} from './truncated-cone-geometry';\n\nexport type CylinderGeometryProps = {\n id?: string;\n radius?: number;\n attributes?\n};\n\nexport class CylinderGeometry extends TruncatedConeGeometry {\n constructor(props: CylinderGeometryProps = {}) {\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.ts"],"names":["uid","TruncatedConeGeometry","CylinderGeometry","constructor","props","id","radius","bottomRadius","topRadius"],"mappings":"AAAA,SAAQA,GAAR,QAAkB,cAAlB;AACA,SAAQC,qBAAR,QAAoC,2BAApC;AAQA,OAAO,MAAMC,gBAAN,SAA+BD,qBAA/B,CAAqD;AAC1DE,EAAAA,WAAW,CAACC,KAA4B,GAAG,EAAhC,EAAoC;AAC7C,UAAM;AAACC,MAAAA,EAAE,GAAGL,GAAG,CAAC,mBAAD,CAAT;AAAgCM,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;;AATyD","sourcesContent":["import {uid} from '@luma.gl/api';\nimport {TruncatedConeGeometry} from './truncated-cone-geometry';\n\nexport type CylinderGeometryProps = {\n id?: string;\n radius?: number;\n attributes?: any;\n};\n\nexport class CylinderGeometry extends TruncatedConeGeometry {\n constructor(props: CylinderGeometryProps = {}) {\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 +1 @@
1
- {"version":3,"file":"ico-sphere-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/ico-sphere-geometry.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAO5C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,MAAA;CACZ,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,KAAK,GAAE,sBAA2B;CAU/C"}
1
+ {"version":3,"file":"ico-sphere-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/ico-sphere-geometry.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAO5C,oBAAY,sBAAsB,GAAG;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAA;CACjB,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,KAAK,GAAE,sBAA2B;CAU/C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/geometries/ico-sphere-geometry.ts"],"names":["uid","Vector3","Geometry","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 {uid} from '@luma.gl/api';\nimport {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\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 type IcoSphereGeometryProps = {\n id?: string;\n radius?: number;\n iterations?: number;\n attributes?\n};\n\nexport class IcoSphereGeometry extends Geometry {\n constructor(props: IcoSphereGeometryProps = {}) {\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: IcoSphereGeometryProps) {\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: number[] = [];\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.ts"],"names":["uid","Vector3","Geometry","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 {uid} from '@luma.gl/api';\nimport {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\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 type IcoSphereGeometryProps = {\n id?: string;\n radius?: number;\n iterations?: number;\n attributes?: any\n};\n\nexport class IcoSphereGeometry extends Geometry {\n constructor(props: IcoSphereGeometryProps = {}) {\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: IcoSphereGeometryProps) {\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: Record<string, number> = {};\n\n return (i1: number, i2: number) => {\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: number[] = [];\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 +1 @@
1
- {"version":3,"file":"plane-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/plane-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,oBAAY,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,MAAA;CACZ,CAAC;AAKF,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,KAAK,GAAE,kBAAuB;CAW3C"}
1
+ {"version":3,"file":"plane-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/plane-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,oBAAY,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,CAAA;CACjB,CAAC;AAKF,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,KAAK,GAAE,kBAAuB;CAW3C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/geometries/plane-geometry.ts"],"names":["uid","Geometry","unpackIndexedGeometry","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 {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?\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) {\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.ts"],"names":["uid","Geometry","unpackIndexedGeometry","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,SAAQA,GAAR,QAAkB,cAAlB;AACA,OAAOC,QAAP,MAAqB,sBAArB;AACA,SAAQC,qBAAR,QAAoC,4BAApC;AAWA,OAAO,MAAMC,aAAN,SAA4BF,QAA5B,CAAqC;AAC1CG,EAAAA,WAAW,CAACC,KAAyB,GAAG,EAA7B,EAAiC;AAC1C,UAAM;AAACC,MAAAA,EAAE,GAAGN,GAAG,CAAC,gBAAD;AAAT,QAA+BK,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;;AAXyC;;AAe5C,SAASC,cAAT,CAAwBJ,KAAxB,EAAoC;AAClC,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,WAAIS,MAAM,CAAC,CAAD,CAAV,SAAL,IAA4B,CAAxC;AACA,QAAMG,KAAK,GAAGZ,KAAK,WAAIS,MAAM,CAAC,CAAD,CAAV,SAAL,IAA4B,CAA1C;AAEA,QAAMI,aAAa,GAAGb,KAAK,YAAKS,MAAM,CAAC,CAAD,CAAX,EAAL,IAA0B,CAAhD;AACA,QAAMK,aAAa,GAAGd,KAAK,YAAKS,MAAM,CAAC,CAAD,CAAX,EAAL,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,GAAGX,qBAAqB,CAACiC,QAAD,CAAxB,GAAqCA,QAAlD;AACD","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"],"file":"plane-geometry.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"sphere-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/sphere-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,oBAAY,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,MAAA;CACZ,CAAC;AAKF,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,KAAK,GAAE,mBAAwB;CAU5C"}
1
+ {"version":3,"file":"sphere-geometry.d.ts","sourceRoot":"","sources":["../../src/geometries/sphere-geometry.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,oBAAY,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,CAAA;CACjB,CAAC;AAKF,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,KAAK,GAAE,mBAAwB;CAU5C"}