rust/hwphysics/src/time.rs
changeset 15768 704f00889f3a
parent 15767 a818a87fec52
equal deleted inserted replaced
15767:a818a87fec52 15768:704f00889f3a
    76         };
    76         };
    77         self.events.push(event);
    77         self.events.push(event);
    78         event_id
    78         event_id
    79     }
    79     }
    80 
    80 
    81     pub fn cancel(&mut self, gear_id: GearId) {}
    81     fn remove_events<P>(&mut self, predicate: P)
       
    82     where
       
    83         P: Fn(&TimeEvent) -> bool,
       
    84     {
       
    85         let events = self.events.drain().filter(predicate).collect::<Vec<_>>();
       
    86         self.events.extend(events);
       
    87     }
       
    88 
       
    89     pub fn cancel(&mut self, event_id: EventId) {
       
    90         //self.events.retain(|event| event.event_id != event_id)
       
    91         self.remove_events(|event| event.event_id != event_id)
       
    92     }
       
    93 
       
    94     pub fn cancel_all(&mut self, gear_id: GearId) {
       
    95         //self.events.retain(|event| event.gear_id != gear_id)
       
    96         self.remove_events(|event| event.gear_id != gear_id)
       
    97     }
    82 
    98 
    83     pub fn process(&mut self, time_step: Millis) -> &OccurredEvents {
    99     pub fn process(&mut self, time_step: Millis) -> &OccurredEvents {
    84         self.timeouts.clear();
   100         self.timeouts.clear();
    85         self.current_time = self.current_time + time_step;
   101         self.current_time = self.current_time + time_step;
    86         while self
   102         while self