Exemple #1
0
    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);
    }
Exemple #2
0
	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;
	}
Exemple #3
0
	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;
	}
Exemple #4
0
 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));
 }