Struct bevy::prelude::UVec2

source ·
#[repr(C)]
pub struct UVec2 { pub x: u32, pub y: u32, }
Expand description

A 2-dimensional vector.

Fields§

§x: u32§y: u32

Implementations§

source§

impl UVec2

source

pub const ZERO: UVec2 = _

All zeroes.

source

pub const ONE: UVec2 = _

All ones.

source

pub const MIN: UVec2 = _

All u32::MIN.

source

pub const MAX: UVec2 = _

All u32::MAX.

source

pub const X: UVec2 = _

A unit vector pointing along the positive X axis.

source

pub const Y: UVec2 = _

A unit vector pointing along the positive Y axis.

source

pub const AXES: [UVec2; 2] = _

The unit axes.

source

pub const fn new(x: u32, y: u32) -> UVec2

Creates a new vector.

Examples found in repository?
examples/gizmos/2d_gizmos.rs (line 50)
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
fn draw_example_collection(
    mut gizmos: Gizmos,
    mut my_gizmos: Gizmos<MyRoundGizmos>,
    time: Res<Time>,
) {
    let sin = time.elapsed_seconds().sin() * 50.;
    gizmos.line_2d(Vec2::Y * -sin, Vec2::splat(-80.), RED);
    gizmos.ray_2d(Vec2::Y * sin, Vec2::splat(80.), LIME);

    gizmos
        .grid_2d(
            Vec2::ZERO,
            0.0,
            UVec2::new(16, 12),
            Vec2::new(60., 60.),
            // Light gray
            LinearRgba::gray(0.65),
        )
        .outer_edges();

    // Triangle
    gizmos.linestrip_gradient_2d([
        (Vec2::Y * 300., BLUE),
        (Vec2::new(-255., -155.), RED),
        (Vec2::new(255., -155.), LIME),
        (Vec2::Y * 300., BLUE),
    ]);

    gizmos.rect_2d(
        Vec2::ZERO,
        time.elapsed_seconds() / 3.,
        Vec2::splat(300.),
        BLACK,
    );

    // The circles have 32 line-segments by default.
    my_gizmos.circle_2d(Vec2::ZERO, 120., BLACK);
    my_gizmos.ellipse_2d(
        Vec2::ZERO,
        time.elapsed_seconds() % TAU,
        Vec2::new(100., 200.),
        YELLOW_GREEN,
    );
    // You may want to increase this for larger circles.
    my_gizmos.circle_2d(Vec2::ZERO, 300., NAVY).segments(64);

    // Arcs default amount of segments is linearly interpolated between
    // 1 and 32, using the arc length as scalar.
    my_gizmos.arc_2d(Vec2::ZERO, sin / 10., PI / 2., 350., ORANGE_RED);

    gizmos.arrow_2d(
        Vec2::ZERO,
        Vec2::from_angle(sin / -10. + PI / 2.) * 50.,
        YELLOW,
    );

    // You can create more complex arrows using the arrow builder.
    gizmos
        .arrow_2d(Vec2::ZERO, Vec2::from_angle(sin / -10.) * 50., GREEN)
        .with_double_end()
        .with_tip_length(10.);
}
More examples
Hide additional examples
examples/ui/ui_texture_atlas_slice.rs (line 53)
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut texture_atlases: ResMut<Assets<TextureAtlasLayout>>,
) {
    let texture_handle = asset_server.load("textures/fantasy_ui_borders/border_sheet.png");
    let atlas_layout = TextureAtlasLayout::from_grid(UVec2::new(50, 50), 6, 6, None, None);
    let atlas_layout_handle = texture_atlases.add(atlas_layout);

    let slicer = TextureSlicer {
        border: BorderRect::square(22.0),
        center_scale_mode: SliceScaleMode::Stretch,
        sides_scale_mode: SliceScaleMode::Stretch,
        max_corner_scale: 1.0,
    };
    // ui camera
    commands.spawn(Camera2dBundle::default());
    commands
        .spawn(NodeBundle {
            style: Style {
                width: Val::Percent(100.0),
                height: Val::Percent(100.0),
                align_items: AlignItems::Center,
                justify_content: JustifyContent::Center,
                ..default()
            },
            ..default()
        })
        .with_children(|parent| {
            for (idx, [w, h]) in [
                (0, [150.0, 150.0]),
                (7, [300.0, 150.0]),
                (13, [150.0, 300.0]),
            ] {
                parent
                    .spawn((
                        ButtonBundle {
                            style: Style {
                                width: Val::Px(w),
                                height: Val::Px(h),
                                // horizontally center child text
                                justify_content: JustifyContent::Center,
                                // vertically center child text
                                align_items: AlignItems::Center,
                                margin: UiRect::all(Val::Px(20.0)),
                                ..default()
                            },
                            image: texture_handle.clone().into(),
                            ..default()
                        },
                        ImageScaleMode::Sliced(slicer.clone()),
                        TextureAtlas {
                            index: idx,
                            layout: atlas_layout_handle.clone(),
                        },
                    ))
                    .with_children(|parent| {
                        parent.spawn(TextBundle::from_section(
                            "Button",
                            TextStyle {
                                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
                                font_size: 40.0,
                                color: Color::srgb(0.9, 0.9, 0.9),
                            },
                        ));
                    });
            }
        });
}
examples/2d/texture_atlas.rs (line 80)
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
fn setup(
    mut commands: Commands,
    rpg_sprite_handles: Res<RpgSpriteFolder>,
    asset_server: Res<AssetServer>,
    mut texture_atlases: ResMut<Assets<TextureAtlasLayout>>,
    loaded_folders: Res<Assets<LoadedFolder>>,
    mut textures: ResMut<Assets<Image>>,
) {
    let loaded_folder = loaded_folders.get(&rpg_sprite_handles.0).unwrap();

    // create texture atlases with different padding and sampling

    let (texture_atlas_linear, linear_texture) = create_texture_atlas(
        loaded_folder,
        None,
        Some(ImageSampler::linear()),
        &mut textures,
    );
    let atlas_linear_handle = texture_atlases.add(texture_atlas_linear.clone());

    let (texture_atlas_nearest, nearest_texture) = create_texture_atlas(
        loaded_folder,
        None,
        Some(ImageSampler::nearest()),
        &mut textures,
    );
    let atlas_nearest_handle = texture_atlases.add(texture_atlas_nearest);

    let (texture_atlas_linear_padded, linear_padded_texture) = create_texture_atlas(
        loaded_folder,
        Some(UVec2::new(6, 6)),
        Some(ImageSampler::linear()),
        &mut textures,
    );
    let atlas_linear_padded_handle = texture_atlases.add(texture_atlas_linear_padded.clone());

    let (texture_atlas_nearest_padded, nearest_padded_texture) = create_texture_atlas(
        loaded_folder,
        Some(UVec2::new(6, 6)),
        Some(ImageSampler::nearest()),
        &mut textures,
    );
    let atlas_nearest_padded_handle = texture_atlases.add(texture_atlas_nearest_padded);

    // setup 2d scene
    commands.spawn(Camera2dBundle::default());

    // padded textures are to the right, unpadded to the left

    // draw unpadded texture atlas
    commands.spawn(SpriteBundle {
        texture: linear_texture.clone(),
        transform: Transform {
            translation: Vec3::new(-250.0, -130.0, 0.0),
            scale: Vec3::splat(0.8),
            ..default()
        },
        ..default()
    });

    // draw padded texture atlas
    commands.spawn(SpriteBundle {
        texture: linear_padded_texture.clone(),
        transform: Transform {
            translation: Vec3::new(250.0, -130.0, 0.0),
            scale: Vec3::splat(0.8),
            ..default()
        },
        ..default()
    });

    let font = asset_server.load("fonts/FiraSans-Bold.ttf");

    // padding label text style
    let text_style: TextStyle = TextStyle {
        font: font.clone(),
        font_size: 50.0,
        color: Color::WHITE,
    };

    // labels to indicate padding

    // No padding
    create_label(
        &mut commands,
        (-250.0, 330.0, 0.0),
        "No padding",
        text_style.clone(),
    );

    // Padding
    create_label(&mut commands, (250.0, 330.0, 0.0), "Padding", text_style);

    // get handle to a sprite to render
    let vendor_handle: Handle<Image> = asset_server
        .get_handle("textures/rpg/chars/vendor/generic-rpg-vendor.png")
        .unwrap();

    // get index of the sprite in the texture atlas, this is used to render the sprite
    // the index is the same for all the texture atlases, since they are created from the same folder
    let vendor_index = texture_atlas_linear
        .get_texture_index(&vendor_handle)
        .unwrap();

    // configuration array to render sprites through iteration
    let configurations: [(&str, Handle<TextureAtlasLayout>, Handle<Image>, f32); 4] = [
        ("Linear", atlas_linear_handle, linear_texture, -350.0),
        ("Nearest", atlas_nearest_handle, nearest_texture, -150.0),
        (
            "Linear",
            atlas_linear_padded_handle,
            linear_padded_texture,
            150.0,
        ),
        (
            "Nearest",
            atlas_nearest_padded_handle,
            nearest_padded_texture,
            350.0,
        ),
    ];

    // label text style
    let sampling_label_style = TextStyle {
        font,
        font_size: 30.0,
        color: Color::WHITE,
    };

    let base_y = 170.0; // y position of the sprites

    for (sampling, atlas_handle, image_handle, x) in configurations {
        // render a sprite from the texture_atlas
        create_sprite_from_atlas(
            &mut commands,
            (x, base_y, 0.0),
            vendor_index,
            atlas_handle,
            image_handle,
        );

        // render a label to indicate the sampling setting
        create_label(
            &mut commands,
            (x, base_y + 110.0, 0.0), // offset to y position of the sprite
            sampling,
            sampling_label_style.clone(),
        );
    }
}
examples/3d/split_screen.rs (line 82)
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<StandardMaterial>>,
) {
    // plane
    commands.spawn(PbrBundle {
        mesh: meshes.add(Plane3d::default().mesh().size(100.0, 100.0)),
        material: materials.add(Color::srgb(0.3, 0.5, 0.3)),
        ..default()
    });

    commands.spawn(SceneBundle {
        scene: asset_server.load("models/animated/Fox.glb#Scene0"),
        ..default()
    });

    // Light
    commands.spawn(DirectionalLightBundle {
        transform: Transform::from_rotation(Quat::from_euler(EulerRot::ZYX, 0.0, 1.0, -PI / 4.)),
        directional_light: DirectionalLight {
            shadows_enabled: true,
            ..default()
        },
        cascade_shadow_config: CascadeShadowConfigBuilder {
            num_cascades: 2,
            first_cascade_far_bound: 200.0,
            maximum_distance: 280.0,
            ..default()
        }
        .into(),
        ..default()
    });

    // Cameras and their dedicated UI
    for (index, (camera_name, camera_pos)) in [
        ("Player 1", Vec3::new(0.0, 200.0, -150.0)),
        ("Player 2", Vec3::new(150.0, 150., 50.0)),
        ("Player 3", Vec3::new(100.0, 150., -150.0)),
        ("Player 4", Vec3::new(-100.0, 80., 150.0)),
    ]
    .iter()
    .enumerate()
    {
        let camera = commands
            .spawn((
                Camera3dBundle {
                    transform: Transform::from_translation(*camera_pos)
                        .looking_at(Vec3::ZERO, Vec3::Y),
                    camera: Camera {
                        // Renders cameras with different priorities to prevent ambiguities
                        order: index as isize,
                        // Don't clear after the first camera because the first camera already cleared the entire window
                        clear_color: if index > 0 {
                            ClearColorConfig::None
                        } else {
                            ClearColorConfig::default()
                        },
                        ..default()
                    },
                    ..default()
                },
                CameraPosition {
                    pos: UVec2::new((index % 2) as u32, (index / 2) as u32),
                },
            ))
            .id();

        // Set up UI
        commands
            .spawn((
                TargetCamera(camera),
                NodeBundle {
                    style: Style {
                        width: Val::Percent(100.),
                        height: Val::Percent(100.),
                        padding: UiRect::all(Val::Px(20.)),
                        ..default()
                    },
                    ..default()
                },
            ))
            .with_children(|parent| {
                parent.spawn(TextBundle::from_section(
                    *camera_name,
                    TextStyle {
                        font_size: 20.,
                        ..default()
                    },
                ));
                buttons_panel(parent);
            });
    }

    fn buttons_panel(parent: &mut ChildBuilder) {
        parent
            .spawn(NodeBundle {
                style: Style {
                    position_type: PositionType::Absolute,
                    width: Val::Percent(100.),
                    height: Val::Percent(100.),
                    display: Display::Flex,
                    flex_direction: FlexDirection::Row,
                    justify_content: JustifyContent::SpaceBetween,
                    align_items: AlignItems::Center,
                    padding: UiRect::all(Val::Px(20.)),
                    ..default()
                },
                ..default()
            })
            .with_children(|parent| {
                rotate_button(parent, "<", Direction::Left);
                rotate_button(parent, ">", Direction::Right);
            });
    }

    fn rotate_button(parent: &mut ChildBuilder, caption: &str, direction: Direction) {
        parent
            .spawn((
                RotateCamera(direction),
                ButtonBundle {
                    style: Style {
                        width: Val::Px(40.),
                        height: Val::Px(40.),
                        border: UiRect::all(Val::Px(2.)),
                        justify_content: JustifyContent::Center,
                        align_items: AlignItems::Center,
                        ..default()
                    },
                    border_color: Color::WHITE.into(),
                    image: UiImage::default().with_color(Color::srgb(0.25, 0.25, 0.25)),
                    ..default()
                },
            ))
            .with_children(|parent| {
                parent.spawn(TextBundle::from_section(
                    caption,
                    TextStyle {
                        font_size: 20.,
                        ..default()
                    },
                ));
            });
    }
}
source

pub const fn splat(v: u32) -> UVec2

Creates a vector with all elements set to v.

Examples found in repository?
examples/2d/sprite_sheet.rs (line 45)
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut texture_atlas_layouts: ResMut<Assets<TextureAtlasLayout>>,
) {
    let texture = asset_server.load("textures/rpg/chars/gabe/gabe-idle-run.png");
    let layout = TextureAtlasLayout::from_grid(UVec2::splat(24), 7, 1, None, None);
    let texture_atlas_layout = texture_atlas_layouts.add(layout);
    // Use only the subset of sprites in the sheet that make up the run animation
    let animation_indices = AnimationIndices { first: 1, last: 6 };
    commands.spawn(Camera2dBundle::default());
    commands.spawn((
        SpriteBundle {
            transform: Transform::from_scale(Vec3::splat(6.0)),
            texture,
            ..default()
        },
        TextureAtlas {
            layout: texture_atlas_layout,
            index: animation_indices.first,
        },
        animation_indices,
        AnimationTimer(Timer::from_seconds(0.1, TimerMode::Repeating)),
    ));
}
More examples
Hide additional examples
examples/gizmos/3d_gizmos.rs (line 92)
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
fn draw_example_collection(
    mut gizmos: Gizmos,
    mut my_gizmos: Gizmos<MyRoundGizmos>,
    time: Res<Time>,
) {
    gizmos.grid(
        Vec3::ZERO,
        Quat::from_rotation_x(PI / 2.),
        UVec2::splat(20),
        Vec2::new(2., 2.),
        // Light gray
        LinearRgba::gray(0.65),
    );

    gizmos.cuboid(
        Transform::from_translation(Vec3::Y * 0.5).with_scale(Vec3::splat(1.25)),
        BLACK,
    );
    gizmos.rect(
        Vec3::new(time.elapsed_seconds().cos() * 2.5, 1., 0.),
        Quat::from_rotation_y(PI / 2.),
        Vec2::splat(2.),
        LIME,
    );

    my_gizmos.sphere(Vec3::new(1., 0.5, 0.), Quat::IDENTITY, 0.5, RED);

    for y in [0., 0.5, 1.] {
        gizmos.ray(
            Vec3::new(1., y, 0.),
            Vec3::new(-3., (time.elapsed_seconds() * 3.).sin(), 0.),
            BLUE,
        );
    }

    my_gizmos
        .arc_3d(
            180.0_f32.to_radians(),
            0.2,
            Vec3::ONE,
            Quat::from_rotation_arc(Vec3::Y, Vec3::ONE.normalize()),
            ORANGE,
        )
        .segments(10);

    // Circles have 32 line-segments by default.
    my_gizmos.circle(Vec3::ZERO, Dir3::Y, 3., BLACK);
    // You may want to increase this for larger circles or spheres.
    my_gizmos
        .circle(Vec3::ZERO, Dir3::Y, 3.1, NAVY)
        .segments(64);
    my_gizmos
        .sphere(Vec3::ZERO, Quat::IDENTITY, 3.2, BLACK)
        .circle_segments(64);

    gizmos.arrow(Vec3::ZERO, Vec3::ONE * 1.5, YELLOW);

    // You can create more complex arrows using the arrow builder.
    gizmos
        .arrow(Vec3::new(2., 0., 2.), Vec3::new(2., 2., 2.), ORANGE_RED)
        .with_double_end()
        .with_tip_length(0.5);
}
examples/stress_tests/many_animated_sprites.rs (line 67)
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
fn setup(
    mut commands: Commands,
    assets: Res<AssetServer>,
    mut texture_atlases: ResMut<Assets<TextureAtlasLayout>>,
) {
    warn!(include_str!("warning_string.txt"));

    let mut rng = rand::thread_rng();

    let tile_size = Vec2::splat(64.0);
    let map_size = Vec2::splat(320.0);

    let half_x = (map_size.x / 2.0) as i32;
    let half_y = (map_size.y / 2.0) as i32;

    let texture_handle = assets.load("textures/rpg/chars/gabe/gabe-idle-run.png");
    let texture_atlas = TextureAtlasLayout::from_grid(UVec2::splat(24), 7, 1, None, None);
    let texture_atlas_handle = texture_atlases.add(texture_atlas);

    // Spawns the camera

    commands.spawn(Camera2dBundle::default());

    // Builds and spawns the sprites
    for y in -half_y..half_y {
        for x in -half_x..half_x {
            let position = Vec2::new(x as f32, y as f32);
            let translation = (position * tile_size).extend(rng.gen::<f32>());
            let rotation = Quat::from_rotation_z(rng.gen::<f32>());
            let scale = Vec3::splat(rng.gen::<f32>() * 2.0);
            let mut timer = Timer::from_seconds(0.1, TimerMode::Repeating);
            timer.set_elapsed(Duration::from_secs_f32(rng.gen::<f32>()));

            commands.spawn((
                SpriteBundle {
                    texture: texture_handle.clone(),
                    transform: Transform {
                        translation,
                        rotation,
                        scale,
                    },
                    sprite: Sprite {
                        custom_size: Some(tile_size),
                        ..default()
                    },
                    ..default()
                },
                TextureAtlas::from(texture_atlas_handle.clone()),
                AnimationTimer(timer),
            ));
        }
    }
}
examples/ui/ui_texture_atlas.rs (line 34)
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut texture_atlases: ResMut<Assets<TextureAtlasLayout>>,
) {
    // Camera
    commands.spawn(Camera2dBundle::default());

    let text_style = TextStyle {
        font_size: 20.,
        ..default()
    };

    let texture_handle = asset_server.load("textures/rpg/chars/gabe/gabe-idle-run.png");
    let texture_atlas = TextureAtlasLayout::from_grid(UVec2::splat(24), 7, 1, None, None);
    let texture_atlas_handle = texture_atlases.add(texture_atlas);

    // root node
    commands
        .spawn(NodeBundle {
            style: Style {
                width: Val::Percent(100.0),
                height: Val::Percent(100.0),
                flex_direction: FlexDirection::Column,
                justify_content: JustifyContent::Center,
                align_items: AlignItems::Center,
                row_gap: Val::Px(text_style.font_size * 2.),
                ..default()
            },
            ..default()
        })
        .with_children(|parent| {
            parent.spawn((
                ImageBundle {
                    style: Style {
                        width: Val::Px(256.),
                        height: Val::Px(256.),
                        ..default()
                    },
                    image: UiImage::new(texture_handle),
                    ..default()
                },
                TextureAtlas::from(texture_atlas_handle),
                BackgroundColor(ANTIQUE_WHITE.into()),
                Outline::new(Val::Px(8.0), Val::ZERO, CRIMSON.into()),
            ));
            parent.spawn(TextBundle::from_sections([
                TextSection::new("press ".to_string(), text_style.clone()),
                TextSection::new(
                    "space".to_string(),
                    TextStyle {
                        color: YELLOW.into(),
                        ..text_style.clone()
                    },
                ),
                TextSection::new(" to advance frames".to_string(), text_style),
            ]));
        });
}
examples/2d/sprite_animation.rs (line 100)
89
90
91
92
93
94
95
96
97
98
99
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
fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut texture_atlas_layouts: ResMut<Assets<TextureAtlasLayout>>,
) {
    commands.spawn(Camera2dBundle::default());

    // load the sprite sheet using the `AssetServer`
    let texture = asset_server.load("textures/rpg/chars/gabe/gabe-idle-run.png");

    // the sprite sheet has 7 sprites arranged in a row, and they are all 24px x 24px
    let layout = TextureAtlasLayout::from_grid(UVec2::splat(24), 7, 1, None, None);
    let texture_atlas_layout = texture_atlas_layouts.add(layout);

    // the first (left-hand) sprite runs at 10 FPS
    let animation_config_1 = AnimationConfig::new(1, 6, 10);

    // create the first (left-hand) sprite
    commands.spawn((
        SpriteBundle {
            transform: Transform::from_scale(Vec3::splat(6.0))
                .with_translation(Vec3::new(-50.0, 0.0, 0.0)),
            texture: texture.clone(),
            ..default()
        },
        TextureAtlas {
            layout: texture_atlas_layout.clone(),
            index: animation_config_1.first_sprite_index,
        },
        LeftSprite,
        animation_config_1,
    ));

    // the second (right-hand) sprite runs at 20 FPS
    let animation_config_2 = AnimationConfig::new(1, 6, 20);

    // create the second (right-hand) sprite
    commands.spawn((
        SpriteBundle {
            transform: Transform::from_scale(Vec3::splat(6.0))
                .with_translation(Vec3::new(50.0, 0.0, 0.0)),
            texture: texture.clone(),
            ..default()
        },
        TextureAtlas {
            layout: texture_atlas_layout.clone(),
            index: animation_config_2.first_sprite_index,
        },
        RightSprite,
        animation_config_2,
    ));

    // create a minimal UI explaining how to interact with the example
    commands.spawn(TextBundle {
        text: Text::from_section(
            "Left Arrow Key: Animate Left Sprite\nRight Arrow Key: Animate Right Sprite",
            TextStyle {
                font_size: 20.0,
                ..default()
            },
        ),
        style: Style {
            position_type: PositionType::Absolute,
            top: Val::Px(12.0),
            left: Val::Px(12.0),
            ..default()
        },
        ..default()
    });
}
source

