diff --git a/Cargo.toml b/Cargo.toml index 618ecea50cc35afad827751ca44823091849a813..c777faeadb6e4489427842db0b6fded17b56f5ca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,9 @@ keywords = ["bevy"] exclude = ["assets/*"] +[features] +multicam = [] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # Enable max optimizations for dependencies, but not for our code: diff --git a/src/cursor.rs b/src/cursor.rs index 037d88f04d689deefc9b168c999aa16c284318b0..e0485b48e3c43edb3f805a4e00837c17044fbf5f 100644 --- a/src/cursor.rs +++ b/src/cursor.rs @@ -2,6 +2,9 @@ use bevy::{input::mouse::MouseMotion, prelude::*, window::PrimaryWindow}; use crate::{CosmicEditor, CosmicTextChanged}; +#[cfg(feature = "multicam")] +use crate::CosmicPrimaryCamera; + /// For use with custom cursor control; Event is emitted when cursor enters a text widget #[derive(Event)] pub struct TextHoverIn; @@ -33,10 +36,17 @@ pub fn change_cursor( } } +#[cfg(feature = "multicam")] +type CameraQuery<'a, 'b, 'c, 'd> = + Query<'a, 'b, (&'c Camera, &'d GlobalTransform), With<CosmicPrimaryCamera>>; + +#[cfg(not(feature = "multicam"))] +type CameraQuery<'a, 'b, 'c, 'd> = Query<'a, 'b, (&'c Camera, &'d GlobalTransform)>; + pub fn hover_sprites( windows: Query<&Window, With<PrimaryWindow>>, mut cosmic_edit_query: Query<(&mut Sprite, &GlobalTransform), With<CosmicEditor>>, - camera_q: Query<(&Camera, &GlobalTransform)>, + camera_q: CameraQuery, mut hovered: Local<bool>, mut last_hovered: Local<bool>, mut evw_hover_in: EventWriter<TextHoverIn>, diff --git a/src/lib.rs b/src/lib.rs index da8bd57348abec06b85e9dc2736d8242ba467e8b..20c7fe4d8d13dddea0e05b22432188ccd31131e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,6 +26,10 @@ use render::{ on_scale_factor_change, CursorBlinkTimer, CursorVisibility, SwashCacheState, }; +#[cfg(feature = "multicam")] +#[derive(Component)] +pub struct CosmicPrimaryCamera; + #[derive(Clone, Component, PartialEq, Debug)] pub enum CosmicText { OneStyle(String),