From ee23f7676bddd241637f5041b092052ecd1de3a5 Mon Sep 17 00:00:00 2001 From: milse113 <56005814+milse113@users.noreply.github.com> Date: Fri, 13 Oct 2023 08:35:32 +0000 Subject: [PATCH] Basic multi-camera support (#86) --- Cargo.toml | 3 +++ src/cursor.rs | 12 +++++++++++- src/lib.rs | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 618ecea..c777fae 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 037d88f..e0485b4 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 da8bd57..20c7fe4 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), -- GitLab