use crate::deref_as; use bevy::prelude::{Color, Component, Rect, Vec2}; #[derive(Clone, Copy, Debug, Component)] pub struct BoxSize(Vec2); deref_as!(BoxSize => Vec2); impl From<Vec2> for BoxSize { fn from(value: Vec2) -> Self { BoxSize(value) } } pub fn check_box_collisions(first: Rect, second: Rect) -> bool { first.min.x < second.max.x && first.max.x > second.min.x && first.min.y < second.max.y && first.max.y > second.min.y } #[derive(Clone, Copy, Debug, Component)] pub enum CollisionGroup { Player, Pickup, FriendlyProjectile, HostileProjectile, Enemy, } impl CollisionGroup { pub fn color(&self) -> Color { use CollisionGroup::*; match self { Player => Color::rgb_u8(0, 116, 217), Pickup => Color::rgb_u8(177, 13, 201), FriendlyProjectile => Color::rgb_u8(46, 204, 64), HostileProjectile => Color::rgb_u8(255, 65, 54), Enemy => Color::rgb_u8(133, 20, 75), } } }