Skip to main content

EntityContainer

Struct EntityContainer 

Source
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

Source

pub fn new() -> Self

Source

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.

Source

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.

Source

pub fn get(&self, index: i32) -> Option<&Entity>

Look up an entity by its slot index.

Source

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.

Source

pub fn iter(&self) -> impl Iterator<Item = (&i32, &Entity)>

Iterate over all active entities as (index, entity) pairs.

Source

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.

Source

pub fn clear_updated(&mut self)

Clear the per-tick updated set. Called by the parser after each callback.

Source

pub fn len(&self) -> usize

Number of currently active entities.

Source

pub fn is_empty(&self) -> bool

Trait Implementations§

Source§

impl Default for EntityContainer

Source§

fn default() -> EntityContainer

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.