public static void SaveProgram(Stream s, SerializableFLProgram program, FLInstructionSet iset, string[] extraSteps, FLProgramHeader programHeader = null) { Byt3Serializer main = CreateLoader(iset); MemoryStream ms = new MemoryStream(); if (!main.TryWritePacket(ms, program)) { throw new FLDeserializationException("Can not parse stream"); } if (programHeader == null) { programHeader = new FLProgramHeader("Program", "NONE", Version.Parse("0.0.0.1")); } FLHeader header = new FLHeader(FLVersions.HeaderVersion, FLVersions.SerializationVersion, FLVersions.CommonVersion, extraSteps); byte[] p = ms.ToArray(); ms.Close(); FLFileFormat file = new FLFileFormat(header, programHeader, p); if (!main.TryWritePacket(s, file)) { throw new FLDeserializationException("Can not parse stream"); } }
public void Serializer_ReadWrite_Test() { Packet p = new Packet(true); Byt3Serializer.AddSerializer <Packet>(new PacketSerializer()); MemoryStream stream = new MemoryStream(); bool ret = Byt3Serializer.TryWritePacket(stream, p); Assert.True(ret); stream.Position = 0; bool p2ret = Byt3Serializer.TryReadPacket <Packet>(stream, out Packet p2); Assert.True(p2ret); Assert.True(Math.Abs(p.valfloat - p2.valfloat) < 0.001f); Assert.True(Math.Abs(p.valdouble - p2.valdouble) < 0.001f); Assert.True(p.valint == p2.valint); Assert.True(p.valuint == p2.valuint); Assert.True(p.valshort == p2.valshort); Assert.True(p.valushort == p2.valushort); Assert.True(p.vallong == p2.vallong); Assert.True(p.valulong == p2.valulong); Assert.True(p.valstring == p2.valstring); for (int i = 0; i < p.valbytes.Length; i++) { Assert.True(p.valbytes[i] == p2.valbytes[i]); } }
public SerializableFLProgramSerializer(Dictionary <Type, FLBaseSerializer> serializers, FLInstructionSet iset) { instructionSet = iset; BufferSerializer = Byt3Serializer.GetDefaultSerializer(); foreach (KeyValuePair <Type, FLBaseSerializer> keyValuePair in serializers) { BufferSerializer.AddSerializer(keyValuePair.Key, keyValuePair.Value); } }
public SerializableInstructionSerializer(Dictionary <Type, FLBaseSerializer> serializers) { argSerializer = Byt3Serializer.GetDefaultSerializer(); serializer = serializers; foreach (KeyValuePair <Type, FLBaseSerializer> keyValuePair in serializers) { argSerializer.AddSerializer(keyValuePair.Key, keyValuePair.Value); } }
private void Start() { Byt3Serializer.AddSerializer <ClientHeartBeatPacket>(new ClientHeartBeatSerializer()); Byt3Serializer.AddSerializer <ClientHandshakePacket>(new ClientHandshakeSerializer()); Byt3Serializer.AddSerializer <ClientInstanceReadyPacket>(new ClientInstanceReadySerializer()); if (Info == null) { Info = new MasterServerInfo(); } }
public static SerializableFLProgram LoadProgram(Stream s, FLInstructionSet iset) { Byt3Serializer main = CreateLoader(iset); if (!main.TryReadPacket(s, out FLFileFormat file)) { throw new FLDeserializationException("Can not parse FL File Format"); } MemoryStream programStream = new MemoryStream(file.Program); if (!main.TryReadPacket(programStream, out SerializableFLProgram program)) { throw new FLDeserializationException("Program Data is Corrupt"); } return(program); }
private static Byt3Serializer CreateLoader(FLInstructionSet iset) { SerializableBufferArgumentSerializer bbuf = new SerializableBufferArgumentSerializer(); SerializableDecimalArgumentSerializer debuf = new SerializableDecimalArgumentSerializer(); SerializableFunctionArgumentSerializer fabuf = new SerializableFunctionArgumentSerializer(); SerializableExternalFunctionArgumentSerializer exbuf = new SerializableExternalFunctionArgumentSerializer(); Dictionary <Type, FLBaseSerializer> argumentParser = new Dictionary <Type, FLBaseSerializer> { { typeof(SerializeBufferArgument), bbuf }, { typeof(SerializeDecimalArgument), debuf }, { typeof(SerializeFunctionArgument), fabuf }, { typeof(SerializeExternalFunctionArgument), exbuf } }; SerializableFLFunctionSerializer efunc = new SerializableFLFunctionSerializer(argumentParser); SerializableExternalFLFunctionSerializer exfunc = new SerializableExternalFLFunctionSerializer(iset); EmptyFLBufferSerializer ebuf = new EmptyFLBufferSerializer(); RandomFLBufferSerializer rbuf = new RandomFLBufferSerializer(); UnifiedRandomFLBufferSerializer urbuf = new UnifiedRandomFLBufferSerializer(); FromImageFLBufferSerializer fibuf = new FromImageFLBufferSerializer(true); WFCFLBufferSerializer wfcbuf = new WFCFLBufferSerializer(); Dictionary <Type, Serializers.Internal.FLBaseSerializer> bufferParser = new Dictionary <Type, Serializers.Internal.FLBaseSerializer> { { typeof(SerializableExternalFLFunction), exfunc }, { typeof(SerializableFLFunction), efunc }, { typeof(SerializableEmptyFLBuffer), ebuf }, { typeof(SerializableRandomFLBuffer), rbuf }, { typeof(SerializableUnifiedRandomFLBuffer), urbuf }, { typeof(SerializableFromFileFLBuffer), fibuf }, { typeof(SerializableWaveFunctionCollapseFLBuffer), wfcbuf }, }; SerializableFLProgramSerializer prog = new SerializableFLProgramSerializer(bufferParser, iset); Byt3Serializer main = Byt3Serializer.GetDefaultSerializer(); main.AddSerializer(typeof(SerializableFLProgram), prog); main.AddSerializer(typeof(FLFileFormat), new FLFileFormatSerializer()); return(main); }
private static Byt3Serializer CreateLoader(FLInstructionSet iset) { SerializableBufferArgumentSerializer bbuf = new SerializableBufferArgumentSerializer(); SerializableArrayArgumentSerializer abuf = new SerializableArrayArgumentSerializer(); SerializableDecimalArgumentSerializer debuf = new SerializableDecimalArgumentSerializer(); SerializableFunctionArgumentSerializer fabuf = new SerializableFunctionArgumentSerializer(); SerializableExternalFunctionArgumentSerializer exbuf = new SerializableExternalFunctionArgumentSerializer(); SerializableArrayLengthSerializer arLen = new SerializableArrayLengthSerializer(); SerializableNameArgumentSerializer nArg = new SerializableNameArgumentSerializer(); SerializableArrayElementArgumentVariableIndexSerializer arEVI = new SerializableArrayElementArgumentVariableIndexSerializer(); SerializableArrayElementArgumentValueIndexSerializer arEVaI = new SerializableArrayElementArgumentValueIndexSerializer(); SerializableArrayElementArgumentEnclosedIndexSerializer arEI = new SerializableArrayElementArgumentEnclosedIndexSerializer(); Dictionary <Type, FLBaseSerializer> argumentParser = new Dictionary <Type, FLBaseSerializer> { { typeof(SerializeBufferArgument), bbuf }, { typeof(SerializeArrayBufferArgument), abuf }, { typeof(SerializeDecimalArgument), debuf }, { typeof(SerializeFunctionArgument), fabuf }, { typeof(SerializeExternalFunctionArgument), exbuf }, { typeof(SerializeArrayLengthArgument), arLen }, { typeof(SerializeNameArgument), nArg }, { typeof( SerializeArrayElementArgumentVariableIndex), arEVI }, { typeof(SerializeArrayElementArgumentValueIndex), arEVaI }, { typeof( SerializeArrayElementArgumentEnclosedIndex), arEI } }; SerializableFLFunctionSerializer efunc = new SerializableFLFunctionSerializer(argumentParser); SerializableExternalFLFunctionSerializer exfunc = new SerializableExternalFLFunctionSerializer(iset); EmptyFLBufferSerializer ebuf = new EmptyFLBufferSerializer(); FromImageFLBufferSerializer fibuf = new FromImageFLBufferSerializer(true); Dictionary <Type, FLBaseSerializer> bufferParser = new Dictionary <Type, FLBaseSerializer> { { typeof(SerializableExternalFLFunction), exfunc }, { typeof(SerializableFLFunction), efunc }, { typeof(SerializableEmptyFLBuffer), ebuf }, { typeof(SerializableFromFileFLBuffer), fibuf } }; SerializableFLProgramSerializer prog = new SerializableFLProgramSerializer(bufferParser, iset); PluginManager.LoadPlugins(prog); Byt3Serializer main = Byt3Serializer.GetDefaultSerializer(); main.AddSerializer(typeof(SerializableFLProgram), prog); main.AddSerializer(typeof(FLFileFormat), new FLFileFormatSerializer()); return(main); }