Update tests and some more
This commit is contained in:
122
src/parser.rs
122
src/parser.rs
@@ -9,6 +9,8 @@ mod propcontroller;
|
|||||||
mod sendtables;
|
mod sendtables;
|
||||||
mod variant;
|
mod variant;
|
||||||
|
|
||||||
|
pub use entities::EntityFilter;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum FirstPassError {
|
pub enum FirstPassError {
|
||||||
DecompressFrame,
|
DecompressFrame,
|
||||||
@@ -76,7 +78,7 @@ pub struct Class {
|
|||||||
serializer: sendtables::Serializer,
|
serializer: sendtables::Serializer,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse<'b, FI>(frames: FI) -> Result<FirstPassOutput, FirstPassError>
|
pub fn parse<'b, FI>(frames: FI, filter: EntityFilter) -> Result<FirstPassOutput, FirstPassError>
|
||||||
where
|
where
|
||||||
FI: IntoIterator<Item = Frame<'b>>,
|
FI: IntoIterator<Item = Frame<'b>>,
|
||||||
{
|
{
|
||||||
@@ -91,6 +93,7 @@ where
|
|||||||
let mut entity_ctx = entities::EntityContext {
|
let mut entity_ctx = entities::EntityContext {
|
||||||
entities: std::collections::HashMap::new(),
|
entities: std::collections::HashMap::new(),
|
||||||
cls_to_class: std::collections::HashMap::new(),
|
cls_to_class: std::collections::HashMap::new(),
|
||||||
|
filter,
|
||||||
};
|
};
|
||||||
let mut paths = Paths::new();
|
let mut paths = Paths::new();
|
||||||
let mut qf_mapper = decoder::QfMapper {
|
let mut qf_mapper = decoder::QfMapper {
|
||||||
@@ -130,7 +133,7 @@ where
|
|||||||
&mut qf_mapper,
|
&mut qf_mapper,
|
||||||
&mut baselines,
|
&mut baselines,
|
||||||
&prop_controller,
|
&prop_controller,
|
||||||
&mut entity_states
|
&mut entity_states,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
DemoCommand::FullPacket => {
|
DemoCommand::FullPacket => {
|
||||||
@@ -144,7 +147,7 @@ where
|
|||||||
&mut qf_mapper,
|
&mut qf_mapper,
|
||||||
&mut baselines,
|
&mut baselines,
|
||||||
&prop_controller,
|
&prop_controller,
|
||||||
&mut entity_states
|
&mut entity_states,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
// TODO
|
// TODO
|
||||||
@@ -231,7 +234,7 @@ fn parse_fullpacket(
|
|||||||
qf_mapper: &mut decoder::QfMapper,
|
qf_mapper: &mut decoder::QfMapper,
|
||||||
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
||||||
prop_controller: &propcontroller::PropController,
|
prop_controller: &propcontroller::PropController,
|
||||||
entity_states: &mut Vec<entities::EntityState>
|
entity_states: &mut Vec<entities::EntityState>,
|
||||||
) -> Result<(), FirstPassError> {
|
) -> Result<(), FirstPassError> {
|
||||||
let raw: crate::csgo_proto::CDemoFullPacket = prost::Message::decode(data)?;
|
let raw: crate::csgo_proto::CDemoFullPacket = prost::Message::decode(data)?;
|
||||||
|
|
||||||
@@ -253,7 +256,7 @@ fn parse_fullpacket(
|
|||||||
qf_mapper,
|
qf_mapper,
|
||||||
baselines,
|
baselines,
|
||||||
prop_controller,
|
prop_controller,
|
||||||
entity_states
|
entity_states,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -272,7 +275,7 @@ fn parse_packet(
|
|||||||
qf_mapper: &mut decoder::QfMapper,
|
qf_mapper: &mut decoder::QfMapper,
|
||||||
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
||||||
prop_controller: &propcontroller::PropController,
|
prop_controller: &propcontroller::PropController,
|
||||||
entity_states: &mut Vec<entities::EntityState>
|
entity_states: &mut Vec<entities::EntityState>,
|
||||||
) -> Result<(), FirstPassError> {
|
) -> Result<(), FirstPassError> {
|
||||||
let raw: crate::csgo_proto::CDemoPacket = prost::Message::decode(data)?;
|
let raw: crate::csgo_proto::CDemoPacket = prost::Message::decode(data)?;
|
||||||
|
|
||||||
@@ -286,7 +289,7 @@ fn parse_packet(
|
|||||||
qf_mapper,
|
qf_mapper,
|
||||||
baselines,
|
baselines,
|
||||||
prop_controller,
|
prop_controller,
|
||||||
entity_states
|
entity_states,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -302,7 +305,7 @@ fn inner_parse_packet(
|
|||||||
qf_mapper: &mut decoder::QfMapper,
|
qf_mapper: &mut decoder::QfMapper,
|
||||||
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
baselines: &mut std::collections::HashMap<u32, Vec<u8>>,
|
||||||
prop_controller: &propcontroller::PropController,
|
prop_controller: &propcontroller::PropController,
|
||||||
entity_states: &mut Vec<entities::EntityState>
|
entity_states: &mut Vec<entities::EntityState>,
|
||||||
) -> Result<(), FirstPassError> {
|
) -> Result<(), FirstPassError> {
|
||||||
let mut bitreader = crate::bitreader::Bitreader::new(raw.data());
|
let mut bitreader = crate::bitreader::Bitreader::new(raw.data());
|
||||||
|
|
||||||
@@ -360,61 +363,67 @@ fn inner_parse_packet(
|
|||||||
let raw: crate::csgo_proto::CsvcMsgPacketEntities =
|
let raw: crate::csgo_proto::CsvcMsgPacketEntities =
|
||||||
prost::Message::decode(msg_bytes.as_slice())?;
|
prost::Message::decode(msg_bytes.as_slice())?;
|
||||||
|
|
||||||
let mut bitreader = crate::bitreader::Bitreader::new(raw.entity_data());
|
if entity_ctx.filter.enabled {
|
||||||
let mut entity_id: i32 = -1;
|
let mut bitreader = crate::bitreader::Bitreader::new(raw.entity_data());
|
||||||
for _ in 0..raw.updated_entries() {
|
let mut entity_id: i32 = -1;
|
||||||
entity_id += 1 + (bitreader.read_u_bit_var()? as i32);
|
for _ in 0..raw.updated_entries() {
|
||||||
|
entity_id += 1 + (bitreader.read_u_bit_var()? as i32);
|
||||||
|
|
||||||
match bitreader.read_nbits(2)? {
|
match bitreader.read_nbits(2)? {
|
||||||
0b01 | 0b11 => {
|
0b01 | 0b11 => {
|
||||||
entity_ctx.entities.remove(&entity_id);
|
entity_ctx.entities.remove(&entity_id);
|
||||||
}
|
}
|
||||||
0b10 => {
|
0b10 => {
|
||||||
let cls = entity_ctx.create_entity(entity_id, &mut bitreader)?;
|
let cls = entity_ctx.create_entity(entity_id, &mut bitreader)?;
|
||||||
|
|
||||||
|
if let Some(baseline_bytes) = baselines.get(&cls) {
|
||||||
|
let mut br = crate::bitreader::Bitreader::new(&baseline_bytes);
|
||||||
|
let state = update_entity(
|
||||||
|
entity_id,
|
||||||
|
&mut br,
|
||||||
|
entity_ctx,
|
||||||
|
paths,
|
||||||
|
qf_mapper,
|
||||||
|
prop_controller,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(baseline_bytes) = baselines.get(&cls) {
|
|
||||||
let mut br = crate::bitreader::Bitreader::new(&baseline_bytes);
|
|
||||||
let state = update_entity(
|
let state = update_entity(
|
||||||
entity_id,
|
entity_id,
|
||||||
&mut br,
|
&mut bitreader,
|
||||||
entity_ctx,
|
entity_ctx,
|
||||||
paths,
|
paths,
|
||||||
qf_mapper,
|
qf_mapper,
|
||||||
prop_controller,
|
prop_controller,
|
||||||
)?;
|
)?;
|
||||||
}
|
if let Some(state) = state {
|
||||||
|
entity_states.push(state);
|
||||||
let state = update_entity(
|
|
||||||
entity_id,
|
|
||||||
&mut bitreader,
|
|
||||||
entity_ctx,
|
|
||||||
paths,
|
|
||||||
qf_mapper,
|
|
||||||
prop_controller,
|
|
||||||
)?;
|
|
||||||
entity_states.push(state);
|
|
||||||
}
|
|
||||||
0b00 => {
|
|
||||||
if raw.has_pvs_vis_bits() > 0 {
|
|
||||||
if bitreader.read_nbits(2)? & 0x01 == 1 {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
0b00 => {
|
||||||
|
if raw.has_pvs_vis_bits() > 0 {
|
||||||
|
if bitreader.read_nbits(2)? & 0x01 == 1 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let state = update_entity(
|
let state = update_entity(
|
||||||
entity_id,
|
entity_id,
|
||||||
&mut bitreader,
|
&mut bitreader,
|
||||||
entity_ctx,
|
entity_ctx,
|
||||||
paths,
|
paths,
|
||||||
qf_mapper,
|
qf_mapper,
|
||||||
prop_controller,
|
prop_controller,
|
||||||
)?;
|
)?;
|
||||||
entity_states.push(state);
|
if let Some(state) = state {
|
||||||
}
|
entity_states.push(state);
|
||||||
unknown => {
|
}
|
||||||
panic!("{:?}", unknown);
|
}
|
||||||
}
|
unknown => {
|
||||||
};
|
panic!("{:?}", unknown);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
crate::netmessagetypes::NetmessageType::svc_UserCmds => {}
|
crate::netmessagetypes::NetmessageType::svc_UserCmds => {}
|
||||||
@@ -506,23 +515,26 @@ fn update_entity(
|
|||||||
paths: &mut Paths,
|
paths: &mut Paths,
|
||||||
qf_mapper: &mut decoder::QfMapper,
|
qf_mapper: &mut decoder::QfMapper,
|
||||||
prop_controller: &propcontroller::PropController,
|
prop_controller: &propcontroller::PropController,
|
||||||
) -> Result<entities::EntityState, FirstPassError> {
|
) -> Result<Option<entities::EntityState>, FirstPassError> {
|
||||||
let n_updates = fieldpath::parse_paths(bitreader, paths)?;
|
let n_updates = fieldpath::parse_paths(bitreader, paths)?;
|
||||||
let (n_updated_values, entity_state) = entity_ctx.decode_entity_update(
|
let (n_updated_values, entity_state) = match entity_ctx.decode_entity_update(
|
||||||
entity_id,
|
entity_id,
|
||||||
bitreader,
|
bitreader,
|
||||||
n_updates,
|
n_updates,
|
||||||
paths,
|
paths,
|
||||||
qf_mapper,
|
qf_mapper,
|
||||||
prop_controller,
|
prop_controller,
|
||||||
)?;
|
)? {
|
||||||
|
Some(s) => s,
|
||||||
|
None => return Ok(None),
|
||||||
|
};
|
||||||
if n_updated_values > 0 {
|
if n_updated_values > 0 {
|
||||||
// TODO
|
// TODO
|
||||||
// Gather extra information
|
// Gather extra information
|
||||||
// gather_extra_info(entity_id, prop_controller)?;
|
// gather_extra_info(entity_id, prop_controller)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(entity_state)
|
Ok(Some(entity_state))
|
||||||
}
|
}
|
||||||
|
|
||||||
static HUFFMAN_LOOKUP_TABLE: std::sync::LazyLock<Vec<(u8, u8)>> = std::sync::LazyLock::new(|| {
|
static HUFFMAN_LOOKUP_TABLE: std::sync::LazyLock<Vec<(u8, u8)>> = std::sync::LazyLock::new(|| {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ use super::{decoder, propcontroller, Class, Entity, FirstPassError, Paths};
|
|||||||
pub struct EntityContext {
|
pub struct EntityContext {
|
||||||
pub entities: std::collections::HashMap<i32, Entity>,
|
pub entities: std::collections::HashMap<i32, Entity>,
|
||||||
pub cls_to_class: std::collections::HashMap<u32, Class>,
|
pub cls_to_class: std::collections::HashMap<u32, Class>,
|
||||||
|
pub filter: EntityFilter,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@@ -19,16 +20,39 @@ pub struct EntityProp {
|
|||||||
pub value: super::variant::Variant,
|
pub value: super::variant::Variant,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct EntityFilter {
|
||||||
|
pub enabled: bool,
|
||||||
|
entity: Box<dyn FnMut(&str) -> bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EntityFilter {
|
||||||
|
pub fn all() -> Self {
|
||||||
|
Self {
|
||||||
|
enabled: true,
|
||||||
|
entity: Box::new(|_| true),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn disabled() -> Self {
|
||||||
|
Self {
|
||||||
|
enabled: false,
|
||||||
|
entity: Box::new(|_| false),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl EntityContext {
|
impl EntityContext {
|
||||||
/// Returns the `cls_id`
|
/// Returns the `cls_id`
|
||||||
pub fn create_entity(&mut self, entity_id: i32, bitreader: &mut crate::bitreader::Bitreader) -> Result<u32, super::FirstPassError> {
|
pub fn create_entity(
|
||||||
|
&mut self,
|
||||||
|
entity_id: i32,
|
||||||
|
bitreader: &mut crate::bitreader::Bitreader,
|
||||||
|
) -> Result<u32, super::FirstPassError> {
|
||||||
let cls_id: u32 = bitreader.read_nbits(8)?;
|
let cls_id: u32 = bitreader.read_nbits(8)?;
|
||||||
let _serial = bitreader.read_nbits(17)?;
|
let _serial = bitreader.read_nbits(17)?;
|
||||||
let _unknown = bitreader.read_varint()?;
|
let _unknown = bitreader.read_varint()?;
|
||||||
|
|
||||||
self.entities.insert(entity_id, Entity {
|
self.entities.insert(entity_id, Entity { cls: cls_id });
|
||||||
cls: cls_id,
|
|
||||||
});
|
|
||||||
|
|
||||||
Ok(cls_id)
|
Ok(cls_id)
|
||||||
}
|
}
|
||||||
@@ -41,7 +65,7 @@ impl EntityContext {
|
|||||||
paths: &mut Paths,
|
paths: &mut Paths,
|
||||||
qf_mapper: &mut decoder::QfMapper,
|
qf_mapper: &mut decoder::QfMapper,
|
||||||
prop_controller: &propcontroller::PropController,
|
prop_controller: &propcontroller::PropController,
|
||||||
) -> Result<(usize, EntityState), FirstPassError> {
|
) -> Result<Option<(usize, EntityState)>, FirstPassError> {
|
||||||
let entity = match self.entities.get_mut(&entity_id) {
|
let entity = match self.entities.get_mut(&entity_id) {
|
||||||
Some(e) => e,
|
Some(e) => e,
|
||||||
None => panic!("ID: {:?} - Entities: {:?}", entity_id, self.entities),
|
None => panic!("ID: {:?} - Entities: {:?}", entity_id, self.entities),
|
||||||
@@ -73,10 +97,17 @@ impl EntityContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok((n_updates, EntityState {
|
if !(self.filter.entity)(class.name.as_str()) {
|
||||||
class: class.name.clone(),
|
return Ok(None);
|
||||||
cls: entity.cls,
|
}
|
||||||
props: fields,
|
|
||||||
}))
|
Ok(Some((
|
||||||
|
n_updates,
|
||||||
|
EntityState {
|
||||||
|
class: class.name.clone(),
|
||||||
|
cls: entity.cls,
|
||||||
|
props: fields,
|
||||||
|
},
|
||||||
|
)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,51 +103,55 @@ impl FieldPath {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn do_op(&mut self, bitreader: &mut crate::bitreader::Bitreader, symbol: u8) -> Result<(), super::FirstPassError> {
|
pub fn do_op(
|
||||||
|
&mut self,
|
||||||
|
bitreader: &mut crate::bitreader::Bitreader,
|
||||||
|
symbol: u8,
|
||||||
|
) -> Result<(), super::FirstPassError> {
|
||||||
use ops::*;
|
use ops::*;
|
||||||
|
|
||||||
match symbol {
|
match symbol {
|
||||||
0 => plus_one(bitreader, self),
|
0 => plus_one(bitreader, self),
|
||||||
1 => plus_two(bitreader, self),
|
1 => plus_two(bitreader, self),
|
||||||
2 => plus_three(bitreader, self),
|
2 => plus_three(bitreader, self),
|
||||||
3 => plus_four(bitreader, self),
|
3 => plus_four(bitreader, self),
|
||||||
4 => plus_n(bitreader, self),
|
4 => plus_n(bitreader, self),
|
||||||
5 => push_one_left_delta_zero_right_zero(bitreader, self),
|
5 => push_one_left_delta_zero_right_zero(bitreader, self),
|
||||||
6 => push_one_left_delta_zero_right_non_zero(bitreader, self),
|
6 => push_one_left_delta_zero_right_non_zero(bitreader, self),
|
||||||
7 => push_one_left_delta_one_right_zero(bitreader, self),
|
7 => push_one_left_delta_one_right_zero(bitreader, self),
|
||||||
8 => push_one_left_delta_one_right_non_zero(bitreader, self),
|
8 => push_one_left_delta_one_right_non_zero(bitreader, self),
|
||||||
9 => push_one_left_delta_n_right_zero(bitreader, self),
|
9 => push_one_left_delta_n_right_zero(bitreader, self),
|
||||||
10 => push_one_left_delta_n_right_non_zero(bitreader, self),
|
10 => push_one_left_delta_n_right_non_zero(bitreader, self),
|
||||||
11 => push_one_left_delta_n_right_non_zero_pack6_bits(bitreader, self),
|
11 => push_one_left_delta_n_right_non_zero_pack6_bits(bitreader, self),
|
||||||
12 => push_one_left_delta_n_right_non_zero_pack8_bits(bitreader, self),
|
12 => push_one_left_delta_n_right_non_zero_pack8_bits(bitreader, self),
|
||||||
13 => push_two_left_delta_zero(bitreader, self),
|
13 => push_two_left_delta_zero(bitreader, self),
|
||||||
14 => push_two_pack5_left_delta_zero(bitreader, self),
|
14 => push_two_pack5_left_delta_zero(bitreader, self),
|
||||||
15 => push_three_left_delta_zero(bitreader, self),
|
15 => push_three_left_delta_zero(bitreader, self),
|
||||||
16 => push_three_pack5_left_delta_zero(bitreader, self),
|
16 => push_three_pack5_left_delta_zero(bitreader, self),
|
||||||
17 => push_two_left_delta_one(bitreader, self),
|
17 => push_two_left_delta_one(bitreader, self),
|
||||||
18 => push_two_pack5_left_delta_one(bitreader, self),
|
18 => push_two_pack5_left_delta_one(bitreader, self),
|
||||||
19 => push_three_left_delta_one(bitreader, self),
|
19 => push_three_left_delta_one(bitreader, self),
|
||||||
20 => push_three_pack5_left_delta_one(bitreader, self),
|
20 => push_three_pack5_left_delta_one(bitreader, self),
|
||||||
21 => push_two_left_delta_n(bitreader, self),
|
21 => push_two_left_delta_n(bitreader, self),
|
||||||
22 => push_two_pack5_left_delta_n(bitreader, self),
|
22 => push_two_pack5_left_delta_n(bitreader, self),
|
||||||
23 => push_three_left_delta_n(bitreader, self),
|
23 => push_three_left_delta_n(bitreader, self),
|
||||||
24 => push_three_pack5_left_delta_n(bitreader, self),
|
24 => push_three_pack5_left_delta_n(bitreader, self),
|
||||||
25 => push_n(bitreader, self),
|
25 => push_n(bitreader, self),
|
||||||
26 => push_n_and_non_topological(bitreader, self),
|
26 => push_n_and_non_topological(bitreader, self),
|
||||||
27 => pop_one_plus_one(bitreader, self),
|
27 => pop_one_plus_one(bitreader, self),
|
||||||
28 => pop_one_plus_n(bitreader, self),
|
28 => pop_one_plus_n(bitreader, self),
|
||||||
29 => pop_all_but_one_plus_one(bitreader, self),
|
29 => pop_all_but_one_plus_one(bitreader, self),
|
||||||
30 => pop_all_but_one_plus_n(bitreader, self),
|
30 => pop_all_but_one_plus_n(bitreader, self),
|
||||||
31 => pop_all_but_one_plus_n_pack3_bits(bitreader, self),
|
31 => pop_all_but_one_plus_n_pack3_bits(bitreader, self),
|
||||||
32 => pop_all_but_one_plus_n_pack6_bits(bitreader, self),
|
32 => pop_all_but_one_plus_n_pack6_bits(bitreader, self),
|
||||||
33 => pop_n_plus_one(bitreader, self),
|
33 => pop_n_plus_one(bitreader, self),
|
||||||
34 => pop_n_plus_n(bitreader, self),
|
34 => pop_n_plus_n(bitreader, self),
|
||||||
35 => pop_n_and_non_topographical(bitreader, self),
|
35 => pop_n_and_non_topographical(bitreader, self),
|
||||||
36 => non_topo_complex(bitreader, self),
|
36 => non_topo_complex(bitreader, self),
|
||||||
37 => non_topo_penultimate_plus_one(bitreader, self),
|
37 => non_topo_penultimate_plus_one(bitreader, self),
|
||||||
38 => non_topo_complex_pack4_bits(bitreader, self),
|
38 => non_topo_complex_pack4_bits(bitreader, self),
|
||||||
other => todo!("Other OP: {:?}", other),
|
other => todo!("Other OP: {:?}", other),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ impl ValueField {
|
|||||||
decoder,
|
decoder,
|
||||||
name: name.to_string(),
|
name: name.to_string(),
|
||||||
prop_id: 0,
|
prop_id: 0,
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
full_name: "None ".to_string() + name,
|
full_name: "CWorld.".to_string() + name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -597,7 +597,6 @@ mod tests {
|
|||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[ignore = "Testing"]
|
|
||||||
fn parse_ancient_example_msg() {
|
fn parse_ancient_example_msg() {
|
||||||
use decoder::Decoder::*;
|
use decoder::Decoder::*;
|
||||||
use Field::*;
|
use Field::*;
|
||||||
@@ -625,23 +624,23 @@ mod tests {
|
|||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: FloatSimulationTimeDecoder,
|
decoder: FloatSimulationTimeDecoder,
|
||||||
name: "m_flAnimTime".to_string(),
|
name: "m_flAnimTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27022,
|
||||||
full_name: "None m_flAnimTime".to_string(),
|
full_name: "CWorld.m_flAnimTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: FloatSimulationTimeDecoder,
|
decoder: FloatSimulationTimeDecoder,
|
||||||
name: "m_flSimulationTime".to_string(),
|
name: "m_flSimulationTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27023,
|
||||||
full_name: "None m_flSimulationTime".to_string(),
|
full_name: "CWorld.m_flSimulationTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_hOwnerEntity".to_string(),
|
name: "m_hOwnerEntity".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27024,
|
||||||
full_name: "None m_hOwnerEntity".to_string(),
|
full_name: "CWorld.m_hOwnerEntity".to_string(),
|
||||||
}),
|
}),
|
||||||
Pointer(PointerField {
|
Pointer(PointerField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
@@ -651,142 +650,142 @@ mod tests {
|
|||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_cellX".to_string(),
|
name: "m_cellX".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27025,
|
||||||
full_name: "None m_cellX".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_cellX".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_cellY".to_string(),
|
name: "m_cellY".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27026,
|
||||||
full_name: "None m_cellY".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_cellY".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_cellZ".to_string(),
|
name: "m_cellZ".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27027,
|
||||||
full_name: "None m_cellZ".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_cellZ".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: QuantalizedFloatDecoder(0),
|
decoder: QuantalizedFloatDecoder(0),
|
||||||
name: "m_vecX".to_string(),
|
name: "m_vecX".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27028,
|
||||||
full_name: "None m_vecX".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_vecX".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: QuantalizedFloatDecoder(1),
|
decoder: QuantalizedFloatDecoder(1),
|
||||||
name: "m_vecY".to_string(),
|
name: "m_vecY".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27029,
|
||||||
full_name: "None m_vecY".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_vecY".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: QuantalizedFloatDecoder(2),
|
decoder: QuantalizedFloatDecoder(2),
|
||||||
name: "m_vecZ".to_string(),
|
name: "m_vecZ".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27030,
|
||||||
full_name: "None m_vecZ".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_vecZ".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_hParent".to_string(),
|
name: "m_hParent".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27031,
|
||||||
full_name: "None m_hParent".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_hParent".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: QanglePresDecoder,
|
decoder: QanglePresDecoder,
|
||||||
name: "m_angRotation".to_string(),
|
name: "m_angRotation".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27032,
|
||||||
full_name: "None m_angRotation".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_angRotation".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flScale".to_string(),
|
name: "m_flScale".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27033,
|
||||||
full_name: "None m_flScale".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_flScale".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_name".to_string(),
|
name: "m_name".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27034,
|
||||||
full_name: "None m_name".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_name".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_hierarchyAttachName".to_string(),
|
name: "m_hierarchyAttachName".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27035,
|
||||||
full_name: "None m_hierarchyAttachName".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_hierarchyAttachName".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_hModel".to_string(),
|
name: "m_hModel".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27036,
|
||||||
full_name: "None m_hModel".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_hModel".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bClientClothCreationSuppressed".to_string(),
|
name: "m_bClientClothCreationSuppressed".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27037,
|
||||||
full_name: "None m_bClientClothCreationSuppressed".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_bClientClothCreationSuppressed".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_MeshGroupMask".to_string(),
|
name: "m_MeshGroupMask".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27038,
|
||||||
full_name: "None m_MeshGroupMask".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_MeshGroupMask".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_nIdealMotionType".to_string(),
|
name: "m_nIdealMotionType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27039,
|
||||||
full_name: "None m_nIdealMotionType".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_nIdealMotionType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bIsAnimationEnabled".to_string(),
|
name: "m_bIsAnimationEnabled".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27040,
|
||||||
full_name: "None m_bIsAnimationEnabled".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_bIsAnimationEnabled".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bUseParentRenderBounds".to_string(),
|
name: "m_bUseParentRenderBounds".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27041,
|
||||||
full_name: "None m_bUseParentRenderBounds".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_bUseParentRenderBounds".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_materialGroup".to_string(),
|
name: "m_materialGroup".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27042,
|
||||||
full_name: "None m_materialGroup".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_materialGroup".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nHitboxSet".to_string(),
|
name: "m_nHitboxSet".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27043,
|
||||||
full_name: "None m_nHitboxSet".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_nHitboxSet".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nOutsideWorld".to_string(),
|
name: "m_nOutsideWorld".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27044,
|
||||||
full_name: "None m_nOutsideWorld".to_string(),
|
full_name: "CWorld.CBodyComponentBaseModelEntity.m_nOutsideWorld".to_string(),
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
.to_vec(),
|
.to_vec(),
|
||||||
@@ -799,9 +798,9 @@ mod tests {
|
|||||||
fields: [Value(ValueField {
|
fields: [Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_nameStringableIndex".to_string(),
|
name: "m_nameStringableIndex".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27045,
|
||||||
full_name: "None m_nameStringableIndex".to_string(),
|
full_name: "CWorld.CEntityIdentity.m_nameStringableIndex".to_string(),
|
||||||
})]
|
})]
|
||||||
.to_vec(),
|
.to_vec(),
|
||||||
},
|
},
|
||||||
@@ -809,121 +808,121 @@ mod tests {
|
|||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bVisibleinPVS".to_string(),
|
name: "m_bVisibleinPVS".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27046,
|
||||||
full_name: "None m_bVisibleinPVS".to_string(),
|
full_name: "CWorld.m_bVisibleinPVS".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bIsPlatform".to_string(),
|
name: "m_bIsPlatform".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27047,
|
||||||
full_name: "None m_bIsPlatform".to_string(),
|
full_name: "CWorld.m_bIsPlatform".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_MoveCollide".to_string(),
|
name: "m_MoveCollide".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27048,
|
||||||
full_name: "None m_MoveCollide".to_string(),
|
full_name: "CWorld.m_MoveCollide".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_MoveType".to_string(),
|
name: "m_MoveType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27049,
|
||||||
full_name: "None m_MoveType".to_string(),
|
full_name: "CWorld.m_MoveType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nSubclassID".to_string(),
|
name: "m_nSubclassID".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27050,
|
||||||
full_name: "None m_nSubclassID".to_string(),
|
full_name: "CWorld.m_nSubclassID".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flCreateTime".to_string(),
|
name: "m_flCreateTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27051,
|
||||||
full_name: "None m_flCreateTime".to_string(),
|
full_name: "CWorld.m_flCreateTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_ubInterpolationFrame".to_string(),
|
name: "m_ubInterpolationFrame".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27052,
|
||||||
full_name: "None m_ubInterpolationFrame".to_string(),
|
full_name: "CWorld.m_ubInterpolationFrame".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_iTeamNum".to_string(),
|
name: "m_iTeamNum".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27053,
|
||||||
full_name: "None m_iTeamNum".to_string(),
|
full_name: "CWorld.m_iTeamNum".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_hEffectEntity".to_string(),
|
name: "m_hEffectEntity".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27054,
|
||||||
full_name: "None m_hEffectEntity".to_string(),
|
full_name: "CWorld.m_hEffectEntity".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_fEffects".to_string(),
|
name: "m_fEffects".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27055,
|
||||||
full_name: "None m_fEffects".to_string(),
|
full_name: "CWorld.m_fEffects".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: FloatCoordDecoder,
|
decoder: FloatCoordDecoder,
|
||||||
name: "m_flElasticity".to_string(),
|
name: "m_flElasticity".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27056,
|
||||||
full_name: "None m_flElasticity".to_string(),
|
full_name: "CWorld.m_flElasticity".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bAnimatedEveryTick".to_string(),
|
name: "m_bAnimatedEveryTick".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27057,
|
||||||
full_name: "None m_bAnimatedEveryTick".to_string(),
|
full_name: "CWorld.m_bAnimatedEveryTick".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flNavIgnoreUntilTime".to_string(),
|
name: "m_flNavIgnoreUntilTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27058,
|
||||||
full_name: "None m_flNavIgnoreUntilTime".to_string(),
|
full_name: "CWorld.m_flNavIgnoreUntilTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nBloodType".to_string(),
|
name: "m_nBloodType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27059,
|
||||||
full_name: "None m_nBloodType".to_string(),
|
full_name: "CWorld.m_nBloodType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nRenderMode".to_string(),
|
name: "m_nRenderMode".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27060,
|
||||||
full_name: "None m_nRenderMode".to_string(),
|
full_name: "CWorld.m_nRenderMode".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nRenderFX".to_string(),
|
name: "m_nRenderFX".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27061,
|
||||||
full_name: "None m_nRenderFX".to_string(),
|
full_name: "CWorld.m_nRenderFX".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_clrRender".to_string(),
|
name: "m_clrRender".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27062,
|
||||||
full_name: "None m_clrRender".to_string(),
|
full_name: "CWorld.m_clrRender".to_string(),
|
||||||
}),
|
}),
|
||||||
Vector(VectorField {
|
Vector(VectorField {
|
||||||
field_enum: Box::new(Serializer(SerializerField {
|
field_enum: Box::new(Serializer(SerializerField {
|
||||||
@@ -933,16 +932,16 @@ mod tests {
|
|||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_ID".to_string(),
|
name: "m_ID".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27065,
|
||||||
full_name: "None m_ID".to_string(),
|
full_name: "CWorld.EntityRenderAttribute_t.m_ID".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_Values".to_string(),
|
name: "m_Values".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27066,
|
||||||
full_name: "None m_Values".to_string(),
|
full_name: "CWorld.EntityRenderAttribute_t.m_Values".to_string(),
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
.to_vec(),
|
.to_vec(),
|
||||||
@@ -953,304 +952,304 @@ mod tests {
|
|||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bRenderToCubemaps".to_string(),
|
name: "m_bRenderToCubemaps".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27067,
|
||||||
full_name: "None m_bRenderToCubemaps".to_string(),
|
full_name: "CWorld.m_bRenderToCubemaps".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nInteractsAs".to_string(),
|
name: "m_nInteractsAs".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27068,
|
||||||
full_name: "None m_nInteractsAs".to_string(),
|
full_name: "CWorld.m_nInteractsAs".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nInteractsWith".to_string(),
|
name: "m_nInteractsWith".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27069,
|
||||||
full_name: "None m_nInteractsWith".to_string(),
|
full_name: "CWorld.m_nInteractsWith".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nInteractsExclude".to_string(),
|
name: "m_nInteractsExclude".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27070,
|
||||||
full_name: "None m_nInteractsExclude".to_string(),
|
full_name: "CWorld.m_nInteractsExclude".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nEntityId".to_string(),
|
name: "m_nEntityId".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27071,
|
||||||
full_name: "None m_nEntityId".to_string(),
|
full_name: "CWorld.m_nEntityId".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nOwnerId".to_string(),
|
name: "m_nOwnerId".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27072,
|
||||||
full_name: "None m_nOwnerId".to_string(),
|
full_name: "CWorld.m_nOwnerId".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nHierarchyId".to_string(),
|
name: "m_nHierarchyId".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27073,
|
||||||
full_name: "None m_nHierarchyId".to_string(),
|
full_name: "CWorld.m_nHierarchyId".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nCollisionGroup".to_string(),
|
name: "m_nCollisionGroup".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27074,
|
||||||
full_name: "None m_nCollisionGroup".to_string(),
|
full_name: "CWorld.m_nCollisionGroup".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nCollisionFunctionMask".to_string(),
|
name: "m_nCollisionFunctionMask".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27075,
|
||||||
full_name: "None m_nCollisionFunctionMask".to_string(),
|
full_name: "CWorld.m_nCollisionFunctionMask".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vecMins".to_string(),
|
name: "m_vecMins".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27076,
|
||||||
full_name: "None m_vecMins".to_string(),
|
full_name: "CWorld.m_vecMins".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vecMaxs".to_string(),
|
name: "m_vecMaxs".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27077,
|
||||||
full_name: "None m_vecMaxs".to_string(),
|
full_name: "CWorld.m_vecMaxs".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_usSolidFlags".to_string(),
|
name: "m_usSolidFlags".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27078,
|
||||||
full_name: "None m_usSolidFlags".to_string(),
|
full_name: "CWorld.m_usSolidFlags".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nSolidType".to_string(),
|
name: "m_nSolidType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27079,
|
||||||
full_name: "None m_nSolidType".to_string(),
|
full_name: "CWorld.m_nSolidType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_triggerBloat".to_string(),
|
name: "m_triggerBloat".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27080,
|
||||||
full_name: "None m_triggerBloat".to_string(),
|
full_name: "CWorld.m_triggerBloat".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: Unsigned64Decoder,
|
decoder: Unsigned64Decoder,
|
||||||
name: "m_nSurroundType".to_string(),
|
name: "m_nSurroundType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27081,
|
||||||
full_name: "None m_nSurroundType".to_string(),
|
full_name: "CWorld.m_nSurroundType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_CollisionGroup".to_string(),
|
name: "m_CollisionGroup".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27082,
|
||||||
full_name: "None m_CollisionGroup".to_string(),
|
full_name: "CWorld.m_CollisionGroup".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nEnablePhysics".to_string(),
|
name: "m_nEnablePhysics".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27083,
|
||||||
full_name: "None m_nEnablePhysics".to_string(),
|
full_name: "CWorld.m_nEnablePhysics".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vecSpecifiedSurroundingMins".to_string(),
|
name: "m_vecSpecifiedSurroundingMins".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27084,
|
||||||
full_name: "None m_vecSpecifiedSurroundingMins".to_string(),
|
full_name: "CWorld.m_vecSpecifiedSurroundingMins".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vecSpecifiedSurroundingMaxs".to_string(),
|
name: "m_vecSpecifiedSurroundingMaxs".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27085,
|
||||||
full_name: "None m_vecSpecifiedSurroundingMaxs".to_string(),
|
full_name: "CWorld.m_vecSpecifiedSurroundingMaxs".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vCapsuleCenter1".to_string(),
|
name: "m_vCapsuleCenter1".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27086,
|
||||||
full_name: "None m_vCapsuleCenter1".to_string(),
|
full_name: "CWorld.m_vCapsuleCenter1".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vCapsuleCenter2".to_string(),
|
name: "m_vCapsuleCenter2".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27087,
|
||||||
full_name: "None m_vCapsuleCenter2".to_string(),
|
full_name: "CWorld.m_vCapsuleCenter2".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flCapsuleRadius".to_string(),
|
name: "m_flCapsuleRadius".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27088,
|
||||||
full_name: "None m_flCapsuleRadius".to_string(),
|
full_name: "CWorld.m_flCapsuleRadius".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_iGlowType".to_string(),
|
name: "m_iGlowType".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27089,
|
||||||
full_name: "None m_iGlowType".to_string(),
|
full_name: "CWorld.m_iGlowType".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_iGlowTeam".to_string(),
|
name: "m_iGlowTeam".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27090,
|
||||||
full_name: "None m_iGlowTeam".to_string(),
|
full_name: "CWorld.m_iGlowTeam".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_nGlowRange".to_string(),
|
name: "m_nGlowRange".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27091,
|
||||||
full_name: "None m_nGlowRange".to_string(),
|
full_name: "CWorld.m_nGlowRange".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_nGlowRangeMin".to_string(),
|
name: "m_nGlowRangeMin".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27092,
|
||||||
full_name: "None m_nGlowRangeMin".to_string(),
|
full_name: "CWorld.m_nGlowRangeMin".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_glowColorOverride".to_string(),
|
name: "m_glowColorOverride".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27093,
|
||||||
full_name: "None m_glowColorOverride".to_string(),
|
full_name: "CWorld.m_glowColorOverride".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bFlashing".to_string(),
|
name: "m_bFlashing".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27094,
|
||||||
full_name: "None m_bFlashing".to_string(),
|
full_name: "CWorld.m_bFlashing".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flGlowTime".to_string(),
|
name: "m_flGlowTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27095,
|
||||||
full_name: "None m_flGlowTime".to_string(),
|
full_name: "CWorld.m_flGlowTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flGlowStartTime".to_string(),
|
name: "m_flGlowStartTime".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27096,
|
||||||
full_name: "None m_flGlowStartTime".to_string(),
|
full_name: "CWorld.m_flGlowStartTime".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: BooleanDecoder,
|
decoder: BooleanDecoder,
|
||||||
name: "m_bEligibleForScreenHighlight".to_string(),
|
name: "m_bEligibleForScreenHighlight".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27097,
|
||||||
full_name: "None m_bEligibleForScreenHighlight".to_string(),
|
full_name: "CWorld.m_bEligibleForScreenHighlight".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flGlowBackfaceMult".to_string(),
|
name: "m_flGlowBackfaceMult".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27098,
|
||||||
full_name: "None m_flGlowBackfaceMult".to_string(),
|
full_name: "CWorld.m_flGlowBackfaceMult".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_fadeMinDist".to_string(),
|
name: "m_fadeMinDist".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27099,
|
||||||
full_name: "None m_fadeMinDist".to_string(),
|
full_name: "CWorld.m_fadeMinDist".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_fadeMaxDist".to_string(),
|
name: "m_fadeMaxDist".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27100,
|
||||||
full_name: "None m_fadeMaxDist".to_string(),
|
full_name: "CWorld.m_fadeMaxDist".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flFadeScale".to_string(),
|
name: "m_flFadeScale".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27101,
|
||||||
full_name: "None m_flFadeScale".to_string(),
|
full_name: "CWorld.m_flFadeScale".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flShadowStrength".to_string(),
|
name: "m_flShadowStrength".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27102,
|
||||||
full_name: "None m_flShadowStrength".to_string(),
|
full_name: "CWorld.m_flShadowStrength".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_nObjectCulling".to_string(),
|
name: "m_nObjectCulling".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27103,
|
||||||
full_name: "None m_nObjectCulling".to_string(),
|
full_name: "CWorld.m_nObjectCulling".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: SignedDecoder,
|
decoder: SignedDecoder,
|
||||||
name: "m_nAddDecal".to_string(),
|
name: "m_nAddDecal".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27104,
|
||||||
full_name: "None m_nAddDecal".to_string(),
|
full_name: "CWorld.m_nAddDecal".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vDecalPosition".to_string(),
|
name: "m_vDecalPosition".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27105,
|
||||||
full_name: "None m_vDecalPosition".to_string(),
|
full_name: "CWorld.m_vDecalPosition".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: VectorNoscaleDecoder,
|
decoder: VectorNoscaleDecoder,
|
||||||
name: "m_vDecalForwardAxis".to_string(),
|
name: "m_vDecalForwardAxis".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27106,
|
||||||
full_name: "None m_vDecalForwardAxis".to_string(),
|
full_name: "CWorld.m_vDecalForwardAxis".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flDecalHealBloodRate".to_string(),
|
name: "m_flDecalHealBloodRate".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27107,
|
||||||
full_name: "None m_flDecalHealBloodRate".to_string(),
|
full_name: "CWorld.m_flDecalHealBloodRate".to_string(),
|
||||||
}),
|
}),
|
||||||
Value(ValueField {
|
Value(ValueField {
|
||||||
decoder: NoscaleDecoder,
|
decoder: NoscaleDecoder,
|
||||||
name: "m_flDecalHealHeightRate".to_string(),
|
name: "m_flDecalHealHeightRate".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27108,
|
||||||
full_name: "None m_flDecalHealHeightRate".to_string(),
|
full_name: "CWorld.m_flDecalHealHeightRate".to_string(),
|
||||||
}),
|
}),
|
||||||
Vector(VectorField {
|
Vector(VectorField {
|
||||||
field_enum: Box::new(Value(ValueField {
|
field_enum: Box::new(Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_ConfigEntitiesToPropagateMaterialDecalsTo".to_string(),
|
name: "m_ConfigEntitiesToPropagateMaterialDecalsTo".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27109,
|
||||||
full_name: "None m_ConfigEntitiesToPropagateMaterialDecalsTo".to_string(),
|
full_name: "CWorld.m_ConfigEntitiesToPropagateMaterialDecalsTo".to_string(),
|
||||||
})),
|
})),
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
}),
|
}),
|
||||||
@@ -1258,9 +1257,9 @@ mod tests {
|
|||||||
field_enum: Box::new(Value(ValueField {
|
field_enum: Box::new(Value(ValueField {
|
||||||
decoder: UnsignedDecoder,
|
decoder: UnsignedDecoder,
|
||||||
name: "m_bvDisabledHitGroups".to_string(),
|
name: "m_bvDisabledHitGroups".to_string(),
|
||||||
should_parse: false,
|
should_parse: true,
|
||||||
prop_id: 0,
|
prop_id: 27110,
|
||||||
full_name: "None m_bvDisabledHitGroups".to_string(),
|
full_name: "CWorld.m_bvDisabledHitGroups".to_string(),
|
||||||
})),
|
})),
|
||||||
length: 1,
|
length: 1,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ fn mirage_1() {
|
|||||||
let frame_iter = csdemo::FrameIterator::parse(container.inner);
|
let frame_iter = csdemo::FrameIterator::parse(container.inner);
|
||||||
assert_eq!(123333, frame_iter.count());
|
assert_eq!(123333, frame_iter.count());
|
||||||
|
|
||||||
let output = csdemo::parser::parse(csdemo::FrameIterator::parse(container.inner)).unwrap();
|
let output = csdemo::parser::parse(
|
||||||
|
csdemo::FrameIterator::parse(container.inner),
|
||||||
|
csdemo::parser::EntityFilter::disabled(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
assert_eq!("de_mirage", output.header.map_name());
|
assert_eq!("de_mirage", output.header.map_name());
|
||||||
|
|
||||||
@@ -47,7 +51,11 @@ fn ancient_1() {
|
|||||||
let frame_iter = csdemo::FrameIterator::parse(container.inner);
|
let frame_iter = csdemo::FrameIterator::parse(container.inner);
|
||||||
assert_eq!(116676, frame_iter.count());
|
assert_eq!(116676, frame_iter.count());
|
||||||
|
|
||||||
let output = csdemo::parser::parse(csdemo::FrameIterator::parse(container.inner)).unwrap();
|
let output = csdemo::parser::parse(
|
||||||
|
csdemo::FrameIterator::parse(container.inner),
|
||||||
|
csdemo::parser::EntityFilter::disabled(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
assert_eq!("de_ancient", output.header.map_name());
|
assert_eq!("de_ancient", output.header.map_name());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user