Streamables

This commit is contained in:
Quaternions 2024-01-18 15:33:22 -08:00
parent ec60086109
commit b2673f1732
4 changed files with 62 additions and 13 deletions

View File

@ -1,5 +1,5 @@
pub enum Error{ pub enum Error{
InvalidSegment,
} }
/* block types /* block types
@ -28,6 +28,23 @@ loop{
*/ */
pub struct Bot{ struct SegmentId(u64);
//
pub struct Segment{
state:simulation::State,
instructions:Vec<instruction::TimedInstruction<simulation::Instruction>>
}
pub struct StreamableBot{
file:crate::file::File,
timeline:timeline::Timeline<SegmentId>,
}
impl StreamableBot{
pub fn load_segment(&mut self,segment_id:u64)->Result<Segment,Error>{
//load region from disk
//parse the models and determine what resources need to be loaded
//load resources into self.resources
//return Region
Err(Error::InvalidSegment)
}
} }

View File

@ -1,13 +1,23 @@
pub enum Error{ pub enum Error{
//
} }
/* /*
BLOCK_DEMO_HEADER: BLOCK_DEMO_HEADER:
//timeline of loading maps, bots u128 map_resource_id
u64 map_header_block_id
u32 num_bots
for bot_id in 0..num_bots{
u128 bot_resource_id
u64 bot_header_block_id
}
//bot loading timeline
how to do worldstate for deathrun!?
*/ */
pub struct Demo{ pub struct StreamableDemo{
map:Box<crate::map::Map>, map:Box<crate::map::StreamableMap>,
bots:Vec<crate::bot::Bot>, bots:Vec<crate::bot::StreamableBot>,
} }

View File

@ -13,9 +13,9 @@ pub enum Error{
} }
pub enum SNF{ pub enum SNF{
Map(map::Map), Map(map::StreamableMap),
Bot(bot::Bot), Bot(bot::StreamableBot),
Demo(demo::Demo), Demo(demo::StreamableDemo),
} }
pub fn read<R:Read>(input:R)->Result<SNF,Error>{ pub fn read<R:Read>(input:R)->Result<SNF,Error>{

View File

@ -1,5 +1,5 @@
pub enum Error{ pub enum Error{
InvalidNode,
} }
/* block types /* block types
@ -46,6 +46,28 @@ for model_id in 0..num_models{
*/ */
pub struct Map{ struct Uuid(u128);
struct BvhNodeId(u64);
struct BvhNode{
// //
} }
enum Resource{
IndexedModel(model::IndexedModel),
Image(image::Image),//?
}
pub struct StreamableMap{
file:crate::file::File,
style:physics::StyleModifiers,//probably should move this out of physics
bvh:BvhNode,
resources:std::collections::HashMap<Uuid,Resource>,
}
impl StreamableMap{
pub fn load_node(&mut self,node_id:BvhNodeId)->Result<Vec<model::ModelInstance>,Error>{
//load region from disk
//parse the models and determine what resources need to be loaded
//load resources into self.resources
//return Region
Err(Error::InvalidNode)
}
}