mirror of
https://github.com/FyroxEngine/Fyrox.git
synced 2026-10-12 02:02:20 +00:00
save triangle buffer as a binary blob
- saves a lot of space by removing redundant data
This commit is contained in:
@@ -35,6 +35,7 @@ use crate::{
|
||||
use bytemuck::Pod;
|
||||
use fxhash::FxHasher;
|
||||
use fyrox_core::visitor::pod::PodVecView;
|
||||
use fyrox_core::visitor::BinaryBlob;
|
||||
use std::{
|
||||
alloc::Layout,
|
||||
fmt::{Display, Formatter},
|
||||
@@ -1462,12 +1463,23 @@ impl VertexWriteTrait for VertexViewMut<'_> {
|
||||
}
|
||||
|
||||
/// A buffer for data that defines connections between vertices.
|
||||
#[derive(Reflect, Visit, Default, Clone, Debug)]
|
||||
#[derive(Reflect, Default, Clone, Debug)]
|
||||
pub struct TriangleBuffer {
|
||||
triangles: Vec<TriangleDefinition>,
|
||||
modifications_counter: u64,
|
||||
}
|
||||
|
||||
impl Visit for TriangleBuffer {
|
||||
fn visit(&mut self, name: &str, visitor: &mut Visitor) -> VisitResult {
|
||||
let mut guard = visitor.enter_region(name)?;
|
||||
BinaryBlob {
|
||||
vec: &mut self.triangles,
|
||||
}
|
||||
.visit("Data", &mut guard)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn calculate_triangle_buffer_hash(triangles: &[TriangleDefinition]) -> u64 {
|
||||
let mut hasher = FxHasher::default();
|
||||
triangles.hash(&mut hasher);
|
||||
|
||||
Reference in New Issue
Block a user