mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 10:14:06 +02:00
baseline improvements
This commit is contained in:
parent
ec57a76101
commit
fa449c3017
2 changed files with 11 additions and 20 deletions
|
|
@ -35,7 +35,7 @@ pub struct ParserState {
|
||||||
pub entity_classes: HashMap<EntityId, ClassId, NullHasherBuilder>,
|
pub entity_classes: HashMap<EntityId, ClassId, NullHasherBuilder>,
|
||||||
pub send_tables: Vec<SendTable>, // indexed by ClassId
|
pub send_tables: Vec<SendTable>, // indexed by ClassId
|
||||||
pub server_classes: Vec<ServerClass>,
|
pub server_classes: Vec<ServerClass>,
|
||||||
pub instance_baselines: [HashMap<EntityId, (Vec<SendProp>, ClassId), NullHasherBuilder>; 2],
|
pub instance_baselines: [HashMap<EntityId, PacketEntity, NullHasherBuilder>; 2],
|
||||||
pub demo_meta: DemoMeta,
|
pub demo_meta: DemoMeta,
|
||||||
analyser_handles: fn(message_type: MessageType) -> bool,
|
analyser_handles: fn(message_type: MessageType) -> bool,
|
||||||
handle_entities: bool,
|
handle_entities: bool,
|
||||||
|
|
@ -119,8 +119,8 @@ impl<'a> ParserState {
|
||||||
is_delta: bool,
|
is_delta: bool,
|
||||||
) -> Result<Vec<SendProp>> {
|
) -> Result<Vec<SendProp>> {
|
||||||
match self.instance_baselines[baseline_index].get(&entity_index) {
|
match self.instance_baselines[baseline_index].get(&entity_index) {
|
||||||
Some((baseline, baseline_class)) if baseline_class == &class_id && is_delta => {
|
Some(baseline) if baseline.server_class == class_id && is_delta => {
|
||||||
Ok(baseline.clone())
|
Ok(baseline.props.clone())
|
||||||
}
|
}
|
||||||
_ => match self.static_baselines.get(&class_id) {
|
_ => match self.static_baselines.get(&class_id) {
|
||||||
Some(_static_baseline) => self.get_static_baseline(class_id, send_table),
|
Some(_static_baseline) => self.get_static_baseline(class_id, send_table),
|
||||||
|
|
@ -228,27 +228,18 @@ impl<'a> ParserState {
|
||||||
let updated_baseline = match self.instance_baselines[old_index]
|
let updated_baseline = match self.instance_baselines[old_index]
|
||||||
.get(&entity.entity_index)
|
.get(&entity.entity_index)
|
||||||
{
|
{
|
||||||
Some((baseline_props, baseline_class))
|
Some(baseline_entity)
|
||||||
if *baseline_class == entity.server_class
|
if baseline_entity.server_class == entity.server_class
|
||||||
&& ent_message.delta.is_some() =>
|
&& ent_message.delta.is_some() =>
|
||||||
{
|
{
|
||||||
let mut entity = PacketEntity {
|
let mut updated_baseline = baseline_entity.clone();
|
||||||
server_class: entity.server_class,
|
updated_baseline.apply_update(&entity.props);
|
||||||
entity_index: entity.entity_index,
|
updated_baseline
|
||||||
baseline_props: vec![],
|
|
||||||
props: vec![],
|
|
||||||
in_pvs: false,
|
|
||||||
update_type: UpdateType::Preserve,
|
|
||||||
serial_number: 0,
|
|
||||||
delay: None,
|
|
||||||
};
|
|
||||||
entity.apply_update(baseline_props);
|
|
||||||
(entity.props, entity.server_class)
|
|
||||||
}
|
}
|
||||||
_ => (entity.props, entity.server_class),
|
_ => entity,
|
||||||
};
|
};
|
||||||
self.instance_baselines[new_index]
|
self.instance_baselines[new_index]
|
||||||
.insert(entity.entity_index, updated_baseline);
|
.insert(updated_baseline.entity_index, updated_baseline);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
"team": "red",
|
"team": "red",
|
||||||
"view_angle": 355.0733,
|
"view_angle": 355.0733,
|
||||||
"pitch_angle": 12.352943,
|
"pitch_angle": 12.352943,
|
||||||
"state": "Death",
|
"state": "Alive",
|
||||||
"info": {
|
"info": {
|
||||||
"classes": {},
|
"classes": {},
|
||||||
"name": "Boog",
|
"name": "Boog",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue