Exemple #1
0
	public bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState) {
		if (archive.isLoading) {
			int id = archive.ReadUShort();
			if (id != 0) {
				field = collector.AddReference(this, id, 0);
				if (field == null) {
					// no onrep until the reference is received.
					return false;
				}
			} else {
				bool r = field != null;
				field = null;
				return r;
			}
		} else {
			SerializableObject obj = (SerializableObject)field;
			Actor actor = obj as Actor;
			if ((obj == null) || !obj.replicates || ((actor != null) && actor.netTornOff)) {
				archive.Write((ushort)0);
			} else {
				archive.Write((ushort)obj.netID);
				collector.AddReference(this, obj.netID, 0);
			}
		}
		return archive.isLoading;
	}
        public override bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState)
        {
            SerializeStaticAssetRef r = (SerializeStaticAssetRef)field;

            r.Serialize(archive);
            field = r.Copy();
            return(archive.isLoading);
        }
Exemple #3
0
    public override bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState)
    {
        Matrix4x4 value = (Matrix4x4)field;

        archive.Serialize(ref value);
        field = value;
        return(archive.isLoading);
    }
Exemple #4
0
    public override bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState)
    {
        int value = Convert.ToInt32((Enum)field);

        archive.Serialize(ref value);
        field = Enum.ToObject(field.GetType(), value);
        return(archive.isLoading);
    }
Exemple #5
0
	public void Write(NetArchive archive, ISerializableObjectReferenceCollector collector, params object[] args) {
		if (args.Length != argumentSerializers.Count) {
			throw new ArgumentException("Wrong number of arguments for RPC!");
		}
		
		for (int i = 0; i < args.Length; ++i) {
			object r = args[i];
			argumentSerializers[i].Serialize(archive, collector, ref r, null);
		}
    }
Exemple #6
0
	public void Write(NetArchive archive, ISerializableObjectReferenceCollector collector, object fieldVal, bool deltaField) {
		Perf.Begin("FieldState.Write");

		fieldSpec.serializer.Serialize(archive, collector, ref fieldVal, deltaField ? lastState : null);

		if (deltaField) {
			lastState = fieldSpec.serializer.Copy(fieldVal);
		}

		Perf.End();
	}
Exemple #7
0
	public override bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState) {
		QuantizedFloatField value = (QuantizedFloatField)field;

		if (archive.isLoading) {
			value.quantizedValue = archive.ReadSignedBits(value.F.NUM_BITS);
		} else {
			archive.WriteSignedBits(value.quantizedValue, value.F.NUM_BITS);
		}

		field = value;
		return archive.isLoading;
	}
Exemple #8
0
    public bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState)
    {
        _outerCollector = collector;

        List <T> list     = (List <T>)field;
        ushort   numItems = (list != null) ? (ushort)list.Count : (ushort)0;

        archive.Serialize(ref numItems);

        bool onRep = false;

        if (archive.isLoading)
        {
            if (list != null)
            {
                list.Clear();
            }
            else
            {
                list  = new List <T>(numItems);
                field = list;
            }

            onRep = numItems < 1;             // make sure to rep if list goes to 0 length.

            for (int i = 0; i < numItems; ++i)
            {
                _outerFieldIndex = i;
                var    item    = default(T);
                object objItem = item;
                if (_itemSerializer.Serialize(archive, this, ref objItem, null))
                {
                    onRep = true;
                }
                item = (T)objItem;
                list.Add(item);
            }
        }
        else
        {
            for (int i = 0; i < numItems; ++i)
            {
                _outerFieldIndex = i;
                object objItem = list[i];
                _itemSerializer.Serialize(archive, this, ref objItem, null);
            }
        }

        _outerCollector = null;

        return(onRep);
    }
Exemple #9
0
	public object[] Read(NetArchive archive, ISerializableObjectReferenceCollector collector) {
		
		for (int i = 0; i < argumentSerializers.Count; ++i) {
			var p = _parameters[i];

			if (p.ParameterType.IsValueType) {
				rpcArgs[i] = Activator.CreateInstance(p.ParameterType);
			} else {
				rpcArgs[i] = null;
			}

			argumentSerializers[i].Serialize(archive, collector, ref rpcArgs[i], null);
		}

		return rpcArgs;
	}
Exemple #10
0
	public override bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState) {
		QuantizedVector2Field value = (QuantizedVector2Field)field;

		if (archive.isLoading) {
			IntMath.Vector2i q = new IntMath.Vector2i(
				archive.ReadSignedBits(value.FX.NUM_BITS),
				archive.ReadSignedBits(value.FY.NUM_BITS));
			value.quantizedValue = q;
		} else {
			IntMath.Vector2i q = value.quantizedValue;
			archive.WriteSignedBits(q.x, value.FX.NUM_BITS);
			archive.WriteSignedBits(q.y, value.FY.NUM_BITS);
		}

		field = value;
		return archive.isLoading;
	}
Exemple #11
0
 public void ClearState()
 {
     _outerCollector     = null;
     _subFieldReferences = null;
 }
Exemple #12
0
 public abstract bool Serialize(Archive archive, ISerializableObjectReferenceCollector collector, ref object field, object lastFieldState);