mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
Consistently use PI
to specify angles in examples. (#5825)
Examples inconsistently use either `TAU`, `PI`, `FRAC_PI_2` or `FRAC_PI_4`. Often in odd ways and without `use`ing the constants, making it difficult to parse. * Use `PI` to specify angles. * General code-quality improvements. * Fix borked `hierarchy` example. Co-authored-by: devil-ira <justthecooldude@gmail.com>
This commit is contained in:
parent
fe6246dac6
commit
65252bb87a
24 changed files with 140 additions and 171 deletions
|
@ -3,6 +3,8 @@
|
|||
//! It doesn't use the [`Material2d`] abstraction, but changes the vertex buffer to include vertex color.
|
||||
//! Check out the "mesh2d" example for simpler / higher level 2d meshes.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
core_pipeline::core_2d::Transparent2d,
|
||||
prelude::*,
|
||||
|
@ -62,12 +64,12 @@ fn star(
|
|||
// These vertices are specified in 3D space.
|
||||
let mut v_pos = vec![[0.0, 0.0, 0.0]];
|
||||
for i in 0..10 {
|
||||
// Angle of each vertex is 1/10 of TAU, plus PI/2 for positioning vertex 0
|
||||
let a = std::f32::consts::FRAC_PI_2 - i as f32 * std::f32::consts::TAU / 10.0;
|
||||
// Radius of internal vertices (2, 4, 6, 8, 10) is 100, it's 200 for external
|
||||
// The angle between each vertex is 1/10 of a full rotation.
|
||||
let a = i as f32 * PI / 5.0;
|
||||
// The radius of inner vertices (even indices) is 100. For outer vertices (odd indices) it's 200.
|
||||
let r = (1 - i % 2) as f32 * 100.0 + 100.0;
|
||||
// Add the vertex coordinates
|
||||
v_pos.push([r * a.cos(), r * a.sin(), 0.0]);
|
||||
// Add the vertex position.
|
||||
v_pos.push([r * a.sin(), r * a.cos(), 0.0]);
|
||||
}
|
||||
// Set the position attribute
|
||||
star.insert_attribute(Mesh::ATTRIBUTE_POSITION, v_pos);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
//! Illustrates different lights of various types and colors, some static, some moving over
|
||||
//! a simple scene.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
|
@ -34,7 +36,7 @@ fn setup(
|
|||
|
||||
// left wall
|
||||
let mut transform = Transform::from_xyz(2.5, 2.5, 0.0);
|
||||
transform.rotate_z(std::f32::consts::FRAC_PI_2);
|
||||
transform.rotate_z(PI / 2.);
|
||||
commands.spawn_bundle(PbrBundle {
|
||||
mesh: meshes.add(Mesh::from(shape::Box::new(5.0, 0.15, 5.0))),
|
||||
transform,
|
||||
|
@ -47,7 +49,7 @@ fn setup(
|
|||
});
|
||||
// back (right) wall
|
||||
let mut transform = Transform::from_xyz(0.0, 2.5, -2.5);
|
||||
transform.rotate_x(std::f32::consts::FRAC_PI_2);
|
||||
transform.rotate_x(PI / 2.);
|
||||
commands.spawn_bundle(PbrBundle {
|
||||
mesh: meshes.add(Mesh::from(shape::Box::new(5.0, 0.15, 5.0))),
|
||||
transform,
|
||||
|
@ -138,9 +140,7 @@ fn setup(
|
|||
})
|
||||
.with_children(|builder| {
|
||||
builder.spawn_bundle(PbrBundle {
|
||||
transform: Transform::from_rotation(Quat::from_rotation_x(
|
||||
std::f32::consts::PI / 2.0,
|
||||
)),
|
||||
transform: Transform::from_rotation(Quat::from_rotation_x(PI / 2.0)),
|
||||
mesh: meshes.add(Mesh::from(shape::Capsule {
|
||||
depth: 0.125,
|
||||
radius: 0.1,
|
||||
|
@ -202,7 +202,7 @@ fn setup(
|
|||
},
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 2.0, 0.0),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::FRAC_PI_4),
|
||||
rotation: Quat::from_rotation_x(-PI / 4.),
|
||||
..default()
|
||||
},
|
||||
..default()
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Loads and renders a glTF file as a scene.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
|
@ -50,8 +52,8 @@ fn animate_light_direction(
|
|||
transform.rotation = Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
time.seconds_since_startup() as f32 * std::f32::consts::TAU / 10.0,
|
||||
-std::f32::consts::FRAC_PI_4,
|
||||
time.seconds_since_startup() as f32 * PI / 5.0,
|
||||
-PI / 4.,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Shows how to render to a texture. Useful for mirrors, UI, or exporting images.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
core_pipeline::clear_color::ClearColorConfig,
|
||||
prelude::*,
|
||||
|
@ -104,7 +106,7 @@ fn setup(
|
|||
..default()
|
||||
},
|
||||
transform: Transform::from_translation(Vec3::new(0.0, 0.0, 15.0))
|
||||
.looking_at(Vec3::default(), Vec3::Y),
|
||||
.looking_at(Vec3::ZERO, Vec3::Y),
|
||||
..default()
|
||||
})
|
||||
.insert(first_pass_layer);
|
||||
|
@ -125,19 +127,15 @@ fn setup(
|
|||
.spawn_bundle(PbrBundle {
|
||||
mesh: cube_handle,
|
||||
material: material_handle,
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, 1.5),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::PI / 5.0),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(0.0, 0.0, 1.5)
|
||||
.with_rotation(Quat::from_rotation_x(-PI / 5.0)),
|
||||
..default()
|
||||
})
|
||||
.insert(MainPassCube);
|
||||
|
||||
// The main pass camera.
|
||||
commands.spawn_bundle(Camera3dBundle {
|
||||
transform: Transform::from_translation(Vec3::new(0.0, 0.0, 15.0))
|
||||
.looking_at(Vec3::default(), Vec3::Y),
|
||||
transform: Transform::from_xyz(0.0, 0.0, 15.0).looking_at(Vec3::ZERO, Vec3::Y),
|
||||
..default()
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Demonstrates how shadow biases affect shadows in a 3d scene.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{input::mouse::MouseMotion, prelude::*};
|
||||
|
||||
fn main() {
|
||||
|
@ -61,8 +63,6 @@ fn setup(
|
|||
..default()
|
||||
});
|
||||
|
||||
let theta = std::f32::consts::FRAC_PI_4;
|
||||
let light_transform = Mat4::from_euler(EulerRot::ZYX, 0.0, std::f32::consts::FRAC_PI_2, -theta);
|
||||
commands.spawn_bundle(DirectionalLightBundle {
|
||||
directional_light: DirectionalLight {
|
||||
illuminance: 100000.0,
|
||||
|
@ -80,7 +80,12 @@ fn setup(
|
|||
shadows_enabled: true,
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_matrix(light_transform),
|
||||
transform: Transform::from_rotation(Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
PI / 2.,
|
||||
-PI / 4.,
|
||||
)),
|
||||
..default()
|
||||
});
|
||||
|
||||
|
@ -308,16 +313,10 @@ fn camera_controller(
|
|||
|
||||
if mouse_delta != Vec2::ZERO {
|
||||
// Apply look update
|
||||
let (pitch, yaw) = (
|
||||
(options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt).clamp(
|
||||
-0.99 * std::f32::consts::FRAC_PI_2,
|
||||
0.99 * std::f32::consts::FRAC_PI_2,
|
||||
),
|
||||
options.yaw - mouse_delta.x * options.sensitivity * dt,
|
||||
);
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, yaw, pitch);
|
||||
options.pitch = pitch;
|
||||
options.yaw = yaw;
|
||||
options.pitch = (options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt)
|
||||
.clamp(-PI / 2., PI / 2.);
|
||||
options.yaw -= mouse_delta.x * options.sensitivity * dt;
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, options.yaw, options.pitch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Demonstrates how to prevent meshes from casting/receiving shadows in a 3d scene.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
pbr::{NotShadowCaster, NotShadowReceiver},
|
||||
prelude::*,
|
||||
|
@ -89,8 +91,6 @@ fn setup(
|
|||
..default()
|
||||
});
|
||||
|
||||
let theta = std::f32::consts::FRAC_PI_4;
|
||||
let light_transform = Mat4::from_euler(EulerRot::ZYX, 0.0, std::f32::consts::FRAC_PI_2, -theta);
|
||||
commands.spawn_bundle(DirectionalLightBundle {
|
||||
directional_light: DirectionalLight {
|
||||
illuminance: 100000.0,
|
||||
|
@ -106,7 +106,12 @@ fn setup(
|
|||
shadows_enabled: true,
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_matrix(light_transform),
|
||||
transform: Transform::from_rotation(Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
PI / 2.,
|
||||
-PI / 4.,
|
||||
)),
|
||||
..default()
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
//! This example demonstrates the built-in 3d shapes in Bevy.
|
||||
//! The scene includes a patterned texture and a rotation for visualizing the normals and UVs.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
prelude::*,
|
||||
render::render_resource::{Extent3d, TextureDimension, TextureFormat},
|
||||
|
@ -48,15 +50,12 @@ fn setup(
|
|||
.spawn_bundle(PbrBundle {
|
||||
mesh: shape,
|
||||
material: debug_material.clone(),
|
||||
transform: Transform {
|
||||
translation: Vec3::new(
|
||||
-X_EXTENT / 2. + i as f32 / (num_shapes - 1) as f32 * X_EXTENT,
|
||||
2.0,
|
||||
0.0,
|
||||
),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::PI / 4.),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(
|
||||
-X_EXTENT / 2. + i as f32 / (num_shapes - 1) as f32 * X_EXTENT,
|
||||
2.0,
|
||||
0.0,
|
||||
)
|
||||
.with_rotation(Quat::from_rotation_x(-PI / 4.)),
|
||||
..default()
|
||||
})
|
||||
.insert(Shape);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Load a cubemap texture onto a cube like a skybox and cycle through different compressed texture formats
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
asset::LoadState,
|
||||
input::mouse::MouseMotion,
|
||||
|
@ -66,11 +68,8 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
illuminance: 32000.0,
|
||||
..default()
|
||||
},
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 2.0, 0.0),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::FRAC_PI_4),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(0.0, 2.0, 0.0)
|
||||
.with_rotation(Quat::from_rotation_x(-PI / 4.)),
|
||||
..default()
|
||||
});
|
||||
|
||||
|
@ -78,7 +77,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
// camera
|
||||
commands
|
||||
.spawn_bundle(Camera3dBundle {
|
||||
transform: Transform::from_xyz(0.0, 0.0, 8.0).looking_at(Vec3::default(), Vec3::Y),
|
||||
transform: Transform::from_xyz(0.0, 0.0, 8.0).looking_at(Vec3::ZERO, Vec3::Y),
|
||||
..default()
|
||||
})
|
||||
.insert(CameraController::default());
|
||||
|
@ -410,16 +409,10 @@ pub fn camera_controller(
|
|||
|
||||
if mouse_delta != Vec2::ZERO {
|
||||
// Apply look update
|
||||
let (pitch, yaw) = (
|
||||
(options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt).clamp(
|
||||
-0.99 * std::f32::consts::FRAC_PI_2,
|
||||
0.99 * std::f32::consts::FRAC_PI_2,
|
||||
),
|
||||
options.yaw - mouse_delta.x * options.sensitivity * dt,
|
||||
);
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, yaw, pitch);
|
||||
options.pitch = pitch;
|
||||
options.yaw = yaw;
|
||||
options.pitch = (options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt)
|
||||
.clamp(-PI / 2., PI / 2.);
|
||||
options.yaw -= mouse_delta.x * options.sensitivity * dt;
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, options.yaw, options.pitch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Renders two cameras to the same window to accomplish "split screen".
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
core_pipeline::clear_color::ClearColorConfig,
|
||||
prelude::*,
|
||||
|
@ -36,12 +38,7 @@ fn setup(
|
|||
|
||||
// Light
|
||||
commands.spawn_bundle(DirectionalLightBundle {
|
||||
transform: Transform::from_rotation(Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
1.0,
|
||||
-std::f32::consts::FRAC_PI_4,
|
||||
)),
|
||||
transform: Transform::from_rotation(Quat::from_euler(EulerRot::ZYX, 0.0, 1.0, -PI / 4.)),
|
||||
directional_light: DirectionalLight {
|
||||
shadows_enabled: true,
|
||||
..default()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
||||
pbr::NotShadowCaster,
|
||||
|
@ -74,8 +76,8 @@ fn setup(
|
|||
intensity: 200.0, // lumens
|
||||
color: Color::WHITE,
|
||||
shadows_enabled: true,
|
||||
inner_angle: std::f32::consts::PI / 4.0 * 0.85,
|
||||
outer_angle: std::f32::consts::PI / 4.0,
|
||||
inner_angle: PI / 4.0 * 0.85,
|
||||
outer_angle: PI / 4.0,
|
||||
..default()
|
||||
},
|
||||
..default()
|
||||
|
@ -123,13 +125,11 @@ fn light_sway(time: Res<Time>, mut query: Query<(&mut Transform, &mut SpotLight)
|
|||
for (mut transform, mut angles) in query.iter_mut() {
|
||||
transform.rotation = Quat::from_euler(
|
||||
EulerRot::XYZ,
|
||||
-std::f32::consts::FRAC_PI_2
|
||||
+ (time.seconds_since_startup() * 0.67 * 3.0).sin() as f32 * 0.5,
|
||||
-PI / 2. + (time.seconds_since_startup() * 0.67 * 3.0).sin() as f32 * 0.5,
|
||||
(time.seconds_since_startup() * 3.0).sin() as f32 * 0.5,
|
||||
0.0,
|
||||
);
|
||||
let angle = ((time.seconds_since_startup() * 1.2).sin() as f32 + 1.0)
|
||||
* (std::f32::consts::FRAC_PI_4 - 0.1);
|
||||
let angle = ((time.seconds_since_startup() * 1.2).sin() as f32 + 1.0) * (PI / 4. - 0.1);
|
||||
angles.inner_angle = angle * 0.8;
|
||||
angles.outer_angle = angle;
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ fn movement(
|
|||
time: Res<Time>,
|
||||
mut query: Query<&mut Transform, With<Movable>>,
|
||||
) {
|
||||
for mut transform in query.iter_mut() {
|
||||
for mut transform in &mut query {
|
||||
let mut direction = Vec3::ZERO;
|
||||
if input.pressed(KeyCode::Up) {
|
||||
direction.z -= 1.0;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! This example shows various ways to configure texture materials in 3D.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
|
@ -57,33 +59,23 @@ fn setup(
|
|||
commands.spawn_bundle(PbrBundle {
|
||||
mesh: quad_handle.clone(),
|
||||
material: material_handle,
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, 1.5),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::PI / 5.0),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(0.0, 0.0, 1.5)
|
||||
.with_rotation(Quat::from_rotation_x(-PI / 5.0)),
|
||||
..default()
|
||||
});
|
||||
// textured quad - modulated
|
||||
commands.spawn_bundle(PbrBundle {
|
||||
mesh: quad_handle.clone(),
|
||||
material: red_material_handle,
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, 0.0),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::PI / 5.0),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_rotation(Quat::from_rotation_x(-PI / 5.0)),
|
||||
..default()
|
||||
});
|
||||
// textured quad - modulated
|
||||
commands.spawn_bundle(PbrBundle {
|
||||
mesh: quad_handle,
|
||||
material: blue_material_handle,
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 0.0, -1.5),
|
||||
rotation: Quat::from_rotation_x(-std::f32::consts::PI / 5.0),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(0.0, 0.0, -1.5)
|
||||
.with_rotation(Quat::from_rotation_x(-PI / 5.0)),
|
||||
..default()
|
||||
});
|
||||
// camera
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Plays animations from a skinned glTF.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
|
@ -47,12 +49,7 @@ fn setup(
|
|||
|
||||
// Light
|
||||
commands.spawn_bundle(DirectionalLightBundle {
|
||||
transform: Transform::from_rotation(Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
1.0,
|
||||
-std::f32::consts::FRAC_PI_4,
|
||||
)),
|
||||
transform: Transform::from_rotation(Quat::from_euler(EulerRot::ZYX, 0.0, 1.0, -PI / 4.)),
|
||||
directional_light: DirectionalLight {
|
||||
shadows_enabled: true,
|
||||
..default()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
//! Create and play an animation defined by code that operates on the `Transform` component.
|
||||
|
||||
use std::f32::consts::{FRAC_PI_2, PI};
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
|
@ -62,11 +62,11 @@ fn setup(
|
|||
VariableCurve {
|
||||
keyframe_timestamps: vec![0.0, 1.0, 2.0, 3.0, 4.0],
|
||||
keyframes: Keyframes::Rotation(vec![
|
||||
Quat::from_axis_angle(Vec3::Y, 0.0),
|
||||
Quat::from_axis_angle(Vec3::Y, FRAC_PI_2),
|
||||
Quat::from_axis_angle(Vec3::Y, PI),
|
||||
Quat::from_axis_angle(Vec3::Y, 3.0 * FRAC_PI_2),
|
||||
Quat::from_axis_angle(Vec3::Y, 0.0),
|
||||
Quat::IDENTITY,
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2.),
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2. * 2.),
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2. * 3.),
|
||||
Quat::IDENTITY,
|
||||
]),
|
||||
},
|
||||
);
|
||||
|
@ -100,11 +100,11 @@ fn setup(
|
|||
VariableCurve {
|
||||
keyframe_timestamps: vec![0.0, 1.0, 2.0, 3.0, 4.0],
|
||||
keyframes: Keyframes::Rotation(vec![
|
||||
Quat::from_axis_angle(Vec3::Y, 0.0),
|
||||
Quat::from_axis_angle(Vec3::Y, FRAC_PI_2),
|
||||
Quat::from_axis_angle(Vec3::Y, PI),
|
||||
Quat::from_axis_angle(Vec3::Y, 3.0 * FRAC_PI_2),
|
||||
Quat::from_axis_angle(Vec3::Y, 0.0),
|
||||
Quat::IDENTITY,
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2.),
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2. * 2.),
|
||||
Quat::from_axis_angle(Vec3::Y, PI / 2. * 3.),
|
||||
Quat::IDENTITY,
|
||||
]),
|
||||
},
|
||||
);
|
||||
|
|
|
@ -164,9 +164,7 @@ fn setup(
|
|||
/// Animate the joint marked with [`AnimatedJoint`] component.
|
||||
fn joint_animation(time: Res<Time>, mut query: Query<&mut Transform, With<AnimatedJoint>>) {
|
||||
for mut transform in &mut query {
|
||||
transform.rotation = Quat::from_axis_angle(
|
||||
Vec3::Z,
|
||||
0.5 * PI * time.time_since_startup().as_secs_f32().sin(),
|
||||
);
|
||||
transform.rotation =
|
||||
Quat::from_rotation_z(PI / 2. * time.time_since_startup().as_secs_f32().sin());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,9 +66,7 @@ fn joint_animation(
|
|||
// Get `Transform` in the second joint.
|
||||
let mut second_joint_transform = transform_query.get_mut(second_joint_entity).unwrap();
|
||||
|
||||
second_joint_transform.rotation = Quat::from_axis_angle(
|
||||
Vec3::Z,
|
||||
0.5 * PI * time.time_since_startup().as_secs_f32().sin(),
|
||||
);
|
||||
second_joint_transform.rotation =
|
||||
Quat::from_rotation_z(PI / 2. * time.time_since_startup().as_secs_f32().sin());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
//! For more advice on working with generic types in Rust, check out <https://doc.rust-lang.org/book/ch10-01-syntax.html>
|
||||
//! or <https://doc.rust-lang.org/rust-by-example/generics.html>
|
||||
|
||||
use bevy::{ecs::component::Component, prelude::*};
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
|
||||
enum AppState {
|
||||
|
@ -21,7 +21,7 @@ enum AppState {
|
|||
struct TextToPrint(String);
|
||||
|
||||
#[derive(Component, Deref, DerefMut)]
|
||||
struct PrinterTick(bevy::prelude::Timer);
|
||||
struct PrinterTick(Timer);
|
||||
|
||||
#[derive(Component)]
|
||||
struct MenuClose;
|
||||
|
@ -52,7 +52,7 @@ fn main() {
|
|||
fn setup_system(mut commands: Commands) {
|
||||
commands
|
||||
.spawn()
|
||||
.insert(PrinterTick(bevy::prelude::Timer::from_seconds(1.0, true)))
|
||||
.insert(PrinterTick(Timer::from_seconds(1.0, true)))
|
||||
.insert(TextToPrint(
|
||||
"I will print until you press space.".to_string(),
|
||||
))
|
||||
|
@ -60,7 +60,7 @@ fn setup_system(mut commands: Commands) {
|
|||
|
||||
commands
|
||||
.spawn()
|
||||
.insert(PrinterTick(bevy::prelude::Timer::from_seconds(1.0, true)))
|
||||
.insert(PrinterTick(Timer::from_seconds(1.0, true)))
|
||||
.insert(TextToPrint("I will always print".to_string()))
|
||||
.insert(LevelUnload);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Creates a hierarchy of parents and children entities.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
fn main() {
|
||||
|
@ -25,11 +27,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
.with_children(|parent| {
|
||||
// parent is a ChildBuilder, which has a similar API to Commands
|
||||
parent.spawn_bundle(SpriteBundle {
|
||||
transform: Transform {
|
||||
translation: Vec3::new(250.0, 0.0, 0.0),
|
||||
scale: Vec3::splat(0.75),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(250.0, 0.0, 0.0).with_scale(Vec3::splat(0.75)),
|
||||
texture: texture.clone(),
|
||||
sprite: Sprite {
|
||||
color: Color::BLUE,
|
||||
|
@ -45,11 +43,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
// entity has already been spawned.
|
||||
let child = commands
|
||||
.spawn_bundle(SpriteBundle {
|
||||
transform: Transform {
|
||||
translation: Vec3::new(0.0, 250.0, 0.0),
|
||||
scale: Vec3::splat(0.75),
|
||||
..default()
|
||||
},
|
||||
transform: Transform::from_xyz(0.0, 250.0, 0.0).with_scale(Vec3::splat(0.75)),
|
||||
texture,
|
||||
sprite: Sprite {
|
||||
color: Color::GREEN,
|
||||
|
@ -59,8 +53,8 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
|||
})
|
||||
.id();
|
||||
|
||||
// Pushing takes a slice of children to add:
|
||||
commands.entity(parent).push_children(&[child]);
|
||||
// Add child to the parent.
|
||||
commands.entity(parent).add_child(child);
|
||||
}
|
||||
|
||||
// A simple system to rotate the root entity, and rotate all its children separately
|
||||
|
@ -70,25 +64,23 @@ fn rotate(
|
|||
mut parents_query: Query<(Entity, &Children), With<Sprite>>,
|
||||
mut transform_query: Query<&mut Transform, With<Sprite>>,
|
||||
) {
|
||||
let angle = std::f32::consts::PI / 2.0;
|
||||
for (parent, children) in &mut parents_query {
|
||||
if let Ok(mut transform) = transform_query.get_mut(parent) {
|
||||
transform.rotate_z(-angle * time.delta_seconds());
|
||||
transform.rotate_z(-PI / 2. * time.delta_seconds());
|
||||
}
|
||||
|
||||
// To iterate through the entities children, just treat the Children component as a Vec
|
||||
// Alternatively, you could query entities that have a Parent component
|
||||
for child in children {
|
||||
if let Ok(mut transform) = transform_query.get_mut(*child) {
|
||||
transform.rotate_z(angle * 2.0 * time.delta_seconds());
|
||||
transform.rotate_z(PI * time.delta_seconds());
|
||||
}
|
||||
}
|
||||
|
||||
// To demonstrate removing children, we'll start to remove the children after a couple of
|
||||
// seconds
|
||||
if time.seconds_since_startup() >= 2.0 && children.len() == 3 {
|
||||
let child = children.last().copied().unwrap();
|
||||
commands.entity(child).despawn_recursive();
|
||||
// To demonstrate removing children, we'll remove a child after a couple of seconds.
|
||||
if time.seconds_since_startup() >= 2.0 && children.len() == 2 {
|
||||
let child = children.last().unwrap();
|
||||
commands.entity(*child).despawn_recursive();
|
||||
}
|
||||
|
||||
if time.seconds_since_startup() >= 4.0 {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
//! Eat the cakes. Eat them all. An example 3D game.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{ecs::schedule::SystemSet, prelude::*, time::FixedTimestep};
|
||||
use rand::Rng;
|
||||
|
||||
|
@ -137,7 +139,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>, mut game: ResMu
|
|||
game.board[game.player.j][game.player.i].height,
|
||||
game.player.j as f32,
|
||||
),
|
||||
rotation: Quat::from_rotation_y(-std::f32::consts::FRAC_PI_2),
|
||||
rotation: Quat::from_rotation_y(-PI / 2.),
|
||||
..default()
|
||||
},
|
||||
scene: asset_server.load("models/AlienCake/alien.glb#Scene0"),
|
||||
|
@ -194,21 +196,21 @@ fn move_player(
|
|||
if game.player.i < BOARD_SIZE_I - 1 {
|
||||
game.player.i += 1;
|
||||
}
|
||||
rotation = -std::f32::consts::FRAC_PI_2;
|
||||
rotation = -PI / 2.;
|
||||
moved = true;
|
||||
}
|
||||
if keyboard_input.pressed(KeyCode::Down) {
|
||||
if game.player.i > 0 {
|
||||
game.player.i -= 1;
|
||||
}
|
||||
rotation = std::f32::consts::FRAC_PI_2;
|
||||
rotation = PI / 2.;
|
||||
moved = true;
|
||||
}
|
||||
if keyboard_input.pressed(KeyCode::Right) {
|
||||
if game.player.j < BOARD_SIZE_J - 1 {
|
||||
game.player.j += 1;
|
||||
}
|
||||
rotation = std::f32::consts::PI;
|
||||
rotation = PI;
|
||||
moved = true;
|
||||
}
|
||||
if keyboard_input.pressed(KeyCode::Left) {
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
//! To start the demo using the spherical layout run
|
||||
//! `cargo run --example many_cubes --release sphere`
|
||||
|
||||
use std::f64::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
||||
math::{DVec2, DVec3},
|
||||
|
@ -142,7 +144,7 @@ const EPSILON: f64 = 0.36;
|
|||
|
||||
fn fibonacci_spiral_on_sphere(golden_ratio: f64, i: usize, n: usize) -> DVec2 {
|
||||
DVec2::new(
|
||||
2.0 * std::f64::consts::PI * (i as f64 / golden_ratio),
|
||||
PI * 2. * (i as f64 / golden_ratio),
|
||||
(1.0 - 2.0 * (i as f64 + EPSILON) / (n as f64 - 1.0 + 2.0 * EPSILON)).acos(),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
//! Loads animations from a skinned glTF, spawns many of them, and plays the
|
||||
//! animation to stress test skinned meshes.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
||||
prelude::*,
|
||||
|
@ -93,7 +95,7 @@ fn setup(
|
|||
|
||||
let ring_directions = [
|
||||
(
|
||||
Quat::from_rotation_y(std::f32::consts::PI),
|
||||
Quat::from_rotation_y(PI),
|
||||
RotationDirection::CounterClockwise,
|
||||
),
|
||||
(Quat::IDENTITY, RotationDirection::Clockwise),
|
||||
|
@ -118,7 +120,7 @@ fn setup(
|
|||
))
|
||||
.id();
|
||||
|
||||
let circumference = std::f32::consts::TAU * radius;
|
||||
let circumference = PI * 2. * radius;
|
||||
let foxes_in_ring = ((circumference / FOX_SPACING) as usize).min(foxes_remaining);
|
||||
let fox_spacing_angle = circumference / (foxes_in_ring as f32 * radius);
|
||||
|
||||
|
@ -165,12 +167,7 @@ fn setup(
|
|||
|
||||
// Light
|
||||
commands.spawn_bundle(DirectionalLightBundle {
|
||||
transform: Transform::from_rotation(Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
1.0,
|
||||
-std::f32::consts::FRAC_PI_4,
|
||||
)),
|
||||
transform: Transform::from_rotation(Quat::from_euler(EulerRot::ZYX, 0.0, 1.0, -PI / 4.)),
|
||||
directional_light: DirectionalLight {
|
||||
shadows_enabled: true,
|
||||
..default()
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
//! Simple benchmark to test rendering many point lights.
|
||||
//! Run with `WGPU_SETTINGS_PRIO=webgl2` to restrict to uniform buffers and max 256 lights.
|
||||
|
||||
use std::f64::consts::PI;
|
||||
|
||||
use bevy::{
|
||||
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
|
||||
math::{DVec2, DVec3},
|
||||
|
@ -113,7 +115,7 @@ fn setup(
|
|||
const EPSILON: f64 = 0.36;
|
||||
fn fibonacci_spiral_on_sphere(golden_ratio: f64, i: usize, n: usize) -> DVec2 {
|
||||
DVec2::new(
|
||||
2.0 * std::f64::consts::PI * (i as f64 / golden_ratio),
|
||||
PI * 2. * (i as f64 / golden_ratio),
|
||||
(1.0 - 2.0 * (i as f64 + EPSILON) / (n as f64 - 1.0 + 2.0 * EPSILON)).acos(),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ use bevy::{
|
|||
scene::InstanceId,
|
||||
};
|
||||
|
||||
use std::f32::consts::TAU;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemLabel)]
|
||||
struct CameraControllerCheckSystem;
|
||||
|
@ -330,8 +330,8 @@ fn update_lights(
|
|||
transform.rotation = Quat::from_euler(
|
||||
EulerRot::ZYX,
|
||||
0.0,
|
||||
time.seconds_since_startup() as f32 * TAU / 30.0,
|
||||
-TAU / 8.,
|
||||
time.seconds_since_startup() as f32 * PI / 15.0,
|
||||
-PI / 4.,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -526,16 +526,10 @@ fn camera_controller(
|
|||
|
||||
if mouse_delta != Vec2::ZERO {
|
||||
// Apply look update
|
||||
let (pitch, yaw) = (
|
||||
(options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt).clamp(
|
||||
-0.99 * std::f32::consts::FRAC_PI_2,
|
||||
0.99 * std::f32::consts::FRAC_PI_2,
|
||||
),
|
||||
options.yaw - mouse_delta.x * options.sensitivity * dt,
|
||||
);
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, yaw, pitch);
|
||||
options.pitch = pitch;
|
||||
options.yaw = yaw;
|
||||
options.pitch = (options.pitch - mouse_delta.y * 0.5 * options.sensitivity * dt)
|
||||
.clamp(-PI / 2., PI / 2.);
|
||||
options.yaw -= mouse_delta.x * options.sensitivity * dt;
|
||||
transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, options.yaw, options.pitch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
//! Illustrates how to scale an object in each direction.
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::math::Vec3Swizzles;
|
||||
use bevy::prelude::*;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
// Define a component to keep information for the scaled object.
|
||||
#[derive(Component)]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
//! Shows multiple transformations of objects.
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
use std::f32::consts::PI;
|
||||
|
||||
use bevy::prelude::*;
|
||||
|
||||
// A struct for additional data of for a moving cube.
|
||||
#[derive(Component)]
|
||||
struct CubeState {
|
||||
|
@ -59,9 +59,8 @@ fn setup(
|
|||
// by changing its rotation each frame and moving forward.
|
||||
// Define a start transform for an orbiting cube, that's away from our central object (sphere)
|
||||
// and rotate it so it will be able to move around the sphere and not towards it.
|
||||
let angle_90 = PI / 2.0;
|
||||
let cube_spawn =
|
||||
Transform::from_translation(Vec3::Z * -10.0).with_rotation(Quat::from_rotation_y(angle_90));
|
||||
Transform::from_translation(Vec3::Z * -10.0).with_rotation(Quat::from_rotation_y(PI / 2.));
|
||||
commands
|
||||
.spawn_bundle(PbrBundle {
|
||||
mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })),
|
||||
|
|
Loading…
Reference in a new issue