bevy_core_pipeline/core_2d/
camera_2d.rs1#![expect(deprecated)]
2
3use crate::{
4 core_2d::graph::Core2d,
5 tonemapping::{DebandDither, Tonemapping},
6};
7use bevy_ecs::prelude::*;
8use bevy_reflect::{std_traits::ReflectDefault, Reflect};
9use bevy_render::sync_world::SyncToRenderWorld;
10use bevy_render::{
11 camera::{
12 Camera, CameraMainTextureUsages, CameraProjection, CameraRenderGraph,
13 OrthographicProjection,
14 },
15 extract_component::ExtractComponent,
16 prelude::Msaa,
17 primitives::Frustum,
18 view::VisibleEntities,
19};
20use bevy_transform::prelude::{GlobalTransform, Transform};
21
22#[derive(Component, Default, Reflect, Clone, ExtractComponent)]
24#[extract_component_filter(With<Camera>)]
25#[reflect(Component, Default)]
26#[require(
27 Camera,
28 DebandDither,
29 CameraRenderGraph(|| CameraRenderGraph::new(Core2d)),
30 OrthographicProjection(OrthographicProjection::default_2d),
31 Frustum(|| OrthographicProjection::default_2d().compute_frustum(&GlobalTransform::from(Transform::default()))),
32 Tonemapping(|| Tonemapping::None),
33)]
34pub struct Camera2d;
35
36#[derive(Bundle, Clone)]
37#[deprecated(
38 since = "0.15.0",
39 note = "Use the `Camera2d` component instead. Inserting it will now also insert the other components required by it automatically."
40)]
41pub struct Camera2dBundle {
42 pub camera: Camera,
43 pub camera_render_graph: CameraRenderGraph,
44 pub projection: OrthographicProjection,
45 pub visible_entities: VisibleEntities,
46 pub frustum: Frustum,
47 pub transform: Transform,
48 pub global_transform: GlobalTransform,
49 pub camera_2d: Camera2d,
50 pub tonemapping: Tonemapping,
51 pub deband_dither: DebandDither,
52 pub main_texture_usages: CameraMainTextureUsages,
53 pub msaa: Msaa,
54 pub sync: SyncToRenderWorld,
56}
57
58impl Default for Camera2dBundle {
59 fn default() -> Self {
60 let projection = OrthographicProjection::default_2d();
61 let transform = Transform::default();
62 let frustum = projection.compute_frustum(&GlobalTransform::from(transform));
63 Self {
64 camera_render_graph: CameraRenderGraph::new(Core2d),
65 projection,
66 visible_entities: VisibleEntities::default(),
67 frustum,
68 transform,
69 global_transform: Default::default(),
70 camera: Camera::default(),
71 camera_2d: Camera2d,
72 tonemapping: Tonemapping::None,
73 deband_dither: DebandDither::Disabled,
74 main_texture_usages: Default::default(),
75 msaa: Default::default(),
76 sync: Default::default(),
77 }
78 }
79}
80
81impl Camera2dBundle {
82 pub fn new_with_far(far: f32) -> Self {
89 let projection = OrthographicProjection {
92 far,
93 ..OrthographicProjection::default_2d()
94 };
95 let transform = Transform::from_xyz(0.0, 0.0, far - 0.1);
96 let frustum = projection.compute_frustum(&GlobalTransform::from(transform));
97 Self {
98 camera_render_graph: CameraRenderGraph::new(Core2d),
99 projection,
100 visible_entities: VisibleEntities::default(),
101 frustum,
102 transform,
103 global_transform: Default::default(),
104 camera: Camera::default(),
105 camera_2d: Camera2d,
106 tonemapping: Tonemapping::None,
107 deband_dither: DebandDither::Disabled,
108 main_texture_usages: Default::default(),
109 msaa: Default::default(),
110 sync: Default::default(),
111 }
112 }
113}