
# Objective - I'm compiling (parts of) bevy for an embedded platform with no 64bit atomic and ctrlc handler support. Some compilation errors came up. This PR contains the fixes for those. - Fix depth_bias casting in PBR material (Fixes #14169) - Negative depth_bias values were casted to 0 before this PR - f32::INFINITY depth_bias value was casted to -1 before this PR ## Solutions - Restrict 64bit atomic reflection to supported platforms - Restrict ctrlc handler to supported platforms (linux, windows or macos instead of "not wasm") - The depth bias value (f32) is first casted to i32 then u64 in order to preserve negative values ## Testing - This version compiles on a platform with no 64bit atomic support, and no ctrlc support - CtrlC handler still works on Linux and Windows (I can't test on Macos) - depth_bias: ```rust println!("{}",f32::INFINITY as u64 as i32); // Prints: -1 (old implementation) println!("{}",f32::INFINITY as i32 as u64 as i32); // Prints: 2147483647 (expected, new implementation) ``` Also ran a modified version of 3d_scene example with the following results: RED cube depth_bias: -1000.0 BLUE cube depth_bias: 0.0  RED cube depth_bias: -INF BLUE cube depth_bias: 0.0  RED cube depth_bias: INF (case reported in #14169) BLUE cube depth_bias: 0.0 (Im not completely sure whats going on with the shadows here, it seems like depth_bias has some affect to those aswell, if this is unintentional this issue was not introduced by this PR) 
72 lines
1.9 KiB
Rust
72 lines
1.9 KiB
Rust
#![cfg_attr(
|
|
any(docsrs, docsrs_dep),
|
|
expect(
|
|
internal_features,
|
|
reason = "rustdoc_internals is needed for fake_variadic"
|
|
)
|
|
)]
|
|
#![cfg_attr(any(docsrs, docsrs_dep), feature(doc_auto_cfg, rustdoc_internals))]
|
|
#![forbid(unsafe_code)]
|
|
#![deny(
|
|
clippy::allow_attributes,
|
|
clippy::allow_attributes_without_reason,
|
|
reason = "See #17111; To be removed once all crates are in-line with these attributes"
|
|
)]
|
|
#![doc(
|
|
html_logo_url = "https://bevyengine.org/assets/icon.png",
|
|
html_favicon_url = "https://bevyengine.org/assets/icon.png"
|
|
)]
|
|
#![no_std]
|
|
|
|
//! This crate is about everything concerning the highest-level, application layer of a Bevy app.
|
|
|
|
#[cfg(feature = "std")]
|
|
extern crate std;
|
|
|
|
extern crate alloc;
|
|
|
|
mod app;
|
|
mod main_schedule;
|
|
mod panic_handler;
|
|
mod plugin;
|
|
mod plugin_group;
|
|
mod schedule_runner;
|
|
mod sub_app;
|
|
#[cfg(feature = "bevy_tasks")]
|
|
mod task_pool_plugin;
|
|
#[cfg(all(any(unix, windows), feature = "std"))]
|
|
mod terminal_ctrl_c_handler;
|
|
|
|
pub use app::*;
|
|
pub use main_schedule::*;
|
|
pub use panic_handler::*;
|
|
pub use plugin::*;
|
|
pub use plugin_group::*;
|
|
pub use schedule_runner::*;
|
|
pub use sub_app::*;
|
|
#[cfg(feature = "bevy_tasks")]
|
|
pub use task_pool_plugin::*;
|
|
#[cfg(all(any(unix, windows), feature = "std"))]
|
|
pub use terminal_ctrl_c_handler::*;
|
|
|
|
/// The app prelude.
|
|
///
|
|
/// This includes the most common types in this crate, re-exported for your convenience.
|
|
pub mod prelude {
|
|
#[doc(hidden)]
|
|
pub use crate::{
|
|
app::{App, AppExit},
|
|
main_schedule::{
|
|
First, FixedFirst, FixedLast, FixedPostUpdate, FixedPreUpdate, FixedUpdate, Last, Main,
|
|
PostStartup, PostUpdate, PreStartup, PreUpdate, RunFixedMainLoop,
|
|
RunFixedMainLoopSystem, SpawnScene, Startup, Update,
|
|
},
|
|
sub_app::SubApp,
|
|
Plugin, PluginGroup,
|
|
};
|
|
|
|
#[cfg(feature = "bevy_tasks")]
|
|
#[doc(hidden)]
|
|
pub use crate::{NonSendMarker, TaskPoolOptions, TaskPoolPlugin};
|
|
}
|