Started serializing bunches

This commit is contained in:
AeonLucid
2022-01-10 04:38:06 +01:00
parent 49e6e0f6f8
commit f3b0a31761
36 changed files with 2013 additions and 54 deletions
+56
View File
@@ -0,0 +1,56 @@
using System.Diagnostics.CodeAnalysis;
using Prospect.Unreal.Core;
using Prospect.Unreal.Core.Names;
using Prospect.Unreal.Serialization;
namespace Prospect.Unreal.Net;
public class UPackageMap
{
public static unsafe bool StaticSerializeName(FBitReader ar, [MaybeNullWhen(false)] out FName name)
{
if (!ar.IsLoading())
{
throw new NotImplementedException();
}
name = null;
bool bHardcoded;
ar.SerializeBits(&bHardcoded, 1);
if (bHardcoded)
{
// replicated by hardcoded index
uint nameIndex;
if (ar.EngineNetVer() < EEngineNetworkVersionHistory.HISTORY_CHANNEL_NAMES)
{
ar.SerializeInt(&nameIndex, UnrealNames.MaxNetworkedHardcodedName);
}
else
{
ar.SerializeIntPacked(&nameIndex);
}
if (nameIndex < UnrealNames.MaxHardcodedNameIndex)
{
// hardcoded names never have a Number
name = UnrealNames.FNames[(UnrealNameKey) nameIndex];
}
else
{
ar.SetError();
}
}
else
{
// replicated by string
var inString = FString.Deserialize(ar);
var inNumber = ar.ReadInt32();
name = new FName(inString, inNumber);
}
return true;
}
}