misty
This commit is contained in:
10
collision.cm
10
collision.cm
@@ -124,8 +124,8 @@ function _check_collision(a, b) {
|
|||||||
var dist = math.sqrt(dx*dx + dy*dy + dz*dz)
|
var dist = math.sqrt(dx*dx + dy*dy + dz*dz)
|
||||||
|
|
||||||
// Simple sphere-sphere approximation
|
// Simple sphere-sphere approximation
|
||||||
var ra = a.radius || number.max(a.sx || 0, a.sy || 0, a.sz || 0)
|
var ra = a.radius || 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 rb = b.radius || max(b.sx || 0, b.sy || 0, b.sz || 0)
|
||||||
return dist < ra + rb
|
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
|
var nx = 0, ny = 0, nz = 0
|
||||||
|
|
||||||
// X slab
|
// X slab
|
||||||
if (number.abs(dx) > 0.0001) {
|
if (abs(dx) > 0.0001) {
|
||||||
var t1 = (minx - ox) / dx
|
var t1 = (minx - ox) / dx
|
||||||
var t2 = (maxx - ox) / dx
|
var t2 = (maxx - ox) / dx
|
||||||
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
|
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
|
// Y slab
|
||||||
if (number.abs(dy) > 0.0001) {
|
if (abs(dy) > 0.0001) {
|
||||||
var t1 = (miny - oy) / dy
|
var t1 = (miny - oy) / dy
|
||||||
var t2 = (maxy - oy) / dy
|
var t2 = (maxy - oy) / dy
|
||||||
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
|
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
|
// Z slab
|
||||||
if (number.abs(dz) > 0.0001) {
|
if (abs(dz) > 0.0001) {
|
||||||
var t1 = (minz - oz) / dz
|
var t1 = (minz - oz) / dz
|
||||||
var t2 = (maxz - oz) / dz
|
var t2 = (maxz - oz) / dz
|
||||||
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
|
if (t1 > t2) { var tmp = t1; t1 = t2; t2 = tmp }
|
||||||
|
|||||||
8
core.cm
8
core.cm
@@ -186,7 +186,7 @@ function log_msg() {
|
|||||||
for (var i = 0; i < arguments.length; i++) {
|
for (var i = 0; i < arguments.length; i++) {
|
||||||
args.push(text(arguments[i]))
|
args.push(text(arguments[i]))
|
||||||
}
|
}
|
||||||
log.console("[lance3d] " + args.join(" "))
|
log.console("[lance3d] " + text(args, " "))
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_lighting(opts) {
|
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]
|
_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.sun_color) _state.lighting.sun_color = array(opts.sun_color)
|
||||||
if (opts.ambient) _state.lighting.ambient = opts.ambient.slice()
|
if (opts.ambient) _state.lighting.ambient = array(opts.ambient)
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_fog(opts) {
|
function set_fog(opts) {
|
||||||
if (opts.enabled != null) _state.fog.enabled = opts.enabled
|
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.near != null) _state.fog.near = opts.near
|
||||||
if (opts.far != null) _state.fog.far = opts.far
|
if (opts.far != null) _state.fog.far = opts.far
|
||||||
}
|
}
|
||||||
|
|||||||
6
input.cm
6
input.cm
@@ -35,7 +35,7 @@ function process_events() {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (ev.type == "key_down" || ev.type == "key_up") {
|
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"
|
var pressed = ev.type == "key_down"
|
||||||
|
|
||||||
if (pressed && !_keys_held[key_name]) {
|
if (pressed && !_keys_held[key_name]) {
|
||||||
@@ -62,12 +62,12 @@ function process_events() {
|
|||||||
|
|
||||||
// Check if a key is held (by name)
|
// Check if a key is held (by name)
|
||||||
function key(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)
|
// Check if a key was just pressed this frame (by name)
|
||||||
function keyp(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)
|
// Check if a button is held (by index 0-7)
|
||||||
|
|||||||
2
math.cm
2
math.cm
@@ -17,7 +17,7 @@ function rand() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function irand(min_inclusive, max_inclusive) {
|
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
|
// Matrix helpers
|
||||||
|
|||||||
14
resources.cm
14
resources.cm
@@ -47,9 +47,9 @@ function resize_image_for_platform(img, style, tier) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resize to fit within target_size x target_size (square)
|
// Resize to fit within target_size x target_size (square)
|
||||||
var scale = target_size / number.max(src_w, src_h)
|
var scale = target_size / max(src_w, src_h)
|
||||||
var dst_w = number.floor(src_w * scale)
|
var dst_w = floor(src_w * scale)
|
||||||
var dst_h = number.floor(src_h * scale)
|
var dst_h = floor(src_h * scale)
|
||||||
if (dst_w < 1) dst_w = 1
|
if (dst_w < 1) dst_w = 1
|
||||||
if (dst_h < 1) dst_h = 1
|
if (dst_h < 1) dst_h = 1
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ function load_texture(path, style, tier) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function load_model(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") {
|
if (ext != "gltf" && ext != "glb") {
|
||||||
log.console("resources: unsupported model format: " + ext)
|
log.console("resources: unsupported model format: " + ext)
|
||||||
@@ -156,7 +156,7 @@ function load_model(path, style, tier) {
|
|||||||
|
|
||||||
var paint = [1, 1, 1, 1]
|
var paint = [1, 1, 1, 1]
|
||||||
if (gmat.pbr && gmat.pbr.base_color_factor) {
|
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
|
var color_map = null
|
||||||
@@ -346,8 +346,8 @@ function _make_internal_transform(node) {
|
|||||||
|
|
||||||
function _transform_set_parent(child, parent) {
|
function _transform_set_parent(child, parent) {
|
||||||
if (child.parent) {
|
if (child.parent) {
|
||||||
var idx = child.parent.children.indexOf(child)
|
var idx = find(child.parent.children, child)
|
||||||
if (idx >= 0) child.parent.children.splice(idx, 1)
|
if (idx != null) child.parent.children.splice(idx, 1)
|
||||||
}
|
}
|
||||||
child.parent = parent
|
child.parent = parent
|
||||||
if (parent) parent.children.push(child)
|
if (parent) parent.children.push(child)
|
||||||
|
|||||||
7
sdl.cm
7
sdl.cm
@@ -333,10 +333,11 @@ function submit_frame(draws, clear_color, clear_depth, style_id) {
|
|||||||
var swap_pass = cmd.render_pass(pass_desc)
|
var swap_pass = cmd.render_pass(pass_desc)
|
||||||
|
|
||||||
// Sort draws: opaque first, then cutoff, then blend
|
// Sort draws: opaque first, then cutoff, then blend
|
||||||
draws.sort(function(a, b) {
|
var keys = array(draws, d => {
|
||||||
var order = { opaque: 0, cutoff: 1, mask: 1, blend: 2 }
|
var k = order[d.coverage]
|
||||||
return (order[a.coverage] || 0) - (order[b.coverage] || 0)
|
return k == null ? 0 : k
|
||||||
})
|
})
|
||||||
|
draws = sort(draws, keys)
|
||||||
|
|
||||||
var draw_calls = 0
|
var draw_calls = 0
|
||||||
var triangles = 0
|
var triangles = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user