hai_core 0.7.0

Core implementation of Hai game engine, and general 2D rendering library using WebGPU as well.
Documentation
use std::sync::Arc;

use wgpu::util::StagingBelt;
use wgpu::{BindGroupLayout, CommandEncoder, Device, Queue, RenderPass, RenderPipeline};

use super::{Node, RendererUpdatePayload};

pub trait Renderer
where
    Self: Send + Sync,
{
    fn name(&self) -> &'static str;
    fn render_pipeline(&self) -> &RenderPipeline;
    fn bind_group_layout(&self) -> &BindGroupLayout;

    fn begin(&self) {}
    fn finish(&self) {}

    fn update(
        &mut self,
        node: &mut dyn Node,
        device: &Arc<Device>,
        queue: &Arc<Queue>,
        encoder: &mut CommandEncoder,
        staging_belt: &mut StagingBelt,
        payload: &RendererUpdatePayload,
    );
    fn render<'a, 'b: 'a>(
        &'b self,
        device: &Arc<Device>,
        queue: &Arc<Queue>,
        render_pass: &mut RenderPass<'a>,
        node: &'b dyn Node,
    );
}