idk if dropinstruction is gonan work

This commit is contained in:
Quaternions 2025-01-09 21:14:15 -08:00
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
}
}