idk if dropinstruction is gonan work
This commit is contained in:
parent
89446a933a
commit
b02c1bc7b4
@ -1,11 +1,15 @@
|
||||
use strafesnet_common::mouse::MouseState;
|
||||
use strafesnet_common::physics::{Instruction as PhysicsInputInstruction,Time as PhysicsTime,TimeInner as PhysicsTimeInner};
|
||||
use strafesnet_common::session::{Time as SessionTime,TimeInner as SessionTimeInner};
|
||||
use strafesnet_common::instruction::{self,TimedInstruction};
|
||||
use strafesnet_common::instruction::{self,InstructionConsumer,InstructionEmitter,TimedInstruction};
|
||||
|
||||
type TimedPhysicsInstruction=TimedInstruction<PhysicsInputInstruction,PhysicsTimeInner>;
|
||||
type TimedInterpolatorInstruction=TimedInstruction<Instruction,SessionTimeInner>;
|
||||
|
||||
pub struct DropInstruction<'a>{
|
||||
instruction:&'a TimedPhysicsInstruction,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum InputInstruction{
|
||||
MoveMouse(glam::IVec2),
|
||||
@ -30,25 +34,41 @@ pub enum Instruction{
|
||||
}
|
||||
|
||||
pub struct MouseInterpolator{
|
||||
timeline:std::collections::VecDeque<>,
|
||||
session_timeline:std::collections::VecDeque<TimedInterpolatorInstruction>,
|
||||
physics_timeline:std::collections::VecDeque<TimedPhysicsInstruction>,
|
||||
}
|
||||
impl instruction::InstructionConsumer for MouseInterpolator{
|
||||
type Instruction=Instruction;
|
||||
impl InstructionConsumer<Instruction> for MouseInterpolator{
|
||||
type TimeInner=SessionTimeInner;
|
||||
fn process_instruction(&mut self,ins:TimedInterpolatorInstruction){
|
||||
self.process_instruction(ins)
|
||||
self.push_input(ins)
|
||||
}
|
||||
}
|
||||
impl<'a> InstructionConsumer<DropInstruction<'a>> for MouseInterpolator{
|
||||
type TimeInner=SessionTimeInner;
|
||||
fn process_instruction(&mut self,ins:TimedInstruction<DropInstruction<'a>,SessionTimeInner>){
|
||||
self.drop_output(ins)
|
||||
}
|
||||
}
|
||||
impl<'a> InstructionEmitter<DropInstruction<'a>> for MouseInterpolator{
|
||||
type TimeInner=SessionTimeInner;
|
||||
fn next_instruction(&'a self,time_limit:SessionTime)->Option<TimedInstruction<DropInstruction<'a>,Self::TimeInner>>{
|
||||
self.next_output(time_limit)
|
||||
}
|
||||
}
|
||||
impl MouseInterpolator{
|
||||
pub fn new()->MouseInterpolator{
|
||||
MouseInterpolator{
|
||||
timeline:std::collections::VecDeque::new(),
|
||||
session_timeline:std::collections::VecDeque::new(),
|
||||
physics_timeline:std::collections::VecDeque::new(),
|
||||
}
|
||||
}
|
||||
pub fn process_instruction(&mut self,ins:TimedInterpolatorInstruction){
|
||||
pub fn push_input(&mut self,ins:TimedInterpolatorInstruction){
|
||||
// new input
|
||||
}
|
||||
pub fn pop_next_instruction(&mut self)->Option<TimedPhysicsInstruction>{
|
||||
// read state and potentially do work to determine the next instruction
|
||||
pub fn drop_output<'a>(&mut self,ins:TimedInstruction<DropInstruction<'a>,SessionTimeInner>){
|
||||
//
|
||||
}
|
||||
pub fn next_output(&self,time_limit:SessionTime)->Option<TimedInstruction<DropInstruction<'_>,SessionTimeInner>>{
|
||||
None
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user