diff --git a/gltf.cm b/gltf.cm index 13f8601..9419a9b 100644 --- a/gltf.cm +++ b/gltf.cm @@ -24,7 +24,7 @@ function join_paths(base, rel) { } function ends_with(path, suffix) { - return path.length >= suffix.length && text(path, path.length - suffix.length) == suffix + return length(path) >= length(suffix) && text(path, length(path) - length(suffix)) == suffix } function spaces(count) { @@ -60,10 +60,10 @@ function parse_data_uri(uri) { var mime = "text/plain" var is_base64 = false - if (meta.length > 0) { + if (length(meta) > 0) { var parts = array(meta, ";") if (parts[0]) mime = parts[0] - for (var i = 1; i < parts.length; i++) { + for (var i = 1; i < length(parts); i++) { if (parts[i]) == "base64") is_base64 = true } } @@ -127,8 +127,8 @@ function make_glb_from_json_and_bin(doc, bin_blob) { var json_text = json.encode(doc, null, 0) var json_blob = blob(json_text) - var json_bytes = json_blob.length / 8 - var bin_bytes = bin_blob.length / 8 + var json_bytes = length(json_blob) / 8 + var bin_bytes = length(bin_blob) / 8 var json_pad = (4 - (json_bytes % 4)) % 4 var bin_pad = (4 - (bin_bytes % 4)) % 4 @@ -162,7 +162,7 @@ function make_glb_from_json_and_bin(doc, bin_blob) { function ensure_image_slots(asset) { if (!asset.images) asset.images = [] - for (var i = 0; i < asset.images.length; i++) { + for (var i = 0; i < length(asset.images); i++) { var im = asset.images[i] if (!im) continue if (im.encoded == null) im.encoded = null @@ -171,8 +171,8 @@ function ensure_image_slots(asset) { } function synthesize_glb_from_gltf_json(doc, base_dir, uri_loader) { - if (!doc.buffers || doc.buffers.length == 0) throw Error("gltf: .gltf has no buffers") - if (doc.buffers.length != 1) throw Error("gltf: only .gltf with exactly 1 buffer is supported") + if (!doc.buffers || length(doc.buffers) == 0) throw Error("gltf: .gltf has no buffers") + if (length(doc.buffers) != 1) throw Error("gltf: only .gltf with exactly 1 buffer is supported") var uri = doc.buffers[0].uri if (!uri) throw Error("gltf: buffer[0] has no uri") @@ -274,7 +274,7 @@ function used_texture_indices(asset) { used[ti.texture] = true } - for (var i = 0; i < mats.length; i++) { + for (var i = 0; i < length(mats); i++) { var m = mats[i] if (!m) continue if (m.pbr) { @@ -333,14 +333,14 @@ gltf.collect_dependencies = function(asset) { if (!doc) return deps if (doc.buffers) { - for (var i = 0; i < doc.buffers.length; i++) { + for (var i = 0; i < length(doc.buffers); i++) { var b = doc.buffers[i] if (b && b.uri) deps.buffers.push(b.uri) } } if (doc.images) { - for (var i = 0; i < doc.images.length; i++) { + for (var i = 0; i < length(doc.images); i++) { var im = doc.images[i] if (im && im.uri) deps.images.push(im.uri) } @@ -375,7 +375,7 @@ gltf.pull_images = function(asset, opts) { var cache = {} var total = 0 - for (var i = 0; i < asset.images.length; i++) { + for (var i = 0; i < length(asset.images); i++) { if (used && !used[i]) continue var img = asset.images[i] if (!img) continue @@ -389,7 +389,7 @@ gltf.pull_images = function(asset, opts) { continue } img.encoded = encoded - total += encoded.length / 8 + total += length(encoded) / 8 continue } @@ -411,7 +411,7 @@ gltf.pull_images = function(asset, opts) { if (!stone.p(encoded)) stone(encoded) img.encoded = encoded if (dedupe) cache[key] = encoded - total += encoded.length / 8 + total += length(encoded) / 8 if (max_total_bytes > 0 && total > max_total_bytes) throw Error("max_total_bytes exceeded") } catch (e) { if (on_missing == "throw") throw e @@ -436,7 +436,7 @@ function guess_mime(img) { function premultiply_rgba(pixels_blob) { if (!stone.p(pixels_blob)) stone(pixels_blob) - var bytes = pixels_blob.length / 8 + var bytes = length(pixels_blob) / 8 var out = blob(bytes * 8) for (var i = 0; i < bytes; i += 4) { var r = pixels_blob.read_fit((i + 0) * 8, 8) @@ -486,7 +486,7 @@ gltf.decode_images = function(asset, opts) { var used = null if (mode == "used") used = used_image_indices(asset) - for (var i = 0; i < asset.images.length; i++) { + for (var i = 0; i < length(asset.images); i++) { if (used && !used[i]) continue var img = asset.images[i] if (!img) continue @@ -527,7 +527,7 @@ gltf.drop_images = function(asset, what) { if (what == null) what = "all" ensure_image_slots(asset) - for (var i = 0; i < asset.images.length; i++) { + for (var i = 0; i < length(asset.images); i++) { var img = asset.images[i] if (!img) continue if (what == "encoded" || what == "all") img.encoded = null @@ -539,37 +539,37 @@ gltf.drop_images = function(asset, what) { gltf.stats = function(asset) { var stats = { - meshes: (asset.meshes ? asset.meshes.length : 0), - nodes: (asset.nodes ? asset.nodes.length : 0), - images: (asset.images ? asset.images.length : 0), - textures: (asset.textures ? asset.textures.length : 0), - materials: (asset.materials ? asset.materials.length : 0), - animations: (asset.animations ? asset.animations.length : 0), - skins: (asset.skins ? asset.skins.length : 0), + meshes: (asset.meshes ? length(asset.meshes) : 0), + nodes: (asset.nodes ? length(asset.nodes) : 0), + images: (asset.images ? length(asset.images) : 0), + textures: (asset.textures ? length(asset.textures) : 0), + materials: (asset.materials ? length(asset.materials) : 0), + animations: (asset.animations ? length(asset.animations) : 0), + skins: (asset.skins ? length(asset.skins) : 0), bin_bytes: 0, encoded_image_bytes: 0, triangles: 0 } if (asset.buffers) { - for (var i = 0; i < asset.buffers.length; i++) { + for (var i = 0; i < length(asset.buffers); i++) { var b = asset.buffers[i] - if (b && b.blob) stats.bin_bytes += b.blob.length / 8 + if (b && b.blob) stats.bin_bytes += length(b.blob) / 8 } } if (asset.images) { - for (var i = 0; i < asset.images.length; i++) { + for (var i = 0; i < length(asset.images); i++) { var im = asset.images[i] - if (im && im.encoded) stats.encoded_image_bytes += im.encoded.length / 8 + if (im && im.encoded) stats.encoded_image_bytes += length(im.encoded) / 8 } } if (asset.meshes) { - for (var mi = 0; mi < asset.meshes.length; mi++) { + for (var mi = 0; mi < length(asset.meshes); mi++) { var m = asset.meshes[mi] if (!m || !m.primitives) continue - for (var pi = 0; pi < m.primitives.length; pi++) { + for (var pi = 0; pi < length(m.primitives); pi++) { var p = m.primitives[pi] if (!p) continue if (p.topology != "triangles") continue diff --git a/tests/readout.ce b/tests/readout.ce index 52dc17d..e1c21f7 100644 --- a/tests/readout.ce +++ b/tests/readout.ce @@ -3,7 +3,7 @@ var obj = use('obj') var fbx = use('fbx') var fs = use('cellfs') -if (args.length < 1) { +if (length(args) < 1) { log.console("Usage: cell run tests/readout.ce ") log.console("Supported formats: .gltf, .glb, .obj, .fbx") $stop() @@ -33,11 +33,11 @@ if (ext == '.gltf' || ext == '.glb') { } def print_array = function(arr, indent) { - if (!arr || arr.length == 0) { + if (!arr || length(arr) == 0) { log.console(`${indent}(empty)`) return } - for (var i = 0; i < arr.length; i++) { + for (var i = 0; i < length(arr); i++) { var item = arr[i] if (is_object(item)) { log.console(`${indent}[${i}]:`) @@ -51,22 +51,22 @@ def print_array = function(arr, indent) { def print_object = function(obj, indent) { if (!indent) indent = "" var keys = array(obj) - for (var i = 0; i < keys.length; i++) { + for (var i = 0; i < length(keys); i++) { var key = keys[i] var val = obj[key] if (val == null) { log.console(`${indent}${key}: null`) } else if (val.constructor && val.constructor.name == 'Blob') { - log.console(`${indent}${key}: `) + log.console(`${indent}${key}: `) } else if (is_array(val)) { - if (val.length == 0) { + if (length(val) == 0) { log.console(`${indent}${key}: []`) - } else if (val.length <= 4 && !is_object(val[0])) { + } else if (length(val) <= 4 && !is_object(val[0])) { log.console(`${indent}${key}: [${text(val, ', ')}]`) } else if (!is_object(val[0])) { - log.console(`${indent}${key}: [${text(array(val, 0, 4), ', ')}...] (${val.length} items)`) + log.console(`${indent}${key}: [${text(array(val, 0, 4), ', ')}...] (${length(val)} items)`) } else { - log.console(`${indent}${key}: (${val.length} items)`) + log.console(`${indent}${key}: (${length(val)} items)`) print_array(val, indent + " ") } } else { @@ -81,40 +81,40 @@ def print_object = function(obj, indent) { log.console(`\n=== Model Structure: ${filepath} ===\n`) -log.console(`Buffers: ${model.buffers.length}`) -for (var i = 0; i < model.buffers.length; i++) { +log.console(`Buffers: ${length(model.buffers)}`) +for (var i = 0; i < length(model.buffers); i++) { var buf = model.buffers[i] log.console(` [${i}] byte_length: ${buf.byte_length}`) } -log.console(`\nViews: ${model.views.length}`) -for (var i = 0; i < model.views.length; i++) { +log.console(`\nViews: ${length(model.views)}`) +for (var i = 0; i < length(model.views); i++) { var v = model.views[i] log.console(` [${i}] buffer: ${v.buffer}, offset: ${v.byte_offset}, length: ${v.byte_length}, stride: ${v.byte_stride}, usage: ${v.usage}`) } -log.console(`\nAccessors: ${model.accessors.length}`) -for (var i = 0; i < model.accessors.length; i++) { +log.console(`\nAccessors: ${length(model.accessors)}`) +for (var i = 0; i < length(model.accessors); i++) { var a = model.accessors[i] log.console(` [${i}] view: ${a.view}, offset: ${a.byte_offset}, count: ${a.count}, type: ${a.component_type}/${a.type}, normalized: ${a.normalized}`) } -log.console(`\nMeshes: ${model.meshes.length}`) -for (var i = 0; i < model.meshes.length; i++) { +log.console(`\nMeshes: ${length(model.meshes)}`) +for (var i = 0; i < length(model.meshes); i++) { var m = model.meshes[i] log.console(` [${i}] name: ${m.name}`) - for (var j = 0; j < m.primitives.length; j++) { + for (var j = 0; j < length(m.primitives); j++) { var p = m.primitives[j] log.console(` primitive[${j}]: topology: ${p.topology}, indices: ${p.indices}, material: ${p.material}`) var ak = array(p.attributes) var parts = [] - for (var k = 0; k < ak.length; k++) parts.push(ak[k] + ': ' + text(p.attributes[ak[k]])) + for (var k = 0; k < length(ak); k++) parts.push(ak[k] + ': ' + text(p.attributes[ak[k]])) log.console(' attributes: {' + text(parts, ', ') + '}') } } -log.console(`\nMaterials: ${model.materials.length}`) -for (var i = 0; i < model.materials.length; i++) { +log.console(`\nMaterials: ${length(model.materials)}`) +for (var i = 0; i < length(model.materials); i++) { var m = model.materials[i] log.console(` [${i}] name: ${m.name}, alpha_mode: ${m.alpha_mode}, double_sided: ${m.double_sided}`) if (m.pbr) { @@ -122,26 +122,26 @@ for (var i = 0; i < model.materials.length; i++) { } } -log.console(`\nImages: ${model.images.length}`) -for (var i = 0; i < model.images.length; i++) { +log.console(`\nImages: ${length(model.images)}`) +for (var i = 0; i < length(model.images); i++) { var im = model.images[i] log.console(` [${i}] kind: ${im.kind}, ${im.kind == 'uri' ? 'uri: ' + im.uri : 'view: ' + im.view}, mime: ${im.mime}`) } -log.console(`\nTextures: ${model.textures.length}`) -for (var i = 0; i < model.textures.length; i++) { +log.console(`\nTextures: ${length(model.textures)}`) +for (var i = 0; i < length(model.textures); i++) { var t = model.textures[i] log.console(` [${i}] image: ${t.image}, sampler: ${t.sampler}`) } -log.console(`\nSamplers: ${model.samplers.length}`) -for (var i = 0; i < model.samplers.length; i++) { +log.console(`\nSamplers: ${length(model.samplers)}`) +for (var i = 0; i < length(model.samplers); i++) { var s = model.samplers[i] log.console(` [${i}] min: ${s.min_filter}, mag: ${s.mag_filter}, wrap_s: ${s.wrap_s}, wrap_t: ${s.wrap_t}`) } -log.console(`\nNodes: ${model.nodes.length}`) -for (var i = 0; i < model.nodes.length; i++) { +log.console(`\nNodes: ${length(model.nodes)}`) +for (var i = 0; i < length(model.nodes); i++) { var n = model.nodes[i] log.console(` [${i}] name: ${n.name}, mesh: ${n.mesh}, children: [${n.children}], skin: ${n.skin}`) if (n.matrix) { @@ -151,22 +151,22 @@ for (var i = 0; i < model.nodes.length; i++) { } } -log.console(`\nScenes: ${model.scenes.length}, default: ${model.scene}`) -for (var i = 0; i < model.scenes.length; i++) { +log.console(`\nScenes: ${length(model.scenes)}, default: ${model.scene}`) +for (var i = 0; i < length(model.scenes); i++) { var s = model.scenes[i] log.console(` [${i}] nodes: [${s.nodes}]`) } -log.console(`\nAnimations: ${model.animations.length}`) -for (var i = 0; i < model.animations.length; i++) { +log.console(`\nAnimations: ${length(model.animations)}`) +for (var i = 0; i < length(model.animations); i++) { var a = model.animations[i] - log.console(` [${i}] name: ${a.name}, samplers: ${a.samplers.length}, channels: ${a.channels.length}`) + log.console(` [${i}] name: ${a.name}, samplers: ${length(a.samplers)}, channels: ${length(a.channels)}`) } -log.console(`\nSkins: ${model.skins.length}`) -for (var i = 0; i < model.skins.length; i++) { +log.console(`\nSkins: ${length(model.skins)}`) +for (var i = 0; i < length(model.skins); i++) { var s = model.skins[i] - log.console(` [${i}] name: ${s.name}, joints: ${s.joints.length}, ibm: ${s.inverse_bind_matrices}, skeleton: ${s.skeleton}`) + log.console(` [${i}] name: ${s.name}, joints: ${length(s.joints)}, ibm: ${s.inverse_bind_matrices}, skeleton: ${s.skeleton}`) } log.console(`\nExtensions:`)