From 850697b0dcafc0b27cf2b0843f1913f5ce584a25 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Sat, 17 Jun 2023 00:39:10 +0200 Subject: [PATCH] Fix instant usage on web --- Cargo.lock | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/lib.rs | 8 ++- 3 files changed, 151 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 62bf364..3f86f95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,6 +134,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "bit-set" version = "0.5.3" @@ -341,6 +347,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + [[package]] name = "dispatch" version = "0.2.0" @@ -552,6 +564,16 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", + "stdweb", +] + [[package]] name = "io-lifetimes" version = "1.0.11" @@ -575,6 +597,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + [[package]] name = "jni-sys" version = "0.3.0" @@ -1104,6 +1132,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.37.20" @@ -1118,6 +1155,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + [[package]] name = "scoped-tls" version = "1.0.1" @@ -1143,12 +1186,64 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "serde" version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +[[package]] +name = "serde_derive" +version = "1.0.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.18", +] + +[[package]] +name = "serde_json" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdf3bf93142acad5821c99197022e170842cdbc1c30482b98750c688c640842a" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "slotmap" version = "1.0.6" @@ -1211,6 +1306,57 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "serde", + "serde_json", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + [[package]] name = "strict-num" version = "0.1.1" @@ -1587,6 +1733,7 @@ dependencies = [ "console_log", "env_logger", "getrandom", + "instant", "log", "pollster", "rand", diff --git a/Cargo.toml b/Cargo.toml index 776a188..8ca5995 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ crate-type = ["cdylib", "rlib"] bytemuck = { version = "*", features = ["derive"] } env_logger = "*" log = "*" +instant = { version = "*", features = ["stdweb"] } pollster = "*" rand = "*" rand_chacha = "*" diff --git a/src/lib.rs b/src/lib.rs index b8abd9c..dc7b6c9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,5 @@ mod event_loop; -use std::time::Instant; - use rand::prelude::*; use rand_chacha::ChaCha20Rng; @@ -124,7 +122,7 @@ pub async fn run() -> ! { pub struct State<'a> { elapsed_time: f32, - last_time: Instant, + last_time: instant::Instant, device: wgpu::Device, queue: wgpu::Queue, texture_view_descriptor: wgpu::TextureViewDescriptor<'a>, @@ -680,7 +678,7 @@ impl<'a> State<'a> { surface_format, ); - let last_time = Instant::now(); + let last_time = instant::Instant::now(); let elapsed_time = 0.; Ok(Self { @@ -780,7 +778,7 @@ impl<'a> State<'a> { const SIM_DT: f32 = 1.0 / 4.0; self.elapsed_time += self.last_time.elapsed().as_secs_f32(); let advance_state = self.elapsed_time > SIM_DT; - self.last_time = Instant::now(); + self.last_time = instant::Instant::now(); if advance_state { self.elapsed_time = 0.;