#pragma once #include namespace td { template sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const Vec2& a_Vec) { return a_Buffer << a_Vec.x << a_Vec.y; } template sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, Vec2& a_Vec) { return a_Buffer >> a_Vec.x >> a_Vec.y; } template sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const Vec3& a_Vec) { return a_Buffer << a_Vec.x << a_Vec.y << a_Vec.z; } template sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, Vec3& a_Vec) { return a_Buffer >> a_Vec.x >> a_Vec.y >> a_Vec.z; } template sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const Vec4& a_Vec) { return a_Buffer << a_Vec.x << a_Vec.y << a_Vec.z << a_Vec.w; } template sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, Vec4& a_Vec) { return a_Buffer >> a_Vec.x >> a_Vec.y >> a_Vec.z >> a_Vec.w; } namespace game { sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const TeamCastle& a_Castle); sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, TeamCastle& a_Castle); sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const ChunkPtr& a_Chunk); sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, ChunkPtr& a_Chunk); sp::DataBuffer& operator<<(sp::DataBuffer& buffer, const TilePtr& tile); sp::DataBuffer& operator>>(sp::DataBuffer& buffer, TilePtr& tile); } // namespace game } // namespace td