pub struct EntityContainer {
pub entities: FxHashMap<i32, Entity>,
/* private fields */
}Expand description
Container managing all active entities.
Fields§
§entities: FxHashMap<i32, Entity>Implementations§
Source§impl EntityContainer
impl EntityContainer
pub fn new() -> Self
Sourcepub fn handle_packet_entities(
&mut self,
msg: CsvcMsgPacketEntities,
class_info: &ClassInfo,
serializers: &SerializerContainer,
string_tables: &StringTableContainer,
field_decode_ctx: &mut FieldDecodeContext,
fp_buf: &mut Vec<FieldPath>,
) -> Result<()>
pub fn handle_packet_entities( &mut self, msg: CsvcMsgPacketEntities, class_info: &ClassInfo, serializers: &SerializerContainer, string_tables: &StringTableContainer, field_decode_ctx: &mut FieldDecodeContext, fp_buf: &mut Vec<FieldPath>, ) -> Result<()>
Handle a CSVCMsg_PacketEntities message.
Sourcepub fn handle_packet_entities_filtered(
&mut self,
msg: CsvcMsgPacketEntities,
class_info: &ClassInfo,
serializers: &SerializerContainer,
string_tables: &StringTableContainer,
field_decode_ctx: &mut FieldDecodeContext,
class_filter: &HashSet<&str>,
fp_buf: &mut Vec<FieldPath>,
) -> Result<()>
pub fn handle_packet_entities_filtered( &mut self, msg: CsvcMsgPacketEntities, class_info: &ClassInfo, serializers: &SerializerContainer, string_tables: &StringTableContainer, field_decode_ctx: &mut FieldDecodeContext, class_filter: &HashSet<&str>, fp_buf: &mut Vec<FieldPath>, ) -> Result<()>
Handle a CSVCMsg_PacketEntities message, only tracking specified entity classes. Entities not in the filter are parsed (to advance the bit reader) but not stored.
Sourcepub fn get_by_handle(&self, handle: u32) -> Option<&Entity>
pub fn get_by_handle(&self, handle: u32) -> Option<&Entity>
Resolve a networked CHandle to the entity it refers to, if still active.
Applies ENTITY_HANDLE_INDEX_MASK to recover the entity index, then
looks it up. This is the canonical way to follow a handle field such as
m_hPawn; decoding the mask by hand risks resolving the wrong entity.
Sourcepub fn iter(&self) -> impl Iterator<Item = (&i32, &Entity)>
pub fn iter(&self) -> impl Iterator<Item = (&i32, &Entity)>
Iterate over all active entities as (index, entity) pairs.
Sourcepub fn updated_indices(&self) -> &[i32]
pub fn updated_indices(&self) -> &[i32]
Indices of tracked entities created or updated during the current tick.
Lets change-only consumers (cooldowns, modifiers, …) process just the
entities a tick touched instead of rescanning every active entity. Valid
inside a run_to_end* per-tick callback; the parser clears it after each
callback returns.
Caveats: an index may appear more than once if multiple packets in the
same tick updated the entity, and may refer to an entity that is no
longer active if it was deleted later in the same tick. Resolve each with
get and skip None.
Sourcepub fn clear_updated(&mut self)
pub fn clear_updated(&mut self)
Clear the per-tick updated set. Called by the parser after each callback.