pub fn select(mask: BVec2, if_true: UVec2, if_false: UVec2) -> UVec2

Creates a vector from the elements in if_true and if_false, selecting which to use for each element of self.

A true element in the mask uses the corresponding element from if_true, and false uses the element from if_false.

source

pub const fn from_array(a: [u32; 2]) -> UVec2

Creates a new vector from an array.

source

pub const fn to_array(&self) -> [u32; 2]

[x, y]

source

pub const fn from_slice(slice: &[u32]) -> UVec2

Creates a vector from the first 2 values in slice.

§Panics

Panics if slice is less than 2 elements long.

source

pub fn write_to_slice(self, slice: &mut [u32])

Writes the elements of self to the first 2 elements in slice.

§Panics

Panics if slice is less than 2 elements long.

source

pub const fn extend(self, z: u32) -> UVec3

Creates a 3D vector from self and the given z value.

source

pub fn with_x(self, x: u32) -> UVec2

Creates a 2D vector from self with the given value of x.

source

pub fn with_y(self, y: u32) -> UVec2

Creates a 2D vector from self with the given value of y.

source

pub fn dot(self, rhs: UVec2) -> u32

Computes the dot product of self and rhs.

source

pub fn dot_into_vec(self, rhs: UVec2) -> UVec2

Returns a vector where every component is the dot product of self and rhs.

source

pub fn min(self, rhs: UVec2) -> UVec2

Returns a vector containing the minimum values for each element of self and rhs.

In other words this computes [self.x.min(rhs.x), self.y.min(rhs.y), ..].

source

pub fn max(self, rhs: UVec2) -> UVec2

Returns a vector containing the maximum values for each element of self and rhs.

In other words this computes [self.x.max(rhs.x), self.y.max(rhs.y), ..].

source

pub fn clamp(self, min: UVec2, max: UVec2) -> UVec2

Component-wise clamping of values, similar to u32::clamp.

Each element in min must be less-or-equal to the corresponding element in max.

§Panics

Will panic if min is greater than max when glam_assert is enabled.

source

pub fn min_element(self) -> u32

Returns the horizontal minimum of self.

In other words this computes min(x, y, ..).

source

pub fn max_element(self) -> u32

Returns the horizontal maximum of self.

In other words this computes max(x, y, ..).

source

pub fn element_sum(self) -> u32

Returns the sum of all elements of self.

In other words, this computes self.x + self.y + ...

source

pub fn element_product(self) -> u32

Returns the product of all elements of self.

In other words, this computes self.x * self.y * ...

source

pub fn cmpeq(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a == comparison for each element of self and rhs.

In other words, this computes [self.x == rhs.x, self.y == rhs.y, ..] for all elements.

source

pub fn cmpne(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a != comparison for each element of self and rhs.

In other words this computes [self.x != rhs.x, self.y != rhs.y, ..] for all elements.

source

pub fn cmpge(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a >= comparison for each element of self and rhs.

In other words this computes [self.x >= rhs.x, self.y >= rhs.y, ..] for all elements.

source

pub fn cmpgt(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a > comparison for each element of self and rhs.

In other words this computes [self.x > rhs.x, self.y > rhs.y, ..] for all elements.

source

pub fn cmple(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a <= comparison for each element of self and rhs.

In other words this computes [self.x <= rhs.x, self.y <= rhs.y, ..] for all elements.

source

pub fn cmplt(self, rhs: UVec2) -> BVec2

Returns a vector mask containing the result of a < comparison for each element of self and rhs.

In other words this computes [self.x < rhs.x, self.y < rhs.y, ..] for all elements.

source

pub fn length_squared(self) -> u32

Computes the squared length of self.

source

pub fn as_vec2(&self) -> Vec2

Casts all elements of self to f32.

source

pub fn as_dvec2(&self) -> DVec2

Casts all elements of self to f64.

source

pub fn as_i16vec2(&self) -> I16Vec2

Casts all elements of self to i16.

source

pub fn as_u16vec2(&self) -> U16Vec2

Casts all elements of self to u16.

source

pub fn as_ivec2(&self) -> IVec2

Casts all elements of self to i32.

source

pub fn as_i64vec2(&self) -> I64Vec2

Casts all elements of self to i64.

source

pub fn as_u64vec2(&self) -> U64Vec2

Casts all elements of self to u64.

source

pub const fn wrapping_add(self, rhs: UVec2) -> UVec2

Returns a vector containing the wrapping addition of self and rhs.

In other words this computes [self.x.wrapping_add(rhs.x), self.y.wrapping_add(rhs.y), ..].

source

pub const fn wrapping_sub(self, rhs: UVec2) -> UVec2

Returns a vector containing the wrapping subtraction of self and rhs.

In other words this computes [self.x.wrapping_sub(rhs.x), self.y.wrapping_sub(rhs.y), ..].

source

pub const fn wrapping_mul(self, rhs: UVec2) -> UVec2

Returns a vector containing the wrapping multiplication of self and rhs.

In other words this computes [self.x.wrapping_mul(rhs.x), self.y.wrapping_mul(rhs.y), ..].

source

pub const fn wrapping_div(self, rhs: UVec2) -> UVec2

Returns a vector containing the wrapping division of self and rhs.

In other words this computes [self.x.wrapping_div(rhs.x), self.y.wrapping_div(rhs.y), ..].

source

pub const fn saturating_add(self, rhs: UVec2) -> UVec2

Returns a vector containing the saturating addition of self and rhs.

In other words this computes [self.x.saturating_add(rhs.x), self.y.saturating_add(rhs.y), ..].

source

pub const fn saturating_sub(self, rhs: UVec2) -> UVec2

Returns a vector containing the saturating subtraction of self and rhs.

In other words this computes [self.x.saturating_sub(rhs.x), self.y.saturating_sub(rhs.y), ..].

source

pub const fn saturating_mul(self, rhs: UVec2) -> UVec2

Returns a vector containing the saturating multiplication of self and rhs.

In other words this computes [self.x.saturating_mul(rhs.x), self.y.saturating_mul(rhs.y), ..].

source

pub const fn saturating_div(self, rhs: UVec2) -> UVec2

Returns a vector containing the saturating division of self and rhs.

In other words this computes [self.x.saturating_div(rhs.x), self.y.saturating_div(rhs.y), ..].

source

pub const fn wrapping_add_signed(self, rhs: IVec2) -> UVec2

Returns a vector containing the wrapping addition of self and signed vector rhs.

In other words this computes [self.x.wrapping_add_signed(rhs.x), self.y.wrapping_add_signed(rhs.y), ..].

source

pub const fn saturating_add_signed(self, rhs: IVec2) -> UVec2

Returns a vector containing the saturating addition of self and signed vector rhs.

In other words this computes [self.x.saturating_add_signed(rhs.x), self.y.saturating_add_signed(rhs.y), ..].

Trait Implementations§

source§

impl Add<UVec2> for u32

§

type Output = UVec2

The resulting type after applying the + operator.
source§

fn add(self, rhs: UVec2) -> UVec2

Performs the + operation. Read more
source§

impl Add<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the + operator.
source§

fn add(self, rhs: u32) -> UVec2

Performs the + operation. Read more
source§

impl Add for UVec2

§

type Output = UVec2

The resulting type after applying the + operator.
source§

fn add(self, rhs: UVec2) -> UVec2

Performs the + operation. Read more
source§

impl AddAssign<u32> for UVec2

source§

fn add_assign(&mut self, rhs: u32)

Performs the += operation. Read more
source§

impl AddAssign for UVec2

source§

fn add_assign(&mut self, rhs: UVec2)

Performs the += operation. Read more
source§

impl AsMut<[u32; 2]> for UVec2

Available on non-target_arch="spirv" only.
source§

fn as_mut(&mut self) -> &mut [u32; 2]

Converts this type into a mutable reference of the (usually inferred) input type.
§

impl AsMutVectorParts<u32, 2> for UVec2

§

fn as_mut_parts(&mut self) -> &mut [u32; 2]

source§

impl AsRef<[u32; 2]> for UVec2

Available on non-target_arch="spirv" only.
source§

fn as_ref(&self) -> &[u32; 2]

Converts this type into a shared reference of the (usually inferred) input type.
§

impl AsRefVectorParts<u32, 2> for UVec2

§

fn as_ref_parts(&self) -> &[u32; 2]

source§

impl BitAnd<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: u32) -> <UVec2 as BitAnd<u32>>::Output

Performs the & operation. Read more
source§

impl BitAnd for UVec2

§

type Output = UVec2

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: UVec2) -> <UVec2 as BitAnd>::Output

Performs the & operation. Read more
source§

impl BitOr<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: u32) -> <UVec2 as BitOr<u32>>::Output

Performs the | operation. Read more
source§

impl BitOr for UVec2

§

type Output = UVec2

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: UVec2) -> <UVec2 as BitOr>::Output

Performs the | operation. Read more
source§

impl BitXor<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: u32) -> <UVec2 as BitXor<u32>>::Output

Performs the ^ operation. Read more
source§

impl BitXor for UVec2

§

type Output = UVec2

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: UVec2) -> <UVec2 as BitXor>::Output

Performs the ^ operation. Read more
source§

impl Clone for UVec2

source§

fn clone(&self) -> UVec2

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl CreateFrom for UVec2

§

fn create_from<B>(reader: &mut Reader<B>) -> UVec2
where B: BufferRef,

source§

impl Debug for UVec2

Available on non-target_arch="spirv" only.
source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for UVec2

source§

fn default() -> UVec2

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for UVec2

source§

fn deserialize<D>( deserializer: D ) -> Result<UVec2, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for UVec2

Available on non-target_arch="spirv" only.
source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Div<UVec2> for u32

§

type Output = UVec2

The resulting type after applying the / operator.
source§

fn div(self, rhs: UVec2) -> UVec2

Performs the / operation. Read more
source§

impl Div<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the / operator.
source§

fn div(self, rhs: u32) -> UVec2

Performs the / operation. Read more
source§

impl Div for UVec2

§

type Output = UVec2

The resulting type after applying the / operator.
source§

fn div(self, rhs: UVec2) -> UVec2

Performs the / operation. Read more
source§

impl DivAssign<u32> for UVec2

source§

fn div_assign(&mut self, rhs: u32)

Performs the /= operation. Read more
source§

impl DivAssign for UVec2

source§

fn div_assign(&mut self, rhs: UVec2)

Performs the /= operation. Read more
source§

impl From<[u32; 2]> for UVec2

source§

fn from(a: [u32; 2]) -> UVec2

Converts to this type from the input type.
source§

impl From<(u32, u32)> for UVec2

source§

fn from(t: (u32, u32)) -> UVec2

Converts to this type from the input type.
source§

impl From<BVec2> for UVec2

source§

fn from(v: BVec2) -> UVec2

Converts to this type from the input type.
source§

impl From<U16Vec2> for UVec2

source§

fn from(v: U16Vec2) -> UVec2

Converts to this type from the input type.
source§

impl From<UVec2> for [u32; 2]

source§

fn from(v: UVec2) -> [u32; 2]

Converts to this type from the input type.
source§

impl From<UVec2> for (u32, u32)

source§

fn from(v: UVec2) -> (u32, u32)

Converts to this type from the input type.
source§

impl From<UVec2> for DVec2

source§

fn from(v: UVec2) -> DVec2

Converts to this type from the input type.
source§

impl From<UVec2> for I64Vec2

source§

fn from(v: UVec2) -> I64Vec2

Converts to this type from the input type.
source§

impl From<UVec2> for U64Vec2

source§

fn from(v: UVec2) -> U64Vec2

Converts to this type from the input type.
§

impl FromReflect for UVec2
where UVec2: Any + Send + Sync, u32: FromReflect + TypePath + RegisterForReflection,

§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<UVec2>

Constructs a concrete instance of Self from a reflected value.
§

fn take_from_reflect( reflect: Box<dyn Reflect> ) -> Result<Self, Box<dyn Reflect>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
§

impl FromVectorParts<u32, 2> for UVec2
where UVec2: From<[u32; 2]>, u32: VectorScalar,

§

fn from_parts(parts: [u32; 2]) -> UVec2

§

impl GetTypeRegistration for UVec2
where UVec2: Any + Send + Sync, u32: FromReflect + TypePath + RegisterForReflection,

§

fn get_type_registration() -> TypeRegistration

Returns the default TypeRegistration for this type.
§

fn register_type_dependencies(registry: &mut TypeRegistry)

Registers other types needed by this type. Read more
source§

impl Hash for UVec2

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Index<usize> for UVec2

§

type Output = u32

The returned type after indexing.
source§

fn index(&self, index: usize) -> &<UVec2 as Index<usize>>::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<usize> for UVec2

source§

fn index_mut(&mut self, index: usize) -> &mut <UVec2 as Index<usize>>::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl Mul<UVec2> for u32

§

type Output = UVec2

The resulting type after applying the * operator.
source§

fn mul(self, rhs: UVec2) -> UVec2

Performs the * operation. Read more
source§

impl Mul<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the * operator.
source§

fn mul(self, rhs: u32) -> UVec2

Performs the * operation. Read more
source§

impl Mul for UVec2

§

type Output = UVec2

The resulting type after applying the * operator.
source§

fn mul(self, rhs: UVec2) -> UVec2

Performs the * operation. Read more
source§

impl MulAssign<u32> for UVec2

source§

fn mul_assign(&mut self, rhs: u32)

Performs the *= operation. Read more
source§

impl MulAssign for UVec2

source§

fn mul_assign(&mut self, rhs: UVec2)

Performs the *= operation. Read more
source§

impl Not for UVec2

§

type Output = UVec2

The resulting type after applying the ! operator.
source§

fn not(self) -> <UVec2 as Not>::Output

Performs the unary ! operation. Read more
source§

impl PartialEq for UVec2

source§

fn eq(&self, other: &UVec2) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Product<&'a UVec2> for UVec2

source§

fn product<I>(iter: I) -> UVec2
where I: Iterator<Item = &'a UVec2>,

Method which takes an iterator and generates Self from the elements by multiplying the items.
source§

impl Product for UVec2

source§

fn product<I>(iter: I) -> UVec2
where I: Iterator<Item = UVec2>,

Method which takes an iterator and generates Self from the elements by multiplying the items.
§

impl ReadFrom for UVec2

§

fn read_from<B>(&mut self, reader: &mut Reader<B>)
where B: BufferRef,

§

impl Reflect for UVec2
where UVec2: Any + Send + Sync, u32: FromReflect + TypePath + RegisterForReflection,

§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the TypeInfo of the type represented by this value. Read more
§

fn into_any(self: Box<UVec2>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>.
§

fn as_any(&self) -> &(dyn Any + 'static)

Returns the value as a &dyn Any.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Returns the value as a &mut dyn Any.
§

fn into_reflect(self: Box<UVec2>) -> Box<dyn Reflect>

Casts this type to a boxed reflected value.
§

fn as_reflect(&self) -> &(dyn Reflect + 'static)

Casts this type to a reflected value.
§

fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)

Casts this type to a mutable reflected value.
§

fn clone_value(&self) -> Box<dyn Reflect>

Clones the value as a Reflect trait object. Read more
§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
§

fn apply(&mut self, value: &(dyn Reflect + 'static))

Applies a reflected value to this value. Read more
§

fn reflect_kind(&self) -> ReflectKind

Returns a zero-sized enumeration of “kinds” of type. Read more
§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an immutable enumeration of “kinds” of type. Read more
§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
§

fn reflect_owned(self: Box<UVec2>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
§

fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>

Returns a “partial equality” comparison result. Read more
§

fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Debug formatter for the value. Read more
§

fn serializable(&self) -> Option<Serializable<'_>>

Returns a serializable version of the value. Read more
§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
source§

impl Rem<UVec2> for u32

§

type Output = UVec2

The resulting type after applying the % operator.
source§

fn rem(self, rhs: UVec2) -> UVec2

Performs the % operation. Read more
source§

impl Rem<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the % operator.
source§

fn rem(self, rhs: u32) -> UVec2

Performs the % operation. Read more
source§

impl Rem for UVec2

§

type Output = UVec2

The resulting type after applying the % operator.
source§

fn rem(self, rhs: UVec2) -> UVec2

Performs the % operation. Read more
source§

impl RemAssign<u32> for UVec2

source§

fn rem_assign(&mut self, rhs: u32)

Performs the %= operation. Read more
source§

impl RemAssign for UVec2

source§

fn rem_assign(&mut self, rhs: UVec2)

Performs the %= operation. Read more
source§

impl Serialize for UVec2

source§

fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
§

impl ShaderSize for UVec2
where u32: ShaderSize,

§

const SHADER_SIZE: NonZero<u64> = _

Represents WGSL Size (equivalent to ShaderType::min_size)
§

impl ShaderType for UVec2
where u32: ShaderSize,

§

fn min_size() -> NonZero<u64>

Represents the minimum size of Self (equivalent to GPUBufferBindingLayout.minBindingSize) Read more
§

fn size(&self) -> NonZero<u64>

Returns the size of Self at runtime Read more
§

fn assert_uniform_compat()

source§

impl Shl<IVec2> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: IVec2) -> <UVec2 as Shl<IVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<UVec2> for I16Vec2

§

type Output = I16Vec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <I16Vec2 as Shl<UVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<UVec2> for I64Vec2

§

type Output = I64Vec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <I64Vec2 as Shl<UVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<UVec2> for IVec2

§

type Output = IVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <IVec2 as Shl<UVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<UVec2> for U16Vec2

§

type Output = U16Vec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <U16Vec2 as Shl<UVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<UVec2> for U64Vec2

§

type Output = U64Vec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <U64Vec2 as Shl<UVec2>>::Output

Performs the << operation. Read more
source§

impl Shl<i16> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: i16) -> <UVec2 as Shl<i16>>::Output

Performs the << operation. Read more
source§

impl Shl<i32> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: i32) -> <UVec2 as Shl<i32>>::Output

Performs the << operation. Read more
source§

impl Shl<i64> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: i64) -> <UVec2 as Shl<i64>>::Output

Performs the << operation. Read more
source§

impl Shl<i8> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: i8) -> <UVec2 as Shl<i8>>::Output

Performs the << operation. Read more
source§

impl Shl<u16> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: u16) -> <UVec2 as Shl<u16>>::Output

Performs the << operation. Read more
source§

impl Shl<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: u32) -> <UVec2 as Shl<u32>>::Output

Performs the << operation. Read more
source§

impl Shl<u64> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: u64) -> <UVec2 as Shl<u64>>::Output

Performs the << operation. Read more
source§

impl Shl<u8> for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: u8) -> <UVec2 as Shl<u8>>::Output

Performs the << operation. Read more
source§

impl Shl for UVec2

§

type Output = UVec2

The resulting type after applying the << operator.
source§

fn shl(self, rhs: UVec2) -> <UVec2 as Shl>::Output

Performs the << operation. Read more
source§

impl Shr<IVec2> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: IVec2) -> <UVec2 as Shr<IVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<UVec2> for I16Vec2

§

type Output = I16Vec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <I16Vec2 as Shr<UVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<UVec2> for I64Vec2

§

type Output = I64Vec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <I64Vec2 as Shr<UVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<UVec2> for IVec2

§

type Output = IVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <IVec2 as Shr<UVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<UVec2> for U16Vec2

§

type Output = U16Vec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <U16Vec2 as Shr<UVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<UVec2> for U64Vec2

§

type Output = U64Vec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <U64Vec2 as Shr<UVec2>>::Output

Performs the >> operation. Read more
source§

impl Shr<i16> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: i16) -> <UVec2 as Shr<i16>>::Output

Performs the >> operation. Read more
source§

impl Shr<i32> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: i32) -> <UVec2 as Shr<i32>>::Output

Performs the >> operation. Read more
source§

impl Shr<i64> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: i64) -> <UVec2 as Shr<i64>>::Output

Performs the >> operation. Read more
source§

impl Shr<i8> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: i8) -> <UVec2 as Shr<i8>>::Output

Performs the >> operation. Read more
source§

impl Shr<u16> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: u16) -> <UVec2 as Shr<u16>>::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: u32) -> <UVec2 as Shr<u32>>::Output

Performs the >> operation. Read more
source§

impl Shr<u64> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: u64) -> <UVec2 as Shr<u64>>::Output

Performs the >> operation. Read more
source§

impl Shr<u8> for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: u8) -> <UVec2 as Shr<u8>>::Output

Performs the >> operation. Read more
source§

impl Shr for UVec2

§

type Output = UVec2

The resulting type after applying the >> operator.
source§

fn shr(self, rhs: UVec2) -> <UVec2 as Shr>::Output

Performs the >> operation. Read more
§

impl Struct for UVec2
where UVec2: Any + Send + Sync, u32: FromReflect + TypePath + RegisterForReflection,

§

fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>

Returns a reference to the value of the field named name as a &dyn Reflect.
§

fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>

Returns a mutable reference to the value of the field named name as a &mut dyn Reflect.
§

fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>

Returns a reference to the value of the field with index index as a &dyn Reflect.
§

fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>

Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect.
§

fn name_at(&self, index: usize) -> Option<&str>

Returns the name of the field with index index.
§

fn field_len(&self) -> usize

Returns the number of fields in the struct.
§

fn iter_fields(&self) -> FieldIter<'_>

Returns an iterator over the values of the reflectable fields for this struct.
§

fn clone_dynamic(&self) -> DynamicStruct

Clones the struct into a DynamicStruct.
source§

impl Sub<UVec2> for u32

§

type Output = UVec2

The resulting type after applying the - operator.
source§

fn sub(self, rhs: UVec2) -> UVec2

Performs the - operation. Read more
source§

impl Sub<u32> for UVec2

§

type Output = UVec2

The resulting type after applying the - operator.
source§

fn sub(self, rhs: u32) -> UVec2

Performs the - operation. Read more
source§

impl Sub for UVec2

§

type Output = UVec2

The resulting type after applying the - operator.
source§

fn sub(self, rhs: UVec2) -> UVec2

Performs the - operation. Read more
source§

impl SubAssign<u32> for UVec2

source§

fn sub_assign(&mut self, rhs: u32)

Performs the -= operation. Read more
source§

impl SubAssign for UVec2

source§

fn sub_assign(&mut self, rhs: UVec2)

Performs the -= operation. Read more
source§

impl<'a> Sum<&'a UVec2> for UVec2

source§

fn sum<I>(iter: I) -> UVec2
where I: Iterator<Item = &'a UVec2>,

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl Sum for UVec2

source§

fn sum<I>(iter: I) -> UVec2
where I: Iterator<Item = UVec2>,

Method which takes an iterator and generates Self from the elements by “summing up” the items.
source§

impl TryFrom<I16Vec2> for UVec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: I16Vec2) -> Result<UVec2, <UVec2 as TryFrom<I16Vec2>>::Error>

Performs the conversion.
source§

impl TryFrom<I64Vec2> for UVec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: I64Vec2) -> Result<UVec2, <UVec2 as TryFrom<I64Vec2>>::Error>

Performs the conversion.
source§

impl TryFrom<IVec2> for UVec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: IVec2) -> Result<UVec2, <UVec2 as TryFrom<IVec2>>::Error>

Performs the conversion.
source§

impl TryFrom<U64Vec2> for UVec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: U64Vec2) -> Result<UVec2, <UVec2 as TryFrom<U64Vec2>>::Error>

Performs the conversion.
source§

impl TryFrom<UVec2> for I16Vec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: UVec2) -> Result<I16Vec2, <I16Vec2 as TryFrom<UVec2>>::Error>

Performs the conversion.
source§

impl TryFrom<UVec2> for IVec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: UVec2) -> Result<IVec2, <IVec2 as TryFrom<UVec2>>::Error>

Performs the conversion.
source§

impl TryFrom<UVec2> for U16Vec2

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(v: UVec2) -> Result<U16Vec2, <U16Vec2 as TryFrom<UVec2>>::Error>

Performs the conversion.
§

impl TypePath for UVec2
where UVec2: Any + Send + Sync,

§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
§

fn module_path() -> Option<&'static str>

Returns the path to the module the type is in, or None if it is anonymous. Read more
§

impl Typed for UVec2
where UVec2: Any + Send + Sync, u32: FromReflect + TypePath + RegisterForReflection,

§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.
source§

impl Vec2Swizzles for UVec2

§

type Vec3 = UVec3

§

type Vec4 = UVec4

source§

fn xx(self) -> UVec2

source§

fn xy(self) -> UVec2

source§

fn yx(self) -> UVec2

source§

fn yy(self) -> UVec2

source§

fn xxx(self) -> UVec3

source§

fn xxy(self) -> UVec3

source§

fn xyx(self) -> UVec3

source§

fn xyy(self) -> UVec3

source§

fn yxx(self) -> UVec3

source§

fn yxy(self) -> UVec3

source§

fn yyx(self) -> UVec3

source§

fn yyy(self) -> UVec3

source§

fn xxxx(self) -> UVec4

source§

fn xxxy(self) -> UVec4

source§

fn xxyx(self) -> UVec4

source§

fn xxyy(self) -> UVec4

source§

fn xyxx(self) -> UVec4

source§

fn xyxy(self) -> UVec4

source§

fn xyyx(self) -> UVec4

source§

fn xyyy(self) -> UVec4

source§

fn yxxx(self) -> UVec4

source§

fn yxxy(self) -> UVec4

source§

fn yxyx(self) -> UVec4

source§

fn yxyy(self) -> UVec4

source§

fn yyxx(self) -> UVec4

source§

fn yyxy(self) -> UVec4

source§

fn yyyx(self) -> UVec4

source§

fn yyyy(self) -> UVec4

§

impl WriteInto for UVec2

§

fn write_into<B>(&self, writer: &mut Writer<B>)
where B: BufferMut,

source§

impl Zeroable for UVec2

§

fn zeroed() -> Self

source§

impl Copy for UVec2

source§

impl Eq for UVec2

source§

impl Pod for UVec2

source§

impl StructuralPartialEq for UVec2

Auto Trait Implementations§

§

impl Freeze for UVec2

§

impl RefUnwindSafe for UVec2

§

impl Send for UVec2

§

impl Sync for UVec2

§

impl Unpin for UVec2

§

impl UnwindSafe for UVec2

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CheckedBitPattern for T
where T: AnyBitPattern,

§

type Bits = T

Self must have the same layout as the specified Bits except for the possible invalid bit patterns being checked during is_valid_bit_pattern.
§

fn is_valid_bit_pattern(_bits: &T) -> bool

If this function returns true, then it must be valid to reinterpret bits as &Self.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DynEq for T
where T: Any + Eq,

§

fn as_any(&self) -> &(dyn Any + 'static)

Casts the type to dyn Any.
§

fn dyn_eq(&self, other: &(dyn DynEq + 'static)) -> bool

This method tests for self and other values to be equal. Read more
§

impl<T> DynHash for T
where T: DynEq + Hash,

§

fn as_dyn_eq(&self) -> &(dyn DynEq + 'static)

Casts the type to dyn Any.
§

fn dyn_hash(&self, state: &mut dyn Hasher)

Feeds this value into the given Hasher.
§

impl<T> DynamicTypePath for T
where T: TypePath,

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> FromWorld for T
where T: Default,

§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given World.
§

impl<S> GetField for S
where S: Struct,

§

fn get_field<T>(&self, name: &str) -> Option<&T>
where T: Reflect,

Returns a reference to the value of the field named name, downcast to T.
§

fn get_field_mut<T>(&mut self, name: &str) -> Option<&mut T>
where T: Reflect,

Returns a mutable reference to the value of the field named name, downcast to T.
§

impl<T> GetPath for T
where T: Reflect + ?Sized,

§

fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>

Returns a reference to the value specified by path. Read more
§

fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>

Returns a mutable reference to the value specified by path. Read more
§

fn path<'p, T>( &self, path: impl ReflectPath<'p> ) -> Result<&T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed reference to the value specified by path. Read more
§

fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed mutable reference to the value specified by path. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer ) -> Result<(), ErrorImpl>

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

§

fn clone_type_data(&self) -> Box<dyn TypeData>

§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> AnyBitPattern for T
where T: Pod,

§

impl<T> ConditionalSend for T
where T: Send,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> GpuArrayBufferable for T

§

impl<T> NoUninit for T
where T: Pod,

source§

impl<T, Rhs> NumAssignOps<Rhs> for T
where T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,

source§

impl<T, Rhs, Output> NumOps<Rhs, Output> for T
where T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,

§

impl<T> Settings for T
where T: 'static + Send + Sync,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,