public SerializableObject AddReference(ISerializableObjectFieldSerializer serializer, int id, int fieldIndex) { var obj = _outerCollector.AddReference(this, id, _outerFieldIndex); if (obj != null) { return(obj); } if (!_simpleReferences) { if (_subFieldReferences == null) { _subFieldReferences = new Dictionary <int, Dictionary <int, HashSetList <int> > >(); } Dictionary <int, HashSetList <int> > idToIndexSet; if (!_subFieldReferences.TryGetValue(_outerFieldIndex, out idToIndexSet)) { idToIndexSet = new Dictionary <int, HashSetList <int> >(); _subFieldReferences[_outerFieldIndex] = idToIndexSet; } HashSetList <int> fields; if (!idToIndexSet.TryGetValue(id, out fields)) { fields = new HashSetList <int>(); idToIndexSet[id] = fields; } fields.Add(fieldIndex); } return(null); }
public SerializableObject AddReference(ISerializableObjectFieldSerializer serializer, int id, int fieldIndex) { int hashCode = id.GetHashCode(); var obj = connection.world.GetObjectByNetIDHashCode(hashCode); if ((obj != null) && (obj.internal_GetReplicator(connection) == null)) { objectRefs.Add(hashCode); } return null; }
public SerializableObject AddReference(ISerializableObjectFieldSerializer serializer, int id, int fieldIndex) { var obj = channel.AddObjectReferenceToSerialize(this, id); if ((obj != null) || !isLoading) { return obj; } int idHash = id.GetHashCode(); if (objectReferencedFieldStates == null) { objectReferencedFieldStates = new IntHashtable<IntHashtableList<ReplicatedObjectFieldState>>(); } IntHashtableList<ReplicatedObjectFieldState> fields; if (!objectReferencedFieldStates.TryGetValue(idHash, out fields)) { fields = new IntHashtableList<ReplicatedObjectFieldState>(); objectReferencedFieldStates[idHash] = fields; } if (!fields.Contains(curFieldState.fieldSpec.fieldID)) { fields.Add(curFieldState.fieldSpec.fieldID, curFieldState); } curFieldState.AddReference(id, fieldIndex); return null; }
public SerializableObjectListFieldSerializer(ISerializableObjectFieldSerializerFactory factory) { _itemSerializer = factory.GetSerializerForType(typeof(T)); _simpleReferences = !typeof(System.Collections.IList).IsAssignableFrom(typeof(T)); }
public SerializableObject AddReference(ISerializableObjectFieldSerializer serializer, int id, int fieldIndex) { return(world.GetObjectByNetID(id)); }