@luma.gl/engine 9.0.0-alpha.23 → 9.0.0-alpha.25

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 (76) hide show
  1. package/dist/animation/key-frames.d.ts +1 -1
  2. package/dist/animation/key-frames.d.ts.map +1 -1
  3. package/dist/animation/timeline.d.ts +4 -4
  4. package/dist/animation/timeline.d.ts.map +1 -1
  5. package/dist/animation/timeline.js.map +1 -1
  6. package/dist/animation-loop/animation-loop.d.ts +2 -4
  7. package/dist/animation-loop/animation-loop.d.ts.map +1 -1
  8. package/dist/animation-loop/animation-loop.js +7 -7
  9. package/dist/animation-loop/animation-loop.js.map +1 -1
  10. package/dist/animation-loop/animation-props.d.ts +1 -3
  11. package/dist/animation-loop/animation-props.d.ts.map +1 -1
  12. package/dist/animation-loop/make-animation-loop.d.ts +1 -1
  13. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -1
  14. package/dist/animation-loop/make-animation-loop.js.map +1 -1
  15. package/dist/dist.dev.js +1539 -105
  16. package/dist/geometries/cone-geometry.d.ts +1 -1
  17. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  18. package/dist/geometries/cube-geometry.d.ts +1 -1
  19. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  20. package/dist/geometries/cylinder-geometry.d.ts +1 -1
  21. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  22. package/dist/geometries/ico-sphere-geometry.d.ts +1 -1
  23. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  24. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  25. package/dist/geometries/plane-geometry.d.ts +1 -1
  26. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  27. package/dist/geometries/plane-geometry.js.map +1 -1
  28. package/dist/geometries/sphere-geometry.d.ts +1 -1
  29. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  30. package/dist/geometries/truncated-cone-geometry.d.ts +1 -1
  31. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  32. package/dist/geometry/geometry-table.d.ts +1 -1
  33. package/dist/geometry/geometry-table.d.ts.map +1 -1
  34. package/dist/geometry/geometry.d.ts +5 -5
  35. package/dist/geometry/geometry.d.ts.map +1 -1
  36. package/dist/geometry/geometry.js +1 -1
  37. package/dist/geometry/geometry.js.map +1 -1
  38. package/dist/index.cjs +305 -47
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/lib/clip-space.js +1 -1
  44. package/dist/lib/clip-space.js.map +1 -1
  45. package/dist/lib/pipeline-factory.d.ts +3 -3
  46. package/dist/lib/pipeline-factory.d.ts.map +1 -1
  47. package/dist/lib/pipeline-factory.js.map +1 -1
  48. package/dist/model/model-utils.js.map +1 -1
  49. package/dist/model/model.d.ts +1 -1
  50. package/dist/model/model.d.ts.map +1 -1
  51. package/dist/model/model.js.map +1 -1
  52. package/dist/scenegraph/group-node.d.ts +21 -0
  53. package/dist/scenegraph/group-node.d.ts.map +1 -0
  54. package/dist/scenegraph/group-node.js +95 -0
  55. package/dist/scenegraph/group-node.js.map +1 -0
  56. package/dist/scenegraph/model-node.d.ts +18 -0
  57. package/dist/scenegraph/model-node.d.ts.map +1 -0
  58. package/dist/scenegraph/model-node.js +29 -0
  59. package/dist/scenegraph/model-node.js.map +1 -0
  60. package/dist/scenegraph/scenegraph-node.d.ts +56 -0
  61. package/dist/scenegraph/scenegraph-node.d.ts.map +1 -0
  62. package/dist/scenegraph/scenegraph-node.js +142 -0
  63. package/dist/scenegraph/scenegraph-node.js.map +1 -0
  64. package/dist/transform/transform.d.ts +5 -5
  65. package/dist/transform/transform.d.ts.map +1 -1
  66. package/dist/transform/transform.js +1 -1
  67. package/dist/transform/transform.js.map +1 -1
  68. package/dist.min.js +77 -76
  69. package/package.json +6 -6
  70. package/src/geometry/geometry.ts +1 -1
  71. package/src/index.ts +5 -0
  72. package/src/lib/clip-space.ts +1 -1
  73. package/src/scenegraph/group-node.ts +103 -0
  74. package/src/scenegraph/model-node.ts +50 -0
  75. package/src/scenegraph/scenegraph-node.ts +204 -0
  76. package/src/transform/transform.ts +1 -1
