コード例 #1
0
 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;
 }
コード例 #2
0
 internal SnapshotField(Snapshot parent, SnapshotFieldType type,
                        object defaultValue, SnapshotPrimitiveType primtiveType)
 {
     Parent        = parent;
     Type          = type;
     Value         = defaultValue;
     PrimitiveType = primtiveType;
 }
コード例 #3
0
        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;
                }
            }
        }
コード例 #4
0
 internal StaticSnapshotField(Snapshot parent, ushort id, SnapshotFieldType type, object defaultValue,
                              SnapshotPrimitiveType primitiveType = SnapshotPrimitiveType.None)
     : base(parent, type, defaultValue, primitiveType)
 {
     Id = id;
 }