UDT_API(const char*) udtGetFileExtensionByProtocol(udtProtocol::Id protocol) { if(!udtIsValidProtocol(protocol)) { return NULL; } return DemoFileExtensions[protocol]; }
bool udtBaseParser::Init(udtContext* context, udtProtocol::Id inProtocol, udtProtocol::Id outProtocol, s32 gameStateIndex, bool enablePlugIns) { if(context == NULL || !udtIsValidProtocol(inProtocol) || gameStateIndex < 0) { return false; } EnablePlugIns = enablePlugIns; _context = context; _inProtocol = inProtocol; _outProtocol = outProtocol; _inProtocolSizeOfEntityState = (s32)udtGetSizeOfIdEntityState(inProtocol); _inProtocolSizeOfClientSnapshot = (s32)udtGetSizeOfidClientSnapshot(inProtocol); _protocolConverter = context->GetProtocolConverter(outProtocol, inProtocol); _protocolConverter->ResetForNextDemo(); _outMsg.InitContext(context); _outMsg.InitProtocol(outProtocol); _inFileName = udtString::NewEmptyConstant(); _inFilePath = udtString::NewEmptyConstant(); _outFileName = udtString::NewEmptyConstant(); _outFilePath = udtString::NewEmptyConstant(); _cuts.Clear(); _persistentAllocator.Clear(); _configStringAllocator.Clear(); _tempAllocator.Clear(); _privateTempAllocator.Clear(); _inGameStateIndex = gameStateIndex - 1; _inGameStateFileOffsets.Clear(); if(gameStateIndex > 0) { _inGameStateFileOffsets.Resize(gameStateIndex); for(s32 i = 0; i < gameStateIndex; ++i) { _inGameStateFileOffsets[0] = 0; } } if(enablePlugIns) { for(u32 i = 0; i < PlugIns.GetSize(); ++i) { PlugIns[i]->StartProcessingDemo(); } } return true; }