@@ -1,4 +1,4 @@
1
- export declare type KeyFrame<T> = [number, T];
1
+ export type KeyFrame<T> = [number, T];
2
2
  /** Holds a list of key frames (timestamped values) */
3
3
  export declare class KeyFrames<T = number> {
4
4
  startIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"key-frames.d.ts","sourceRoot":"","sources":["../../src/animation/key-frames.ts"],"names":[],"mappings":"AACA,oBAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEtC,sDAAsD;AACtD,qBAAa,SAAS,CAAC,CAAC,GAAG,MAAM;IAC/B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,MAAM,EAAE,MAAM,CAAK;IACnB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,MAAM,EAAE,CAAC,EAAE,CAAM;IACjB,OAAO,CAAC,SAAS,CAAM;gBAEX,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;IAKpC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAa5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,YAAY,IAAI,MAAM;IAItB,UAAU,IAAI,MAAM;IAIpB,YAAY,IAAI,CAAC;IAIjB,UAAU,IAAI,CAAC;IAIf,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAiBnC"}
1
+ {"version":3,"file":"key-frames.d.ts","sourceRoot":"","sources":["../../src/animation/key-frames.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEtC,sDAAsD;AACtD,qBAAa,SAAS,CAAC,CAAC,GAAG,MAAM;IAC/B,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,MAAM,EAAE,MAAM,CAAK;IACnB,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,MAAM,EAAE,CAAC,EAAE,CAAM;IACjB,OAAO,CAAC,SAAS,CAAM;gBAEX,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;IAKpC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAa5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,YAAY,IAAI,MAAM;IAItB,UAAU,IAAI,MAAM;IAIpB,YAAY,IAAI,CAAC;IAIjB,UAAU,IAAI,CAAC;IAIf,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAiBnC"}
@@ -5,23 +5,23 @@
5
5
  * @param rate = 1
6
6
  * @param repeat = 1
7
7
  */
8
- export declare type ChannelOptions = {
8
+ export type ChannelOptions = {
9
9
  delay?: number;
10
10
  duration?: number;
11
11
  rate?: number;
12
12
  repeat?: number;
13
13
  };
14
- export declare type AnimationOptions = {
14
+ export type AnimationOptions = {
15
15
  setTime: (time: number) => void;
16
16
  };
17
- declare type Channel = {
17
+ type Channel = {
18
18
  time: number;
19
19
  delay: number;
20
20
  duration: number;
21
21
  rate: number;
22
22
  repeat: number;
23
23
  };
24
- declare type Animation = {
24
+ type Animation = {
25
25
  channel?: number;
26
26
  animation: {
27
27
  setTime: (time: number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,oBAAY,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC,CAAA;AAEA,aAAK,OAAO,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,aAAK,SAAS,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAChC,CAAA;CACF,CAAA;AAKD,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAK;IACjB,QAAQ,uBAA8B;IACtC,UAAU,yBAAgC;IAC1C,OAAO,EAAE,OAAO,CAAS;IACzB,cAAc,EAAE,MAAM,CAAM;;IAK5B,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAiBzC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASnC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAchC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe3B,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAKb,KAAK,IAAI,IAAI;IAIb,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IAa5E,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUhC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAWtD"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC,CAAA;AAEA,KAAK,OAAO,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,SAAS,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAChC,CAAA;CACF,CAAA;AAKD,qBAAa,QAAQ;IACnB,IAAI,EAAE,MAAM,CAAK;IACjB,QAAQ,uBAA8B;IACtC,UAAU,yBAAgC;IAC1C,OAAO,EAAE,OAAO,CAAS;IACzB,cAAc,EAAE,MAAM,CAAM;;IAK5B,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAiBzC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASnC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAchC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAe3B,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAKb,KAAK,IAAI,IAAI;IAIb,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM;IAa5E,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUhC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAWtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","names":["channelHandles","animationHandles","Timeline","constructor","_defineProperty","Map","addChannel","props","delay","duration","Number","POSITIVE_INFINITY","rate","repeat","handle","channel","time","_setChannelTime","channels","set","removeChannel","delete","animationHandle","animation","animations","detachAnimation","isFinished","get","undefined","getTime","setTime","Math","max","values","animationData","play","playing","pause","lastEngineTime","reset","attachAnimation","channelHandle","update","engineTime","offsetTime","totalDuration"],"sources":["../../src/animation/timeline.ts"],"sourcesContent":["// luma.gl, MIT license\n\n/**\n * Timeline channel properties\n * @param delay = 0;\n * @param duration = Number.POSITIVE_INFINITY;\n * @param rate = 1\n * @param repeat = 1\n */\nexport type ChannelOptions = {\n delay?: number\n duration?: number\n rate?: number\n repeat?: number\n}\n\nexport type AnimationOptions = {\n setTime: (time: number) => void\n}\n\n type Channel = {\n time: number\n delay: number\n duration: number\n rate: number\n repeat: number\n}\n\ntype Animation = {\n channel?: number;\n animation: {\n setTime: (time: number) => void\n }\n}\n\nlet channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n time: number = 0;\n channels = new Map<number, Channel>();\n animations = new Map<number, Animation>();\n playing: boolean = false;\n lastEngineTime: number = -1;\n\n constructor() {\n }\n\n addChannel(props: ChannelOptions): number {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const channel: Channel = {\n time: 0,\n delay,\n duration,\n rate,\n repeat\n };\n this._setChannelTime(channel, this.time);\n this.channels.set(handle, channel);\n\n return handle;\n }\n\n removeChannel(handle: number): void {\n this.channels.delete(handle);\n\n for (const [animationHandle, animation] of this.animations) {\n if (animation.channel === handle) {\n this.detachAnimation(animationHandle);\n }\n }\n }\n\n isFinished(handle: number): boolean {\n const channel = this.channels.get(handle);\n if (channel === undefined) {\n return false;\n }\n\n return this.time >= channel.delay + channel.duration * channel.repeat;\n }\n\n getTime(handle?: number): number {\n if (handle === undefined) {\n return this.time;\n }\n\n const channel = this.channels.get(handle);\n\n if (channel === undefined) {\n return -1;\n }\n\n return channel.time;\n }\n\n setTime(time: number): void {\n this.time = Math.max(0, time);\n\n const channels = this.channels.values();\n for (const channel of channels) {\n this._setChannelTime(channel, this.time);\n }\n\n const animations = this.animations.values();\n for (const animationData of animations) {\n const {animation, channel} = animationData;\n animation.setTime(this.getTime(channel));\n }\n }\n\n play(): void {\n this.playing = true;\n }\n\n pause(): void {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset(): void {\n this.setTime(0);\n }\n\n attachAnimation(animation: AnimationOptions, channelHandle?: number): number {\n const animationHandle = animationHandles++;\n\n this.animations.set(animationHandle, {\n animation,\n channel: channelHandle\n });\n\n animation.setTime(this.getTime(channelHandle));\n\n return animationHandle;\n }\n\n detachAnimation(handle: number): void {\n this.animations.delete(handle);\n }\n\n update(engineTime: number): void {\n if (this.playing) {\n if (this.lastEngineTime === -1) {\n this.lastEngineTime = engineTime;\n }\n this.setTime(this.time + (engineTime - this.lastEngineTime));\n this.lastEngineTime = engineTime;\n }\n }\n\n _setChannelTime(channel: Channel, time: number): void {\n const offsetTime = time - channel.delay;\n const totalDuration = channel.duration * channel.repeat;\n // Note(Tarek): Don't loop on final repeat.\n if (offsetTime >= totalDuration) {\n channel.time = channel.duration * channel.rate;\n } else {\n channel.time = Math.max(0, offsetTime) % channel.duration;\n channel.time *= channel.rate;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","names":["channelHandles","animationHandles","Timeline","constructor","_defineProperty","Map","addChannel","props","delay","duration","Number","POSITIVE_INFINITY","rate","repeat","handle","channel","time","_setChannelTime","channels","set","removeChannel","delete","animationHandle","animation","animations","detachAnimation","isFinished","get","undefined","getTime","setTime","Math","max","values","animationData","play","playing","pause","lastEngineTime","reset","attachAnimation","channelHandle","update","engineTime","offsetTime","totalDuration"],"sources":["../../src/animation/timeline.ts"],"sourcesContent":["// luma.gl, MIT license\n\n/**\n * Timeline channel properties\n * @param delay = 0;\n * @param duration = Number.POSITIVE_INFINITY;\n * @param rate = 1\n * @param repeat = 1\n */\nexport type ChannelOptions = {\n delay?: number\n duration?: number\n rate?: number\n repeat?: number\n}\n\nexport type AnimationOptions = {\n setTime: (time: number) => void\n}\n\n type Channel = {\n time: number\n delay: number\n duration: number\n rate: number\n repeat: number\n}\n\ntype Animation = {\n channel?: number;\n animation: {\n setTime: (time: number) => void\n }\n}\n\nlet channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n time: number = 0;\n channels = new Map<number, Channel>();\n animations = new Map<number, Animation>();\n playing: boolean = false;\n lastEngineTime: number = -1;\n\n constructor() {\n }\n\n addChannel(props: ChannelOptions): number {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const channel: Channel = {\n time: 0,\n delay,\n duration,\n rate,\n repeat\n };\n this._setChannelTime(channel, this.time);\n this.channels.set(handle, channel);\n\n return handle;\n }\n\n removeChannel(handle: number): void {\n this.channels.delete(handle);\n\n for (const [animationHandle, animation] of this.animations) {\n if (animation.channel === handle) {\n this.detachAnimation(animationHandle);\n }\n }\n }\n\n isFinished(handle: number): boolean {\n const channel = this.channels.get(handle);\n if (channel === undefined) {\n return false;\n }\n\n return this.time >= channel.delay + channel.duration * channel.repeat;\n }\n\n getTime(handle?: number): number {\n if (handle === undefined) {\n return this.time;\n }\n\n const channel = this.channels.get(handle);\n\n if (channel === undefined) {\n return -1;\n }\n\n return channel.time;\n }\n\n setTime(time: number): void {\n this.time = Math.max(0, time);\n\n const channels = this.channels.values();\n for (const channel of channels) {\n this._setChannelTime(channel, this.time);\n }\n\n const animations = this.animations.values();\n for (const animationData of animations) {\n const {animation, channel} = animationData;\n animation.setTime(this.getTime(channel));\n }\n }\n\n play(): void {\n this.playing = true;\n }\n\n pause(): void {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset(): void {\n this.setTime(0);\n }\n\n attachAnimation(animation: AnimationOptions, channelHandle?: number): number {\n const animationHandle = animationHandles++;\n\n this.animations.set(animationHandle, {\n animation,\n channel: channelHandle\n });\n\n animation.setTime(this.getTime(channelHandle));\n\n return animationHandle;\n }\n\n detachAnimation(handle: number): void {\n this.animations.delete(handle);\n }\n\n update(engineTime: number): void {\n if (this.playing) {\n if (this.lastEngineTime === -1) {\n this.lastEngineTime = engineTime;\n }\n this.setTime(this.time + (engineTime - this.lastEngineTime));\n this.lastEngineTime = engineTime;\n }\n }\n\n _setChannelTime(channel: Channel, time: number): void {\n const offsetTime = time - channel.delay;\n const totalDuration = channel.duration * channel.repeat;\n // Note(Tarek): Don't loop on final repeat.\n if (offsetTime >= totalDuration) {\n channel.time = channel.duration * channel.rate;\n } else {\n channel.time = Math.max(0, offsetTime) % channel.duration;\n channel.time *= channel.rate;\n }\n }\n}\n"],"mappings":"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"}
@@ -1,11 +1,9 @@
1
- /// <reference types="dist" />
2
- /// <reference types="offscreencanvas" />
3
1
  import { Device } from '@luma.gl/api';
4
2
  import { Timeline } from '../animation/timeline';
5
3
  import { AnimationProps } from './animation-props';
6
4
  import { Stats, Stat } from '@probe.gl/stats';
7
5
  /** AnimationLoop properties */
8
- export declare type AnimationLoopProps = {
6
+ export type AnimationLoopProps = {
9
7
  device: Device | Promise<Device>;
10
8
  onAddHTML?: (div: HTMLDivElement) => string;
11
9
  onInitialize?: (animationProps: AnimationProps) => Promise<unknown>;
@@ -17,7 +15,7 @@ export declare type AnimationLoopProps = {
17
15
  autoResizeDrawingBuffer?: boolean;
18
16
  useDevicePixels?: number | boolean;
19
17
  };
20
- export declare type MutableAnimationLoopProps = {
18
+ export type MutableAnimationLoopProps = {
21
19
  autoResizeViewport?: boolean;
22
20
  autoResizeDrawingBuffer?: boolean;
23
21
  useDevicePixels?: number | boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"animation-loop.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"animation-loop.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-loop.ts"],"names":[],"mappings":"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"}
@@ -222,14 +222,14 @@ export class AnimationLoop {
222
222
  this._resizeViewport();
223
223
  }
224
224
  _initializeAnimationProps() {
225
- var _this$device2, _this$device2$canvasC;
225
+ var _this$device2;
226
226
  if (!this.device) {
227
227
  throw new Error('loop');
228
228
  }
229
229
  this.animationProps = {
230
230
  animationLoop: this,
231
231
  device: this.device,
232
- canvas: (_this$device2 = this.device) === null || _this$device2 === void 0 ? void 0 : (_this$device2$canvasC = _this$device2.canvasContext) === null || _this$device2$canvasC === void 0 ? void 0 : _this$device2$canvasC.canvas,
232
+ canvas: (_this$device2 = this.device) === null || _this$device2 === void 0 || (_this$device2 = _this$device2.canvasContext) === null || _this$device2 === void 0 ? void 0 : _this$device2.canvas,
233
233
  renderPass: this.device.getDefaultRenderPass(),
234
234
  timeline: this.timeline,
235
235
  useDevicePixels: this.props.useDevicePixels,
@@ -309,7 +309,7 @@ export class AnimationLoop {
309
309
  }
310
310
  }
311
311
  _getSizeAndAspect() {
312
- var _this$device3, _this$device3$canvasC, _this$device4, _this$device4$canvasC;
312
+ var _this$device3, _this$device4;
313
313
  if (!this.device) {
314
314
  return {
315
315
  width: 1,
@@ -317,9 +317,9 @@ export class AnimationLoop {
317
317
  aspect: 1
318
318
  };
319
319
  }
320
- const [width, height] = ((_this$device3 = this.device) === null || _this$device3 === void 0 ? void 0 : (_this$device3$canvasC = _this$device3.canvasContext) === null || _this$device3$canvasC === void 0 ? void 0 : _this$device3$canvasC.getPixelSize()) || [1, 1];
320
+ const [width, height] = ((_this$device3 = this.device) === null || _this$device3 === void 0 || (_this$device3 = _this$device3.canvasContext) === null || _this$device3 === void 0 ? void 0 : _this$device3.getPixelSize()) || [1, 1];
321
321
  let aspect = 1;
322
- const canvas = (_this$device4 = this.device) === null || _this$device4 === void 0 ? void 0 : (_this$device4$canvasC = _this$device4.canvasContext) === null || _this$device4$canvasC === void 0 ? void 0 : _this$device4$canvasC.canvas;
322
+ const canvas = (_this$device4 = this.device) === null || _this$device4 === void 0 || (_this$device4 = _this$device4.canvasContext) === null || _this$device4 === void 0 ? void 0 : _this$device4.canvas;
323
323
  if (canvas && canvas.clientHeight) {
324
324
  aspect = canvas.clientWidth / canvas.clientHeight;
325
325
  } else if (width > 0 && height > 0) {
@@ -338,8 +338,8 @@ export class AnimationLoop {
338
338
  }
339
339
  _resizeCanvasDrawingBuffer() {
340
340
  if (this.props.autoResizeDrawingBuffer) {
341
- var _this$device5, _this$device5$canvasC;
342
- (_this$device5 = this.device) === null || _this$device5 === void 0 ? void 0 : (_this$device5$canvasC = _this$device5.canvasContext) === null || _this$device5$canvasC === void 0 ? void 0 : _this$device5$canvasC.resize({
341
+ var _this$device5;
342
+ (_this$device5 = this.device) === null || _this$device5 === void 0 || (_this$device5 = _this$device5.canvasContext) === null || _this$device5 === void 0 ? void 0 : _this$device5.resize({
343
343
  useDevicePixels: this.props.useDevicePixels
344
344
  });
345
345
  }
@@ -1 +1 @@
1
- {"version":3,"file":"animation-loop.js","names":["luma","requestAnimationFrame","cancelAnimationFrame","Stats","statIdCounter","DEFAULT_ANIMATION_LOOP_PROPS","device","onAddHTML","onInitialize","onRender","onFinalize","onError","error","console","stats","get","concat","useDevicePixels","autoResizeViewport","autoResizeDrawingBuffer","AnimationLoop","constructor","props","_defineProperty","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","_this$device","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","_this$device2","_this$device2$canvasC","canvasContext","renderPass","getDefaultRenderPass","width","height","aspect","time","startTime","Date","now","engineTime","tick","tock","_mousePosition","_getSizeAndAspect","update","Math","floor","getTime","_this$device$canvasCo","_createInfoDiv","wrapperDiv","document","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","_this$device3","_this$device3$canvasC","_this$device4","_this$device4$canvasC","getPixelSize","clientHeight","clientWidth","gl","viewport","drawingBufferWidth","drawingBufferHeight","_this$device5","_this$device5$canvasC","resize","timeEnd","timeStart","addEventListener","event","MouseEvent","offsetX","offsetY"],"sources":["../../src/animation-loop/animation-loop.ts"],"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 const {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.destroy();\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\n device: this.device,\n canvas: this.device?.canvasContext?.canvas,\n renderPass: this.device.getDefaultRenderPass(),\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 this.animationProps.renderPass = this.device.getDefaultRenderPass();\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.bind(this));\n this.canvas.addEventListener('mouseleave', this._onMouseleave.bind(this));\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"],"mappings":"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"}
1
+ {"version":3,"file":"animation-loop.js","names":["luma","requestAnimationFrame","cancelAnimationFrame","Stats","statIdCounter","DEFAULT_ANIMATION_LOOP_PROPS","device","onAddHTML","onInitialize","onRender","onFinalize","onError","error","console","stats","get","concat","useDevicePixels","autoResizeViewport","autoResizeDrawingBuffer","AnimationLoop","constructor","props","_defineProperty","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","_this$device","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","_this$device2","canvasContext","renderPass","getDefaultRenderPass","width","height","aspect","time","startTime","Date","now","engineTime","tick","tock","_mousePosition","_getSizeAndAspect","update","Math","floor","getTime","_this$device$canvasCo","_createInfoDiv","wrapperDiv","document","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","_this$device3","_this$device4","getPixelSize","clientHeight","clientWidth","gl","viewport","drawingBufferWidth","drawingBufferHeight","_this$device5","resize","timeEnd","timeStart","addEventListener","event","MouseEvent","offsetX","offsetY"],"sources":["../../src/animation-loop/animation-loop.ts"],"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 const {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.destroy();\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\n device: this.device,\n canvas: this.device?.canvasContext?.canvas,\n renderPass: this.device.getDefaultRenderPass(),\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 this.animationProps.renderPass = this.device.getDefaultRenderPass();\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.bind(this));\n this.canvas.addEventListener('mouseleave', this._onMouseleave.bind(this));\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"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- /// <reference types="dist" />
2
- /// <reference types="offscreencanvas" />
3
1
  import { Device, RenderPass } from '@luma.gl/api';
4
2
  import { Timeline } from '../animation/timeline';
5
3
  import type { AnimationLoop } from './animation-loop';
6
4
  /** Properties passed to every render frame */
7
- export declare type AnimationProps = {
5
+ export type AnimationProps = {
8
6
  device: Device;
9
7
  renderPass: RenderPass;
10
8
  animationLoop: AnimationLoop;
@@ -1 +1 @@
1
- {"version":3,"file":"animation-props.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-props.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAChD,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,UAAU,EAAE,UAAU,CAAC;IACvB,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"}
1
+ {"version":3,"file":"animation-props.d.ts","sourceRoot":"","sources":["../../src/animation-loop/animation-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAEpD,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,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"}
@@ -1,6 +1,6 @@
1
1
  import { AnimationLoopTemplate } from './render-loop';
2
2
  import { AnimationLoop, AnimationLoopProps } from './animation-loop';
3
- export declare type MakeAnimationLoopProps = Omit<AnimationLoopProps, 'onCreateDevice' | 'onInitialize' | 'onRedraw' | 'onFinalize'>;
3
+ export type MakeAnimationLoopProps = Omit<AnimationLoopProps, 'onCreateDevice' | 'onInitialize' | 'onRedraw' | 'onFinalize'>;
4
4
  /** Instantiates and runs the render loop */
5
5
  export declare function makeAnimationLoop(AnimationLoopTemplateCtor: typeof AnimationLoopTemplate, props?: MakeAnimationLoopProps): AnimationLoop;
6
6
  //# sourceMappingURL=make-animation-loop.d.ts.map
@@ -1 +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,CAkCxI"}
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,MAAM,MAAM,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,CAkCxI"}
@@ -1 +1 @@
1
- {"version":3,"file":"make-animation-loop.js","names":["luma","AnimationLoop","makeAnimationLoop","AnimationLoopTemplateCtor","props","renderLoop","device","createDevice","animationLoop","onInitialize","animationProps","_renderLoop","onRender","_renderLoop2","onFinalize","_renderLoop3","getInfo","info"],"sources":["../../src/animation-loop/make-animation-loop.ts"],"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 // eslint-disable-next-line no-invalid-this\n return this.AnimationLoopTemplateCtor.info;\n }\n\n // Start the loop automatically\n // animationLoop.start();\n\n return animationLoop;\n}\n"],"mappings":"AACA,SAAQA,IAAI,QAAO,cAAc;AAAC,SAE1BC,aAAa;AAMrB,OAAO,SAASC,iBAAiBA,CAACC,yBAAuD,EAAEC,KAA8B,EAAiB;EACxI,IAAIC,UAAwC,GAAG,IAAI;EAEnD,MAAMC,MAAM,GAAG,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,MAAM,KAAIN,IAAI,CAACO,YAAY,EAAE;EAGnD,MAAMC,aAAa,GAAG,IAAIP,aAAa,CAAC;IACtC,GAAIG,KAAK;IAETE,MAAM;IAEN,MAAMG,YAAYA,CAACC,cAA8B,EAAoB;MAAA,IAAAC,WAAA;MAEnEN,UAAU,GAAG,IAAIF,yBAAyB,CAACO,cAAc,CAAC;MAE1D,OAAO,QAAAC,WAAA,GAAMN,UAAU,cAAAM,WAAA,uBAAVA,WAAA,CAAYF,YAAY,CAACC,cAAc,CAAC;IACvD,CAAC;IAEDE,QAAQ,EAAGF,cAA8B;MAAA,IAAAG,YAAA;MAAA,QAAAA,YAAA,GAAKR,UAAU,cAAAQ,YAAA,uBAAVA,YAAA,CAAYD,QAAQ,CAACF,cAAc,CAAC;IAAA;IAElFI,UAAU,EAAGJ,cAA8B;MAAA,IAAAK,YAAA;MAAA,QAAAA,YAAA,GAAKV,UAAU,cAAAU,YAAA,uBAAVA,YAAA,CAAYD,UAAU,CAACJ,cAAc,CAAC;IAAA;EACxF,CAAC,CAAC;EAGFF,aAAa,CAACQ,OAAO,GAAG,MAAM;IAG5B,OAAO,IAAI,CAACb,yBAAyB,CAACc,IAAI;EAC5C,CAAC;EAKD,OAAOT,aAAa;AACtB"}
1
+ {"version":3,"file":"make-animation-loop.js","names":["luma","AnimationLoop","makeAnimationLoop","AnimationLoopTemplateCtor","props","renderLoop","device","createDevice","animationLoop","onInitialize","animationProps","_renderLoop","onRender","_renderLoop2","onFinalize","_renderLoop3","getInfo","info"],"sources":["../../src/animation-loop/make-animation-loop.ts"],"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 // eslint-disable-next-line no-invalid-this\n return this.AnimationLoopTemplateCtor.info;\n }\n\n // Start the loop automatically\n // animationLoop.start();\n\n return animationLoop;\n}\n"],"mappings":"AACA,SAAQA,IAAI,QAAO,cAAc;AAAC,SAE1BC,aAAa;AAMrB,OAAO,SAASC,iBAAiBA,CAACC,yBAAuD,EAAEC,KAA8B,EAAiB;EACxI,IAAIC,UAAwC,GAAG,IAAI;EAEnD,MAAMC,MAAM,GAAG,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,MAAM,KAAIN,IAAI,CAACO,YAAY,CAAC,CAAC;EAGnD,MAAMC,aAAa,GAAG,IAAIP,aAAa,CAAC;IACtC,GAAIG,KAAK;IAETE,MAAM;IAEN,MAAMG,YAAYA,CAACC,cAA8B,EAAoB;MAAA,IAAAC,WAAA;MAEnEN,UAAU,GAAG,IAAIF,yBAAyB,CAACO,cAAc,CAAC;MAE1D,OAAO,QAAAC,WAAA,GAAMN,UAAU,cAAAM,WAAA,uBAAVA,WAAA,CAAYF,YAAY,CAACC,cAAc,CAAC;IACvD,CAAC;IAEDE,QAAQ,EAAGF,cAA8B;MAAA,IAAAG,YAAA;MAAA,QAAAA,YAAA,GAAKR,UAAU,cAAAQ,YAAA,uBAAVA,YAAA,CAAYD,QAAQ,CAACF,cAAc,CAAC;IAAA;IAElFI,UAAU,EAAGJ,cAA8B;MAAA,IAAAK,YAAA;MAAA,QAAAA,YAAA,GAAKV,UAAU,cAAAU,YAAA,uBAAVA,YAAA,CAAYD,UAAU,CAACJ,cAAc,CAAC;IAAA;EACxF,CAAC,CAAC;EAGFF,aAAa,CAACQ,OAAO,GAAG,MAAM;IAG5B,OAAO,IAAI,CAACb,yBAAyB,CAACc,IAAI;EAC5C,CAAC;EAKD,OAAOT,aAAa;AACtB"}