forked from StrafesNET/strafe-client
sniffa
This commit is contained in:
parent
c86824bdc1
commit
041fed841f
@ -7,6 +7,7 @@ mod worker;
|
|||||||
mod zeroes;
|
mod zeroes;
|
||||||
mod integer;
|
mod integer;
|
||||||
mod physics;
|
mod physics;
|
||||||
|
mod sniffer;
|
||||||
mod graphics;
|
mod graphics;
|
||||||
mod settings;
|
mod settings;
|
||||||
mod primitives;
|
mod primitives;
|
||||||
|
82
src/sniffer.rs
Normal file
82
src/sniffer.rs
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
//file format "sniff"
|
||||||
|
|
||||||
|
/* spec
|
||||||
|
|
||||||
|
//begin global header
|
||||||
|
|
||||||
|
//global metadata (32 bytes)
|
||||||
|
b"SNFB"
|
||||||
|
u32 format_version
|
||||||
|
u64 priming_bytes
|
||||||
|
//how many bytes of the file must be read to guarantee all of the expected
|
||||||
|
//format-specific metadata is available to facilitate streaming the remaining contents
|
||||||
|
//used by the database to guarantee that it serves at least the bare minimum
|
||||||
|
u128 resource_uuid
|
||||||
|
//identifies the file from anywhere for any other file
|
||||||
|
|
||||||
|
//global block layout (variable size)
|
||||||
|
u64 num_blocks
|
||||||
|
for block_id in 0..num_blocks{
|
||||||
|
u64 first_byte
|
||||||
|
}
|
||||||
|
|
||||||
|
//end global header
|
||||||
|
|
||||||
|
//begin blocks
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* block types
|
||||||
|
BLOCK_MAP_HEADER:
|
||||||
|
StyleInfoOverrides style_info_overrides
|
||||||
|
//bvh goes here
|
||||||
|
u64 num_nodes
|
||||||
|
//node 0 parent node is implied to be None
|
||||||
|
for node_id in 1..num_nodes{
|
||||||
|
u64 parent_node
|
||||||
|
}
|
||||||
|
//block 0 is the current block, not part of the map data
|
||||||
|
u64 num_spacial_blocks
|
||||||
|
for block_id in 1..num_spacial_blocks{
|
||||||
|
u64 node_id
|
||||||
|
u64 block_id
|
||||||
|
Aabb block_extents
|
||||||
|
}
|
||||||
|
//ideally spacial blocks are sorted from distance to start zone
|
||||||
|
//texture blocks are inserted before the first spacial block they are used in
|
||||||
|
|
||||||
|
BLOCK_MAP_RESOURCE:
|
||||||
|
//an individual one of the following:
|
||||||
|
- model (IndexedModel)
|
||||||
|
- image (JpegXL)
|
||||||
|
- sound (Opus)
|
||||||
|
- video (AV1)
|
||||||
|
- animation (Trey thing)
|
||||||
|
|
||||||
|
BLOCK_MAP_OBJECT:
|
||||||
|
//an individual one of the following:
|
||||||
|
- model instance
|
||||||
|
- located resource
|
||||||
|
//for a list of resources, parse the object.
|
||||||
|
|
||||||
|
BLOCK_BOT_HEADER:
|
||||||
|
u128 map_resource_uuid //which map is this bot running
|
||||||
|
u128 time_resource_uuid //resource database time
|
||||||
|
//don't include style info in bot header because it's in the physics state
|
||||||
|
//blocks are not necessarily laid out in chronological order.
|
||||||
|
//the timestamps should be sorted, keeping track of which block_id it refers to
|
||||||
|
for block_id in 1..num_blocks{ //note that the header block id is skipped
|
||||||
|
i64 time //physics_state timestamp
|
||||||
|
}
|
||||||
|
|
||||||
|
BLOCK_BOT_SEGMENT:
|
||||||
|
//format version indicates what version of these structures to use
|
||||||
|
PhysicsState physics_state
|
||||||
|
//to read, greedily decode instructions until eof
|
||||||
|
loop{
|
||||||
|
TimedInstruction<PhysicsInstruction> instruction
|
||||||
|
}
|
||||||
|
|
||||||
|
BLOCK_DEMO_HEADER:
|
||||||
|
//timeline of loading maps, player equipment, bots
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user