Photon Fusion 2.0.0

Classes | Public Member Functions | Public Attributes | Static Public Attributes | Properties | List of all members
NetworkLinkedList< T > Struct Template Reference

Fusion type for networking LinkedLists. Maximum capacity is fixed, and is set with the CapacityAttribute.

Typical Usage: More...

Inherits IEnumerable< T >, and INetworkLinkedList.

Classes

struct  Enumerator
 Enumerator for NetworkLinkedList<T>. More...
 

Public Member Functions

void INetworkLinkedList. Add (object item)
 Adds an item to the networked linked list.
 
void Add (T value)
 Adds a value to the end of the list.
 
void Clear ()
 Removes and clears all list elements.
 
bool Contains (T value)
 Returns true if the value already exists in the list.
 
bool Contains (T value, IEqualityComparer< T > comparer)
 Returns true if the value already exists in the list.
 
int * Entry (int index)
 
int * FindFreeEntry (out int index)
 
Get (int index)
 Returns the value at supplied index.
 
int * GetEntryByListIndex (int listIndex)
 
Enumerator GetEnumerator ()
 Get the enumerator for the list.
 
IEnumerator< T > IEnumerable< T >. GetEnumerator ()
 
IEnumerator IEnumerable. GetEnumerator ()
 
int IndexOf (T value)
 Returns the index with this value. Returns -1 if not found.
 
int IndexOf (T value, IEqualityComparer< T > equalityComparer)
 Returns the index of the first occurrence of a value in the NetworkLinkedList.
 
 NetworkLinkedList (byte *data, int capacity, IElementReaderWriter< T > rw)
 Initializes a new instance of the NetworkLinkedList struct with the specified data, capacity, and reader/writer.
 
Read (int *entry)
 
NetworkLinkedList< T > Remap (void *list)
 Remaps the current NetworkLinkedList to a new memory location.
 
bool Remove (T value)
 Removes the first found element with indicated value.
 
bool Remove (T value, IEqualityComparer< T > equalityComparer)
 Removes the first found element with indicated value.
 
void RemoveEntry (int *entry, int entryIndex)
 
Set (int index, T value)
 Sets the value at supplied index.
 
void Write (int *entry, T value)
 
void Add (object item)
 Adds an item to the networked linked list.
 

Public Attributes

int _capacity
 
int * _data
 
IElementReaderWriter< T > _rw
 
int _stride
 

Static Public Attributes

const int COUNT = 0
 
const int ELEMENT_WORDS = 2
 Returns the number of words required to store a single element.
 
const int HEAD = 1
 
const int INVALID = 0
 
const int META_WORDS = 3
 Returns the number of words required to store the list metadata.
 
const int NEXT = 1
 
const int OFFSET = 1
 
const int PREV = 0
 
const int TAIL = 2
 

Properties

int Capacity [get]
 Returns the max element count.
 
int Count [get]
 Returns the current element count.
 
int Head [get, set]
 
int Tail [get, set]
 
this[int index] [get, set]
 Element indexer.
 

Detailed Description

Fusion type for networking LinkedLists. Maximum capacity is fixed, and is set with the CapacityAttribute.

Typical Usage:

[Networked, Capacity(10)]
NetworkLinkedList<int> syncedLinkedList => default;

Optional usage (for NetworkBehaviours ONLY - this is not legal in INetworkStructs): [Networked, Capacity(4)]
NetworkLinkedList<int> syncedLinkedList { get; } = MakeInitializer(new int[] { 1, 2, 3, 4 });

Usage for modifying data: var list = syncedLinkedList; list.Add(123); list[0] = 456; list.Remove(0);

Template Parameters
TT can be a primitive, or an INetworkStruct.

Constructor & Destructor Documentation

◆ NetworkLinkedList()

NetworkLinkedList ( byte *  data,
int  capacity,
IElementReaderWriter< T >  rw 
)

Initializes a new instance of the NetworkLinkedList struct with the specified data, capacity, and reader/writer.

Parameters
dataThe pointer to the data of the list.
capacityThe capacity of the list.
rwThe reader/writer for the elements of the list.

Member Function Documentation

◆ Add() [1/2]

void INetworkLinkedList. Add ( object  item)

Adds an item to the networked linked list.

Parameters
itemThe item to add to the linked list.

Implements INetworkLinkedList.

◆ Add() [2/2]

void Add ( value)

Adds a value to the end of the list.

Parameters
valueValue to add.

◆ IndexOf()

int IndexOf ( value,
IEqualityComparer< T >  equalityComparer 
)

Returns the index of the first occurrence of a value in the NetworkLinkedList.

Parameters
valueThe value to locate in the NetworkLinkedList. The value can be null for reference types.
equalityComparerAn equality comparer to compare values. Must not be null.
Returns
The zero-based index of the first occurrence of value within the entire NetworkLinkedList, if found; otherwise, -1.

This method performs a linear search; therefore, this method is an O(n) operation, where n is Capacity.

◆ Remap()

NetworkLinkedList< T > Remap ( void *  list)

Remaps the current NetworkLinkedList to a new memory location.

Parameters
listThe pointer to the new memory location.
Returns
A new instance of NetworkLinkedList with the same capacity and reader/writer, but mapped to the new memory location.