Struct bevy::render::prelude::SpatialBundle
pub struct SpatialBundle {
pub visibility: Visibility,
pub inherited_visibility: InheritedVisibility,
pub view_visibility: ViewVisibility,
pub transform: Transform,
pub global_transform: GlobalTransform,
}
Expand description
A Bundle
that allows the correct positional rendering of an entity.
It consists of transform components, controlling position, rotation and scale of the entity, but also visibility components, which determine whether the entity is visible or not.
Parent-child hierarchies of entities must contain
all the Component
s in this Bundle
to be rendered correctly.
Fields§
§visibility: Visibility
The visibility of the entity.
inherited_visibility: InheritedVisibility
The inherited visibility of the entity.
view_visibility: ViewVisibility
The view visibility of the entity.
transform: Transform
The transform of the entity.
global_transform: GlobalTransform
The global transform of the entity.
Implementations§
§impl SpatialBundle
impl SpatialBundle
pub const fn from_transform(transform: Transform) -> SpatialBundle
pub const fn from_transform(transform: Transform) -> SpatialBundle
Creates a new SpatialBundle
from a Transform
.
This initializes GlobalTransform
as identity, and visibility as visible
Examples found in repository?
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
fn setup(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>,
) {
// Spawn a 2D camera
commands.spawn(Camera2dBundle::default());
// Spawn the text instructions
let font = asset_server.load("fonts/FiraSans-Bold.ttf");
let text_style = TextStyle {
font: font.clone(),
font_size: 30.0,
color: Color::WHITE,
};
commands.spawn((
Text2dBundle {
text: Text::from_section(
"Press Space to play on your desktop! Press it again to return.\nRight click Bevy logo to exit.",
text_style.clone(),
),
transform: Transform::from_xyz(0.0, -300.0, 100.0),
..default()
},
InstructionsText,
));
// Create a circle mesh. We will reuse this mesh for all our circles.
let circle = Mesh2dHandle(meshes.add(Circle { radius: 1.0 }));
// Create the different materials we will use for each part of the eyes. For this demo they are basic [`ColorMaterial`]s.
let outline_material = materials.add(Color::BLACK);
let sclera_material = materials.add(Color::WHITE);
let pupil_material = materials.add(Color::srgb(0.2, 0.2, 0.2));
let pupil_highlight_material = materials.add(Color::srgba(1.0, 1.0, 1.0, 0.2));
// Spawn the Bevy logo sprite
commands
.spawn((
SpriteBundle {
texture: asset_server.load("branding/icon.png"),
..default()
},
BevyLogo,
))
.with_children(|commands| {
// For each bird eye
for (x, y, radius) in BIRDS_EYES {
// eye outline
commands.spawn(MaterialMesh2dBundle {
mesh: circle.clone(),
material: outline_material.clone(),
transform: Transform::from_xyz(x, y - 1.0, 1.0)
.with_scale(Vec2::splat(radius + 2.0).extend(1.0)),
..default()
});
// sclera
commands
.spawn(SpatialBundle::from_transform(Transform::from_xyz(
x, y, 2.0,
)))
.with_children(|commands| {
// sclera
commands.spawn(MaterialMesh2dBundle {
mesh: circle.clone(),
material: sclera_material.clone(),
transform: Transform::from_scale(Vec3::new(radius, radius, 0.0)),
..default()
});
let pupil_radius = radius * 0.6;
let pupil_highlight_radius = radius * 0.3;
let pupil_highlight_offset = radius * 0.3;
// pupil
commands
.spawn((
SpatialBundle::from_transform(Transform::from_xyz(0.0, 0.0, 1.0)),
Pupil {
eye_radius: radius,
pupil_radius,
velocity: Vec2::ZERO,
},
))
.with_children(|commands| {
// pupil main
commands.spawn(MaterialMesh2dBundle {
mesh: circle.clone(),
material: pupil_material.clone(),
transform: Transform::from_xyz(0.0, 0.0, 0.0)
.with_scale(Vec3::new(pupil_radius, pupil_radius, 1.0)),
..default()
});
// pupil highlight
commands.spawn(MaterialMesh2dBundle {
mesh: circle.clone(),
material: pupil_highlight_material.clone(),
transform: Transform::from_xyz(
-pupil_highlight_offset,
pupil_highlight_offset,
1.0,
)
.with_scale(Vec3::new(
pupil_highlight_radius,
pupil_highlight_radius,
1.0,
)),
..default()
});
});
});
}
});
}
pub const INHERITED_IDENTITY: SpatialBundle = _
pub const INHERITED_IDENTITY: SpatialBundle = _
A visible SpatialBundle
, with no translation, rotation, and a scale of 1 on all axes.
pub const HIDDEN_IDENTITY: SpatialBundle = _
pub const HIDDEN_IDENTITY: SpatialBundle = _
An invisible SpatialBundle
, with no translation, rotation, and a scale of 1 on all axes.
Trait Implementations§
§impl Clone for SpatialBundle
impl Clone for SpatialBundle
§fn clone(&self) -> SpatialBundle
fn clone(&self) -> SpatialBundle
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for SpatialBundle
impl Debug for SpatialBundle
§impl Default for SpatialBundle
impl Default for SpatialBundle
§fn default() -> SpatialBundle
fn default() -> SpatialBundle
§impl From<Transform> for SpatialBundle
impl From<Transform> for SpatialBundle
§fn from(transform: Transform) -> SpatialBundle
fn from(transform: Transform) -> SpatialBundle
impl Bundle for SpatialBundle
impl DynamicBundle for SpatialBundle
Auto Trait Implementations§
impl Freeze for SpatialBundle
impl RefUnwindSafe for SpatialBundle
impl Send for SpatialBundle
impl Sync for SpatialBundle
impl Unpin for SpatialBundle
impl UnwindSafe for SpatialBundle
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.