pub struct TrackballCamera {
pub frame: Frame<f32>,
pub scope: Scope<f32>,
pub blend: f32,
pub reset: Frame<f32>,
pub clamp: Option<Box<dyn Clamp<f32>>>,
pub group: HashMap<Entity, bool>,
/* private fields */
}
Fields§
§frame: Frame<f32>
Camera frame defining Transform
.
Comprises following properties:
- target position as trackball center
- camera eye rotation on trackball surface (incl. roll, gimbal lock-free using quaternion)
- trackball radius
scope: Scope<f32>
Camera scope defining Projection
.
Comprises following properties:
- field of view angle (default is 45 degrees) and its mode of either
Fixed::Ver
(default),Fixed::Hor
, orFixed::Upp
. - projection mode of either perspective (default) or orthographic (scale preserving)
- clip planes either measured from eye (default) or target (object inspection mode)
blend: f32
Blend half-life from 0 (fast) to 1000 (slow) milliseconds. Default is 40.0
.
It is the time passed until halfway of fps-agnostic exponential ease-out.
reset: Frame<f32>
Camera frame to reset to when TrackballInput::reset_key
is pressed.
clamp: Option<Box<dyn Clamp<f32>>>
User boundary conditions clamping camera Frame
.
Allows to limit target/eye position or minimal/maximal target/eye distance or up rotation.
group: HashMap<Entity, bool>
Additional TrackballController
entities to which this camera is sensitive.
It is always sensitive to its own controller if it has one. A mapped value of true
will
clamp the active controller as well and hence all other cameras of this group whenever this
camera is clamped. If false
, only this camera is clamped whereas other cameras of this
group continue to follow the active controller.
Implementations§
Source§impl TrackballCamera
impl TrackballCamera
Sourcepub fn look_at(target: Vec3, eye: Vec3, up: Vec3) -> Self
pub fn look_at(target: Vec3, eye: Vec3, up: Vec3) -> Self
Defines camera with target
position and eye
position inclusive its roll attitude (up
).
Sourcepub const fn with_scope(self, scope: Scope<f32>) -> Self
pub const fn with_scope(self, scope: Scope<f32>) -> Self
Defines scope, see Self::scope
.
Sourcepub const fn with_blend(self, blend: f32) -> Self
pub const fn with_blend(self, blend: f32) -> Self
Defines blend half-life, see Self::blend
.
Sourcepub const fn with_reset(self, reset: Frame<f32>) -> Self
pub const fn with_reset(self, reset: Frame<f32>) -> Self
Defines reset frame, see Self::reset
.
Sourcepub fn with_clamp(self, clamp: impl Clamp<f32>) -> Self
pub fn with_clamp(self, clamp: impl Clamp<f32>) -> Self
Defines user boundary conditions, see Self::clamp
.
Sourcepub fn add_controller(self, id: Entity, rigid: bool) -> Self
pub fn add_controller(self, id: Entity, rigid: bool) -> Self
Adds additional controller to which this camera is sensitive, see Self::group
.
Trait Implementations§
Source§impl Component for TrackballCamera
impl Component for TrackballCamera
Source§const STORAGE_TYPE: StorageType = bevy::ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy::ecs::component::StorageType::Table
Source§fn register_required_components(
requiree: ComponentId,
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
inheritance_depth: u16,
)
fn register_required_components( requiree: ComponentId, components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, inheritance_depth: u16, )
Source§fn register_component_hooks(hooks: &mut ComponentHooks)
fn register_component_hooks(hooks: &mut ComponentHooks)
ComponentHooks
.Auto Trait Implementations§
impl Freeze for TrackballCamera
impl !RefUnwindSafe for TrackballCamera
impl Send for TrackballCamera
impl Sync for TrackballCamera
impl Unpin for TrackballCamera
impl !UnwindSafe for TrackballCamera
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§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
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId), )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
Source§fn register_required_components(
components: &mut Components,
storages: &mut Storages,
required_components: &mut RequiredComponents,
)
fn register_required_components( components: &mut Components, storages: &mut Storages, required_components: &mut RequiredComponents, )
Bundle
.Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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
.Source§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
.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
fn get_components(self, func: &mut impl FnMut(StorageType, OwningPtr<'_>))
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.