add PIMathVectors JSON serialization

This commit is contained in:
2026-03-05 11:58:34 +03:00
parent 9588b48105
commit 46f86b6591

View File

@@ -219,6 +219,22 @@ inline PIJSON piSerializeJSON(const PIMap<K, T> & v) {
return ret; return ret;
} }
template<typename T>
inline PIJSON piSerializeJSON(const PIMathVector<T> & v) {
PIJSON ret;
for (uint i = 0; i < v.size(); ++i)
ret << piSerializeJSON(v[i]);
return ret;
}
template<uint Size, typename T>
inline PIJSON piSerializeJSON(const PIMathVectorT<Size, T> & v) {
PIJSON ret;
for (uint i = 0; i < v.size(); ++i)
ret << piSerializeJSON(v[i]);
return ret;
}
// --- // ---
// deserialize, piDeserializeJSON(T, PIJSON) // deserialize, piDeserializeJSON(T, PIJSON)
@@ -398,6 +414,24 @@ inline void piDeserializeJSON(PIMap<K, T> & v, const PIJSON & js) {
piDeserializeJSON(v[PIVariant(it.key()).value<K>()], it.value()); piDeserializeJSON(v[PIVariant(it.key()).value<K>()], it.value());
} }
template<typename T>
inline void piDeserializeJSON(PIMathVector<T> & v, const PIJSON & js) {
v = {};
if (!js.isArray()) return;
v = PIMathVector<T>(js.size());
for (int i = 0; i < js.size(); ++i)
piDeserializeJSON(v[i], js[i]);
}
template<uint Size, typename T>
inline void piDeserializeJSON(PIMathVectorT<Size, T> & v, const PIJSON & js) {
v = PIMathVectorT<Size, T>();
if (!js.isArray()) return;
int cnt = piMini(js.size(), Size);
for (int i = 0; i < cnt; ++i)
piDeserializeJSON(v[i], js[i]);
}
// --- // ---
// PIJSON static wrapper // PIJSON static wrapper