internal DynamicSnapshotField(Snapshot parent, object id, SnapshotFieldType type, object defaultValue, SnapshotPrimitiveType idPrimitiveType, SnapshotPrimitiveType primitiveType = SnapshotPrimitiveType.None) : base(parent, type, defaultValue, primitiveType) { Id = id; IdPrimitiveType = idPrimitiveType; }
internal SnapshotField(Snapshot parent, SnapshotFieldType type, object defaultValue, SnapshotPrimitiveType primtiveType) { Parent = parent; Type = type; Value = defaultValue; PrimitiveType = primtiveType; }
void ReadField(NetBuffer buffer, SnapshotField field) { // Read field type SnapshotFieldType fieldType = (SnapshotFieldType)buffer.ReadByte(); // Read field data if (fieldType == SnapshotFieldType.Primitive) { // Read primitive SnapshotPrimitiveType primType = (SnapshotPrimitiveType)buffer.ReadByte(); object v = ReadPrimitive(buffer, primType); if (field != null) { field.Value = v; } } else if (fieldType == SnapshotFieldType.Trigger) { // Read trigger byte it = buffer.ReadByte(); if (field != null) { Trigger t = (Trigger)field.Value; t.Iterations = it; } } else if (fieldType == SnapshotFieldType.Snapshot) { // Read nested snapshot Snapshot ns; if (field != null) { ns = (Snapshot)field.Value; } else { // Make temp snapshot to just read ns ns = new TempSnapshot(snapshotSystem); } ns.Deserialize(buffer); } else if (fieldType == SnapshotFieldType.Custom) { // Read custom snapshot // Read snapshot size ushort bufferSize = buffer.ReadUInt16(); if (field != null) { // Read custom snapshot CustomSnapshot cs = (CustomSnapshot)field.Value; cs.Deserialize(buffer); } else { // Skip buffer buffer.Position += bufferSize; } } }
internal StaticSnapshotField(Snapshot parent, ushort id, SnapshotFieldType type, object defaultValue, SnapshotPrimitiveType primitiveType = SnapshotPrimitiveType.None) : base(parent, type, defaultValue, primitiveType) { Id = id; }