MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / writeNetDelta

Method writeNetDelta

source/core/StarNetElementDynamicGroup.hpp:203–242  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

201
202template <typename Element>
203bool NetElementDynamicGroup<Element>::writeNetDelta(DataStream& ds, uint64_t fromVersion, NetCompatibilityRules rules) const {
204 if (!checkWithRules(rules)) return false;
205 if (fromVersion < m_changeDataLastVersion) {
206 ds.write<bool>(true);
207 netStore(ds, rules);
208 return true;
209
210 } else {
211 bool deltaWritten = false;
212 auto willWrite = [&]() {
213 if (!deltaWritten) {
214 deltaWritten = true;
215 ds.write<bool>(false);
216 }
217 };
218
219 for (auto const& p : m_changeData) {
220 if (p.first >= fromVersion) {
221 willWrite();
222 ds.writeVlqU(1);
223 ds.write(p.second);
224 }
225 }
226
227 m_buffer.setStreamCompatibilityVersion(rules);
228 for (auto& p : m_idMap) {
229 if (p.second->writeNetDelta(m_buffer, fromVersion, rules)) {
230 willWrite();
231 ds.writeVlqU(p.first + 1);
232 ds.writeBytes(m_buffer.data());
233 m_buffer.clear();
234 }
235 }
236
237 if (deltaWritten)
238 ds.writeVlqU(0);
239
240 return deltaWritten;
241 }
242}
243
244template <typename Element>
245void NetElementDynamicGroup<Element>::readNetDelta(DataStream& ds, float interpolationTime, NetCompatibilityRules rules) {

Callers

nothing calls this directly

Calls 6

writeVlqUMethod · 0.80
writeMethod · 0.45
writeBytesMethod · 0.45
dataMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected