Camera

Struct Camera 

Source
pub struct Camera {
    pub projection: ProjectionType,
    pub aspect_ratio: f32,
    pub z_near: f32,
    pub z_far: f32,
    pub is_active: bool,
}
Expand description

A component that defines a camera’s projection parameters.

This component is used to configure how the 3D world is projected onto the 2D screen. It supports both perspective and orthographic projections.

Fields§

§projection: ProjectionType

The type of projection (perspective or orthographic).

§aspect_ratio: f32

The aspect ratio of the viewport (width / height). This is typically updated when the window is resized.

§z_near: f32

The distance to the near clipping plane. Objects closer than this will not be rendered. Should be a small positive value (e.g., 0.1).

§z_far: f32

The distance to the far clipping plane. Objects farther than this will not be rendered. Should be larger than z_near (e.g., 1000.0).

§is_active: bool

Whether this camera is the active/primary camera. Only one camera should be active at a time.

Implementations§

Source§

impl Camera

Source

pub fn new_perspective( fov_y_radians: f32, aspect_ratio: f32, z_near: f32, z_far: f32, ) -> Self

Creates a new perspective camera with the given parameters.

Source

pub fn new_orthographic( width: f32, height: f32, z_near: f32, z_far: f32, ) -> Self

Creates a new orthographic camera with the given parameters.

Source

pub fn default_perspective() -> Self

Creates a default perspective camera suitable for most 3D applications.

  • FOV: 60 degrees (~1.047 radians)
  • Aspect ratio: 16:9 (~1.777)
  • Near plane: 0.1
  • Far plane: 1000.0
Source

pub fn default_orthographic() -> Self

Creates a default orthographic camera.

  • Width: 1920.0
  • Height: 1080.0
  • Near plane: -1.0
  • Far plane: 1000.0
Source

pub fn projection_matrix(&self) -> Mat4

Calculates the projection matrix for this camera.

This uses a right-handed coordinate system with a [0, 1] depth range, which is standard for modern rendering APIs like Vulkan and WebGPU.

Source

pub fn set_aspect_ratio(&mut self, width: u32, height: u32)

Updates the aspect ratio, typically called when the window is resized.

Trait Implementations§

Source§

impl Clone for Camera

Source§

fn clone(&self) -> Camera

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Camera

Source§

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

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

impl Default for Camera

Source§

fn default() -> Self

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

impl PartialEq for Camera

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Component for Camera

Source§

impl Copy for Camera

Source§

impl StructuralPartialEq for Camera

Auto Trait Implementations§

§

impl Freeze for Camera

§

impl RefUnwindSafe for Camera

§

impl Send for Camera

§

impl Sync for Camera

§

impl Unpin for Camera

§

impl UnwindSafe for Camera

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
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
Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<C1> ComponentBundle for C1
where C1: Component,

Source§

fn type_ids() -> Vec<TypeId>

Returns the sorted list of TypeIds for the components in this bundle. Read more
Source§

fn create_columns() -> HashMap<TypeId, Box<dyn AnyVec>>

Creates the set of empty, type-erased Vec<T> columns required to store this bundle’s components. Read more
Source§

fn update_metadata( metadata: &mut EntityMetadata, location: PageIndex, registry: &ComponentRegistry, )

Updates the appropriate fields in an EntityMetadata struct to point to the location of this bundle’s data. Read more
Source§

unsafe fn add_to_page(self, page: &mut ComponentPage)

Adds the components from this bundle into the specified ComponentPage. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

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
Source§

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

Source§

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

Source§

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.