use bevy::prelude::*;
use bevy::render::RenderApp;
use bevy::sprite::SpriteSystems;
use bevy::sprite_render::extract_text2d_sprite;
use bevy::ui_render::RenderUiSystems;
use crate::text_outline_rendering::{extract_2d_text_outlines, extract_ui_text_outlines, TextOutlineMaxWidth};
pub struct SlowTextOutlinePlugin
{
pub max_width: u16,
}
impl Plugin for SlowTextOutlinePlugin
{
fn build(&self, app: &mut App)
{
let Some(render_app) = app.get_sub_app_mut(RenderApp) else {
return;
};
render_app
.insert_resource(TextOutlineMaxWidth { max_width: self.max_width })
.add_systems(
ExtractSchedule,
extract_ui_text_outlines
.after(bevy::ui_render::extract_text_shadows)
.in_set(RenderUiSystems::ExtractTextShadows),
)
.add_systems(
ExtractSchedule,
extract_2d_text_outlines
.after(SpriteSystems::ExtractSprites)
.before(extract_text2d_sprite),
);
}
}
impl Default for SlowTextOutlinePlugin
{
fn default() -> Self
{
Self { max_width: 8u16 }
}
}