Home
/
Packages
/
@hatch:gltf
@hatch:gltf
v0.1.1
Pure-Wren glTF 2.0 / .glb loader. Parses the binary container into nodes / meshes / materials, resolves accessors into typed vertex + index arrays (Float32Array / Int32Array / ByteArray), decodes embedded images via @hatch:image, and spawns a Transform-rooted hierarchy into a @hatch:ecs World with fully-textured PBR Materials wired to every glTF slot (baseColor / metallicRoughness / normal / occlusion / emissive).
stable
data
updated Jun 4, 2026
source ↗
$
hatch add @hatch:gltf
copy
MOD
gltf
CL
Gltf
FN
Gltf.static parse(bytes: ByteArray|List<Num>) → GltfScene
FN
Gltf.static load(device: Device, bytes: ByteArray|List<Num>) → GltfScene
FN
Gltf.static fromAsset(device: Device, asset: Asset) → GltfScene
FN
Gltf.static fromAssets(device: Device, db: Assets, relPath: String) → GltfScene
FN
Gltf.static fromAssetsDir(device: Device, db: Assets, gltfPath: String) → GltfScene
FN
Gltf.static openDir(db, gltfPath) → Map
FN
Gltf.static loadBuffer(state, db, idx)
FN
Gltf.static loadImage(state, db, idx)
FN
Gltf.static assemble(state)
FN
Gltf.static uploadImageAt(state, device, idx)
FN
Gltf.static beginImageDecodeAt(state, idx)
FN
Gltf.static finishImageUploadAt(state, device, idx, handle)
FN
Gltf.static uploadDecodedImageAt(state, device, idx, image)
FN
Gltf.static uploadMeshAt(state, device, idx)
FN
Gltf.static finishUpload(state)
CL
Bytes_
FN
Bytes_.static u32LE(b, o)
FN
Bytes_.static u16LE(b, o)
FN
Bytes_.static f32LE(b, o)
FN
Bytes_.static asciiString(b, off, len)
CL
GltfScene
NEW
GltfScene.new_(json: Map, buffers: List<ByteArray>, externalImageBytes: List<ByteArray|null>)
GET
GltfScene.json
GET
GltfScene.binBuffer
GET
GltfScene.buffers
GET
GltfScene.materials
GET
GltfScene.meshes
GET
GltfScene.nodes
GET
GltfScene.rootIndices
GET
GltfScene.animations
GET
GltfScene.imageTextures
GET
GltfScene.skins
GET
GltfScene.nodeEntityMap
FN
GltfScene.static parse_(bytes)
FN
GltfScene.static fromJson_(json, buffers, externalImageBytes)
FN
GltfScene.static dirname_(path)
FN
GltfScene.static joinPath_(dir, uri)
FN
GltfScene.static stripPad_(s)
FN
GltfScene.static stripPadBytes_(b)
FN
GltfScene.static textureToImageMap_(json)
FN
GltfScene.static imageIndexOf_(json, t2i, slot)
FN
GltfScene.static buildMaterials_(json)
FN
GltfScene.static buildImageSources_(json, materials, externalImageBytes)
FN
GltfScene.static buildMeshes_(json, buffers)
FN
GltfScene.static extractPrimitive_(json, buffers, p)
FN
GltfScene.static buildNodes_(json)
FN
GltfScene.static pickRootIndices_(json)
FN
GltfScene.static buildAnimations_(json, buffers)
FN
GltfScene.static accessorAt_(json, idx)
FN
GltfScene.static bufferViewAt_(json, idx)
FN
GltfScene.static binFromBufferView_(buffers, bv)
FN
GltfScene.static readVec3Accessor_(json, buffers, idx)
FN
GltfScene.static readVec2Accessor_(json, buffers, idx)
FN
GltfScene.static readFloatAccessor_(json, buffers, idx, components, expectedType)
FN
GltfScene.static readIndexAccessor_(json, buffers, idx)
FN
GltfScene.static readU16x4Accessor_(json, buffers, idx)
FN
GltfScene.static readMat4Accessor_(json, buffers, idx)
FN
GltfScene.static buildSkins_(json, buffers)
FN
GltfScene.upload(device)
FN
GltfScene.uploadImages_(device)
FN
GltfScene.uploadImageAt_(device, idx)
FN
GltfScene.sourceBytesAt_(idx)
FN
GltfScene.beginImageDecodeAt_(idx)
FN
GltfScene.finishImageUploadAt_(device, idx, handle)
FN
GltfScene.uploadDecodedImageAt_(device, idx, image)
FN
GltfScene.uploadMeshAt_(device, idx)
FN
GltfScene.dropUploadSources_()
FN
GltfScene.spawnInto(world)
FN
GltfScene.spawnNode_(world, idx, parentEntity, spawned)
FN
GltfScene.attachMesh_(world, parentEntity, gltfMesh)
CL
GltfNode
NEW
GltfNode.new_(name: String, transform: Transform, meshIndex: Num|Null, children: List<Num>)
GET
GltfNode.name
GET
GltfNode.transform
GET
GltfNode.meshIndex
GET
GltfNode.children
GET
GltfNode.skinIndex → Num|Null
SET
GltfNode.skinIndex=(v)
GET
GltfNode.toString
CL
GltfSkin
NEW
GltfSkin.new_(name: String, joints: List<Num>, inverseBindMatrices: Float32Array, skeletonRoot: Num|Null)
GET
GltfSkin.name
GET
GltfSkin.joints
GET
GltfSkin.inverseBindMatrices
GET
GltfSkin.skeletonRoot
GET
GltfSkin.jointCount
GET
GltfSkin.toString
CL
GltfAnimation
NEW
GltfAnimation.new_(name, duration, channels)
GET
GltfAnimation.name
GET
GltfAnimation.duration → Num
GET
GltfAnimation.channels
FN
GltfAnimation.applyTo(scene: GltfScene, world: World, t: Num)
FN
GltfAnimation.crossfade(other: GltfAnimation, scene: GltfScene, world: World, tSelf: Num, tOther: Num, blend: Num)
FN
GltfAnimation.writeSample_(transform, path, v)
FN
GltfAnimation.writeBlended_(transform, path, a, b, t)
CL
GltfAnimChannel
NEW
GltfAnimChannel.new_(nodeIndex, path, inputs, outputs, components, interpolation)
GET
GltfAnimChannel.nodeIndex
GET
GltfAnimChannel.path
GET
GltfAnimChannel.interpolation
FN
GltfAnimChannel.sample(t: Num) → List<Num>
FN
GltfAnimChannel.static outputAt_(outputs, keyframeIdx, components)
CL
GltfMesh
NEW
GltfMesh.new_(name: String, primitives: List<GltfPrimitive>)
GET
GltfMesh.name
GET
GltfMesh.primitives
FN
GltfMesh.upload_(device, materials, textures)
CL
GltfPrimitive
NEW
GltfPrimitive.new_(positions: Float32Array, normals: Float32Array|Null, uvs: Float32Array|Null, tangents, indices: Int32Array|Null, materialIndex: Num|Null)
GET
GltfPrimitive.positions
GET
GltfPrimitive.normals
GET
GltfPrimitive.uvs
GET
GltfPrimitive.tangents
GET
GltfPrimitive.indices
GET
GltfPrimitive.joints
SET
GltfPrimitive.joints_=(v)
GET
GltfPrimitive.weights
SET
GltfPrimitive.weights_=(v)
GET
GltfPrimitive.materialIndex
GET
GltfPrimitive.mesh
GET
GltfPrimitive.material
FN
GltfPrimitive.upload_(device, materials, textures)
FN
GltfPrimitive.pickMaterial_(materials, textures)
FN
GltfPrimitive.defaultMaterial_()
CL
GltfMaterial
NEW
GltfMaterial.new_(name: String, baseColor: Vec4, metallic: Num, roughness: Num, albedoImageIndex: Num|Null, mrImageIndex: Num|Null, normalImageIndex: Num|Null, normalScale: Num, occlusionImageIndex: Num|Null, occlusionStrength: Num, emissiveImageIndex: Num|Null, emissiveColor: Vec4, alphaMode: String, alphaCutoff: Num, doubleSided: Bool)
GET
GltfMaterial.name
GET
GltfMaterial.baseColor
GET
GltfMaterial.metallic
GET
GltfMaterial.roughness
GET
GltfMaterial.albedoImageIndex
GET
GltfMaterial.mrImageIndex
GET
GltfMaterial.normalImageIndex
GET
GltfMaterial.normalScale
GET
GltfMaterial.occlusionImageIndex
GET
GltfMaterial.occlusionStrength
GET
GltfMaterial.emissiveImageIndex
GET
GltfMaterial.emissiveColor
GET
GltfMaterial.alphaMode
GET
GltfMaterial.alphaCutoff
GET
GltfMaterial.doubleSided
FN
GltfMaterial.toGpuMaterial(textures: List<Texture|Null>) → Material