pub struct MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig,{ /* private fields */ }
Available on crate feature
multi-quadtree
only.Expand description
A Bevy plugin for multiple quadtrees.
§Example
App::new()
.add_plugins(MultiQuadTreePlugin::<(
QTConfig::<(
// CollisionRect with ID 0, follows GlobalTransform and Sprite
(CollisionRect<0>, (GlobalTransform, Sprite)),
// CollisionRect with ID 1, follows GlobalTransform only
(CollisionRect<1>, GlobalTransform),
// CollisionCircle with default ID 0, follows GlobalTransform
(CollisionCircle, GlobalTransform),
),
// the ID of this quadtree is 0.
// at most 40 objects in each node, 4 levels, 100x100 boundary, center at (0, 0)
// 2.0 = outlet_boundary / inlet_boundary for LooseQuadTree,
// query by `Res<QuadTree<0>>`
0, 40, 4, 100, 100, 0, 0, 20>,
QTConfig::<(
// CollisionRect with ID 1, follows GlobalTransform and Sprite
(CollisionRect<1>, (GlobalTransform, Sprite)),
// CollisionCircle with ID 1, follows GlobalTransform only
(CollisionCircle<1>, GlobalTransform),
),
// The same attribute as the previous one, but the ID is 1.
// query by `Res<QuadTree<1>>`
1, 40, 4, 100, 100, 0, 0, 20>,
)>::default());
§Panic
- duplicated quadtree added. (Debug check only)
e.g. (QTConfig<…, 0, 40, 4, 100, 100, 0, 0, 20>, QTConfig<…, 0, 40, 4, 100, 100, 0, 0, 20>)
they both insert QuadTree
s with the same ID 0 into the world.
- duplicated shapes in the same quadtree. (Debug check only)
See QuadTreePlugin
for more information.
- invalid const parameters. (Debug check only)
N, D, W, H should > 0. K should >= 10.
Trait Implementations§
Source§impl<C> Debug for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig + Debug,
impl<C> Debug for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig + Debug,
Source§impl<C> Default for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig,
impl<C> Default for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig,
Source§impl<C> Plugin for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig,
impl<C> Plugin for MultiQuadTreePlugin<C>where
C: AsQuadTreePluginConfig,
Source§fn ready(&self, _app: &App) -> bool
fn ready(&self, _app: &App) -> bool
Has the plugin finished its setup? This can be useful for plugins that need something
asynchronous to happen before they can finish their setup, like the initialization of a renderer.
Once the plugin is ready,
finish
should be called.Source§fn finish(&self, _app: &mut App)
fn finish(&self, _app: &mut App)
Finish adding this plugin to the
App
, once all plugins registered are ready. This can
be useful for plugins that depends on another plugin asynchronous setup, like the renderer.Source§fn cleanup(&self, _app: &mut App)
fn cleanup(&self, _app: &mut App)
Runs after all plugins are built and finished, but before the app schedule is executed.
This can be useful if you have some resource that other plugins need during their build step,
but after build you want to remove it and send it to another thread.
Auto Trait Implementations§
impl<C> Freeze for MultiQuadTreePlugin<C>
impl<C> RefUnwindSafe for MultiQuadTreePlugin<C>where
C: RefUnwindSafe,
impl<C> Send for MultiQuadTreePlugin<C>
impl<C> Sync for MultiQuadTreePlugin<C>
impl<C> Unpin for MultiQuadTreePlugin<C>where
C: Unpin,
impl<C> UnwindSafe for MultiQuadTreePlugin<C>where
C: UnwindSafe,
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
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> 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
Mutably borrows from an owned value. Read more
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>
Converts
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn 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>
Converts
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which 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)
Converts
&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)
Converts
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
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>
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 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>
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