use bevy::prelude::*;
use bevy::reflect::TypePath;
use bevy::render::render_resource::AsBindGroup;
use bevy::shader::ShaderRef;
use bevy::sprite_render::{AlphaMode2d, Material2d};
#[derive(Asset, TypePath, AsBindGroup, Debug, Clone)]
pub struct CustomSpriteMaterial {
#[uniform(0)]
pub color_params: LinearRgba,
#[texture(1)]
#[sampler(2)]
pub texture: Handle<Image>,
}
impl Material2d for CustomSpriteMaterial {
fn fragment_shader() -> ShaderRef {
"shared/shaders/hp_bar_sprite.wgsl".into()
}
fn alpha_mode(&self) -> AlphaMode2d {
AlphaMode2d::Blend
}
}
#[derive(Asset, TypePath, AsBindGroup, Debug, Clone)]
pub struct PixelOutlineMaterial {
#[uniform(0)]
pub params: LinearRgba,
#[uniform(1)]
pub uv_rect: Vec4,
#[uniform(2)]
pub flip: Vec4,
#[texture(3)]
#[sampler(4)]
pub texture: Handle<Image>,
}
impl Material2d for PixelOutlineMaterial {
fn fragment_shader() -> ShaderRef {
"shared/shaders/pixel_outline.wgsl".into()
}
fn alpha_mode(&self) -> AlphaMode2d {
AlphaMode2d::Blend
}
}