@babylonjs/lite-compat 0.0.1-preview.54961 → 1.3.0-preview
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/LICENSE +201 -0
- package/README.md +174 -0
- package/index.d.ts +13 -1
- package/index.js +2 -5
- package/index.js.map +1 -1
- package/{meshes-BQZyNGmT.js → meshes-BkNs_oK5.js} +74 -9
- package/meshes-BkNs_oK5.js.map +1 -0
- package/navigation.d.ts +13 -1
- package/navigation.js +1 -1
- package/package.json +4 -4
- package/meshes-BQZyNGmT.js.map +0 -1
package/meshes-BQZyNGmT.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meshes-BQZyNGmT.js","sources":["../src/error.ts","../src/math/vector.ts","../src/math/quaternion.ts","../src/math/matrix.ts","../src/node/node.ts","../src/meshes/meshes.ts"],"sourcesContent":["/**\n * Error thrown when Babylon.js code reaches an API surface that the Babylon Lite\n * compatibility layer cannot (or does not yet) support.\n *\n * The compat layer intentionally favours a loud, discoverable failure over a\n * silent wrong result: if a ported scene hits one of these, the porting gap is\n * surfaced immediately with a pointer to the reason and (where relevant) the\n * native Lite API to use instead.\n */\nexport class LiteCompatError extends Error {\n public constructor(api: string, detail?: string) {\n super(detail ? `'${api}' is not supported by the Babylon Lite compat layer. ${detail}` : `'${api}' is not supported by the Babylon Lite compat layer.`);\n this.name = \"LiteCompatError\";\n }\n}\n\n/** Throw a {@link LiteCompatError} for an unsupported API. */\nexport function unsupported(api: string, detail?: string): never {\n throw new LiteCompatError(api, detail);\n}\n","/**\n * Babylon.js-compatible vector classes (`Vector2`, `Vector3`, `Vector4`).\n *\n * These are mutable classes backed by plain `x`/`y`/`z`/`w` fields. Because a\n * `Vector3` is structurally `{ x, y, z }`, it can be passed directly anywhere\n * the Babylon Lite API expects a `Vec3`. For APIs that want a tuple, use\n * `asArray()`.\n */\n\nimport type { Matrix } from \"./matrix.js\";\n\nexport class Vector2 {\n public constructor(\n public x: number = 0,\n public y: number = 0\n ) {}\n\n public set(x: number, y: number): this {\n this.x = x;\n this.y = y;\n return this;\n }\n\n public copyFrom(source: Vector2): this {\n this.x = source.x;\n this.y = source.y;\n return this;\n }\n\n public copyFromFloats(x: number, y: number): this {\n this.x = x;\n this.y = y;\n return this;\n }\n\n public add(other: Vector2): Vector2 {\n return new Vector2(this.x + other.x, this.y + other.y);\n }\n\n public addInPlace(other: Vector2): this {\n this.x += other.x;\n this.y += other.y;\n return this;\n }\n\n public subtract(other: Vector2): Vector2 {\n return new Vector2(this.x - other.x, this.y - other.y);\n }\n\n public scale(scale: number): Vector2 {\n return new Vector2(this.x * scale, this.y * scale);\n }\n\n public scaleInPlace(scale: number): this {\n this.x *= scale;\n this.y *= scale;\n return this;\n }\n\n public length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n public lengthSquared(): number {\n return this.x * this.x + this.y * this.y;\n }\n\n public normalize(): this {\n const len = this.length();\n if (len !== 0) {\n this.x /= len;\n this.y /= len;\n }\n return this;\n }\n\n public clone(): Vector2 {\n return new Vector2(this.x, this.y);\n }\n\n public equals(other: Vector2): boolean {\n return this.x === other.x && this.y === other.y;\n }\n\n public asArray(): [number, number] {\n return [this.x, this.y];\n }\n\n public static Zero(): Vector2 {\n return new Vector2(0, 0);\n }\n\n public static One(): Vector2 {\n return new Vector2(1, 1);\n }\n\n public static Dot(a: Vector2, b: Vector2): number {\n return a.x * b.x + a.y * b.y;\n }\n}\n\nexport class Vector3 {\n public constructor(\n public x: number = 0,\n public y: number = 0,\n public z: number = 0\n ) {}\n\n public set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n\n public setAll(value: number): this {\n this.x = this.y = this.z = value;\n return this;\n }\n\n public copyFrom(source: Vector3): this {\n this.x = source.x;\n this.y = source.y;\n this.z = source.z;\n return this;\n }\n\n public copyFromFloats(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n\n public add(other: Vector3): Vector3 {\n return new Vector3(this.x + other.x, this.y + other.y, this.z + other.z);\n }\n\n public addInPlace(other: Vector3): this {\n this.x += other.x;\n this.y += other.y;\n this.z += other.z;\n return this;\n }\n\n public addInPlaceFromFloats(x: number, y: number, z: number): this {\n this.x += x;\n this.y += y;\n this.z += z;\n return this;\n }\n\n public subtract(other: Vector3): Vector3 {\n return new Vector3(this.x - other.x, this.y - other.y, this.z - other.z);\n }\n\n public subtractInPlace(other: Vector3): this {\n this.x -= other.x;\n this.y -= other.y;\n this.z -= other.z;\n return this;\n }\n\n public multiply(other: Vector3): Vector3 {\n return new Vector3(this.x * other.x, this.y * other.y, this.z * other.z);\n }\n\n public scale(scale: number): Vector3 {\n return new Vector3(this.x * scale, this.y * scale, this.z * scale);\n }\n\n public scaleInPlace(scale: number): this {\n this.x *= scale;\n this.y *= scale;\n this.z *= scale;\n return this;\n }\n\n public negate(): Vector3 {\n return new Vector3(-this.x, -this.y, -this.z);\n }\n\n public length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n }\n\n public lengthSquared(): number {\n return this.x * this.x + this.y * this.y + this.z * this.z;\n }\n\n public normalize(): this {\n const len = this.length();\n if (len !== 0) {\n this.x /= len;\n this.y /= len;\n this.z /= len;\n }\n return this;\n }\n\n public clone(): Vector3 {\n return new Vector3(this.x, this.y, this.z);\n }\n\n public equals(other: Vector3): boolean {\n return this.x === other.x && this.y === other.y && this.z === other.z;\n }\n\n public equalsWithEpsilon(other: Vector3, epsilon = 1e-6): boolean {\n return Math.abs(this.x - other.x) <= epsilon && Math.abs(this.y - other.y) <= epsilon && Math.abs(this.z - other.z) <= epsilon;\n }\n\n public asArray(): [number, number, number] {\n return [this.x, this.y, this.z];\n }\n\n public toArray(array: number[], index = 0): this {\n array[index] = this.x;\n array[index + 1] = this.y;\n array[index + 2] = this.z;\n return this;\n }\n\n public static Zero(): Vector3 {\n return new Vector3(0, 0, 0);\n }\n\n public static One(): Vector3 {\n return new Vector3(1, 1, 1);\n }\n\n public static Up(): Vector3 {\n return new Vector3(0, 1, 0);\n }\n\n public static Down(): Vector3 {\n return new Vector3(0, -1, 0);\n }\n\n public static Forward(): Vector3 {\n return new Vector3(0, 0, 1);\n }\n\n public static Backward(): Vector3 {\n return new Vector3(0, 0, -1);\n }\n\n public static Right(): Vector3 {\n return new Vector3(1, 0, 0);\n }\n\n public static Left(): Vector3 {\n return new Vector3(-1, 0, 0);\n }\n\n public static FromArray(array: ArrayLike<number>, offset = 0): Vector3 {\n return new Vector3(array[offset] ?? 0, array[offset + 1] ?? 0, array[offset + 2] ?? 0);\n }\n\n public static Dot(a: Vector3, b: Vector3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n }\n\n public static Cross(a: Vector3, b: Vector3): Vector3 {\n return new Vector3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);\n }\n\n public static Distance(a: Vector3, b: Vector3): number {\n return Math.sqrt(Vector3.DistanceSquared(a, b));\n }\n\n public static DistanceSquared(a: Vector3, b: Vector3): number {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return dx * dx + dy * dy + dz * dz;\n }\n\n public static Lerp(start: Vector3, end: Vector3, amount: number): Vector3 {\n return new Vector3(start.x + (end.x - start.x) * amount, start.y + (end.y - start.y) * amount, start.z + (end.z - start.z) * amount);\n }\n\n /** Midpoint between two vectors. */\n public static Center(a: Vector3, b: Vector3): Vector3 {\n return new Vector3((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);\n }\n\n /** Midpoint between two vectors, written into `ref`. */\n public static CenterToRef(a: Vector3, b: Vector3, ref: Vector3): Vector3 {\n return ref.set((a.x + b.x) / 2, (a.y + b.y) / 2, (a.z + b.z) / 2);\n }\n\n public static Normalize(vector: Vector3): Vector3 {\n return vector.clone().normalize();\n }\n\n public static Minimize(a: Vector3, b: Vector3): Vector3 {\n return new Vector3(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z));\n }\n\n public static Maximize(a: Vector3, b: Vector3): Vector3 {\n return new Vector3(Math.max(a.x, b.x), Math.max(a.y, b.y), Math.max(a.z, b.z));\n }\n\n /** Transform a coordinate (point) by a matrix using the row-vector convention. */\n public static TransformCoordinates(vector: Vector3, transformation: Matrix): Vector3 {\n const m = transformation.m;\n const x = vector.x;\n const y = vector.y;\n const z = vector.z;\n const rx = x * m[0]! + y * m[4]! + z * m[8]! + m[12]!;\n const ry = x * m[1]! + y * m[5]! + z * m[9]! + m[13]!;\n const rz = x * m[2]! + y * m[6]! + z * m[10]! + m[14]!;\n const rw = 1 / (x * m[3]! + y * m[7]! + z * m[11]! + m[15]!);\n return new Vector3(rx * rw, ry * rw, rz * rw);\n }\n\n /** Transform a direction (normal) by a matrix, ignoring translation. */\n public static TransformNormal(vector: Vector3, transformation: Matrix): Vector3 {\n const m = transformation.m;\n const x = vector.x;\n const y = vector.y;\n const z = vector.z;\n return new Vector3(x * m[0]! + y * m[4]! + z * m[8]!, x * m[1]! + y * m[5]! + z * m[9]!, x * m[2]! + y * m[6]! + z * m[10]!);\n }\n}\n\n/** Minimal live 3-component backing (Babylon Lite's `ObservableVec3`). */\ninterface LiveVec3 {\n x: number;\n y: number;\n z: number;\n}\n\n/**\n * @internal A `Vector3` whose `x`/`y`/`z` read and write **through** to a live\n * Babylon Lite vector (`ObservableVec3`). This lets compat code expose\n * `mesh.position` / `rotation` / `scaling` as a real `Vector3` — so inherited\n * in-place methods (`scaleInPlace`, `addInPlace`, `set`, …) mutate the Lite node\n * and trigger its dirty tracking, matching Babylon.js's live-transform semantics.\n *\n * The accessors are installed with `Object.defineProperty` **after** `super()`,\n * which redefines the own `x`/`y`/`z` data properties the base constructor created\n * (parameter properties). This is required under `useDefineForClassFields` (ES2022),\n * where overriding the accessors via a subclass field/prototype alone would be\n * shadowed by the base's own data properties.\n */\nclass LiteBackedVector3 extends Vector3 {\n public constructor(lite: LiveVec3) {\n super(0, 0, 0);\n Object.defineProperty(this, \"x\", { enumerable: true, configurable: true, get: () => lite.x, set: (v: number) => (lite.x = v) });\n Object.defineProperty(this, \"y\", { enumerable: true, configurable: true, get: () => lite.y, set: (v: number) => (lite.y = v) });\n Object.defineProperty(this, \"z\", { enumerable: true, configurable: true, get: () => lite.z, set: (v: number) => (lite.z = v) });\n }\n}\n\n/** One stable proxy per Lite vector, so `mesh.position === mesh.position` (Babylon.js identity parity). */\nconst _liteVec3Proxies = new WeakMap<object, Vector3>();\n\n/**\n * @internal Return the cached write-through `Vector3` proxy over a Lite\n * `ObservableVec3` (creating it on first use). Stable identity per Lite vector.\n */\nexport function liteBackedVector3(lite: LiveVec3): Vector3 {\n let proxy = _liteVec3Proxies.get(lite as object);\n if (!proxy) {\n proxy = new LiteBackedVector3(lite);\n _liteVec3Proxies.set(lite as object, proxy);\n }\n return proxy;\n}\n\nexport class Vector4 {\n public constructor(\n public x: number = 0,\n public y: number = 0,\n public z: number = 0,\n public w: number = 0\n ) {}\n\n public set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n\n public copyFrom(source: Vector4): this {\n this.x = source.x;\n this.y = source.y;\n this.z = source.z;\n this.w = source.w;\n return this;\n }\n\n public add(other: Vector4): Vector4 {\n return new Vector4(this.x + other.x, this.y + other.y, this.z + other.z, this.w + other.w);\n }\n\n public scale(scale: number): Vector4 {\n return new Vector4(this.x * scale, this.y * scale, this.z * scale, this.w * scale);\n }\n\n public length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n }\n\n public clone(): Vector4 {\n return new Vector4(this.x, this.y, this.z, this.w);\n }\n\n public equals(other: Vector4): boolean {\n return this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w;\n }\n\n public asArray(): [number, number, number, number] {\n return [this.x, this.y, this.z, this.w];\n }\n\n public static Zero(): Vector4 {\n return new Vector4(0, 0, 0, 0);\n }\n}\n","/**\n * Babylon.js-compatible `Quaternion`.\n *\n * Mutable, backed by `x`/`y`/`z`/`w` fields. Structurally compatible with the\n * Babylon Lite `{ x, y, z, w }` quaternion shape used on transform nodes.\n */\n\nimport { Vector3 } from \"./vector.js\";\n\nexport class Quaternion {\n public constructor(\n public x: number = 0,\n public y: number = 0,\n public z: number = 0,\n public w: number = 1\n ) {}\n\n public set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n\n public copyFrom(source: Quaternion): this {\n this.x = source.x;\n this.y = source.y;\n this.z = source.z;\n this.w = source.w;\n return this;\n }\n\n public multiply(other: Quaternion): Quaternion {\n return new Quaternion(\n other.w * this.x + other.x * this.w + other.y * this.z - other.z * this.y,\n other.w * this.y - other.x * this.z + other.y * this.w + other.z * this.x,\n other.w * this.z + other.x * this.y - other.y * this.x + other.z * this.w,\n other.w * this.w - other.x * this.x - other.y * this.y - other.z * this.z\n );\n }\n\n public length(): number {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n }\n\n public normalize(): this {\n const len = this.length();\n if (len !== 0) {\n const inv = 1 / len;\n this.x *= inv;\n this.y *= inv;\n this.z *= inv;\n this.w *= inv;\n }\n return this;\n }\n\n public conjugate(): Quaternion {\n return new Quaternion(-this.x, -this.y, -this.z, this.w);\n }\n\n public clone(): Quaternion {\n return new Quaternion(this.x, this.y, this.z, this.w);\n }\n\n public equals(other: Quaternion): boolean {\n return this.x === other.x && this.y === other.y && this.z === other.z && this.w === other.w;\n }\n\n public asArray(): [number, number, number, number] {\n return [this.x, this.y, this.z, this.w];\n }\n\n public toEulerAngles(): Vector3 {\n const result = new Vector3();\n const qz = this.z;\n const qx = this.x;\n const qy = this.y;\n const qw = this.w;\n\n const sqw = qw * qw;\n const sqz = qz * qz;\n const sqx = qx * qx;\n const sqy = qy * qy;\n\n const zAxisY = qy * qz - qx * qw;\n const limit = 0.4999999;\n\n if (zAxisY < -limit) {\n result.y = 2 * Math.atan2(qy, qw);\n result.x = Math.PI / 2;\n result.z = 0;\n } else if (zAxisY > limit) {\n result.y = 2 * Math.atan2(qy, qw);\n result.x = -Math.PI / 2;\n result.z = 0;\n } else {\n result.z = Math.atan2(2 * (qx * qy + qz * qw), -sqz - sqx + sqy + sqw);\n result.x = Math.asin(-2 * (qz * qy - qx * qw));\n result.y = Math.atan2(2 * (qz * qx + qy * qw), sqz - sqx - sqy + sqw);\n }\n\n return result;\n }\n\n public static Identity(): Quaternion {\n return new Quaternion(0, 0, 0, 1);\n }\n\n public static FromEulerAngles(x: number, y: number, z: number): Quaternion {\n return Quaternion.RotationYawPitchRoll(y, x, z);\n }\n\n public static RotationYawPitchRoll(yaw: number, pitch: number, roll: number): Quaternion {\n const halfRoll = roll * 0.5;\n const halfPitch = pitch * 0.5;\n const halfYaw = yaw * 0.5;\n\n const sinRoll = Math.sin(halfRoll);\n const cosRoll = Math.cos(halfRoll);\n const sinPitch = Math.sin(halfPitch);\n const cosPitch = Math.cos(halfPitch);\n const sinYaw = Math.sin(halfYaw);\n const cosYaw = Math.cos(halfYaw);\n\n return new Quaternion(\n cosYaw * sinPitch * cosRoll + sinYaw * cosPitch * sinRoll,\n sinYaw * cosPitch * cosRoll - cosYaw * sinPitch * sinRoll,\n cosYaw * cosPitch * sinRoll - sinYaw * sinPitch * cosRoll,\n cosYaw * cosPitch * cosRoll + sinYaw * sinPitch * sinRoll\n );\n }\n\n public static RotationAxis(axis: Vector3, angle: number): Quaternion {\n const sin = Math.sin(angle / 2);\n const len = axis.length() || 1;\n return new Quaternion((axis.x / len) * sin, (axis.y / len) * sin, (axis.z / len) * sin, Math.cos(angle / 2));\n }\n\n public static Slerp(left: Quaternion, right: Quaternion, amount: number): Quaternion {\n let num2: number;\n let num3: number;\n const num = amount;\n let dot = left.x * right.x + left.y * right.y + left.z * right.z + left.w * right.w;\n let flip = false;\n\n if (dot < 0) {\n flip = true;\n dot = -dot;\n }\n\n if (dot > 0.999999) {\n num3 = 1 - num;\n num2 = flip ? -num : num;\n } else {\n const angle = Math.acos(dot);\n const invSin = 1 / Math.sin(angle);\n num3 = Math.sin((1 - num) * angle) * invSin;\n num2 = flip ? -Math.sin(num * angle) * invSin : Math.sin(num * angle) * invSin;\n }\n\n return new Quaternion(num3 * left.x + num2 * right.x, num3 * left.y + num2 * right.y, num3 * left.z + num2 * right.z, num3 * left.w + num2 * right.w);\n }\n}\n","/**\n * Babylon.js-compatible `Matrix` (4x4).\n *\n * Storage and conventions match Babylon.js: a 16-element row-major `Float32Array`\n * with translation in elements 12/13/14, and the row-vector convention\n * (`v' = v · M`). `multiply(other)` applies `this` first, then `other`.\n */\n\nimport { Vector3 } from \"./vector.js\";\n\nexport class Matrix {\n public readonly m: Float32Array;\n\n public constructor() {\n this.m = new Float32Array(16);\n }\n\n public set(index: number, value: number): this {\n this.m[index] = value;\n return this;\n }\n\n public copyFrom(source: Matrix): this {\n this.m.set(source.m);\n return this;\n }\n\n public clone(): Matrix {\n const result = new Matrix();\n result.m.set(this.m);\n return result;\n }\n\n public asArray(): Float32Array {\n return this.m;\n }\n\n public toArray(): number[] {\n return Array.from(this.m);\n }\n\n /** Babylon.js `Matrix.copyToArray` — copy the 16 elements into `array` at `offset`. */\n public copyToArray(array: Float32Array | number[], offset = 0): this {\n for (let i = 0; i < 16; i++) {\n array[offset + i] = this.m[i]!;\n }\n return this;\n }\n\n public equals(other: Matrix): boolean {\n for (let i = 0; i < 16; i++) {\n if (this.m[i] !== other.m[i]) {\n return false;\n }\n }\n return true;\n }\n\n public multiply(other: Matrix): Matrix {\n return Matrix.FromValues(...multiplyValues(this.m, other.m));\n }\n\n public multiplyToRef(other: Matrix, result: Matrix): Matrix {\n const values = multiplyValues(this.m, other.m);\n result.m.set(values);\n return result;\n }\n\n public transpose(): Matrix {\n const a = this.m;\n return Matrix.FromValues(a[0]!, a[4]!, a[8]!, a[12]!, a[1]!, a[5]!, a[9]!, a[13]!, a[2]!, a[6]!, a[10]!, a[14]!, a[3]!, a[7]!, a[11]!, a[15]!);\n }\n\n public determinant(): number {\n return determinant(this.m);\n }\n\n public invert(): Matrix {\n const result = new Matrix();\n this.invertToRef(result);\n return result;\n }\n\n public invertToRef(result: Matrix): Matrix {\n const inv = invertValues(this.m);\n result.m.set(inv);\n return result;\n }\n\n public getTranslation(): Vector3 {\n return new Vector3(this.m[12]!, this.m[13]!, this.m[14]!);\n }\n\n public static FromValues(\n m0: number,\n m1: number,\n m2: number,\n m3: number,\n m4: number,\n m5: number,\n m6: number,\n m7: number,\n m8: number,\n m9: number,\n m10: number,\n m11: number,\n m12: number,\n m13: number,\n m14: number,\n m15: number\n ): Matrix {\n const result = new Matrix();\n result.m.set([m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]);\n return result;\n }\n\n public static FromArray(array: ArrayLike<number>, offset = 0): Matrix {\n const result = new Matrix();\n for (let i = 0; i < 16; i++) {\n result.m[i] = array[offset + i] ?? 0;\n }\n return result;\n }\n\n public static Identity(): Matrix {\n return Matrix.FromValues(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n public static Zero(): Matrix {\n return new Matrix();\n }\n\n public static Translation(x: number, y: number, z: number): Matrix {\n return Matrix.FromValues(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n }\n\n public static Scaling(x: number, y: number, z: number): Matrix {\n return Matrix.FromValues(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n }\n\n public static RotationX(angle: number): Matrix {\n const s = Math.sin(angle);\n const c = Math.cos(angle);\n return Matrix.FromValues(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n }\n\n public static RotationY(angle: number): Matrix {\n const s = Math.sin(angle);\n const c = Math.cos(angle);\n return Matrix.FromValues(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n }\n\n public static RotationZ(angle: number): Matrix {\n const s = Math.sin(angle);\n const c = Math.cos(angle);\n return Matrix.FromValues(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n /** Babylon.js `Matrix.LookAtLH(eye, target, up)` — left-handed view matrix. */\n public static LookAtLH(eye: Vector3, target: Vector3, up: Vector3): Matrix {\n // zaxis = normalize(target - eye)\n let zx = target.x - eye.x,\n zy = target.y - eye.y,\n zz = target.z - eye.z;\n const zl = Math.hypot(zx, zy, zz) || 1;\n zx /= zl;\n zy /= zl;\n zz /= zl;\n // xaxis = normalize(cross(up, zaxis))\n let xx = up.y * zz - up.z * zy,\n xy = up.z * zx - up.x * zz,\n xz = up.x * zy - up.y * zx;\n const xl = Math.hypot(xx, xy, xz) || 1;\n xx /= xl;\n xy /= xl;\n xz /= xl;\n // yaxis = cross(zaxis, xaxis)\n const yx = zy * xz - zz * xy,\n yy = zz * xx - zx * xz,\n yz = zx * xy - zy * xx;\n const ex = -(xx * eye.x + xy * eye.y + xz * eye.z);\n const ey = -(yx * eye.x + yy * eye.y + yz * eye.z);\n const ez = -(zx * eye.x + zy * eye.y + zz * eye.z);\n return Matrix.FromValues(xx, yx, zx, 0, xy, yy, zy, 0, xz, yz, zz, 0, ex, ey, ez, 1);\n }\n\n /** Babylon.js `Matrix.OrthoOffCenterLH(left, right, bottom, top, znear, zfar, halfZRange?)` — LH ortho projection. */\n public static OrthoOffCenterLH(left: number, right: number, bottom: number, top: number, znear: number, zfar: number, _halfZRange?: boolean): Matrix {\n const a = 2 / (right - left);\n const b = 2 / (top - bottom);\n const c = 1 / (zfar - znear);\n const tx = (left + right) / (left - right);\n const ty = (top + bottom) / (bottom - top);\n const tz = -znear * c;\n return Matrix.FromValues(a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, tx, ty, tz, 1);\n }\n\n /**\n * Babylon.js `Matrix.Compose(scale, rotation, translation)` — build a TRS matrix\n * from a scale vector, a rotation quaternion, and a translation vector (row-vector\n * convention, translation in elements 12/13/14).\n */\n public static Compose(scale: Vector3, rotation: { x: number; y: number; z: number; w: number }, translation: Vector3): Matrix {\n const { x, y, z, w } = rotation;\n const x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n const xx = x * x2,\n xy = x * y2,\n xz = x * z2,\n yy = y * y2,\n yz = y * z2,\n zz = z * z2,\n wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n const sx = scale.x,\n sy = scale.y,\n sz = scale.z;\n return Matrix.FromValues(\n (1 - (yy + zz)) * sx,\n (xy + wz) * sx,\n (xz - wy) * sx,\n 0,\n (xy - wz) * sy,\n (1 - (xx + zz)) * sy,\n (yz + wx) * sy,\n 0,\n (xz + wy) * sz,\n (yz - wx) * sz,\n (1 - (xx + yy)) * sz,\n 0,\n translation.x,\n translation.y,\n translation.z,\n 1\n );\n }\n\n /** Babylon.js `Matrix.markAsUpdated()` — Lite has no per-matrix dirty flag; no-op for parity. */\n public markAsUpdated(): this {\n return this;\n }\n}\n\ntype Mat16 = [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];\n\nfunction multiplyValues(a: Float32Array, b: Float32Array): Mat16 {\n const result = new Array<number>(16);\n for (let r = 0; r < 4; r++) {\n for (let c = 0; c < 4; c++) {\n result[r * 4 + c] = a[r * 4]! * b[c]! + a[r * 4 + 1]! * b[4 + c]! + a[r * 4 + 2]! * b[8 + c]! + a[r * 4 + 3]! * b[12 + c]!;\n }\n }\n return result as Mat16;\n}\n\nfunction determinant(m: Float32Array): number {\n const m00 = m[0]!,\n m01 = m[1]!,\n m02 = m[2]!,\n m03 = m[3]!;\n const m10 = m[4]!,\n m11 = m[5]!,\n m12 = m[6]!,\n m13 = m[7]!;\n const m20 = m[8]!,\n m21 = m[9]!,\n m22 = m[10]!,\n m23 = m[11]!;\n const m30 = m[12]!,\n m31 = m[13]!,\n m32 = m[14]!,\n m33 = m[15]!;\n\n const b00 = m00 * m11 - m01 * m10;\n const b01 = m00 * m12 - m02 * m10;\n const b02 = m00 * m13 - m03 * m10;\n const b03 = m01 * m12 - m02 * m11;\n const b04 = m01 * m13 - m03 * m11;\n const b05 = m02 * m13 - m03 * m12;\n const b06 = m20 * m31 - m21 * m30;\n const b07 = m20 * m32 - m22 * m30;\n const b08 = m20 * m33 - m23 * m30;\n const b09 = m21 * m32 - m22 * m31;\n const b10 = m21 * m33 - m23 * m31;\n const b11 = m22 * m33 - m23 * m32;\n\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\n\nfunction invertValues(m: Float32Array): Mat16 {\n const m00 = m[0]!,\n m01 = m[1]!,\n m02 = m[2]!,\n m03 = m[3]!;\n const m10 = m[4]!,\n m11 = m[5]!,\n m12 = m[6]!,\n m13 = m[7]!;\n const m20 = m[8]!,\n m21 = m[9]!,\n m22 = m[10]!,\n m23 = m[11]!;\n const m30 = m[12]!,\n m31 = m[13]!,\n m32 = m[14]!,\n m33 = m[15]!;\n\n const b00 = m00 * m11 - m01 * m10;\n const b01 = m00 * m12 - m02 * m10;\n const b02 = m00 * m13 - m03 * m10;\n const b03 = m01 * m12 - m02 * m11;\n const b04 = m01 * m13 - m03 * m11;\n const b05 = m02 * m13 - m03 * m12;\n const b06 = m20 * m31 - m21 * m30;\n const b07 = m20 * m32 - m22 * m30;\n const b08 = m20 * m33 - m23 * m30;\n const b09 = m21 * m32 - m22 * m31;\n const b10 = m21 * m33 - m23 * m31;\n const b11 = m22 * m33 - m23 * m32;\n\n const det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (det === 0) {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n }\n const invDet = 1 / det;\n\n return [\n (m11 * b11 - m12 * b10 + m13 * b09) * invDet,\n (m02 * b10 - m01 * b11 - m03 * b09) * invDet,\n (m31 * b05 - m32 * b04 + m33 * b03) * invDet,\n (m22 * b04 - m21 * b05 - m23 * b03) * invDet,\n (m12 * b08 - m10 * b11 - m13 * b07) * invDet,\n (m00 * b11 - m02 * b08 + m03 * b07) * invDet,\n (m32 * b02 - m30 * b05 - m33 * b01) * invDet,\n (m20 * b05 - m22 * b02 + m23 * b01) * invDet,\n (m10 * b10 - m11 * b08 + m13 * b06) * invDet,\n (m01 * b08 - m00 * b10 - m03 * b06) * invDet,\n (m30 * b04 - m31 * b02 + m33 * b00) * invDet,\n (m21 * b02 - m20 * b04 - m23 * b00) * invDet,\n (m11 * b07 - m10 * b09 - m12 * b06) * invDet,\n (m00 * b09 - m01 * b07 + m02 * b06) * invDet,\n (m31 * b01 - m30 * b03 - m32 * b00) * invDet,\n (m20 * b03 - m21 * b01 + m22 * b00) * invDet,\n ];\n}\n\n/**\n * Babylon.js-compatible vector × matrix transforms (static helpers that live on\n * `Vector3` in Babylon.js). Kept here to avoid a circular import between the\n * vector and matrix modules.\n */\nexport function transformCoordinates(vector: Vector3, transformation: Matrix): Vector3 {\n const m = transformation.m;\n const x = vector.x;\n const y = vector.y;\n const z = vector.z;\n const rx = x * m[0]! + y * m[4]! + z * m[8]! + m[12]!;\n const ry = x * m[1]! + y * m[5]! + z * m[9]! + m[13]!;\n const rz = x * m[2]! + y * m[6]! + z * m[10]! + m[14]!;\n const rw = 1 / (x * m[3]! + y * m[7]! + z * m[11]! + m[15]!);\n return new Vector3(rx * rw, ry * rw, rz * rw);\n}\n\nexport function transformNormal(vector: Vector3, transformation: Matrix): Vector3 {\n const m = transformation.m;\n const x = vector.x;\n const y = vector.y;\n const z = vector.z;\n return new Vector3(x * m[0]! + y * m[4]! + z * m[8]!, x * m[1]! + y * m[5]! + z * m[9]!, x * m[2]! + y * m[6]! + z * m[10]!);\n}\n","/**\n * Babylon.js-compatible `Node` — the base of the scene-graph class hierarchy.\n *\n * In Babylon.js every scene object derives from `Node`\n * (`Mesh → AbstractMesh → TransformNode → Node`, `Camera → Node`,\n * `Light → Node`). The compat layer mirrors that chain so `instanceof` checks and\n * inherited members (`getScene`, `parent`, `getClassName`, `dispose`, …) behave as\n * ported code expects, even where intermediate classes are only partial.\n *\n * `Node` itself holds the cross-cutting state every scene object shares: name/id,\n * a unique id, an owning scene, a parent link, and enabled/disposed flags.\n */\n\nimport type { Scene } from \"../scene/scene.js\";\nimport type { WebGPUEngine } from \"../engine/engine.js\";\n\nlet _uniqueIdCounter = 0;\n\nexport abstract class Node {\n public name: string;\n /** String id. Defaults to the name (Babylon.js parity). */\n public id: string;\n /** Process-unique numeric id, assigned at construction. */\n public readonly uniqueId: number;\n /** Free-form user data slot (Babylon.js `Node.metadata`). */\n public metadata: unknown = null;\n\n /** @internal Owning compat scene, when constructed against one. */\n protected _scene: Scene | undefined;\n /** @internal */\n protected _parent: Node | null = null;\n /** @internal Direct children, maintained as `parent` / `setParent` links change. */\n protected readonly _children: Node[] = [];\n /** @internal */\n protected _enabled = true;\n /** @internal */\n protected _disposed = false;\n\n protected constructor(name: string, scene?: Scene) {\n this.name = name;\n this.id = name;\n this.uniqueId = ++_uniqueIdCounter;\n this._scene = scene;\n }\n\n /** The runtime class name (overridden by each subclass). */\n public getClassName(): string {\n return \"Node\";\n }\n\n /** The scene this node belongs to, if any. */\n public getScene(): Scene | undefined {\n return this._scene;\n }\n\n /** The engine backing this node's scene, if any. */\n public getEngine(): WebGPUEngine | undefined {\n return this._scene?.getEngine();\n }\n\n public get parent(): Node | null {\n return this._parent;\n }\n public set parent(value: Node | null) {\n this._linkParent(value);\n this._applyParent(value);\n }\n\n /**\n * @internal Update the parent link and both nodes' child registries. Shared by\n * the `parent` setter and `TransformNode.setParent` (which differ only in how\n * the Lite-side transform is reparented, handled by their own callers).\n */\n protected _linkParent(value: Node | null): void {\n if (this._parent === value) {\n return;\n }\n if (this._parent) {\n const i = this._parent._children.indexOf(this);\n if (i !== -1) {\n this._parent._children.splice(i, 1);\n }\n }\n this._parent = value;\n if (value && !value._children.includes(this)) {\n value._children.push(this);\n }\n }\n\n /** @internal Whether this node is an `AbstractMesh` (overridden there) — drives `getChildMeshes`. */\n protected _isMeshNode(): boolean {\n return false;\n }\n\n /**\n * Babylon.js `node.getDescendants(directDescendantsOnly?, predicate?)` — the\n * nodes parented (directly or transitively) under this one, optionally filtered.\n */\n public getDescendants(directDescendantsOnly = false, predicate?: (node: Node) => boolean): Node[] {\n const results: Node[] = [];\n const collect = (node: Node): void => {\n for (const child of node._children) {\n if (!predicate || predicate(child)) {\n results.push(child);\n }\n if (!directDescendantsOnly) {\n collect(child);\n }\n }\n };\n collect(this);\n return results;\n }\n\n /**\n * Babylon.js `node.getChildren(predicate?, directDescendantsOnly?)` — descendant\n * nodes (direct children by default), optionally filtered by a predicate.\n */\n public getChildren(predicate?: (node: Node) => boolean, directDescendantsOnly = true): Node[] {\n return this.getDescendants(directDescendantsOnly, predicate);\n }\n\n /**\n * Babylon.js `node.getChildMeshes(directDescendantsOnly?, predicate?)` — the\n * descendant nodes that are meshes (all descendants by default).\n */\n public getChildMeshes(directDescendantsOnly = false, predicate?: (node: Node) => boolean): Node[] {\n return this.getDescendants(directDescendantsOnly, (node) => node._isMeshNode() && (!predicate || predicate(node)));\n }\n\n public isEnabled(): boolean {\n return this._enabled;\n }\n\n public setEnabled(value: boolean): void {\n this._enabled = value;\n }\n\n public isDisposed(): boolean {\n return this._disposed;\n }\n\n public dispose(): void {\n this._disposed = true;\n // Detach from the parent's child registry, then drop this node from its\n // scene's camera / light / mesh registries.\n this._linkParent(null);\n this._scene?._unregisterNode(this);\n }\n\n /** @internal Hook for subclasses to wire the parent link into the Lite scene graph. */\n protected _applyParent(_parent: Node | null): void {\n // Base node has no Lite handle to reparent; TransformNode overrides this.\n }\n}\n","/**\n * Babylon.js-compatible mesh hierarchy and `MeshBuilder`.\n *\n * Mirrors the Babylon.js inheritance chain:\n * `Mesh → AbstractMesh → TransformNode → Node`. Geometry is built through the\n * Babylon Lite mesh factories (which take the engine, not the scene) and\n * registered with `addToScene`. Transform properties (`position`, `rotation`,\n * `scaling`) are live views over Lite's observable vectors, so\n * `mesh.position.x = 1` and `mesh.rotation.y += 0.01` propagate; reassignment\n * (`mesh.position = new Vector3(...)`) also works.\n */\n\nimport {\n addToScene,\n removeFromScene,\n setMeshVisible,\n createBox,\n createSphere,\n createGround,\n createPlane,\n createCylinder,\n createTorus,\n createTorusKnot,\n createDisc,\n createPolyhedron,\n createRibbon,\n createTube,\n createExtrudeShape,\n createTransformNode,\n setParent,\n setThinInstances,\n setThinInstanceColors,\n createMeshFromData,\n resizeMeshGeometry,\n updateMeshUvs,\n createGroundFromHeightMap,\n} from \"babylon-lite\";\nimport type { Mesh as LiteMesh, SceneNode, EngineContext } from \"babylon-lite\";\n\nimport type { Vector3 } from \"../math/vector.js\";\nimport { liteBackedVector3 } from \"../math/vector.js\";\nimport { Quaternion } from \"../math/quaternion.js\";\nimport { Matrix } from \"../math/matrix.js\";\nimport { unsupported } from \"../error.js\";\nimport { Node } from \"../node/node.js\";\nimport type { Scene } from \"../scene/scene.js\";\nimport type { StandardMaterial, PBRMaterial } from \"../materials/materials.js\";\nimport type { NodeMaterial } from \"../materials/node-material.js\";\nimport type { GridMaterial } from \"../materials/grid-material.js\";\nimport type { MorphTargetManager } from \"../morph/morph.js\";\n\ntype CompatMaterial = StandardMaterial | PBRMaterial | NodeMaterial | GridMaterial;\n\n/**\n * @internal Runtime discriminator for the `Mesh` constructor's two call shapes:\n * `new Mesh(name, scene)` (empty mesh, Babylon.js) vs the internal\n * `new Mesh(name, liteMesh, scene)` (geometry-backed). A compat `Scene` exposes\n * `getEngine()`; a Lite mesh does not.\n */\nfunction isCompatScene(value: Scene | LiteMesh): value is Scene {\n return typeof (value as Scene).getEngine === \"function\";\n}\n\n/**\n * @internal Resolve the backing Lite scene node for a compat node. Mesh/light/\n * camera wrappers store it as `_lite`; a plain `TransformNode` stores it as\n * `_node`. (Declared as optionals because the base `Node` exposes neither.)\n */\nfunction liteNodeOf(node: Node | null): SceneNode | null {\n if (!node) {\n return null;\n }\n const n = node as { _node?: SceneNode; _lite?: SceneNode };\n return n._node ?? n._lite ?? null;\n}\n\n// A degenerate single-triangle placeholder so an empty `new Mesh(name, scene)`\n// has a valid Lite mesh (`_lite`) immediately. Replaced in place by\n// `VertexData.applyToMesh` via `resizeMeshGeometry`.\nconst PLACEHOLDER_POSITIONS = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0]);\nconst PLACEHOLDER_NORMALS = new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1]);\nconst PLACEHOLDER_UVS = new Float32Array([0, 0, 0, 0, 0, 0]);\nconst PLACEHOLDER_INDICES = new Uint32Array([0, 1, 2]);\n\n/** @internal Coerce a number list / typed array to a `Float32Array` (reusing the buffer when possible). */\nfunction toF32(data: ArrayLike<number>): Float32Array {\n return data instanceof Float32Array ? data : Float32Array.from(data);\n}\n\n/** @internal Coerce an index list / typed array to a `Uint32Array`. */\nfunction toU32(data: ArrayLike<number>): Uint32Array {\n return data instanceof Uint32Array ? data : Uint32Array.from(data);\n}\n\n/** @internal Flat per-face normals for vertex data that omits them (Lite requires a normals buffer). */\nfunction computeFlatNormals(positions: Float32Array, indices: Uint32Array): Float32Array {\n const normals = new Float32Array(positions.length);\n for (let i = 0; i < indices.length; i += 3) {\n const a = indices[i]! * 3;\n const b = indices[i + 1]! * 3;\n const c = indices[i + 2]! * 3;\n const ux = positions[b]! - positions[a]!;\n const uy = positions[b + 1]! - positions[a + 1]!;\n const uz = positions[b + 2]! - positions[a + 2]!;\n const vx = positions[c]! - positions[a]!;\n const vy = positions[c + 1]! - positions[a + 1]!;\n const vz = positions[c + 2]! - positions[a + 2]!;\n let nx = uy * vz - uz * vy;\n let ny = uz * vx - ux * vz;\n let nz = ux * vy - uy * vx;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n for (const vi of [a, b, c]) {\n normals[vi] = nx;\n normals[vi + 1] = ny;\n normals[vi + 2] = nz;\n }\n }\n return normals;\n}\n\n/**\n * Babylon.js `TransformNode` — a positioned, rotated, scaled scene-graph node.\n * Wraps a Lite scene node (`_node`): either a standalone Lite transform node, or\n * (for meshes) the Lite mesh itself, which also carries the transform.\n */\nexport class TransformNode extends Node {\n /** @internal The Lite scene node that carries this transform. */\n public readonly _node: SceneNode;\n\n public constructor(name: string, scene?: Scene, liteNode?: SceneNode) {\n super(name, scene);\n if (liteNode) {\n // A subclass (mesh) supplied its own Lite node and owns add-to-scene.\n this._node = liteNode;\n } else {\n this._node = createTransformNode(name);\n if (scene) {\n addToScene(scene._lite, this._node);\n }\n }\n }\n\n public override getClassName(): string {\n return \"TransformNode\";\n }\n\n public get position(): Vector3 {\n return liteBackedVector3(this._node.position);\n }\n public set position(value: Vector3) {\n this._node.position.set(value.x, value.y, value.z);\n }\n\n public get rotation(): Vector3 {\n return liteBackedVector3(this._node.rotation);\n }\n public set rotation(value: Vector3) {\n this._node.rotation.set(value.x, value.y, value.z);\n }\n\n public get scaling(): Vector3 {\n return liteBackedVector3(this._node.scaling);\n }\n public set scaling(value: Vector3) {\n this._node.scaling.set(value.x, value.y, value.z);\n }\n\n /** @internal Whether `rotationQuaternion` was explicitly set (Babylon.js returns null otherwise). */\n private _useQuat = false;\n\n /**\n * Babylon.js `rotationQuaternion`. Babylon Lite always drives a node's world\n * matrix from a quaternion (its euler `rotation` is a proxy over the same\n * quaternion), so this reads/writes that quaternion. Returns `null` until\n * explicitly assigned, matching Babylon.js's euler-by-default convention.\n */\n public get rotationQuaternion(): Quaternion | null {\n if (!this._useQuat) {\n return null;\n }\n const q = this._node.rotationQuaternion;\n return new Quaternion(q.x, q.y, q.z, q.w);\n }\n public set rotationQuaternion(value: Quaternion | null) {\n if (value) {\n this._useQuat = true;\n this._node.rotationQuaternion.set(value.x, value.y, value.z, value.w);\n } else {\n this._useQuat = false;\n }\n }\n\n /**\n * Babylon.js `setParent(node)` — reparent while **preserving world position**\n * (the child's local transform is recomputed). Distinct from the `parent`\n * setter, which keeps the local transform and lets the world move.\n */\n public setParent(parent: Node | null): TransformNode {\n this._linkParent(parent);\n setParent(this._node as never, liteNodeOf(parent) as never);\n return this;\n }\n\n protected override _applyParent(parent: Node | null): void {\n // Babylon.js `node.parent = x` keeps the child's LOCAL transform and lets\n // its world position move under the new parent (unlike `setParent`, which\n // preserves world). Mirror that with Babylon Lite's raw parent assignment.\n this._node.parent = liteNodeOf(parent);\n }\n}\n\n/**\n * Babylon.js `AbstractMesh` — a renderable transform node with a material,\n * visibility, and shadow-receipt. Concrete meshes derive from this.\n */\nexport class AbstractMesh extends TransformNode {\n /** @internal Underlying Babylon Lite mesh. */\n public readonly _lite: LiteMesh;\n\n private _material: CompatMaterial | null = null;\n private _visible = true;\n\n public constructor(name: string, lite: LiteMesh, scene?: Scene) {\n super(name, scene, lite);\n this._lite = lite;\n this._lite.name = name;\n // Babylon Lite requires every mesh to carry a material to render, whereas\n // Babylon.js falls back to a shared `scene.defaultMaterial`. Mirror BJS by\n // assigning that default now; an explicit `mesh.material = …` overrides it.\n if (scene) {\n this.material = scene.defaultMaterial;\n }\n }\n\n public override getClassName(): string {\n return \"AbstractMesh\";\n }\n\n /** @internal An `AbstractMesh` counts as a mesh node for `getChildMeshes`. */\n protected override _isMeshNode(): boolean {\n return true;\n }\n\n public get material(): CompatMaterial | null {\n return this._material;\n }\n public set material(value: CompatMaterial | null) {\n this._material = value;\n if (value?._lite) {\n this._lite.material = value._lite as never;\n }\n }\n\n public get isVisible(): boolean {\n return this._visible;\n }\n public set isVisible(value: boolean) {\n this._visible = value;\n setMeshVisible(this._lite, value);\n }\n\n public get receiveShadows(): boolean {\n return this._lite.receiveShadows;\n }\n public set receiveShadows(value: boolean) {\n this._lite.receiveShadows = value;\n }\n\n public override setEnabled(enabled: boolean): void {\n super.setEnabled(enabled);\n this.isVisible = enabled;\n }\n\n /** Bounding info accessor — needs a public Lite bounds accessor that does not yet exist. */\n public getBoundingInfo(): never {\n return unsupported(\"AbstractMesh.getBoundingInfo\", \"Babylon Lite does not expose a public mesh bounding-info accessor yet.\");\n }\n\n /**\n * Babylon.js `mesh.getVerticesData(kind)` — read back the CPU geometry buffer\n * for `position` / `normal` / `uv`. Babylon Lite retains these on the mesh\n * (for picking + device-loss recovery); other kinds are not stored.\n */\n public getVerticesData(kind: string): Float32Array | null {\n switch (kind) {\n case \"position\":\n return this._lite._cpuPositions ?? null;\n case \"normal\":\n return this._lite._cpuNormals ?? null;\n case \"uv\":\n return this._lite._cpuUvs ?? null;\n default:\n return null;\n }\n }\n\n /**\n * Babylon.js `mesh.setVerticesData(kind, data)` — replace a vertex attribute.\n * `position` / `normal` / `uv` / `color` / `tangent` re-upload the geometry in\n * place; the last-set `color`/`tangent` buffers are retained so successive calls\n * (e.g. set tangent then set color) keep both. Skinning/morph attributes\n * (`matricesIndices`, etc.) are accepted but not applied (Babylon Lite drives\n * skinning through its own loaded-skeleton path).\n */\n public setVerticesData(kind: string, data: number[] | Float32Array, _updatable?: boolean): void {\n const engine = this._scene?.getEngine()._lite;\n const lite = this._lite;\n if (!engine || !lite._cpuPositions || !lite._cpuIndices) {\n return;\n }\n if (kind !== \"position\" && kind !== \"normal\" && kind !== \"uv\" && kind !== \"color\" && kind !== \"tangent\") {\n return;\n }\n const f32 = data instanceof Float32Array ? data : Float32Array.from(data);\n if (kind === \"color\") {\n this._lastColors = f32;\n }\n if (kind === \"tangent\") {\n this._lastTangents = f32;\n }\n const positions = kind === \"position\" ? f32 : lite._cpuPositions;\n const normals = kind === \"normal\" ? f32 : (lite._cpuNormals ?? computeFlatNormals(positions, lite._cpuIndices));\n const uvs = kind === \"uv\" ? f32 : lite._cpuUvs;\n resizeMeshGeometry(engine, this._lite, positions, normals, lite._cpuIndices, uvs, undefined, this._lastTangents, this._lastColors);\n }\n\n /** @internal Retained tangent/color buffers so successive `setVerticesData` calls keep both. */\n private _lastTangents: Float32Array | undefined;\n private _lastColors: Float32Array | undefined;\n\n /** Babylon.js `mesh.getTotalVertices()` — vertex count from the position buffer. */\n public getTotalVertices(): number {\n const positions = this._lite._cpuPositions;\n return positions ? positions.length / 3 : 0;\n }\n\n /**\n * Babylon.js `mesh.refreshBoundingInfo()` — Babylon Lite recomputes a mesh's\n * bounds from its CPU geometry on demand (and on geometry upload), so this is a\n * no-op that returns the mesh for chaining. The deformed-pick options\n * (`applySkeleton` / `applyMorph`) are accepted for parity but not used.\n */\n public refreshBoundingInfo(_options?: unknown): this {\n return this;\n }\n\n /**\n * Babylon.js `mesh.bakeCurrentTransformIntoVertices()` — fold the node's local\n * transform (position / rotation / scaling) into the CPU geometry and reset the\n * transform to identity. Babylon Lite has no built-in mesh-transform bake, so we\n * transform the retained CPU positions (full matrix) and normals (rotation only,\n * renormalized), re-upload via `resizeMeshGeometry`, then clear the transform.\n */\n public bakeCurrentTransformIntoVertices(): this {\n const engine = this._scene?.getEngine()._lite;\n const lite = this._lite as { _cpuPositions?: Float32Array; _cpuNormals?: Float32Array; _cpuIndices?: Uint32Array; _cpuUvs?: Float32Array };\n const positions = lite._cpuPositions;\n const indices = lite._cpuIndices;\n if (!engine || !positions || !indices) {\n return this;\n }\n const node = this._node;\n const s = node.scaling;\n const q = node.rotationQuaternion;\n const t = node.position;\n const matrix = Matrix.Compose(liteBackedVector3(s), { x: q.x, y: q.y, z: q.z, w: q.w }, liteBackedVector3(t));\n const m = matrix.m;\n\n const newPositions = new Float32Array(positions.length);\n for (let i = 0; i < positions.length; i += 3) {\n const x = positions[i]!,\n y = positions[i + 1]!,\n z = positions[i + 2]!;\n newPositions[i] = x * m[0]! + y * m[4]! + z * m[8]! + m[12]!;\n newPositions[i + 1] = x * m[1]! + y * m[5]! + z * m[9]! + m[13]!;\n newPositions[i + 2] = x * m[2]! + y * m[6]! + z * m[10]! + m[14]!;\n }\n\n let newNormals: Float32Array | undefined;\n const normals = lite._cpuNormals;\n if (normals) {\n newNormals = new Float32Array(normals.length);\n for (let i = 0; i < normals.length; i += 3) {\n const x = normals[i]!,\n y = normals[i + 1]!,\n z = normals[i + 2]!;\n let nx = x * m[0]! + y * m[4]! + z * m[8]!;\n let ny = x * m[1]! + y * m[5]! + z * m[9]!;\n let nz = x * m[2]! + y * m[6]! + z * m[10]!;\n const len = Math.hypot(nx, ny, nz) || 1;\n nx /= len;\n ny /= len;\n nz /= len;\n newNormals[i] = nx;\n newNormals[i + 1] = ny;\n newNormals[i + 2] = nz;\n }\n } else {\n newNormals = computeFlatNormals(newPositions, indices);\n }\n\n resizeMeshGeometry(engine, this._lite, newPositions, newNormals, indices, lite._cpuUvs);\n\n // Reset the node transform to identity (the geometry now carries it).\n node.position.set(0, 0, 0);\n node.rotation.set(0, 0, 0);\n node.scaling.set(1, 1, 1);\n return this;\n }\n\n public override dispose(): void {\n if (this._scene) {\n removeFromScene(this._scene._lite, this._lite);\n }\n super.dispose();\n }\n}\n\n/** Babylon.js `Mesh` — a concrete renderable mesh with geometry. */\nexport class Mesh extends AbstractMesh {\n public constructor(name: string, sceneOrLite?: Scene | LiteMesh, scene?: Scene) {\n if (sceneOrLite !== undefined && isCompatScene(sceneOrLite)) {\n // Babylon.js `new Mesh(name, scene)` — an empty mesh whose geometry is\n // supplied later via `VertexData.applyToMesh`. Build a degenerate\n // placeholder Lite mesh so `_lite` is valid immediately, then defer the\n // scene-add until engine start (after geometry + material settle).\n const realScene = sceneOrLite;\n const lite = createMeshFromData(realScene.getEngine()._lite, name, PLACEHOLDER_POSITIONS, PLACEHOLDER_NORMALS, PLACEHOLDER_INDICES, PLACEHOLDER_UVS);\n super(name, lite, realScene);\n addPrimitive(this, realScene);\n } else {\n super(name, sceneOrLite as LiteMesh, scene);\n }\n }\n\n public override getClassName(): string {\n return \"Mesh\";\n }\n\n private _morphTargetManager: MorphTargetManager | null = null;\n\n /**\n * Babylon.js `mesh.morphTargetManager`. Babylon Lite builds morph GPU data via\n * `createMorphTargets` and stores it on the Lite mesh; the compat manager is\n * registered with the scene so the engine builds it at start (once the base\n * CPU geometry exists) and assigns it onto the Lite mesh before registration.\n */\n public get morphTargetManager(): MorphTargetManager | null {\n return this._morphTargetManager;\n }\n public set morphTargetManager(value: MorphTargetManager | null) {\n this._morphTargetManager = value;\n if (value && this._scene) {\n this._scene._registerMorphTargetManager(this, value);\n }\n }\n\n // ── Legacy pre-MeshBuilder static creators (Babylon.js `Mesh.CreateX`) ──\n\n /** Legacy `Mesh.CreateSphere(name, segments, diameter, scene)`. */\n public static CreateSphere(name: string, segments: number, diameter: number, scene: Scene): Mesh {\n return MeshBuilder.CreateSphere(name, { segments, diameter }, scene);\n }\n\n /** Legacy `Mesh.CreateBox(name, size, scene)`. */\n public static CreateBox(name: string, size: number, scene: Scene): Mesh {\n return MeshBuilder.CreateBox(name, { size }, scene);\n }\n\n /** Legacy `Mesh.CreateGround(name, width, height, subdivisions, scene)`. */\n public static CreateGround(name: string, width: number, height: number, subdivisions: number, scene: Scene): Mesh {\n return MeshBuilder.CreateGround(name, { width, height, subdivisions }, scene);\n }\n\n /** Legacy `Mesh.CreatePlane(name, size, scene)`. */\n public static CreatePlane(name: string, size: number, scene: Scene): Mesh {\n return MeshBuilder.CreatePlane(name, { size }, scene);\n }\n\n /** Legacy `Mesh.CreateCylinder(name, height, diameterTop, diameterBottom, tessellation, _subdivisions, scene)`. */\n public static CreateCylinder(name: string, height: number, diameterTop: number, diameterBottom: number, tessellation: number, _subdivisions: number, scene: Scene): Mesh {\n const diameter = Math.max(diameterTop, diameterBottom);\n return MeshBuilder.CreateCylinder(name, { height, diameter, tessellation }, scene);\n }\n\n /** Legacy `Mesh.CreateTorus(name, diameter, thickness, tessellation, scene)`. */\n public static CreateTorus(name: string, diameter: number, thickness: number, tessellation: number, scene: Scene): Mesh {\n return MeshBuilder.CreateTorus(name, { diameter, thickness, tessellation }, scene);\n }\n\n /** Hardware-instanced copy — unsupported. Use native thin instances instead. */\n public createInstance(): never {\n return unsupported(\"Mesh.createInstance\", \"Babylon Lite has no hardware-instance object. Use the native thin-instance API (`setThinInstances`).\");\n }\n\n /**\n * Babylon.js `mesh.thinInstanceSetBuffer(kind, buffer, stride)`. Maps the\n * `\"matrix\"` and `\"color\"` instance buffers onto Babylon Lite's thin-instance\n * API. Applied immediately to the Lite mesh (before the scene builds).\n */\n public thinInstanceSetBuffer(kind: string, buffer: Float32Array | null, _stride = 16): void {\n if (!buffer) {\n return;\n }\n if (kind === \"matrix\") {\n setThinInstances(this._lite, buffer, buffer.length / 16);\n } else if (kind === \"color\") {\n setThinInstanceColors(this._lite, buffer);\n }\n }\n\n /** Deep mesh clone — not yet wrapped. */\n public clone(): never {\n return unsupported(\"Mesh.clone\", \"Mesh cloning is not yet wrapped in the compat layer.\");\n }\n\n /** Level-of-detail — unsupported (no LOD system in Babylon Lite). */\n public addLODLevel(): never {\n return unsupported(\"Mesh.addLODLevel\", \"Level-of-detail is not implemented in Babylon Lite.\");\n }\n}\n\n/** Babylon.js `GroundMesh` — a ground plane mesh. CPU height queries are not modelled. */\nexport class GroundMesh extends Mesh {\n public override getClassName(): string {\n return \"GroundMesh\";\n }\n\n /** CPU height-at-coordinates query — needs a CPU heightmap accessor not present in Babylon Lite. */\n public getHeightAtCoordinates(): never {\n return unsupported(\"GroundMesh.getHeightAtCoordinates\", \"CPU height queries are not implemented in Babylon Lite.\");\n }\n}\n\n/** Babylon.js `InstancedMesh` — hardware instances are not modelled; use thin instances. */\nexport class InstancedMesh {\n public constructor() {\n unsupported(\"InstancedMesh\", \"Babylon Lite has no hardware-instance object. Use the native thin-instance API (`setThinInstances`).\");\n }\n}\n\n/**\n * Babylon.js `VertexBuffer` — the per-attribute geometry buffer. Only the `kind`\n * string constants are surfaced (used with `mesh.getVerticesData` /\n * `setVerticesData`); the buffer-object API itself is not wrapped.\n */\nexport const VertexBuffer = {\n PositionKind: \"position\",\n NormalKind: \"normal\",\n TangentKind: \"tangent\",\n UVKind: \"uv\",\n UV2Kind: \"uv2\",\n ColorKind: \"color\",\n MatricesIndicesKind: \"matricesIndices\",\n MatricesWeightsKind: \"matricesWeights\",\n} as const;\n\n/**\n * Babylon.js `VertexData` — CPU vertex attribute container. Pure data; apply it\n * to a Lite mesh via the native geometry-update APIs when needed.\n */\nexport class VertexData {\n public positions: number[] | Float32Array | null = null;\n public normals: number[] | Float32Array | null = null;\n public uvs: number[] | Float32Array | null = null;\n public colors: number[] | Float32Array | null = null;\n public indices: number[] | Uint32Array | Uint16Array | null = null;\n\n /**\n * Babylon.js `VertexData.applyToMesh(mesh)` — upload this CPU geometry onto a\n * mesh (typically one created via `new Mesh(name, scene)`). Replaces the Lite\n * mesh's geometry in place via `resizeMeshGeometry`. Normals are computed flat\n * if omitted (Babylon Lite requires a normals buffer).\n */\n public applyToMesh(mesh: Mesh): void {\n if (!this.positions || !this.indices) {\n return;\n }\n const scene = mesh.getScene();\n if (!scene) {\n return;\n }\n const engine = scene.getEngine()._lite;\n const positions = toF32(this.positions);\n const indices = toU32(this.indices);\n const normals = this.normals ? toF32(this.normals) : computeFlatNormals(positions, indices);\n const uvs = this.uvs ? toF32(this.uvs) : undefined;\n const colors = this.colors ? toF32(this.colors) : undefined;\n resizeMeshGeometry(engine, mesh._lite, positions, normals, indices, uvs, undefined, undefined, colors);\n }\n\n /** Merge another `VertexData` into this one (concatenating attributes + reindexing). */\n public merge(other: VertexData): VertexData {\n const baseVertexCount = this.positions ? this.positions.length / 3 : 0;\n this.positions = concat(this.positions, other.positions);\n this.normals = concat(this.normals, other.normals);\n this.uvs = concat(this.uvs, other.uvs);\n this.colors = concat(this.colors, other.colors);\n if (other.indices) {\n const shifted = Array.from(other.indices, (i) => i + baseVertexCount);\n this.indices = this.indices ? [...Array.from(this.indices), ...shifted] : shifted;\n }\n return this;\n }\n}\n\nfunction concat(a: ArrayLike<number> | null, b: ArrayLike<number> | null): number[] | null {\n if (!a && !b) {\n return null;\n }\n return [...(a ? Array.from(a) : []), ...(b ? Array.from(b) : [])];\n}\n\ninterface BoxOptions {\n size?: number;\n width?: number;\n}\ninterface SphereOptions {\n diameter?: number;\n segments?: number;\n}\ninterface GroundOptions {\n width?: number;\n height?: number;\n subdivisions?: number;\n}\ninterface PlaneOptions {\n size?: number;\n width?: number;\n height?: number;\n}\ninterface CylinderOptions {\n height?: number;\n diameter?: number;\n tessellation?: number;\n}\n\nfunction engineOf(scene: Scene): EngineContext {\n return scene.getEngine()._lite;\n}\n\n/**\n * Add a freshly-constructed mesh to its Lite scene. The wrapper constructor has\n * already assigned the mesh's material (a real one or `scene.defaultMaterial`),\n * but Babylon.js code commonly reassigns `mesh.material` a line later. Lite locks\n * a mesh into a render group at add time, so we defer the add until engine start\n * (via `scene._deferAdd`) to let those assignments settle.\n */\nfunction addPrimitive(mesh: Mesh, scene: Scene): Mesh {\n scene._deferAdd(() => {\n const mat = mesh.material;\n mat?._ensureRenderable(engineOf(scene));\n // Re-bind in case the material's Lite handle resolved late (async-parsed\n // NodeMaterial, or a texture map that loaded after `mesh.material = …`).\n if (mat?._lite) {\n mesh._lite.material = mat._lite as never;\n }\n addToScene(scene._lite, mesh._lite);\n });\n return mesh;\n}\n\n/** Babylon.js `MeshBuilder` — factory namespace for primitive meshes. */\nexport const MeshBuilder = {\n CreateBox(name: string, options: BoxOptions, scene: Scene): Mesh {\n const lite = createBox(engineOf(scene), options.size ?? options.width ?? 1);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateSphere(name: string, options: SphereOptions, scene: Scene): Mesh {\n const lite = createSphere(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateGround(name: string, options: GroundOptions, scene: Scene): Mesh {\n const lite = createGround(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n /**\n * Babylon.js `MeshBuilder.CreateGroundFromHeightMap(name, url, options, scene)`.\n * Babylon.js returns the mesh synchronously and fills its geometry once the\n * heightmap image loads; we mirror that by returning a placeholder `GroundMesh`\n * immediately and swapping in the real geometry (via `resizeMeshGeometry`) when\n * the async Lite `createGroundFromHeightMap` resolves. The load is tracked so\n * the engine awaits it before the scene is registered.\n */\n CreateGroundFromHeightMap(name: string, url: string, options: object, scene: Scene): Mesh {\n const engine = engineOf(scene);\n // `new GroundMesh(name, scene)` builds a placeholder + defers its scene-add\n // (Babylon.js empty-mesh path); no extra `addPrimitive` call is needed.\n const mesh = new GroundMesh(name, scene);\n scene._trackTextureLoad(\n createGroundFromHeightMap(engine, url, options as never).then((lite) => {\n // `createGroundFromHeightMap` always populates the CPU geometry buffers.\n resizeMeshGeometry(engine, mesh._lite, lite._cpuPositions!, lite._cpuNormals!, lite._cpuIndices!, lite._cpuUvs);\n // Babylon.js tiles the ground via `albedoTexture.uScale/vScale` (a material-level\n // UV scale). Babylon Lite's PBR pipeline has no material UV scale (only\n // StandardMaterial does, applied in-shader), so — exactly like the Lite-native\n // scene, which passes `uvScale` to `createGroundFromHeightMap` — bake the PBR\n // albedo tiling into the ground geometry UVs. The material's `albedoTexture` and\n // its `uScale`/`vScale` are assigned by user code *after* this heightmap load may\n // resolve, so defer the bake to engine start (after all textures load) instead of\n // reading the material here, where it would race the material setup.\n const baseUvs = lite._cpuUvs;\n if (baseUvs) {\n scene._registerGroundUvBake(() => {\n const groundMat = mesh.material as { albedoTexture?: { uScale?: number; vScale?: number } | null } | null;\n const albedo = groundMat?.albedoTexture ?? null;\n const uScale = albedo?.uScale ?? 1;\n const vScale = albedo?.vScale ?? 1;\n if (uScale === 1 && vScale === 1) {\n return;\n }\n const scaled = new Float32Array(baseUvs.length);\n for (let i = 0; i < baseUvs.length; i += 2) {\n scaled[i] = baseUvs[i]! * uScale;\n scaled[i + 1] = baseUvs[i + 1]! * vScale;\n }\n updateMeshUvs(engine, mesh._lite, scaled);\n mesh._lite._cpuUvs = scaled;\n });\n }\n })\n );\n return mesh;\n },\n\n CreatePlane(name: string, options: PlaneOptions, scene: Scene): Mesh {\n const lite = createPlane(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateCylinder(name: string, options: CylinderOptions, scene: Scene): Mesh {\n const lite = createCylinder(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateTorus(name: string, options: object, scene: Scene): Mesh {\n const lite = createTorus(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateTorusKnot(name: string, options: object, scene: Scene): Mesh {\n const lite = createTorusKnot(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateDisc(name: string, options: object, scene: Scene): Mesh {\n const lite = createDisc(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreatePolyhedron(name: string, options: object, scene: Scene): Mesh {\n const lite = createPolyhedron(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateRibbon(name: string, options: object, scene: Scene): Mesh {\n const lite = createRibbon(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n CreateTube(name: string, options: object, scene: Scene): Mesh {\n const lite = createTube(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n ExtrudeShape(name: string, options: object, scene: Scene): Mesh {\n const lite = createExtrudeShape(engineOf(scene), options as never);\n return addPrimitive(new Mesh(name, lite, scene), scene);\n },\n\n // ── Known but unsupported (not present in Babylon Lite) ────────────────\n CreateLines(): never {\n return unsupported(\"MeshBuilder.CreateLines\", \"Line meshes are not implemented in Babylon Lite.\");\n },\n\n CreateLineSystem(): never {\n return unsupported(\"MeshBuilder.CreateLineSystem\", \"Line meshes are not implemented in Babylon Lite.\");\n },\n\n CreateDashedLines(): never {\n return unsupported(\"MeshBuilder.CreateDashedLines\", \"Dashed line meshes are not implemented in Babylon Lite.\");\n },\n\n CreateDecal(): never {\n return unsupported(\"MeshBuilder.CreateDecal\", \"Decal projection is not implemented in Babylon Lite.\");\n },\n\n CreateText(): never {\n return unsupported(\"MeshBuilder.CreateText\", \"Extruded font meshes are not implemented in Babylon Lite. For 2D/SDF text use the native `createTextRenderable` API.\");\n },\n};\n\n// ── Standalone builder functions (Babylon.js `@babylonjs/core/Meshes/Builders/*`) ──\n// Babylon.js also exports each builder as a free function (`CreateBox(name, options, scene)`,\n// etc.) alongside the `MeshBuilder` namespace. These are thin aliases so ported code that\n// imports the standalone functions resolves identically.\n\n/** Babylon.js `CreateBox(name, options, scene)` (boxBuilder). */\nexport function CreateBox(name: string, options: BoxOptions, scene: Scene): Mesh {\n return MeshBuilder.CreateBox(name, options, scene);\n}\n\n/** Babylon.js `CreateSphere(name, options, scene)` (sphereBuilder). */\nexport function CreateSphere(name: string, options: SphereOptions, scene: Scene): Mesh {\n return MeshBuilder.CreateSphere(name, options, scene);\n}\n\n/** Babylon.js `CreateGround(name, options, scene)` (groundBuilder). */\nexport function CreateGround(name: string, options: GroundOptions, scene: Scene): Mesh {\n return MeshBuilder.CreateGround(name, options, scene);\n}\n\n/** Babylon.js `CreatePlane(name, options, scene)` (planeBuilder). */\nexport function CreatePlane(name: string, options: PlaneOptions, scene: Scene): Mesh {\n return MeshBuilder.CreatePlane(name, options, scene);\n}\n\n/** Babylon.js `CreateCylinder(name, options, scene)` (cylinderBuilder). */\nexport function CreateCylinder(name: string, options: CylinderOptions, scene: Scene): Mesh {\n return MeshBuilder.CreateCylinder(name, options, scene);\n}\n\n/** Babylon.js `CreateTorus(name, options, scene)` (torusBuilder). */\nexport function CreateTorus(name: string, options: object, scene: Scene): Mesh {\n return MeshBuilder.CreateTorus(name, options, scene);\n}\n\n/** Babylon.js `CreateDisc(name, options, scene)` (discBuilder). */\nexport function CreateDisc(name: string, options: object, scene: Scene): Mesh {\n return MeshBuilder.CreateDisc(name, options, scene);\n}\n"],"names":[],"mappings":"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"}
|