public FSkeletalMaterial(FAssetArchive Ar) { Material = new FPackageIndex(Ar).ResolvedObject; if (FEditorObjectVersion.Get(Ar) >= FEditorObjectVersion.Type.RefactorMeshEditorMaterials) { MaterialSlotName = Ar.ReadFName(); var bSerializeImportedMaterialSlotName = !Ar.Owner.HasFlags(EPackageFlags.PKG_FilterEditorOnly); if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.SkeletalMaterialEditorDataStripping) { bSerializeImportedMaterialSlotName = Ar.ReadBoolean(); } if (bSerializeImportedMaterialSlotName) { ImportedMaterialSlotName = Ar.ReadFName(); } } else { if (Ar.Ver >= EUnrealEngineObjectUE4Version.MOVE_SKELETALMESH_SHADOWCASTING) { Ar.Position += 4; } if (FRecomputeTangentCustomVersion.Get(Ar) >= FRecomputeTangentCustomVersion.Type.RuntimeRecomputeTangent) { var bRecomputeTangent = Ar.ReadBoolean(); } } if (FRenderingObjectVersion.Get(Ar) >= FRenderingObjectVersion.Type.TextureStreamingMeshUVChannelData) { UVChannelData = new FMeshUVChannelInfo(Ar); } }
public override void Deserialize(FAssetArchive Ar, long validPos) { base.Deserialize(Ar, validPos); SuperStruct = new FPackageIndex(Ar); if (Ar.Game == EGame.GAME_SOD2) { Ar.Position += 4; //var someScriptImport = new FPackageIndex(Ar); } if (FFrameworkObjectVersion.Get(Ar) < FFrameworkObjectVersion.Type.RemoveUField_Next) { var firstChild = new FPackageIndex(Ar); Children = firstChild.IsNull ? Array.Empty <FPackageIndex>() : new[] { firstChild }; } else { Children = Ar.ReadArray(() => new FPackageIndex(Ar)); } if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.FProperties) { DeserializeProperties(Ar); } var bytecodeBufferSize = Ar.Read <int>(); var serializedScriptSize = Ar.Read <int>(); Ar.Position += serializedScriptSize; // should we read the bytecode some day? }
public FSkeletalMaterial(FAssetArchive Ar) { Material = Ar.ReadObject <UMaterialInterface>(); if (FEditorObjectVersion.Get(Ar) >= FEditorObjectVersion.Type.RefactorMeshEditorMaterials) { MaterialSlotName = Ar.ReadFName(); var bSerializeImportedMaterialSlotName = false; if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.SkeletalMaterialEditorDataStripping) { bSerializeImportedMaterialSlotName = Ar.ReadBoolean(); } if (bSerializeImportedMaterialSlotName) { ImportedMaterialSlotName = Ar.ReadFName(); } } else { if (Ar.Ver >= UE4Version.VER_UE4_MOVE_SKELETALMESH_SHADOWCASTING) { Ar.Position += 4; } if (FRecomputeTangentCustomVersion.Get(Ar) >= FRecomputeTangentCustomVersion.Type.RuntimeRecomputeTangent) { Ar.Position += 4; } } if (FRenderingObjectVersion.Get(Ar) >= FRenderingObjectVersion.Type.TextureStreamingMeshUVChannelData) { UVChannelData = new FMeshUVChannelInfo(Ar); } }
public override void Deserialize(FAssetArchive Ar, long validPos) { base.Deserialize(Ar, validPos); SuperStruct = new FPackageIndex(Ar); if (FFrameworkObjectVersion.Get(Ar) < FFrameworkObjectVersion.Type.RemoveUField_Next) { var firstChild = new FPackageIndex(Ar); Children = firstChild.IsNull ? Array.Empty<FPackageIndex>() : new[] { firstChild }; } else { Children = Ar.ReadArray(() => new FPackageIndex(Ar)); } if (FCoreObjectVersion.Get(Ar) >= FCoreObjectVersion.Type.FProperties) { DeserializeProperties(Ar); } var bytecodeBufferSize = Ar.Read<int>(); var serializedScriptSize = Ar.Read<int>(); if (Ar.Owner.Provider?.ReadScriptData == true) { Script = Ar.ReadBytes(serializedScriptSize); } else { Ar.Position += serializedScriptSize; } }