This commit is contained in:
2026-01-16 20:57:03 -06:00
parent 492d7a3275
commit 1a6f34e5e4
6 changed files with 24 additions and 23 deletions

View File

@@ -124,8 +124,8 @@ function _check_collision(a, b) {
var dist = math.sqrt(dx*dx + dy*dy + dz*dz)
// Simple sphere-sphere approximation
var ra = a.radius || number.max(a.sx || 0, a.sy || 0, a.sz || 0)
var rb = b.radius || number.max(b.sx || 0, b.sy || 0, b.sz || 0)
var ra = a.radius || max(a.sx || 0, a.sy || 0, a.sz || 0)
var rb = b.radius || max(b.sx || 0, b.sy || 0, b.sz || 0)
return dist < ra + rb
}
@@ -182,7 +182,7 @@ function _ray_box(ox, oy, oz, dx, dy, dz, box) {
var nx = 0, ny = 0, nz = 0
// X slab
if (number.abs(dx) > 0.0001) {
if (abs(dx) > 0.0001) {
var t1 = (minx - ox) / dx
var t2 = (maxx - ox) / dx
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
@@ -193,7 +193,7 @@ function _ray_box(ox, oy, oz, dx, dy, dz, box) {
}
// Y slab
if (number.abs(dy) > 0.0001) {
if (abs(dy) > 0.0001) {
var t1 = (miny - oy) / dy
var t2 = (maxy - oy) / dy
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
@@ -204,7 +204,7 @@ function _ray_box(ox, oy, oz, dx, dy, dz, box) {
}
// Z slab
if (number.abs(dz) > 0.0001) {
if (abs(dz) > 0.0001) {
var t1 = (minz - oz) / dz
var t2 = (maxz - oz) / dz
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }

View File

@@ -186,7 +186,7 @@ function log_msg() {
for (var i = 0; i < arguments.length; i++) {
args.push(text(arguments[i]))
}
log.console("[lance3d] " + args.join(" "))
log.console("[lance3d] " + text(args, " "))
}
function set_lighting(opts) {
@@ -197,13 +197,13 @@ function set_lighting(opts) {
_state.lighting.sun_dir = [d[0]/len, d[1]/len, d[2]/len]
}
}
if (opts.sun_color) _state.lighting.sun_color = opts.sun_color.slice()
if (opts.ambient) _state.lighting.ambient = opts.ambient.slice()
if (opts.sun_color) _state.lighting.sun_color = array(opts.sun_color)
if (opts.ambient) _state.lighting.ambient = array(opts.ambient)
}
function set_fog(opts) {
if (opts.enabled != null) _state.fog.enabled = opts.enabled
if (opts.color) _state.fog.color = opts.color.slice()
if (opts.color) _state.fog.color = array(opts.color)
if (opts.near != null) _state.fog.near = opts.near
if (opts.far != null) _state.fog.far = opts.far
}

View File

@@ -35,7 +35,7 @@ function process_events() {
return false
}
if (ev.type == "key_down" || ev.type == "key_up") {
var key_name = keyboard.get_key_name(ev.key).toLowerCase()
var key_name = lower(keyboard.get_key_name(ev.key))
var pressed = ev.type == "key_down"
if (pressed && !_keys_held[key_name]) {
@@ -62,12 +62,12 @@ function process_events() {
// Check if a key is held (by name)
function key(name) {
return _keys_held[name.toLowerCase()] || false
return _keys_held[lower(name)] || false
}
// Check if a key was just pressed this frame (by name)
function keyp(name) {
return _keys_pressed[name.toLowerCase()] || false
return _keys_pressed[lower(name)] || false
}
// Check if a button is held (by index 0-7)

View File

@@ -17,7 +17,7 @@ function rand() {
}
function irand(min_inclusive, max_inclusive) {
return number.floor(rand() * (max_inclusive - min_inclusive + 1)) + min_inclusive
return floor(rand() * (max_inclusive - min_inclusive + 1)) + min_inclusive
}
// Matrix helpers

View File

@@ -47,9 +47,9 @@ function resize_image_for_platform(img, style, tier) {
}
// Resize to fit within target_size x target_size (square)
var scale = target_size / number.max(src_w, src_h)
var dst_w = number.floor(src_w * scale)
var dst_h = number.floor(src_h * scale)
var scale = target_size / max(src_w, src_h)
var dst_w = floor(src_w * scale)
var dst_h = floor(src_h * scale)
if (dst_w < 1) dst_w = 1
if (dst_h < 1) dst_h = 1
@@ -107,7 +107,7 @@ function load_texture(path, style, tier) {
}
function load_model(path, style, tier) {
var ext = path.slice(path.lastIndexOf('.') + 1).toLowerCase()
var ext = lower(text(path, path.lastIndexOf('.') + 1))
if (ext != "gltf" && ext != "glb") {
log.console("resources: unsupported model format: " + ext)
@@ -156,7 +156,7 @@ function load_model(path, style, tier) {
var paint = [1, 1, 1, 1]
if (gmat.pbr && gmat.pbr.base_color_factor) {
paint = gmat.pbr.base_color_factor.slice()
paint = array(gmat.pbr.base_color_factor)
}
var color_map = null
@@ -346,8 +346,8 @@ function _make_internal_transform(node) {
function _transform_set_parent(child, parent) {
if (child.parent) {
var idx = child.parent.children.indexOf(child)
if (idx >= 0) child.parent.children.splice(idx, 1)
var idx = find(child.parent.children, child)
if (idx != null) child.parent.children.splice(idx, 1)
}
child.parent = parent
if (parent) parent.children.push(child)

7
sdl.cm
View File

@@ -333,10 +333,11 @@ function submit_frame(draws, clear_color, clear_depth, style_id) {
var swap_pass = cmd.render_pass(pass_desc)
// Sort draws: opaque first, then cutoff, then blend
draws.sort(function(a, b) {
var order = { opaque: 0, cutoff: 1, mask: 1, blend: 2 }
return (order[a.coverage] || 0) - (order[b.coverage] || 0)
var keys = array(draws, d => {
var k = order[d.coverage]
return k == null ? 0 : k
})
draws = sort(draws, keys)
var draw_calls = 0
var triangles = 0