@luma.gl/engine 8.5.19 → 8.5.21
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.
- package/dist/dist.js +6 -4
- package/dist/dist.min.js +1 -1
- package/dist/es5/animation/key-frames.js.map +1 -1
- package/dist/es5/animation/timeline.js.map +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/geometries/cone-geometry.js.map +1 -1
- package/dist/es5/geometries/cube-geometry.js.map +1 -1
- package/dist/es5/geometries/cylinder-geometry.js.map +1 -1
- package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/es5/geometries/index.js.map +1 -1
- package/dist/es5/geometries/plane-geometry.js.map +1 -1
- package/dist/es5/geometries/sphere-geometry.js.map +1 -1
- package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/es5/geometry/geometry-utils.js.map +1 -1
- package/dist/es5/geometry/geometry.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/animation-loop.js.map +1 -1
- package/dist/es5/lib/model-utils.js.map +1 -1
- package/dist/es5/lib/model.js.map +1 -1
- package/dist/es5/lib/program-manager.js.map +1 -1
- package/dist/es5/transform/buffer-transform.js.map +1 -1
- package/dist/es5/transform/texture-transform.js.map +1 -1
- package/dist/es5/transform/transform-shader-utils.js.map +1 -1
- package/dist/es5/transform/transform.js.map +1 -1
- package/dist/es5/utils/clip-space.js.map +1 -1
- package/dist/esm/animation/key-frames.js.map +1 -1
- package/dist/esm/animation/timeline.js.map +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/geometries/cone-geometry.js.map +1 -1
- package/dist/esm/geometries/cube-geometry.js.map +1 -1
- package/dist/esm/geometries/cylinder-geometry.js.map +1 -1
- package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/esm/geometries/index.js.map +1 -1
- package/dist/esm/geometries/plane-geometry.js.map +1 -1
- package/dist/esm/geometries/sphere-geometry.js.map +1 -1
- package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/esm/geometry/geometry-utils.js.map +1 -1
- package/dist/esm/geometry/geometry.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/animation-loop.js.map +1 -1
- package/dist/esm/lib/model-utils.js.map +1 -1
- package/dist/esm/lib/model.js.map +1 -1
- package/dist/esm/lib/program-manager.js.map +1 -1
- package/dist/esm/transform/buffer-transform.js.map +1 -1
- package/dist/esm/transform/texture-transform.js.map +1 -1
- package/dist/esm/transform/transform-shader-utils.js.map +1 -1
- package/dist/esm/transform/transform.js.map +1 -1
- package/dist/esm/utils/clip-space.js.map +1 -1
- package/package.json +6 -6
- package/src/.DS_Store +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"key-frames.js","names":["KeyFrames","keyFrames","_lastTime","startIndex","endIndex","factor","times","values","setKeyFrames","setTime","numKeys","length","i","_calculateKeys","time","Math","max","index","startTime","endTime","min"],"sources":["../../../src/animation/key-frames.js"],"sourcesContent":["/** @type {import('@luma.gl/engine').KeyFrames} */\n\nexport class KeyFrames {\n constructor(keyFrames) {\n this._lastTime = -1;\n this.startIndex = -1;\n this.endIndex = -1;\n this.factor = 0;\n this.times = [];\n this.values = [];\n this.setKeyFrames(keyFrames);\n this.setTime(0);\n }\n\n setKeyFrames(keyFrames) {\n const numKeys = keyFrames.length;\n this.times.length = numKeys;\n this.values.length = numKeys;\n\n for (let i = 0; i < numKeys; ++i) {\n this.times[i] = keyFrames[i][0];\n this.values[i] = keyFrames[i][1];\n }\n\n this._calculateKeys(this._lastTime);\n }\n\n setTime(time) {\n time = Math.max(0, time);\n\n if (time !== this._lastTime) {\n this._calculateKeys(time);\n this._lastTime = time;\n }\n }\n\n getStartTime() {\n return this.times[this.startIndex];\n }\n\n getEndTime() {\n return this.times[this.endIndex];\n }\n\n getStartData() {\n return this.values[this.startIndex];\n }\n\n getEndData() {\n return this.values[this.endIndex];\n }\n\n _calculateKeys(time) {\n let index = 0;\n const numKeys = this.times.length;\n\n for (index = 0; index < numKeys - 2; ++index) {\n if (this.times[index + 1] > time) {\n break;\n }\n }\n\n this.startIndex = index;\n this.endIndex = index + 1;\n\n const startTime = this.times[this.startIndex];\n const endTime = this.times[this.endIndex];\n this.factor = Math.min(Math.max(0, (time - startTime) / (endTime - startTime)), 1);\n }\n}\n"],"mappings":";;;;;;;;;;;;;IAEaA,S;EACX,mBAAYC,SAAZ,EAAuB;IAAA;IACrB,KAAKC,SAAL,GAAiB,CAAC,CAAlB;IACA,KAAKC,UAAL,GAAkB,CAAC,CAAnB;IACA,KAAKC,QAAL,GAAgB,CAAC,CAAjB;IACA,KAAKC,MAAL,GAAc,CAAd;IACA,KAAKC,KAAL,GAAa,EAAb;IACA,KAAKC,MAAL,GAAc,EAAd;IACA,KAAKC,YAAL,CAAkBP,SAAlB;IACA,KAAKQ,OAAL,CAAa,CAAb;EACD;;;;WAED,sBAAaR,SAAb,EAAwB;MACtB,IAAMS,OAAO,GAAGT,SAAS,CAACU,MAA1B;MACA,KAAKL,KAAL,CAAWK,MAAX,GAAoBD,OAApB;MACA,KAAKH,MAAL,CAAYI,MAAZ,GAAqBD,OAArB;;MAEA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,OAApB,EAA6B,EAAEE,CAA/B,EAAkC;QAChC,KAAKN,KAAL,CAAWM,CAAX,IAAgBX,SAAS,CAACW,CAAD,CAAT,CAAa,CAAb,CAAhB;QACA,KAAKL,MAAL,CAAYK,CAAZ,IAAiBX,SAAS,CAACW,CAAD,CAAT,CAAa,CAAb,CAAjB;MACD;;MAED,KAAKC,cAAL,CAAoB,KAAKX,SAAzB;IACD;;;WAED,iBAAQY,IAAR,EAAc;MACZA,IAAI,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYF,IAAZ,CAAP;;MAEA,IAAIA,IAAI,KAAK,KAAKZ,SAAlB,EAA6B;QAC3B,KAAKW,cAAL,CAAoBC,IAApB;;QACA,KAAKZ,SAAL,GAAiBY,IAAjB;MACD;IACF;;;WAED,wBAAe;MACb,OAAO,KAAKR,KAAL,CAAW,KAAKH,UAAhB,CAAP;IACD;;;WAED,sBAAa;MACX,OAAO,KAAKG,KAAL,CAAW,KAAKF,QAAhB,CAAP;IACD;;;WAED,wBAAe;MACb,OAAO,KAAKG,MAAL,CAAY,KAAKJ,UAAjB,CAAP;IACD;;;WAED,sBAAa;MACX,OAAO,KAAKI,MAAL,CAAY,KAAKH,QAAjB,CAAP;IACD;;;WAED,wBAAeU,IAAf,EAAqB;MACnB,IAAIG,KAAK,GAAG,CAAZ;MACA,IAAMP,OAAO,GAAG,KAAKJ,KAAL,CAAWK,MAA3B;;MAEA,KAAKM,KAAK,GAAG,CAAb,EAAgBA,KAAK,GAAGP,OAAO,GAAG,CAAlC,EAAqC,EAAEO,KAAvC,EAA8C;QAC5C,IAAI,KAAKX,KAAL,CAAWW,KAAK,GAAG,CAAnB,IAAwBH,IAA5B,EAAkC;UAChC;QACD;MACF;;MAED,KAAKX,UAAL,GAAkBc,KAAlB;MACA,KAAKb,QAAL,GAAgBa,KAAK,GAAG,CAAxB;MAEA,IAAMC,SAAS,GAAG,KAAKZ,KAAL,CAAW,KAAKH,UAAhB,CAAlB;MACA,IAAMgB,OAAO,GAAG,KAAKb,KAAL,CAAW,KAAKF,QAAhB,CAAhB;MACA,KAAKC,MAAL,GAAcU,IAAI,CAACK,GAAL,CAASL,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY,CAACF,IAAI,GAAGI,SAAR,KAAsBC,OAAO,GAAGD,SAAhC,CAAZ,CAAT,EAAkE,CAAlE,CAAd;IACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"timeline.js","names":["channelHandles","animationHandles","Timeline","time","channels","Map","animations","playing","lastEngineTime","props","delay","duration","Number","POSITIVE_INFINITY","rate","repeat","handle","channel","_setChannelTime","set","delete","animationHandle","animation","detachAnimation","get","undefined","Math","max","values","animationData","setTime","getTime","channelHandle","engineTime","offsetTime","totalDuration"],"sources":["../../../src/animation/timeline.js"],"sourcesContent":["let channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n constructor() {\n this.time = 0;\n this.channels = new Map();\n this.animations = new Map();\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n addChannel(props) {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const 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) {\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) {\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) {\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) {\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() {\n this.playing = true;\n }\n\n pause() {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset() {\n this.setTime(0);\n }\n\n attachAnimation(animation, channelHandle) {\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) {\n this.animations.delete(handle);\n }\n\n update(engineTime) {\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, time) {\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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"}
|
package/dist/es5/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"sources":["../../src/bundle.js"],"sourcesContent":["const moduleExports = require('./index');\n\n// @ts-ignore\nglobalThis.luma = globalThis.luma || {};\n// @ts-ignore\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"mappings":";;AAAA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AAGAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AAEAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"cone-geometry.js","names":["ConeGeometry","props","id","uid","radius","cap","topRadius","topCap","Boolean","bottomCap","bottomRadius","TruncatedConeGeometry"],"sources":["../../../src/geometries/cone-geometry.js"],"sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class ConeGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cone-geometry'), radius = 1, cap = true} = props;\n super({\n ...props,\n id,\n topRadius: 0,\n topCap: Boolean(cap),\n bottomCap: Boolean(cap),\n bottomRadius: radius\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IAEqBA,Y;;;;;EACnB,wBAAwB;IAAA,IAAZC,KAAY,uEAAJ,EAAI;IAAA;IACtB,gBAA4DA,KAA5D,CAAOC,EAAP;IAAA,IAAOA,EAAP,0BAAY,IAAAC,UAAA,EAAI,eAAJ,CAAZ;IAAA,oBAA4DF,KAA5D,CAAkCG,MAAlC;IAAA,IAAkCA,MAAlC,8BAA2C,CAA3C;IAAA,iBAA4DH,KAA5D,CAA8CI,GAA9C;IAAA,IAA8CA,GAA9C,2BAAoD,IAApD;IADsB,yDAGjBJ,KAHiB;MAIpBC,EAAE,EAAFA,EAJoB;MAKpBI,SAAS,EAAE,CALS;MAMpBC,MAAM,EAAEC,OAAO,CAACH,GAAD,CANK;MAOpBI,SAAS,EAAED,OAAO,CAACH,GAAD,CAPE;MAQpBK,YAAY,EAAEN;IARM;EAUvB;;;EAXuCO,8B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"cube-geometry.js","names":["CUBE_INDICES","Uint16Array","CUBE_POSITIONS","Float32Array","CUBE_NORMALS","CUBE_TEX_COORDS","ATTRIBUTES","POSITION","size","value","NORMAL","TEXCOORD_0","CubeGeometry","props","id","uid","indices","attributes","Geometry"],"sources":["../../../src/geometries/cube-geometry.js"],"sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n// prettier-ignore\nconst CUBE_INDICES = new Uint16Array([\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13,\n 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n]);\n\n// prettier-ignore\nconst CUBE_POSITIONS = new Float32Array([\n -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1,\n -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1,\n -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1,\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1,\n 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1,\n -1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1\n]);\n\n// TODO - could be Uint8\n// prettier-ignore\nconst CUBE_NORMALS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,\n // Back face\n 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1,\n // Top face\n 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n // Bottom face\n 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0,\n // Right face\n 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,\n // Left face\n -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0\n]);\n\n// prettier-ignore\nconst CUBE_TEX_COORDS = new Float32Array([\n // Front face\n 0, 0, 1, 0, 1, 1, 0, 1,\n // Back face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Top face\n 0, 1, 0, 0, 1, 0, 1, 1,\n // Bottom face\n 1, 1, 0, 1, 0, 0, 1, 0,\n // Right face\n 1, 0, 1, 1, 0, 1, 0, 0,\n // Left face\n 0, 0, 1, 0, 1, 1, 0, 1\n]);\n\nconst ATTRIBUTES = {\n POSITION: {size: 3, value: new Float32Array(CUBE_POSITIONS)},\n NORMAL: {size: 3, value: new Float32Array(CUBE_NORMALS)},\n TEXCOORD_0: {size: 2, value: new Float32Array(CUBE_TEX_COORDS)}\n};\n\nexport default class CubeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('cube-geometry')} = props;\n super({\n ...props,\n id,\n indices: {size: 1, value: new Uint16Array(CUBE_INDICES)},\n attributes: {...ATTRIBUTES, ...props.attributes}\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"cylinder-geometry.js","names":["CylinderGeometry","props","id","uid","radius","bottomRadius","topRadius","TruncatedConeGeometry"],"sources":["../../../src/geometries/cylinder-geometry.js"],"sourcesContent":["import TruncatedConeGeometry from './truncated-cone-geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class CylinderGeometry extends TruncatedConeGeometry {\n constructor(props = {}) {\n const {id = uid('cylinder-geometry'), radius = 1} = props;\n super({\n ...props,\n id,\n bottomRadius: radius,\n topRadius: radius\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;IAEqBA,gB;;;;;EACnB,4BAAwB;IAAA,IAAZC,KAAY,uEAAJ,EAAI;IAAA;IACtB,gBAAoDA,KAApD,CAAOC,EAAP;IAAA,IAAOA,EAAP,0BAAY,IAAAC,UAAA,EAAI,mBAAJ,CAAZ;IAAA,oBAAoDF,KAApD,CAAsCG,MAAtC;IAAA,IAAsCA,MAAtC,8BAA+C,CAA/C;IADsB,yDAGjBH,KAHiB;MAIpBC,EAAE,EAAFA,EAJoB;MAKpBG,YAAY,EAAED,MALM;MAMpBE,SAAS,EAAEF;IANS;EAQvB;;;EAT2CG,8B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/geometries/ico-sphere-geometry.js"],"names":["ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","props","id","tesselateIcosaHedron","indices","attributes","Geometry","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","Vector3","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"mappings":"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","sourcesContent":["import {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport default class IcoSphereGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo = {};\n\n return (i1, i2) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2 = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"file":"ico-sphere-geometry.js"}
|
|
1
|
+
{"version":3,"file":"ico-sphere-geometry.js","names":["ICO_POSITIONS","ICO_INDICES","IcoSphereGeometry","props","id","uid","tesselateIcosaHedron","indices","attributes","Geometry","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","Vector3","cross","normalize","newIndex","x","y","z","size","value","Uint16Array","POSITION","Float32Array","NORMAL","TEXCOORD_0"],"sources":["../../../src/geometries/ico-sphere-geometry.js"],"sourcesContent":["import {Vector3} from '@math.gl/core';\nimport Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\n/* eslint-disable comma-spacing, max-statements, complexity */\n\nconst ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];\nconst ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];\n\nexport default class IcoSphereGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('ico-sphere-geometry')} = props;\n const {indices, attributes} = tesselateIcosaHedron(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\nfunction tesselateIcosaHedron(props) {\n const {iterations = 0} = props;\n\n const PI = Math.PI;\n const PI2 = PI * 2;\n\n const positions = [...ICO_POSITIONS];\n let indices = [...ICO_INDICES];\n\n positions.push();\n indices.push();\n\n const getMiddlePoint = (() => {\n const pointMemo = {};\n\n return (i1, i2) => {\n i1 *= 3;\n i2 *= 3;\n const mini = i1 < i2 ? i1 : i2;\n const maxi = i1 > i2 ? i1 : i2;\n const key = `${mini}|${maxi}`;\n\n if (key in pointMemo) {\n return pointMemo[key];\n }\n\n const x1 = positions[i1];\n const y1 = positions[i1 + 1];\n const z1 = positions[i1 + 2];\n const x2 = positions[i2];\n const y2 = positions[i2 + 1];\n const z2 = positions[i2 + 2];\n let xm = (x1 + x2) / 2;\n let ym = (y1 + y2) / 2;\n let zm = (z1 + z2) / 2;\n const len = Math.sqrt(xm * xm + ym * ym + zm * zm);\n\n xm /= len;\n ym /= len;\n zm /= len;\n\n positions.push(xm, ym, zm);\n\n return (pointMemo[key] = positions.length / 3 - 1);\n };\n })();\n\n for (let i = 0; i < iterations; i++) {\n const indices2 = [];\n for (let j = 0; j < indices.length; j += 3) {\n const a = getMiddlePoint(indices[j + 0], indices[j + 1]);\n const b = getMiddlePoint(indices[j + 1], indices[j + 2]);\n const c = getMiddlePoint(indices[j + 2], indices[j + 0]);\n\n indices2.push(c, indices[j + 0], a, a, indices[j + 1], b, b, indices[j + 2], c, a, b, c);\n }\n indices = indices2;\n }\n\n // Calculate texCoords and normals\n const normals = new Array(positions.length);\n const texCoords = new Array((positions.length / 3) * 2);\n\n const l = indices.length;\n for (let i = l - 3; i >= 0; i -= 3) {\n const i1 = indices[i + 0];\n const i2 = indices[i + 1];\n const i3 = indices[i + 2];\n const in1 = i1 * 3;\n const in2 = i2 * 3;\n const in3 = i3 * 3;\n const iu1 = i1 * 2;\n const iu2 = i2 * 2;\n const iu3 = i3 * 2;\n const x1 = positions[in1 + 0];\n const y1 = positions[in1 + 1];\n const z1 = positions[in1 + 2];\n const theta1 = Math.acos(z1 / Math.sqrt(x1 * x1 + y1 * y1 + z1 * z1));\n const phi1 = Math.atan2(y1, x1) + PI;\n const v1 = theta1 / PI;\n const u1 = 1 - phi1 / PI2;\n const x2 = positions[in2 + 0];\n const y2 = positions[in2 + 1];\n const z2 = positions[in2 + 2];\n const theta2 = Math.acos(z2 / Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2));\n const phi2 = Math.atan2(y2, x2) + PI;\n const v2 = theta2 / PI;\n const u2 = 1 - phi2 / PI2;\n const x3 = positions[in3 + 0];\n const y3 = positions[in3 + 1];\n const z3 = positions[in3 + 2];\n const theta3 = Math.acos(z3 / Math.sqrt(x3 * x3 + y3 * y3 + z3 * z3));\n const phi3 = Math.atan2(y3, x3) + PI;\n const v3 = theta3 / PI;\n const u3 = 1 - phi3 / PI2;\n const vec1 = [x3 - x2, y3 - y2, z3 - z2];\n const vec2 = [x1 - x2, y1 - y2, z1 - z2];\n const normal = new Vector3(vec1).cross(vec2).normalize();\n let newIndex;\n\n if (\n (u1 === 0 || u2 === 0 || u3 === 0) &&\n (u1 === 0 || u1 > 0.5) &&\n (u2 === 0 || u2 > 0.5) &&\n (u3 === 0 || u3 > 0.5)\n ) {\n positions.push(positions[in1 + 0], positions[in1 + 1], positions[in1 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v1;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in2 + 0], positions[in2 + 1], positions[in2 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v2;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n\n positions.push(positions[in3 + 0], positions[in3 + 1], positions[in3 + 2]);\n newIndex = positions.length / 3 - 1;\n indices.push(newIndex);\n texCoords[newIndex * 2 + 0] = 1;\n texCoords[newIndex * 2 + 1] = v3;\n normals[newIndex * 3 + 0] = normal.x;\n normals[newIndex * 3 + 1] = normal.y;\n normals[newIndex * 3 + 2] = normal.z;\n }\n\n normals[in1 + 0] = normals[in2 + 0] = normals[in3 + 0] = normal.x;\n normals[in1 + 1] = normals[in2 + 1] = normals[in3 + 1] = normal.y;\n normals[in1 + 2] = normals[in2 + 2] = normals[in3 + 2] = normal.z;\n\n texCoords[iu1 + 0] = u1;\n texCoords[iu1 + 1] = v1;\n\n texCoords[iu2 + 0] = u2;\n texCoords[iu2 + 1] = v2;\n\n texCoords[iu3 + 0] = u3;\n texCoords[iu3 + 1] = v3;\n }\n\n return {\n indices: {size: 1, value: new Uint16Array(indices)},\n attributes: {\n POSITION: {size: 3, value: new Float32Array(positions)},\n NORMAL: {size: 3, value: new Float32Array(normals)},\n TEXCOORD_0: {size: 2, value: new Float32Array(texCoords)}\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/geometries/index.js"],"sourcesContent":["export {default as ConeGeometry} from './cone-geometry';\nexport {default as CubeGeometry} from './cube-geometry';\nexport {default as CylinderGeometry} from './cylinder-geometry';\nexport {default as IcoSphereGeometry} from './ico-sphere-geometry';\nexport {default as PlaneGeometry} from './plane-geometry';\nexport {default as SphereGeometry} from './sphere-geometry';\nexport {default as TruncatedConeGeometry} from './truncated-cone-geometry';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"plane-geometry.js","names":["PlaneGeometry","props","id","uid","tesselatePlane","indices","attributes","Geometry","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","unpackIndexedGeometry"],"sources":["../../../src/geometries/plane-geometry.js"],"sourcesContent":["import Geometry from '../geometry/geometry';\nimport {unpackIndexedGeometry} from '../geometry/geometry-utils';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class PlaneGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('plane-geometry')} = props;\n\n const {indices, attributes} = tesselatePlane(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\n/* eslint-disable max-statements, complexity */\n/* eslint-disable complexity, max-statements */\nfunction tesselatePlane(props) {\n const {type = 'x,y', offset = 0, flipCull = false, unpack = false} = props;\n\n const coords = type.split(',');\n // width, height\n let c1len = props[`${coords[0]}len`] || 1;\n const c2len = props[`${coords[1]}len`] || 1;\n // subdivisionsWidth, subdivisionsDepth\n const subdivisions1 = props[`n${coords[0]}`] || 1;\n const subdivisions2 = props[`n${coords[1]}`] || 1;\n const numVertices = (subdivisions1 + 1) * (subdivisions2 + 1);\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n if (flipCull) {\n c1len = -c1len;\n }\n\n let i2 = 0;\n let i3 = 0;\n for (let z = 0; z <= subdivisions2; z++) {\n for (let x = 0; x <= subdivisions1; x++) {\n const u = x / subdivisions1;\n const v = z / subdivisions2;\n texCoords[i2 + 0] = flipCull ? 1 - u : u;\n texCoords[i2 + 1] = v;\n\n switch (type) {\n case 'x,y':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = c2len * v - c2len * 0.5;\n positions[i3 + 2] = offset;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = flipCull ? 1 : -1;\n break;\n\n case 'x,z':\n positions[i3 + 0] = c1len * u - c1len * 0.5;\n positions[i3 + 1] = offset;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = 0;\n normals[i3 + 1] = flipCull ? 1 : -1;\n normals[i3 + 2] = 0;\n break;\n\n case 'y,z':\n positions[i3 + 0] = offset;\n positions[i3 + 1] = c1len * u - c1len * 0.5;\n positions[i3 + 2] = c2len * v - c2len * 0.5;\n\n normals[i3 + 0] = flipCull ? 1 : -1;\n normals[i3 + 1] = 0;\n normals[i3 + 2] = 0;\n break;\n\n default:\n throw new Error('PlaneGeometry: unknown type');\n }\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n const numVertsAcross = subdivisions1 + 1;\n const indices = new Uint16Array(subdivisions1 * subdivisions2 * 6);\n\n for (let z = 0; z < subdivisions2; z++) {\n for (let x = 0; x < subdivisions1; x++) {\n const index = (z * subdivisions1 + x) * 6;\n // Make triangle 1 of quad.\n indices[index + 0] = (z + 0) * numVertsAcross + x;\n indices[index + 1] = (z + 1) * numVertsAcross + x;\n indices[index + 2] = (z + 0) * numVertsAcross + x + 1;\n\n // Make triangle 2 of quad.\n indices[index + 3] = (z + 1) * numVertsAcross + x;\n indices[index + 4] = (z + 1) * numVertsAcross + x + 1;\n indices[index + 5] = (z + 0) * numVertsAcross + x + 1;\n }\n }\n\n const geometry = {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n\n // Optionally, unpack indexed geometry\n return unpack ? unpackIndexedGeometry(geometry) : geometry;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;IAEqBA,a;;;;;EACnB,yBAAwB;IAAA,IAAZC,KAAY,uEAAJ,EAAI;IAAA;IACtB,gBAAqCA,KAArC,CAAOC,EAAP;IAAA,IAAOA,EAAP,0BAAY,IAAAC,UAAA,EAAI,gBAAJ,CAAZ;;IAEA,sBAA8BC,cAAc,CAACH,KAAD,CAA5C;IAAA,IAAOI,OAAP,mBAAOA,OAAP;IAAA,IAAgBC,UAAhB,mBAAgBA,UAAhB;;IAHsB,yDAKjBL,KALiB;MAMpBC,EAAE,EAAFA,EANoB;MAOpBG,OAAO,EAAPA,OAPoB;MAQpBC,UAAU,kCAAMA,UAAN,GAAqBL,KAAK,CAACK,UAA3B;IARU;EAUvB;;;EAXwCC,iB;;;;AAmB3C,SAASH,cAAT,CAAwBH,KAAxB,EAA+B;EAC7B,kBAAqEA,KAArE,CAAOO,IAAP;EAAA,IAAOA,IAAP,4BAAc,KAAd;EAAA,oBAAqEP,KAArE,CAAqBQ,MAArB;EAAA,IAAqBA,MAArB,8BAA8B,CAA9B;EAAA,sBAAqER,KAArE,CAAiCS,QAAjC;EAAA,IAAiCA,QAAjC,gCAA4C,KAA5C;EAAA,oBAAqET,KAArE,CAAmDU,MAAnD;EAAA,IAAmDA,MAAnD,8BAA4D,KAA5D;EAEA,IAAMC,MAAM,GAAGJ,IAAI,CAACK,KAAL,CAAW,GAAX,CAAf;EAEA,IAAIC,KAAK,GAAGb,KAAK,WAAIW,MAAM,CAAC,CAAD,CAAV,SAAL,IAA4B,CAAxC;EACA,IAAMG,KAAK,GAAGd,KAAK,WAAIW,MAAM,CAAC,CAAD,CAAV,SAAL,IAA4B,CAA1C;EAEA,IAAMI,aAAa,GAAGf,KAAK,YAAKW,MAAM,CAAC,CAAD,CAAX,EAAL,IAA0B,CAAhD;EACA,IAAMK,aAAa,GAAGhB,KAAK,YAAKW,MAAM,CAAC,CAAD,CAAX,EAAL,IAA0B,CAAhD;EACA,IAAMM,WAAW,GAAG,CAACF,aAAa,GAAG,CAAjB,KAAuBC,aAAa,GAAG,CAAvC,CAApB;EAEA,IAAME,SAAS,GAAG,IAAIC,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAlB;EACA,IAAMG,OAAO,GAAG,IAAID,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAhB;EACA,IAAMI,SAAS,GAAG,IAAIF,YAAJ,CAAiBF,WAAW,GAAG,CAA/B,CAAlB;;EAEA,IAAIR,QAAJ,EAAc;IACZI,KAAK,GAAG,CAACA,KAAT;EACD;;EAED,IAAIS,EAAE,GAAG,CAAT;EACA,IAAIC,EAAE,GAAG,CAAT;;EACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIR,aAArB,EAAoCQ,CAAC,EAArC,EAAyC;IACvC,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIV,aAArB,EAAoCU,CAAC,EAArC,EAAyC;MACvC,IAAMC,CAAC,GAAGD,CAAC,GAAGV,aAAd;MACA,IAAMY,CAAC,GAAGH,CAAC,GAAGR,aAAd;MACAK,SAAS,CAACC,EAAE,GAAG,CAAN,CAAT,GAAoBb,QAAQ,GAAG,IAAIiB,CAAP,GAAWA,CAAvC;MACAL,SAAS,CAACC,EAAE,GAAG,CAAN,CAAT,GAAoBK,CAApB;;MAEA,QAAQpB,IAAR;QACE,KAAK,KAAL;UACEW,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UACAK,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UACAI,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;UAEAY,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACAH,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACAH,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;UACA;;QAEF,KAAK,KAAL;UACES,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UACAK,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;UACAU,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UAEAM,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACAH,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;UACAW,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACA;;QAEF,KAAK,KAAL;UACEL,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBf,MAApB;UACAU,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBV,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UACAK,SAAS,CAACK,EAAE,GAAG,CAAN,CAAT,GAAoBT,KAAK,GAAGa,CAAR,GAAYb,KAAK,GAAG,GAAxC;UAEAM,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkBd,QAAQ,GAAG,CAAH,GAAO,CAAC,CAAlC;UACAW,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACAH,OAAO,CAACG,EAAE,GAAG,CAAN,CAAP,GAAkB,CAAlB;UACA;;QAEF;UACE,MAAM,IAAIK,KAAJ,CAAU,6BAAV,CAAN;MAhCJ;;MAmCAN,EAAE,IAAI,CAAN;MACAC,EAAE,IAAI,CAAN;IACD;EACF;;EAED,IAAMM,cAAc,GAAGd,aAAa,GAAG,CAAvC;EACA,IAAMX,OAAO,GAAG,IAAI0B,WAAJ,CAAgBf,aAAa,GAAGC,aAAhB,GAAgC,CAAhD,CAAhB;;EAEA,KAAK,IAAIQ,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGR,aAApB,EAAmCQ,EAAC,EAApC,EAAwC;IACtC,KAAK,IAAIC,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGV,aAApB,EAAmCU,EAAC,EAApC,EAAwC;MACtC,IAAMM,KAAK,GAAG,CAACP,EAAC,GAAGT,aAAJ,GAAoBU,EAArB,IAA0B,CAAxC;MAEArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAAhD;MACArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAAhD;MACArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAA3B,GAA+B,CAApD;MAGArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAAhD;MACArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAA3B,GAA+B,CAApD;MACArB,OAAO,CAAC2B,KAAK,GAAG,CAAT,CAAP,GAAqB,CAACP,EAAC,GAAG,CAAL,IAAUK,cAAV,GAA2BJ,EAA3B,GAA+B,CAApD;IACD;EACF;;EAED,IAAMO,QAAQ,GAAG;IACf5B,OAAO,EAAE;MAAC6B,IAAI,EAAE,CAAP;MAAUC,KAAK,EAAE9B;IAAjB,CADM;IAEfC,UAAU,EAAE;MACV8B,QAAQ,EAAE;QAACF,IAAI,EAAE,CAAP;QAAUC,KAAK,EAAEhB;MAAjB,CADA;MAEVkB,MAAM,EAAE;QAACH,IAAI,EAAE,CAAP;QAAUC,KAAK,EAAEd;MAAjB,CAFE;MAGViB,UAAU,EAAE;QAACJ,IAAI,EAAE,CAAP;QAAUC,KAAK,EAAEb;MAAjB;IAHF;EAFG,CAAjB;EAUA,OAAOX,MAAM,GAAG,IAAA4B,oCAAA,EAAsBN,QAAtB,CAAH,GAAqCA,QAAlD;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"sphere-geometry.js","names":["SphereGeometry","props","id","uid","tesselateSphere","indices","attributes","Geometry","nlat","nlong","radius","startLat","endLat","Math","PI","latRange","startLong","endLong","longRange","numVertices","value","n1","n2","n3","u","v","positions","Float32Array","normals","texCoords","IndexType","Uint32Array","Uint16Array","y","x","index","i2","i3","theta","phi","sinTheta","sin","cosTheta","cos","sinPhi","cosPhi","ux","uy","uz","r","numVertsAround","size","POSITION","NORMAL","TEXCOORD_0"],"sources":["../../../src/geometries/sphere-geometry.js"],"sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nexport default class SphereGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('sphere-geometry')} = props;\n const {indices, attributes} = tesselateSphere(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\n/* eslint-disable max-statements, complexity */\nfunction tesselateSphere(props) {\n const {nlat = 10, nlong = 10} = props;\n let {radius = 1} = props;\n\n const startLat = 0;\n const endLat = Math.PI;\n const latRange = endLat - startLat;\n const startLong = 0;\n const endLong = 2 * Math.PI;\n const longRange = endLong - startLong;\n const numVertices = (nlat + 1) * (nlong + 1);\n\n if (typeof radius === 'number') {\n const value = radius;\n radius = (n1, n2, n3, u, v) => value;\n }\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n const IndexType = numVertices > 0xffff ? Uint32Array : Uint16Array;\n const indices = new IndexType(nlat * nlong * 6);\n\n // Create positions, normals and texCoords\n for (let y = 0; y <= nlat; y++) {\n for (let x = 0; x <= nlong; x++) {\n const u = x / nlong;\n const v = y / nlat;\n\n const index = x + y * (nlong + 1);\n const i2 = index * 2;\n const i3 = index * 3;\n\n const theta = longRange * u;\n const phi = latRange * v;\n const sinTheta = Math.sin(theta);\n const cosTheta = Math.cos(theta);\n const sinPhi = Math.sin(phi);\n const cosPhi = Math.cos(phi);\n const ux = cosTheta * sinPhi;\n const uy = cosPhi;\n const uz = sinTheta * sinPhi;\n\n const r = radius(ux, uy, uz, u, v);\n\n positions[i3 + 0] = r * ux;\n positions[i3 + 1] = r * uy;\n positions[i3 + 2] = r * uz;\n\n normals[i3 + 0] = ux;\n normals[i3 + 1] = uy;\n normals[i3 + 2] = uz;\n\n texCoords[i2 + 0] = u;\n texCoords[i2 + 1] = 1 - v;\n }\n }\n\n // Create indices\n const numVertsAround = nlong + 1;\n for (let x = 0; x < nlong; x++) {\n for (let y = 0; y < nlat; y++) {\n const index = (x * nlat + y) * 6;\n\n indices[index + 0] = y * numVertsAround + x;\n indices[index + 1] = y * numVertsAround + x + 1;\n indices[index + 2] = (y + 1) * numVertsAround + x;\n\n indices[index + 3] = (y + 1) * numVertsAround + x;\n indices[index + 4] = y * numVertsAround + x + 1;\n indices[index + 5] = (y + 1) * numVertsAround + x + 1;\n }\n }\n\n return {\n indices: {size: 1, value: indices},\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"truncated-cone-geometry.js","names":["INDEX_OFFSETS","x","y","z","TruncatedConeGeometry","props","id","uid","tesselateTruncatedCone","indices","attributes","Geometry","bottomRadius","topRadius","height","nradial","nvertical","verticalAxis","topCap","bottomCap","extra","numVertices","slant","Math","atan2","msin","sin","mcos","cos","mpi","PI","cosSlant","sinSlant","start","end","vertsAroundEdge","Uint16Array","indexOffset","positions","Float32Array","normals","texCoords","i3","i2","i","v","ringRadius","j","index","POSITION","size","value","NORMAL","TEXCOORD_0"],"sources":["../../../src/geometries/truncated-cone-geometry.js"],"sourcesContent":["import Geometry from '../geometry/geometry';\nimport {uid} from '@luma.gl/webgl';\n\nconst INDEX_OFFSETS = {\n x: [2, 0, 1],\n y: [0, 1, 2],\n z: [1, 2, 0]\n};\n\nexport default class TruncatedConeGeometry extends Geometry {\n constructor(props = {}) {\n const {id = uid('truncated-code-geometry')} = props;\n const {indices, attributes} = tesselateTruncatedCone(props);\n super({\n ...props,\n id,\n indices,\n attributes: {...attributes, ...props.attributes}\n });\n }\n}\n\n// Primitives inspired by TDL http://code.google.com/p/webglsamples/,\n// copyright 2011 Google Inc. new BSD License\n// (http://www.opensource.org/licenses/bsd-license.php).\n/* eslint-disable max-statements, complexity */\nfunction tesselateTruncatedCone(props) {\n const {\n bottomRadius = 0,\n topRadius = 0,\n height = 1,\n nradial = 10,\n nvertical = 10,\n verticalAxis = 'y',\n topCap = false,\n bottomCap = false\n } = props;\n\n const extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);\n const numVertices = (nradial + 1) * (nvertical + 1 + extra);\n\n const slant = Math.atan2(bottomRadius - topRadius, height);\n const msin = Math.sin;\n const mcos = Math.cos;\n const mpi = Math.PI;\n const cosSlant = mcos(slant);\n const sinSlant = msin(slant);\n const start = topCap ? -2 : 0;\n const end = nvertical + (bottomCap ? 2 : 0);\n const vertsAroundEdge = nradial + 1;\n\n const indices = new Uint16Array(nradial * (nvertical + extra) * 6);\n const indexOffset = INDEX_OFFSETS[verticalAxis];\n\n const positions = new Float32Array(numVertices * 3);\n const normals = new Float32Array(numVertices * 3);\n const texCoords = new Float32Array(numVertices * 2);\n\n let i3 = 0;\n let i2 = 0;\n for (let i = start; i <= end; i++) {\n let v = i / nvertical;\n let y = height * v;\n let ringRadius;\n\n if (i < 0) {\n y = 0;\n v = 1;\n ringRadius = bottomRadius;\n } else if (i > nvertical) {\n y = height;\n v = 1;\n ringRadius = topRadius;\n } else {\n ringRadius = bottomRadius + (topRadius - bottomRadius) * (i / nvertical);\n }\n if (i === -2 || i === nvertical + 2) {\n ringRadius = 0;\n v = 0;\n }\n y -= height / 2;\n for (let j = 0; j < vertsAroundEdge; j++) {\n const sin = msin((j * mpi * 2) / nradial);\n const cos = mcos((j * mpi * 2) / nradial);\n\n positions[i3 + indexOffset[0]] = sin * ringRadius;\n positions[i3 + indexOffset[1]] = y;\n positions[i3 + indexOffset[2]] = cos * ringRadius;\n\n normals[i3 + indexOffset[0]] = i < 0 || i > nvertical ? 0 : sin * cosSlant;\n normals[i3 + indexOffset[1]] = i < 0 ? -1 : i > nvertical ? 1 : sinSlant;\n normals[i3 + indexOffset[2]] = i < 0 || i > nvertical ? 0 : cos * cosSlant;\n\n texCoords[i2 + 0] = j / nradial;\n texCoords[i2 + 1] = v;\n\n i2 += 2;\n i3 += 3;\n }\n }\n\n for (let i = 0; i < nvertical + extra; i++) {\n for (let j = 0; j < nradial; j++) {\n const index = (i * nradial + j) * 6;\n indices[index + 0] = vertsAroundEdge * (i + 0) + 0 + j;\n indices[index + 1] = vertsAroundEdge * (i + 0) + 1 + j;\n indices[index + 2] = vertsAroundEdge * (i + 1) + 1 + j;\n indices[index + 3] = vertsAroundEdge * (i + 0) + 0 + j;\n indices[index + 4] = vertsAroundEdge * (i + 1) + 1 + j;\n indices[index + 5] = vertsAroundEdge * (i + 1) + 0 + j;\n }\n }\n\n return {\n indices,\n attributes: {\n POSITION: {size: 3, value: positions},\n NORMAL: {size: 3, value: normals},\n TEXCOORD_0: {size: 2, value: texCoords}\n }\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"geometry-utils.js","names":["unpackIndexedGeometry","geometry","indices","attributes","vertexCount","value","length","unpackedAttributes","attributeName","attribute","constant","size","unpackedValue","constructor","x","index","i","Object","assign"],"sources":["../../../src/geometry/geometry-utils.js"],"sourcesContent":["export function unpackIndexedGeometry(geometry) {\n const {indices, attributes} = geometry;\n if (!indices) {\n return geometry;\n }\n\n const vertexCount = indices.value.length;\n const unpackedAttributes = {};\n\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {constant, value, size} = attribute;\n if (constant || !size) {\n continue; // eslint-disable-line\n }\n const unpackedValue = new value.constructor(vertexCount * size);\n for (let x = 0; x < vertexCount; ++x) {\n const index = indices.value[x];\n for (let i = 0; i < size; i++) {\n unpackedValue[x * size + i] = value[index * size + i];\n }\n }\n unpackedAttributes[attributeName] = {size, value: unpackedValue};\n }\n\n return {\n attributes: Object.assign({}, attributes, unpackedAttributes)\n };\n}\n"],"mappings":";;;;;;;AAAO,SAASA,qBAAT,CAA+BC,QAA/B,EAAyC;EAC9C,IAAOC,OAAP,GAA8BD,QAA9B,CAAOC,OAAP;EAAA,IAAgBC,UAAhB,GAA8BF,QAA9B,CAAgBE,UAAhB;;EACA,IAAI,CAACD,OAAL,EAAc;IACZ,OAAOD,QAAP;EACD;;EAED,IAAMG,WAAW,GAAGF,OAAO,CAACG,KAAR,CAAcC,MAAlC;EACA,IAAMC,kBAAkB,GAAG,EAA3B;;EAEA,KAAK,IAAMC,aAAX,IAA4BL,UAA5B,EAAwC;IACtC,IAAMM,SAAS,GAAGN,UAAU,CAACK,aAAD,CAA5B;IACA,IAAOE,QAAP,GAAgCD,SAAhC,CAAOC,QAAP;IAAA,IAAiBL,KAAjB,GAAgCI,SAAhC,CAAiBJ,KAAjB;IAAA,IAAwBM,IAAxB,GAAgCF,SAAhC,CAAwBE,IAAxB;;IACA,IAAID,QAAQ,IAAI,CAACC,IAAjB,EAAuB;MACrB;IACD;;IACD,IAAMC,aAAa,GAAG,IAAIP,KAAK,CAACQ,WAAV,CAAsBT,WAAW,GAAGO,IAApC,CAAtB;;IACA,KAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGV,WAApB,EAAiC,EAAEU,CAAnC,EAAsC;MACpC,IAAMC,KAAK,GAAGb,OAAO,CAACG,KAAR,CAAcS,CAAd,CAAd;;MACA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,IAApB,EAA0BK,CAAC,EAA3B,EAA+B;QAC7BJ,aAAa,CAACE,CAAC,GAAGH,IAAJ,GAAWK,CAAZ,CAAb,GAA8BX,KAAK,CAACU,KAAK,GAAGJ,IAAR,GAAeK,CAAhB,CAAnC;MACD;IACF;;IACDT,kBAAkB,CAACC,aAAD,CAAlB,GAAoC;MAACG,IAAI,EAAJA,IAAD;MAAON,KAAK,EAAEO;IAAd,CAApC;EACD;;EAED,OAAO;IACLT,UAAU,EAAEc,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBf,UAAlB,EAA8BI,kBAA9B;EADP,CAAP;AAGD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"geometry.js","names":["DRAW_MODE","POINTS","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","Geometry","props","id","uid","drawMode","attributes","indices","vertexCount","userData","_setAttributes","_calculateVertexCount","attributeName","ArrayBuffer","isView","value","size","attribute","assert","_print","isIndexed","undefined","Object","assign","length","Infinity","constant","Math","min","Number","isFinite"],"sources":["../../../src/geometry/geometry.js"],"sourcesContent":["import {uid, assert} from '@luma.gl/webgl';\n\n// Rendering primitives - specify how to extract primitives from vertices.\n// NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants\nexport const DRAW_MODE = {\n POINTS: 0x0000, // draw single points.\n LINES: 0x0001, // draw lines. Each vertex connects to the one after it.\n LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.\n LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last\n TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.\n TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.\n TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.\n // Each vertex connects to the previous and the first vertex in the fan.\n};\n\nexport default class Geometry {\n static get DRAW_MODE() {\n return DRAW_MODE;\n }\n\n constructor(props = {}) {\n const {\n id = uid('geometry'),\n drawMode = DRAW_MODE.TRIANGLES,\n attributes = {},\n indices = null,\n vertexCount = null\n } = props;\n\n this.id = id;\n this.drawMode = drawMode | 0;\n this.attributes = {};\n this.userData = {};\n\n this._setAttributes(attributes, indices);\n\n this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);\n\n // stubRemovedMethods(this, [\n // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'\n // ], 'Immutable');\n\n // stubRemovedMethods(this, [\n // 'hasAttribute', 'getAttribute', 'getArray'\n // ], 'Use geometry.attributes and geometry.indices');\n\n // deprecateMethods(this, ['getAttributes'])\n }\n\n get mode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n // Return an object with all attributes plus indices added as a field.\n getAttributes() {\n return this.indices ? {indices: this.indices, ...this.attributes} : this.attributes;\n }\n\n // PRIVATE\n\n _print(attributeName) {\n return `Geometry ${this.id} attribute ${attributeName}`;\n }\n\n // Attribute\n // value: typed array\n // type: indices, vertices, uvs\n // size: elements per vertex\n // target: WebGL buffer type (string or constant)\n _setAttributes(attributes, indices) {\n if (indices) {\n this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;\n }\n\n for (const attributeName in attributes) {\n let attribute = attributes[attributeName];\n\n // Wrap \"unwrapped\" arrays and try to autodetect their type\n attribute = ArrayBuffer.isView(attribute) ? {value: attribute} : attribute;\n\n assert(\n ArrayBuffer.isView(attribute.value),\n `${this._print(attributeName)}: must be typed array or object with value as typed array`\n );\n\n if ((attributeName === 'POSITION' || attributeName === 'positions') && !attribute.size) {\n attribute.size = 3;\n }\n\n // Move indices to separate field\n if (attributeName === 'indices') {\n assert(!this.indices);\n this.indices = attribute;\n } else {\n this.attributes[attributeName] = attribute;\n }\n }\n\n if (this.indices && this.indices.isIndexed !== undefined) {\n this.indices = Object.assign({}, this.indices);\n delete this.indices.isIndexed;\n }\n\n return this;\n }\n\n _calculateVertexCount(attributes, indices) {\n if (indices) {\n return indices.value.length;\n }\n let vertexCount = Infinity;\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const {value, size, constant} = attribute;\n if (!constant && value && size >= 1) {\n vertexCount = Math.min(vertexCount, value.length / size);\n }\n }\n\n assert(Number.isFinite(vertexCount));\n return vertexCount;\n }\n}\n"],"mappings":"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"}
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.js"],"sourcesContent":["// CORE\nexport {default as AnimationLoop} from './lib/animation-loop';\nexport {default as Model} from './lib/model';\nexport {default as ProgramManager} from './lib/program-manager';\nexport {default as Transform} from './transform/transform';\n\n// Geometries\nexport {default as Geometry} from './geometry/geometry';\nexport {default as ConeGeometry} from './geometries/cone-geometry';\nexport {default as CubeGeometry} from './geometries/cube-geometry';\nexport {default as CylinderGeometry} from './geometries/cylinder-geometry';\nexport {default as IcoSphereGeometry} from './geometries/ico-sphere-geometry';\nexport {default as PlaneGeometry} from './geometries/plane-geometry';\nexport {default as SphereGeometry} from './geometries/sphere-geometry';\nexport {default as TruncatedConeGeometry} from './geometries/truncated-cone-geometry';\n\n// Animation\nexport {Timeline} from './animation/timeline';\nexport {KeyFrames} from './animation/key-frames';\n\n// Utils\nexport {default as ClipSpace} from './utils/clip-space';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AAGA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/animation-loop.js"],"names":["isPage","document","statIdCounter","AnimationLoop","props","onCreateContext","opts","onAddHTML","onInitialize","onRender","onFinalize","onError","gl","glOptions","debug","createFramebuffer","autoResizeViewport","autoResizeDrawingBuffer","stats","lumaStats","get","useDevicePixels","log","deprecated","useDevicePixelRatio","needsRedraw","timeline","cpuTime","gpuTime","frameRate","_initialized","_running","_animationFrameId","_nextFramePromise","_resolveNextFrame","_cpuStartTime","setProps","start","bind","stop","_pageLoadPromise","_onMousemove","_onMouseleave","_setDisplay","reason","startPromise","_getPageLoadPromise","then","_createWebGLContext","_createFramebuffer","_startEventHandling","_initializeCallbackData","_updateCallbackData","_resizeCanvasDrawingBuffer","_resizeViewport","_gpuTimeQuery","Query","isSupported","animationProps","appContext","_addCallbackData","_startLoop","catch","isContextLost","_beginTimers","_setupFrame","_renderFrame","_clearNeedsRedraw","offScreen","commit","_endTimers","_finalizeCallbackData","_cancelAnimationFrame","setNeedsRedraw","Promise","resolve","waitForRender","canvas","toDataURL","id","defaultValue","element","getElementById","Number","value","removed","renderFrame","redraw","_requestAnimationFrame","reject","readyState","window","addEventListener","display","delete","animationLoop","animationFrameId","cancelAnimationFrame","renderFrameCallback","requestAnimationFrame","undefined","_resizeFramebuffer","framebuffer","startTime","Date","now","engineTime","tick","tock","time","_timeline","_loop","_animationLoop","_mousePosition","_getSizeAndAspect","width","height","aspect","update","Math","floor","getTime","_offScreen","Object","assign","OffscreenCanvas","Error","_createInfoDiv","wrapperDiv","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","drawingBufferWidth","drawingBufferHeight","clientHeight","clientWidth","viewport","Framebuffer","resize","timeEnd","timeStart","isResultAvailable","isTimerDisjoint","addTime","getTimerMilliseconds","beginTimeElapsedQuery","end","e","offsetX","offsetY"],"mappings":"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","sourcesContent":["import {\n isWebGL,\n createGLContext,\n instrumentGLContext,\n resizeGLContext,\n resetParameters\n} from '@luma.gl/gltools';\n\nimport {\n requestAnimationFrame,\n cancelAnimationFrame,\n Query,\n lumaStats,\n // TODO - remove dependency on framebuffer (bundle size impact)\n Framebuffer,\n log,\n assert\n} from '@luma.gl/webgl';\n\nimport {isBrowser} from '@probe.gl/env';\n\nconst isPage = isBrowser() && typeof document !== 'undefined';\n\nlet statIdCounter = 0;\n\nexport default class AnimationLoop {\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props = {}) {\n const {\n onCreateContext = opts => createGLContext(opts),\n onAddHTML = null,\n onInitialize = () => {},\n onRender = () => {},\n onFinalize = () => {},\n onError,\n\n gl = null,\n glOptions = {},\n debug = false,\n\n createFramebuffer = false,\n\n // view parameters\n autoResizeViewport = true,\n autoResizeDrawingBuffer = true,\n stats = lumaStats.get(`animation-loop-${statIdCounter++}`)\n } = props;\n\n let {useDevicePixels = true} = props;\n\n if ('useDevicePixelRatio' in props) {\n log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n // @ts-ignore\n useDevicePixels = props.useDevicePixelRatio;\n }\n\n this.props = {\n onCreateContext,\n onAddHTML,\n onInitialize,\n onRender,\n onFinalize,\n onError,\n\n gl,\n glOptions,\n debug,\n createFramebuffer\n };\n\n // state\n this.gl = gl;\n this.needsRedraw = null;\n this.timeline = null;\n this.stats = 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._initialized = false;\n this._running = false;\n this._animationFrameId = null;\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._cpuStartTime = 0;\n\n this.setProps({\n autoResizeViewport,\n 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._pageLoadPromise = null;\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n delete() {\n this.stop();\n this._setDisplay(null);\n }\n\n setNeedsRedraw(reason) {\n assert(typeof reason === 'string');\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n setProps(props) {\n if ('autoResizeViewport' in props) {\n this.autoResizeViewport = props.autoResizeViewport;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n }\n if ('useDevicePixels' in props) {\n this.useDevicePixels = props.useDevicePixels;\n }\n return this;\n }\n\n // Starts a render loop if not already running\n // @param {Object} context - contains frame specific info (E.g. tick, width, height, etc)\n start(opts = {}) {\n if (this._running) {\n return this;\n }\n this._running = true;\n // console.debug(`Starting ${this.constructor.name}`);\n // Wait for start promise before rendering frame\n const startPromise = this._getPageLoadPromise()\n .then(() => {\n if (!this._running || this._initialized) {\n return null;\n }\n\n // Create the WebGL context\n this._createWebGLContext(opts);\n this._createFramebuffer();\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeCallbackData();\n this._updateCallbackData();\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 this._initialized = true;\n\n // Note: onIntialize can return a promise (in case it needs to load resources)\n return this.onInitialize(this.animationProps);\n })\n .then(appContext => {\n if (this._running) {\n this._addCallbackData(appContext || {});\n if (appContext !== false) {\n this._startLoop();\n }\n }\n });\n\n if (this.props.onError) {\n startPromise.catch(this.props.onError);\n }\n\n return this;\n }\n\n // Redraw now\n redraw() {\n if (this.isContextLost()) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateCallbackData();\n\n this._renderFrame(this.animationProps);\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit\n // Chrome's offscreen canvas does not require gl.commit\n if (this.offScreen && this.gl.commit) {\n this.gl.commit();\n }\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 this._finalizeCallbackData();\n this._cancelAnimationFrame(this._animationFrameId);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._animationFrameId = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline) {\n this.timeline = timeline;\n\n return this.timeline;\n }\n\n detachTimeline() {\n this.timeline = null;\n }\n\n waitForRender() {\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() {\n this.setNeedsRedraw('toDataURL');\n\n await this.waitForRender();\n\n return this.gl.canvas.toDataURL();\n }\n\n isContextLost() {\n return this.gl.isContextLost();\n }\n\n onCreateContext(...args) {\n return this.props.onCreateContext(...args);\n }\n\n onInitialize(...args) {\n return this.props.onInitialize(...args);\n }\n\n onRender(...args) {\n return this.props.onRender(...args);\n }\n\n onFinalize(...args) {\n return this.props.onFinalize(...args);\n }\n\n // DEPRECATED/REMOVED METHODS\n\n getHTMLControlValue(id, defaultValue = 1) {\n const element = document.getElementById(id);\n // @ts-ignore Not all html elements have value\n return element ? Number(element.value) : defaultValue;\n }\n\n // Update parameters\n setViewParameters() {\n log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n return this;\n }\n\n // PRIVATE METHODS\n\n _startLoop() {\n const renderFrame = () => {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n };\n\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n }\n\n // PRIVATE METHODS\n\n _getPageLoadPromise() {\n if (!this._pageLoadPromise) {\n this._pageLoadPromise = isPage\n ? new Promise((resolve, reject) => {\n if (isPage && document.readyState === 'complete') {\n resolve(document);\n return;\n }\n window.addEventListener('load', () => {\n resolve(document);\n });\n })\n : Promise.resolve({});\n }\n return this._pageLoadPromise;\n }\n\n _setDisplay(display) {\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 _cancelAnimationFrame(animationFrameId) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.cancelAnimationFrame) {\n return this.display.cancelAnimationFrame(animationFrameId);\n }\n\n return cancelAnimationFrame(animationFrameId);\n }\n\n _requestAnimationFrame(renderFrameCallback) {\n if (this._running) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.requestAnimationFrame) {\n return this.display.requestAnimationFrame(renderFrameCallback);\n }\n\n return requestAnimationFrame(renderFrameCallback);\n }\n return undefined;\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(...args) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(...args);\n return;\n }\n\n // call callback\n this.onRender(...args);\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = null;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n this._resizeFramebuffer();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeCallbackData() {\n this.animationProps = {\n gl: this.gl,\n\n stop: this.stop,\n canvas: this.gl.canvas,\n framebuffer: this.framebuffer,\n\n // Initial values\n useDevicePixels: this.useDevicePixels,\n needsRedraw: null,\n\n // Animation props\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Timeline time for back compatibility\n time: 0,\n\n // Experimental\n _timeline: this.timeline,\n _loop: this,\n _animationLoop: this,\n _mousePosition: null // Event props\n };\n }\n\n // Update the context object that will be passed to app callbacks\n _updateCallbackData() {\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 // experimental\n this.animationProps._offScreen = this.offScreen;\n }\n\n _finalizeCallbackData() {\n // call callback\n this.onFinalize(this.animationProps);\n // end callback\n }\n\n // Add application's data to the app context object\n _addCallbackData(appContext) {\n if (typeof appContext === 'object' && appContext !== null) {\n this.animationProps = Object.assign({}, this.animationProps, appContext);\n }\n }\n\n // Either uses supplied or existing context, or calls provided callback to create one\n _createWebGLContext(opts) {\n this.offScreen =\n opts.canvas &&\n typeof OffscreenCanvas !== 'undefined' &&\n opts.canvas instanceof OffscreenCanvas;\n\n // Create the WebGL context if necessary\n opts = Object.assign({}, opts, this.props.glOptions);\n this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n if (!isWebGL(this.gl)) {\n throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n }\n\n // Reset the WebGL context.\n resetParameters(this.gl);\n\n this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.gl.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 wrapperDiv.appendChild(this.gl.canvas);\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect() {\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const width = this.gl.drawingBufferWidth;\n const height = this.gl.drawingBufferHeight;\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const {canvas} = this.gl;\n\n if (canvas && canvas.clientHeight) {\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 if (this.autoResizeViewport) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n }\n\n // Resize the render buffer of the canvas to match canvas client size\n // Optionally multiplying with devicePixel ratio\n _resizeCanvasDrawingBuffer() {\n if (this.autoResizeDrawingBuffer) {\n resizeGLContext(this.gl, {useDevicePixels: this.useDevicePixels});\n }\n }\n\n // TBD - deprecated?\n _createFramebuffer() {\n // Setup default framebuffer\n if (this.props.createFramebuffer) {\n this.framebuffer = new Framebuffer(this.gl);\n }\n }\n\n _resizeFramebuffer() {\n if (this.framebuffer) {\n this.framebuffer.resize({\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n });\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 const {canvas} = this.gl;\n if (canvas) {\n canvas.addEventListener('mousemove', this._onMousemove);\n canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(e) {\n this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n }\n _onMouseleave(e) {\n this.animationProps._mousePosition = null;\n }\n}\n"],"file":"animation-loop.js"}
|
|
1
|
+
{"version":3,"file":"animation-loop.js","names":["isPage","isBrowser","document","statIdCounter","AnimationLoop","props","onCreateContext","opts","createGLContext","onAddHTML","onInitialize","onRender","onFinalize","onError","gl","glOptions","debug","createFramebuffer","autoResizeViewport","autoResizeDrawingBuffer","stats","lumaStats","get","useDevicePixels","log","deprecated","useDevicePixelRatio","needsRedraw","timeline","cpuTime","gpuTime","frameRate","_initialized","_running","_animationFrameId","_nextFramePromise","_resolveNextFrame","_cpuStartTime","setProps","start","bind","stop","_pageLoadPromise","_onMousemove","_onMouseleave","_setDisplay","reason","assert","startPromise","_getPageLoadPromise","then","_createWebGLContext","_createFramebuffer","_startEventHandling","_initializeCallbackData","_updateCallbackData","_resizeCanvasDrawingBuffer","_resizeViewport","_gpuTimeQuery","Query","isSupported","animationProps","appContext","_addCallbackData","_startLoop","catch","isContextLost","_beginTimers","_setupFrame","_renderFrame","_clearNeedsRedraw","offScreen","commit","_endTimers","_finalizeCallbackData","_cancelAnimationFrame","setNeedsRedraw","Promise","resolve","waitForRender","canvas","toDataURL","id","defaultValue","element","getElementById","Number","value","removed","renderFrame","redraw","_requestAnimationFrame","reject","readyState","window","addEventListener","display","delete","animationLoop","animationFrameId","cancelAnimationFrame","renderFrameCallback","requestAnimationFrame","undefined","_resizeFramebuffer","framebuffer","startTime","Date","now","engineTime","tick","tock","time","_timeline","_loop","_animationLoop","_mousePosition","_getSizeAndAspect","width","height","aspect","update","Math","floor","getTime","_offScreen","Object","assign","OffscreenCanvas","instrumentGLContext","isWebGL","Error","resetParameters","_createInfoDiv","wrapperDiv","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","drawingBufferWidth","drawingBufferHeight","clientHeight","clientWidth","viewport","resizeGLContext","Framebuffer","resize","timeEnd","timeStart","isResultAvailable","isTimerDisjoint","addTime","getTimerMilliseconds","beginTimeElapsedQuery","end","e","offsetX","offsetY"],"sources":["../../../src/lib/animation-loop.js"],"sourcesContent":["import {\n isWebGL,\n createGLContext,\n instrumentGLContext,\n resizeGLContext,\n resetParameters\n} from '@luma.gl/gltools';\n\nimport {\n requestAnimationFrame,\n cancelAnimationFrame,\n Query,\n lumaStats,\n // TODO - remove dependency on framebuffer (bundle size impact)\n Framebuffer,\n log,\n assert\n} from '@luma.gl/webgl';\n\nimport {isBrowser} from '@probe.gl/env';\n\nconst isPage = isBrowser() && typeof document !== 'undefined';\n\nlet statIdCounter = 0;\n\nexport default class AnimationLoop {\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props = {}) {\n const {\n onCreateContext = opts => createGLContext(opts),\n onAddHTML = null,\n onInitialize = () => {},\n onRender = () => {},\n onFinalize = () => {},\n onError,\n\n gl = null,\n glOptions = {},\n debug = false,\n\n createFramebuffer = false,\n\n // view parameters\n autoResizeViewport = true,\n autoResizeDrawingBuffer = true,\n stats = lumaStats.get(`animation-loop-${statIdCounter++}`)\n } = props;\n\n let {useDevicePixels = true} = props;\n\n if ('useDevicePixelRatio' in props) {\n log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n // @ts-ignore\n useDevicePixels = props.useDevicePixelRatio;\n }\n\n this.props = {\n onCreateContext,\n onAddHTML,\n onInitialize,\n onRender,\n onFinalize,\n onError,\n\n gl,\n glOptions,\n debug,\n createFramebuffer\n };\n\n // state\n this.gl = gl;\n this.needsRedraw = null;\n this.timeline = null;\n this.stats = 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._initialized = false;\n this._running = false;\n this._animationFrameId = null;\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._cpuStartTime = 0;\n\n this.setProps({\n autoResizeViewport,\n 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._pageLoadPromise = null;\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n delete() {\n this.stop();\n this._setDisplay(null);\n }\n\n setNeedsRedraw(reason) {\n assert(typeof reason === 'string');\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n setProps(props) {\n if ('autoResizeViewport' in props) {\n this.autoResizeViewport = props.autoResizeViewport;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n }\n if ('useDevicePixels' in props) {\n this.useDevicePixels = props.useDevicePixels;\n }\n return this;\n }\n\n // Starts a render loop if not already running\n // @param {Object} context - contains frame specific info (E.g. tick, width, height, etc)\n start(opts = {}) {\n if (this._running) {\n return this;\n }\n this._running = true;\n // console.debug(`Starting ${this.constructor.name}`);\n // Wait for start promise before rendering frame\n const startPromise = this._getPageLoadPromise()\n .then(() => {\n if (!this._running || this._initialized) {\n return null;\n }\n\n // Create the WebGL context\n this._createWebGLContext(opts);\n this._createFramebuffer();\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeCallbackData();\n this._updateCallbackData();\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 this._initialized = true;\n\n // Note: onIntialize can return a promise (in case it needs to load resources)\n return this.onInitialize(this.animationProps);\n })\n .then(appContext => {\n if (this._running) {\n this._addCallbackData(appContext || {});\n if (appContext !== false) {\n this._startLoop();\n }\n }\n });\n\n if (this.props.onError) {\n startPromise.catch(this.props.onError);\n }\n\n return this;\n }\n\n // Redraw now\n redraw() {\n if (this.isContextLost()) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateCallbackData();\n\n this._renderFrame(this.animationProps);\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit\n // Chrome's offscreen canvas does not require gl.commit\n if (this.offScreen && this.gl.commit) {\n this.gl.commit();\n }\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 this._finalizeCallbackData();\n this._cancelAnimationFrame(this._animationFrameId);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._animationFrameId = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline) {\n this.timeline = timeline;\n\n return this.timeline;\n }\n\n detachTimeline() {\n this.timeline = null;\n }\n\n waitForRender() {\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() {\n this.setNeedsRedraw('toDataURL');\n\n await this.waitForRender();\n\n return this.gl.canvas.toDataURL();\n }\n\n isContextLost() {\n return this.gl.isContextLost();\n }\n\n onCreateContext(...args) {\n return this.props.onCreateContext(...args);\n }\n\n onInitialize(...args) {\n return this.props.onInitialize(...args);\n }\n\n onRender(...args) {\n return this.props.onRender(...args);\n }\n\n onFinalize(...args) {\n return this.props.onFinalize(...args);\n }\n\n // DEPRECATED/REMOVED METHODS\n\n getHTMLControlValue(id, defaultValue = 1) {\n const element = document.getElementById(id);\n // @ts-ignore Not all html elements have value\n return element ? Number(element.value) : defaultValue;\n }\n\n // Update parameters\n setViewParameters() {\n log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n return this;\n }\n\n // PRIVATE METHODS\n\n _startLoop() {\n const renderFrame = () => {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n };\n\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n }\n\n // PRIVATE METHODS\n\n _getPageLoadPromise() {\n if (!this._pageLoadPromise) {\n this._pageLoadPromise = isPage\n ? new Promise((resolve, reject) => {\n if (isPage && document.readyState === 'complete') {\n resolve(document);\n return;\n }\n window.addEventListener('load', () => {\n resolve(document);\n });\n })\n : Promise.resolve({});\n }\n return this._pageLoadPromise;\n }\n\n _setDisplay(display) {\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 _cancelAnimationFrame(animationFrameId) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.cancelAnimationFrame) {\n return this.display.cancelAnimationFrame(animationFrameId);\n }\n\n return cancelAnimationFrame(animationFrameId);\n }\n\n _requestAnimationFrame(renderFrameCallback) {\n if (this._running) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.requestAnimationFrame) {\n return this.display.requestAnimationFrame(renderFrameCallback);\n }\n\n return requestAnimationFrame(renderFrameCallback);\n }\n return undefined;\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(...args) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(...args);\n return;\n }\n\n // call callback\n this.onRender(...args);\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = null;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n this._resizeFramebuffer();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeCallbackData() {\n this.animationProps = {\n gl: this.gl,\n\n stop: this.stop,\n canvas: this.gl.canvas,\n framebuffer: this.framebuffer,\n\n // Initial values\n useDevicePixels: this.useDevicePixels,\n needsRedraw: null,\n\n // Animation props\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Timeline time for back compatibility\n time: 0,\n\n // Experimental\n _timeline: this.timeline,\n _loop: this,\n _animationLoop: this,\n _mousePosition: null // Event props\n };\n }\n\n // Update the context object that will be passed to app callbacks\n _updateCallbackData() {\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 // experimental\n this.animationProps._offScreen = this.offScreen;\n }\n\n _finalizeCallbackData() {\n // call callback\n this.onFinalize(this.animationProps);\n // end callback\n }\n\n // Add application's data to the app context object\n _addCallbackData(appContext) {\n if (typeof appContext === 'object' && appContext !== null) {\n this.animationProps = Object.assign({}, this.animationProps, appContext);\n }\n }\n\n // Either uses supplied or existing context, or calls provided callback to create one\n _createWebGLContext(opts) {\n this.offScreen =\n opts.canvas &&\n typeof OffscreenCanvas !== 'undefined' &&\n opts.canvas instanceof OffscreenCanvas;\n\n // Create the WebGL context if necessary\n opts = Object.assign({}, opts, this.props.glOptions);\n this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n if (!isWebGL(this.gl)) {\n throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n }\n\n // Reset the WebGL context.\n resetParameters(this.gl);\n\n this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.gl.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 wrapperDiv.appendChild(this.gl.canvas);\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect() {\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const width = this.gl.drawingBufferWidth;\n const height = this.gl.drawingBufferHeight;\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const {canvas} = this.gl;\n\n if (canvas && canvas.clientHeight) {\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 if (this.autoResizeViewport) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n }\n\n // Resize the render buffer of the canvas to match canvas client size\n // Optionally multiplying with devicePixel ratio\n _resizeCanvasDrawingBuffer() {\n if (this.autoResizeDrawingBuffer) {\n resizeGLContext(this.gl, {useDevicePixels: this.useDevicePixels});\n }\n }\n\n // TBD - deprecated?\n _createFramebuffer() {\n // Setup default framebuffer\n if (this.props.createFramebuffer) {\n this.framebuffer = new Framebuffer(this.gl);\n }\n }\n\n _resizeFramebuffer() {\n if (this.framebuffer) {\n this.framebuffer.resize({\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n });\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 const {canvas} = this.gl;\n if (canvas) {\n canvas.addEventListener('mousemove', this._onMousemove);\n canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(e) {\n this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n }\n _onMouseleave(e) {\n this.animationProps._mousePosition = null;\n }\n}\n"],"mappings":"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"}
|