Refactor native Stream serialization to new API
This commit is contained in:
@@ -756,35 +756,35 @@ bool MaterialParams::Load(ReadStream* stream)
|
||||
stream->ReadFloat(¶m->_asFloat);
|
||||
break;
|
||||
case MaterialParameterType::Vector2:
|
||||
stream->Read(¶m->_asVector2);
|
||||
stream->Read(param->_asVector2);
|
||||
break;
|
||||
case MaterialParameterType::Vector3:
|
||||
stream->Read(¶m->_asVector3);
|
||||
stream->Read(param->_asVector3);
|
||||
break;
|
||||
case MaterialParameterType::Vector4:
|
||||
stream->Read((Float4*)¶m->AsData);
|
||||
stream->Read((Float4&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::Color:
|
||||
stream->Read(¶m->_asColor);
|
||||
stream->Read(param->_asColor);
|
||||
break;
|
||||
case MaterialParameterType::Matrix:
|
||||
stream->Read((Matrix*)¶m->AsData);
|
||||
stream->Read((Matrix&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::NormalMap:
|
||||
case MaterialParameterType::Texture:
|
||||
case MaterialParameterType::CubeTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<TextureBase>(id);
|
||||
break;
|
||||
case MaterialParameterType::GPUTextureVolume:
|
||||
case MaterialParameterType::GPUTextureCube:
|
||||
case MaterialParameterType::GPUTextureArray:
|
||||
case MaterialParameterType::GPUTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asGPUTexture = id;
|
||||
break;
|
||||
case MaterialParameterType::GameplayGlobal:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<GameplayGlobals>(id);
|
||||
break;
|
||||
default:
|
||||
@@ -808,7 +808,7 @@ bool MaterialParams::Load(ReadStream* stream)
|
||||
|
||||
// Read properties
|
||||
param->_type = static_cast<MaterialParameterType>(stream->ReadByte());
|
||||
stream->Read(¶m->_paramId);
|
||||
stream->Read(param->_paramId);
|
||||
param->_isPublic = stream->ReadBool();
|
||||
param->_override = param->_isPublic;
|
||||
stream->ReadString(¶m->_name, 10421);
|
||||
@@ -830,35 +830,35 @@ bool MaterialParams::Load(ReadStream* stream)
|
||||
stream->ReadFloat(¶m->_asFloat);
|
||||
break;
|
||||
case MaterialParameterType::Vector2:
|
||||
stream->Read(¶m->_asVector2);
|
||||
stream->Read(param->_asVector2);
|
||||
break;
|
||||
case MaterialParameterType::Vector3:
|
||||
stream->Read(¶m->_asVector3);
|
||||
stream->Read(param->_asVector3);
|
||||
break;
|
||||
case MaterialParameterType::Vector4:
|
||||
stream->Read((Float4*)¶m->AsData);
|
||||
stream->Read((Float4&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::Color:
|
||||
stream->Read(¶m->_asColor);
|
||||
stream->Read(param->_asColor);
|
||||
break;
|
||||
case MaterialParameterType::Matrix:
|
||||
stream->Read((Matrix*)¶m->AsData);
|
||||
stream->Read((Matrix&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::NormalMap:
|
||||
case MaterialParameterType::Texture:
|
||||
case MaterialParameterType::CubeTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<TextureBase>(id);
|
||||
break;
|
||||
case MaterialParameterType::GPUTextureVolume:
|
||||
case MaterialParameterType::GPUTextureCube:
|
||||
case MaterialParameterType::GPUTextureArray:
|
||||
case MaterialParameterType::GPUTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asGPUTexture = id;
|
||||
break;
|
||||
case MaterialParameterType::GameplayGlobal:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<GameplayGlobals>(id);
|
||||
break;
|
||||
default:
|
||||
@@ -882,7 +882,7 @@ bool MaterialParams::Load(ReadStream* stream)
|
||||
|
||||
// Read properties
|
||||
param->_type = static_cast<MaterialParameterType>(stream->ReadByte());
|
||||
stream->Read(¶m->_paramId);
|
||||
stream->Read(param->_paramId);
|
||||
param->_isPublic = stream->ReadBool();
|
||||
param->_override = stream->ReadBool();
|
||||
stream->ReadString(¶m->_name, 10421);
|
||||
@@ -905,35 +905,35 @@ bool MaterialParams::Load(ReadStream* stream)
|
||||
stream->ReadFloat(¶m->_asFloat);
|
||||
break;
|
||||
case MaterialParameterType::Vector2:
|
||||
stream->Read(¶m->_asVector2);
|
||||
stream->Read(param->_asVector2);
|
||||
break;
|
||||
case MaterialParameterType::Vector3:
|
||||
stream->Read(¶m->_asVector3);
|
||||
stream->Read(param->_asVector3);
|
||||
break;
|
||||
case MaterialParameterType::Vector4:
|
||||
stream->Read((Float4*)¶m->AsData);
|
||||
stream->Read((Float4&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::Color:
|
||||
stream->Read(¶m->_asColor);
|
||||
stream->Read(param->_asColor);
|
||||
break;
|
||||
case MaterialParameterType::Matrix:
|
||||
stream->Read((Matrix*)¶m->AsData);
|
||||
stream->Read((Matrix&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::NormalMap:
|
||||
case MaterialParameterType::Texture:
|
||||
case MaterialParameterType::CubeTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<TextureBase>(id);
|
||||
break;
|
||||
case MaterialParameterType::GPUTextureVolume:
|
||||
case MaterialParameterType::GPUTextureCube:
|
||||
case MaterialParameterType::GPUTextureArray:
|
||||
case MaterialParameterType::GPUTexture:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asGPUTexture = id;
|
||||
break;
|
||||
case MaterialParameterType::GameplayGlobal:
|
||||
stream->Read(&id);
|
||||
stream->Read(id);
|
||||
param->_asAsset = Content::LoadAsync<GameplayGlobals>(id);
|
||||
break;
|
||||
default:
|
||||
@@ -974,7 +974,7 @@ void MaterialParams::Save(WriteStream* stream)
|
||||
|
||||
// Write properties
|
||||
stream->WriteByte(static_cast<byte>(param->_type));
|
||||
stream->Write(¶m->_paramId);
|
||||
stream->Write(param->_paramId);
|
||||
stream->WriteBool(param->_isPublic);
|
||||
stream->WriteBool(param->_override);
|
||||
stream->WriteString(param->_name, 10421);
|
||||
@@ -998,33 +998,33 @@ void MaterialParams::Save(WriteStream* stream)
|
||||
stream->WriteFloat(param->_asFloat);
|
||||
break;
|
||||
case MaterialParameterType::Vector2:
|
||||
stream->Write(¶m->_asVector2);
|
||||
stream->Write(param->_asVector2);
|
||||
break;
|
||||
case MaterialParameterType::Vector3:
|
||||
stream->Write(¶m->_asVector3);
|
||||
stream->Write(param->_asVector3);
|
||||
break;
|
||||
case MaterialParameterType::Vector4:
|
||||
stream->Write((Float4*)¶m->AsData);
|
||||
stream->Write((Float4&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::Color:
|
||||
stream->Write(¶m->_asColor);
|
||||
stream->Write(param->_asColor);
|
||||
break;
|
||||
case MaterialParameterType::Matrix:
|
||||
stream->Write((Matrix*)¶m->AsData);
|
||||
stream->Write((Matrix&)param->AsData);
|
||||
break;
|
||||
case MaterialParameterType::NormalMap:
|
||||
case MaterialParameterType::Texture:
|
||||
case MaterialParameterType::CubeTexture:
|
||||
case MaterialParameterType::GameplayGlobal:
|
||||
id = param->_asAsset.GetID();
|
||||
stream->Write(&id);
|
||||
stream->Write(id);
|
||||
break;
|
||||
case MaterialParameterType::GPUTextureVolume:
|
||||
case MaterialParameterType::GPUTextureArray:
|
||||
case MaterialParameterType::GPUTextureCube:
|
||||
case MaterialParameterType::GPUTexture:
|
||||
id = param->_asGPUTexture.GetID();
|
||||
stream->Write(&id);
|
||||
stream->Write(id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1050,7 +1050,7 @@ void MaterialParams::Save(WriteStream* stream, const Array<SerializedMaterialPar
|
||||
|
||||
// Write properties
|
||||
stream->WriteByte(static_cast<byte>(param.Type));
|
||||
stream->Write(¶m.ID);
|
||||
stream->Write(param.ID);
|
||||
stream->WriteBool(param.IsPublic);
|
||||
stream->WriteBool(param.Override);
|
||||
stream->WriteString(param.Name, 10421);
|
||||
@@ -1073,19 +1073,19 @@ void MaterialParams::Save(WriteStream* stream, const Array<SerializedMaterialPar
|
||||
stream->WriteFloat(param.AsFloat);
|
||||
break;
|
||||
case MaterialParameterType::Vector2:
|
||||
stream->Write(¶m.AsFloat2);
|
||||
stream->Write(param.AsFloat2);
|
||||
break;
|
||||
case MaterialParameterType::Vector3:
|
||||
stream->Write(¶m.AsFloat3);
|
||||
stream->Write(param.AsFloat3);
|
||||
break;
|
||||
case MaterialParameterType::Vector4:
|
||||
stream->Write((Float4*)¶m.AsData);
|
||||
stream->Write((Float4&)param.AsData);
|
||||
break;
|
||||
case MaterialParameterType::Color:
|
||||
stream->Write(¶m.AsColor);
|
||||
stream->Write(param.AsColor);
|
||||
break;
|
||||
case MaterialParameterType::Matrix:
|
||||
stream->Write((Matrix*)¶m.AsData);
|
||||
stream->Write((Matrix&)param.AsData);
|
||||
break;
|
||||
case MaterialParameterType::NormalMap:
|
||||
case MaterialParameterType::Texture:
|
||||
@@ -1095,7 +1095,7 @@ void MaterialParams::Save(WriteStream* stream, const Array<SerializedMaterialPar
|
||||
case MaterialParameterType::GPUTextureCube:
|
||||
case MaterialParameterType::GPUTextureArray:
|
||||
case MaterialParameterType::GPUTexture:
|
||||
stream->Write(¶m.AsGuid);
|
||||
stream->Write(param.AsGuid);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -336,7 +336,7 @@ bool MeshData::Pack2Model(WriteStream* stream) const
|
||||
vb1.Normal = Float1010102(normal * 0.5f + 0.5f, 0);
|
||||
vb1.Tangent = Float1010102(tangent * 0.5f + 0.5f, static_cast<byte>(bitangentSign < 0 ? 1 : 0));
|
||||
vb1.LightmapUVs = Half2(lightmapUV);
|
||||
stream->Write(&vb1);
|
||||
stream->WriteBytes(&vb1, sizeof(vb1));
|
||||
|
||||
// Pack TBN matrix into a quaternion
|
||||
/*Quaternion quaternionTBN;
|
||||
@@ -360,7 +360,7 @@ bool MeshData::Pack2Model(WriteStream* stream) const
|
||||
for (uint32 i = 0; i < verticiecCount; i++)
|
||||
{
|
||||
vb2.Color = Color32(Colors[i]);
|
||||
stream->Write(&vb2);
|
||||
stream->WriteBytes(&vb2, sizeof(vb2));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -470,7 +470,7 @@ bool MeshData::Pack2SkinnedModel(WriteStream* stream) const
|
||||
vb.Tangent = Float1010102(tangent * 0.5f + 0.5f, static_cast<byte>(bitangentSign < 0 ? 1 : 0));
|
||||
vb.BlendIndices = Color32(blendIndices.X, blendIndices.Y, blendIndices.Z, blendIndices.W);
|
||||
vb.BlendWeights = Half4(blendWeights);
|
||||
stream->Write(&vb);
|
||||
stream->WriteBytes(&vb, sizeof(vb));
|
||||
}
|
||||
|
||||
// Index Buffer
|
||||
@@ -704,7 +704,7 @@ bool ModelData::Pack2ModelHeader(WriteStream* stream) const
|
||||
{
|
||||
auto& slot = Materials[materialSlotIndex];
|
||||
|
||||
stream->Write(&slot.AssetID);
|
||||
stream->Write(slot.AssetID);
|
||||
stream->WriteByte(static_cast<byte>(slot.ShadowsMode));
|
||||
stream->WriteString(slot.Name, 11);
|
||||
}
|
||||
@@ -793,7 +793,7 @@ bool ModelData::Pack2SkinnedModelHeader(WriteStream* stream) const
|
||||
{
|
||||
auto& slot = Materials[materialSlotIndex];
|
||||
|
||||
stream->Write(&slot.AssetID);
|
||||
stream->Write(slot.AssetID);
|
||||
stream->WriteByte(static_cast<byte>(slot.ShadowsMode));
|
||||
stream->WriteString(slot.Name, 11);
|
||||
}
|
||||
@@ -859,7 +859,7 @@ bool ModelData::Pack2SkinnedModelHeader(WriteStream* stream) const
|
||||
{
|
||||
auto& node = Skeleton.Nodes[nodeIndex];
|
||||
|
||||
stream->Write(&node.ParentIndex);
|
||||
stream->Write(node.ParentIndex);
|
||||
stream->WriteTransform(node.LocalTransform);
|
||||
stream->WriteString(node.Name, 71);
|
||||
}
|
||||
@@ -871,10 +871,10 @@ bool ModelData::Pack2SkinnedModelHeader(WriteStream* stream) const
|
||||
{
|
||||
auto& bone = Skeleton.Bones[boneIndex];
|
||||
|
||||
stream->Write(&bone.ParentIndex);
|
||||
stream->Write(&bone.NodeIndex);
|
||||
stream->Write(bone.ParentIndex);
|
||||
stream->Write(bone.NodeIndex);
|
||||
stream->WriteTransform(bone.LocalTransform);
|
||||
stream->Write(&bone.OffsetMatrix);
|
||||
stream->Write(bone.OffsetMatrix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ bool IsValidShaderCache(DataContainer<byte>& shaderCache, Array<String>& include
|
||||
String& include = includes.AddOne();
|
||||
stream.ReadString(&include, 11);
|
||||
DateTime lastEditTime;
|
||||
stream.Read(&lastEditTime);
|
||||
stream.Read(lastEditTime);
|
||||
|
||||
// Check if included file exists locally and has been modified since last compilation
|
||||
if (FileSystem::FileExists(include) && FileSystem::GetFileLastEditTime(include) > lastEditTime)
|
||||
|
||||
Reference in New Issue
Block a user