2022-01-25 19:17:21 +00:00
|
|
|
use super::SceneData;
|
2022-01-25 20:49:06 +00:00
|
|
|
use crate::render::{DynamicModel, Renderer, TrailDrawer, TrailVertex};
|
|
|
|
use common::uid::Uid;
|
2022-01-25 17:34:33 +00:00
|
|
|
use common_base::span;
|
2022-01-25 20:49:06 +00:00
|
|
|
use std::collections::HashMap;
|
2022-01-25 17:34:33 +00:00
|
|
|
|
|
|
|
pub struct TrailMgr {
|
2022-01-25 19:17:21 +00:00
|
|
|
/// GPU vertex buffers
|
2022-01-25 20:49:06 +00:00
|
|
|
dynamic_models: HashMap<Uid, DynamicModel<TrailVertex>>,
|
2022-01-25 17:34:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
impl TrailMgr {
|
2022-01-25 20:49:06 +00:00
|
|
|
pub fn new(_renderer: &mut Renderer) -> Self {
|
2022-01-25 17:34:33 +00:00
|
|
|
Self {
|
2022-01-25 20:49:06 +00:00
|
|
|
dynamic_models: HashMap::new(),
|
2022-01-25 17:34:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-25 20:49:06 +00:00
|
|
|
pub fn maintain(&mut self, _renderer: &mut Renderer, _scene_data: &SceneData) {
|
2022-01-25 17:34:33 +00:00
|
|
|
span!(_guard, "maintain", "TrailMgr::maintain");
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn render<'a>(&'a self, drawer: &mut TrailDrawer<'_, 'a>, scene_data: &SceneData) {
|
|
|
|
span!(_guard, "render", "TrailMgr::render");
|
|
|
|
if scene_data.trails_enabled {
|
2022-01-25 20:49:06 +00:00
|
|
|
for dynamic_model in self.dynamic_models.values() {
|
|
|
|
drawer.draw(dynamic_model);
|
|
|
|
}
|
2022-01-25 17:34:33 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|