shipyard 0.11.2

Entity Component System
Documentation
use crate::iter::ShiperatorCaptain;
use crate::tracking::{Inserted, InsertedOrModified, Modified};

const TRACKING_FACTOR: f32 = 2.0;

macro_rules! impl_shiperator_captain_tracking {
    ($($type: ident)+) => {$(
        impl<'tmp, T: ShiperatorCaptain> ShiperatorCaptain for $type<T> {
            #[inline]
            unsafe fn get_captain_data(&self, _index: usize) -> Self::Out {
                unreachable!()
            }

            #[inline]
            fn next_slice(&mut self) {}

            #[inline]
            #[allow(clippy::cast_precision_loss)]
            fn sail_time(&self) -> usize {
                (self.0.sail_time() as f32 * TRACKING_FACTOR) as usize
            }

            #[inline]
            fn is_exact_sized(&self) -> bool {
                false
            }

            #[inline]
            fn unpick(&mut self) {
                self.0.unpick();
            }
        }
    )+};
}

impl_shiperator_captain_tracking![Inserted Modified InsertedOrModified];