hammer scale

This commit is contained in:
Robin Appelman 2022-02-27 21:51:07 +01:00
commit 76081413c8
3 changed files with 56 additions and 39 deletions

73
Cargo.lock generated
View file

@ -4,12 +4,12 @@ version = 3
[[package]]
name = "ab_glyph"
version = "0.2.13"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61caed9aec6daeee1ea38ccf5fb225e4f96c1eeead1b4a5c267324a63cf02326"
checksum = "d54a65e0d4f66f8536c98cb3ca81ca33b7e2ca43442465507a3a62291ec0d9e4"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser 0.14.0",
"owned_ttf_parser 0.15.0",
]
[[package]]
@ -551,9 +551,9 @@ dependencies = [
[[package]]
name = "dirs"
version = "3.0.2"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
dependencies = [
"dirs-sys",
]
@ -738,9 +738,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.4"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c"
checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
dependencies = [
"cfg-if 1.0.0",
"libc",
@ -1150,9 +1150,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.118"
version = "0.2.119"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06e509672465a0504304aa87f9f176f2b2b716ed8fb105ebe5c02dc6dce96a94"
checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
[[package]]
name = "libloading"
@ -1243,9 +1243,9 @@ dependencies = [
[[package]]
name = "miette"
version = "3.3.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd2adcfcced5d625bf90a958a82ae5b93231f57f3df1383fee28c9b5096d35ed"
checksum = "e7ea7314b2a8dd373c2f2d2322e866ddea5d62ffd3d6cd7f2bb8c1467e56529f"
dependencies = [
"atty",
"backtrace",
@ -1258,13 +1258,14 @@ dependencies = [
"terminal_size",
"textwrap",
"thiserror",
"unicode-width",
]
[[package]]
name = "miette-derive"
version = "3.3.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c01a8b61312d367ce87956bb686731f87e4c6dd5dbc550e8f06e3c24fb1f67f"
checksum = "c547b28d4f52cae473fb5a30ca087ed7fc5d1bac150bd6dfd9ec0a4562303aa3"
dependencies = [
"proc-macro2",
"quote",
@ -1522,7 +1523,7 @@ version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d992b768490d7fe0d8586d9b5745f6c49f557da6d81dc982b1d167ad4edbb21"
dependencies = [
"proc-macro-crate 1.1.2",
"proc-macro-crate 1.1.3",
"proc-macro2",
"quote",
"syn",
@ -1614,11 +1615,11 @@ dependencies = [
[[package]]
name = "owned_ttf_parser"
version = "0.14.0"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ef05f2882a8b3e7acc10c153ade2631f7bfc8ce00d2bf3fb8f4e9d2ae6ea5c3"
checksum = "4fb1e509cfe7a12db2a90bfa057dfcdbc55a347f5da677c506b53dd099cfec9d"
dependencies = [
"ttf-parser 0.14.0",
"ttf-parser 0.15.0",
]
[[package]]
@ -1699,9 +1700,9 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
version = "1.1.2"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dada8c9981fcf32929c3c0f0cd796a9284aca335565227ed88c83babb1d43dc"
checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a"
dependencies = [
"thiserror",
"toml",
@ -2064,6 +2065,17 @@ dependencies = [
"unicode-xid",
]
[[package]]
name = "syn_util"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6754c4559b79657554e9d8a0d56e65e490c76d382b9c23108364ec4125dea23c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tempfile"
version = "3.3.0"
@ -2228,9 +2240,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
[[package]]
name = "tracing"
version = "0.1.30"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9"
checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f"
dependencies = [
"cfg-if 1.0.0",
"pin-project-lite",
@ -2260,9 +2272,9 @@ checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc"
[[package]]
name = "ttf-parser"
version = "0.14.0"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ccbe8381883510b6a2d8f1e32905bddd178c11caef8083086d0c0c9ab0ac281"
checksum = "c74c96594835e10fa545e2a51e8709f30b173a092bfd6036ef2cec53376244f3"
[[package]]
name = "unicode-bidi"
@ -2324,6 +2336,17 @@ dependencies = [
"num_enum",
"static_assertions",
"thiserror",
"vbsp-derive",
]
[[package]]
name = "vbsp-derive"
version = "0.1.0"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn_util",
]
[[package]]
@ -2647,9 +2670,9 @@ dependencies = [
[[package]]
name = "xdg"
version = "2.4.0"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a23fe958c70412687039c86f578938b4a0bb50ec788e96bce4d6ab00ddd5803"
checksum = "0c4583db5cbd4c4c0303df2d15af80f0539db703fa1c68802d4cbbd2dd0f88f6"
dependencies = [
"dirs",
]

View file

@ -8,7 +8,7 @@ license = "MIT"
[dependencies]
three-d = "0.10.2"
vbsp = { version = "0.1.0", path = "../bsp" }
miette = { version = "3.2.0", features = ["fancy"] }
miette = { version = "4.2.1", features = ["fancy"] }
thiserror = "1.0.30"
delaunator = "1.0.1"
itertools = "0.10.3"

View file

@ -51,7 +51,7 @@ fn main() -> Result<(), Error> {
let mut camera = Camera::new_perspective(
&context,
window.viewport().unwrap(),
vec3(2.0, 2.0, 5.0),
vec3(4.0, 4.0, 11.0),
vec3(0.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
degrees(90.0),
@ -59,7 +59,7 @@ fn main() -> Result<(), Error> {
30.0,
)
.unwrap();
let mut control = FirstPerson::new(0.05);
let mut control = FirstPerson::new(0.1);
let mut gui = three_d::GUI::new(&context).unwrap();
let material = PhysicalMaterial {
@ -156,7 +156,7 @@ fn main() -> Result<(), Error> {
// Draw
{
camera
.set_perspective_projection(degrees(fov), 0.1, 30.0)
.set_perspective_projection(degrees(fov), camera.z_near(), camera.z_far())
.unwrap();
if shadows_enabled {
lights.directional[0]
@ -220,16 +220,10 @@ fn main() -> Result<(), Error> {
Ok(())
}
// 1 hammer unit is ~1.905cm
const UNIT_SCALE: f32 = 1.0 / (1.905 * 100.0);
fn model_to_mesh(model: Handle<vbsp::data::Model>) -> CPUMesh {
let size = [
model.maxs.z - model.mins.z,
model.maxs.y - model.mins.y,
model.maxs.x - model.mins.x,
]
.into_iter()
.max_by(|a, b| a.partial_cmp(b).unwrap())
.unwrap()
/ 50.0;
let positions: Vec<f32> = model
.faces()
.filter(|face| face.is_visible())
@ -240,7 +234,7 @@ fn model_to_mesh(model: Handle<vbsp::data::Model>) -> CPUMesh {
.unwrap_or_else(|| Either::Right(face.triangulate().flat_map(|verts| verts)))
})
.flat_map(|vertex| [-vertex.x, vertex.z, vertex.y])
.map(|c| c / size)
.map(|c| c * UNIT_SCALE)
.collect();
CPUMesh {