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::mouse::MouseState;
|
||||||
use strafesnet_common::physics::{Instruction as PhysicsInputInstruction,Time as PhysicsTime,TimeInner as PhysicsTimeInner};
|
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::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 TimedPhysicsInstruction=TimedInstruction<PhysicsInputInstruction,PhysicsTimeInner>;
|
||||||
type TimedInterpolatorInstruction=TimedInstruction<Instruction,SessionTimeInner>;
|
type TimedInterpolatorInstruction=TimedInstruction<Instruction,SessionTimeInner>;
|
||||||
|
|
||||||
|
pub struct DropInstruction<'a>{
|
||||||
|
instruction:&'a TimedPhysicsInstruction,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum InputInstruction{
|
pub enum InputInstruction{
|
||||||
MoveMouse(glam::IVec2),
|
MoveMouse(glam::IVec2),
|
||||||
@ -30,25 +34,41 @@ pub enum Instruction{
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub struct MouseInterpolator{
|
pub struct MouseInterpolator{
|
||||||
timeline:std::collections::VecDeque<>,
|
session_timeline:std::collections::VecDeque<TimedInterpolatorInstruction>,
|
||||||
|
physics_timeline:std::collections::VecDeque<TimedPhysicsInstruction>,
|
||||||
}
|
}
|
||||||
impl instruction::InstructionConsumer for MouseInterpolator{
|
impl InstructionConsumer<Instruction> for MouseInterpolator{
|
||||||
type Instruction=Instruction;
|
|
||||||
type TimeInner=SessionTimeInner;
|
type TimeInner=SessionTimeInner;
|
||||||
fn process_instruction(&mut self,ins:TimedInterpolatorInstruction){
|
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{
|
impl MouseInterpolator{
|
||||||
pub fn new()->MouseInterpolator{
|
pub fn new()->MouseInterpolator{
|
||||||
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
|
// new input
|
||||||
}
|
}
|
||||||
pub fn pop_next_instruction(&mut self)->Option<TimedPhysicsInstruction>{
|
pub fn drop_output<'a>(&mut self,ins:TimedInstruction<DropInstruction<'a>,SessionTimeInner>){
|
||||||
// read state and potentially do work to determine the next instruction
|
//
|
||||||
|
}
|
||||||
|
pub fn next_output(&self,time_limit:SessionTime)->Option<TimedInstruction<DropInstruction<'_>,SessionTimeInner>>{
|
||||||
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user