aboutsummaryrefslogtreecommitdiff
path: root/stockton-levels/src/q3/models.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stockton-levels/src/q3/models.rs')
-rw-r--r--stockton-levels/src/q3/models.rs65
1 files changed, 0 insertions, 65 deletions
diff --git a/stockton-levels/src/q3/models.rs b/stockton-levels/src/q3/models.rs
deleted file mode 100644
index a3de54a..0000000
--- a/stockton-levels/src/q3/models.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-use super::Q3BspFile;
-use crate::coords::CoordSystem;
-use crate::helpers::{slice_to_u32, slice_to_vec3};
-use crate::traits::models::*;
-use crate::types::{ParseError, Result};
-
-const MODEL_SIZE: usize = (4 * 3 * 2) + (4 * 4);
-
-pub fn from_data(data: &[u8], n_faces: u32, n_brushes: u32) -> Result<Box<[Model]>> {
- if data.len() % MODEL_SIZE != 0 {
- return Err(ParseError::Invalid);
- }
- let n_models = data.len() / MODEL_SIZE;
-
- let mut models = Vec::with_capacity(n_models);
- for n in 0..n_models {
- let raw = &data[n * MODEL_SIZE..(n + 1) * MODEL_SIZE];
-
- let mins = slice_to_vec3(&raw[0..12]);
- let maxs = slice_to_vec3(&raw[12..24]);
-
- let faces_idx = {
- let start = slice_to_u32(&raw[24..28]);
- let n = slice_to_u32(&raw[28..32]);
-
- if start + n > n_faces {
- return Err(ParseError::Invalid);
- }
-
- start..start + n
- };
-
- let brushes_idx = {
- let start = slice_to_u32(&raw[32..36]);
- let n = slice_to_u32(&raw[36..40]);
-
- if start + n > n_brushes {
- return Err(ParseError::Invalid);
- }
-
- start..start + n
- };
-
- models.push(Model {
- mins,
- maxs,
- faces_idx,
- brushes_idx,
- })
- }
-
- Ok(models.into_boxed_slice())
-}
-
-impl<T: CoordSystem> HasModels<T> for Q3BspFile<T> {
- type ModelsIter<'a> = std::slice::Iter<'a, Model>;
-
- fn models_iter(&self) -> Self::ModelsIter<'_> {
- self.models.iter()
- }
-
- fn get_model(&self, index: u32) -> &Model {
- &self.models[index as usize]
- }
-}