v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
88
source/core/StarNetElementSyncGroup.cpp
Normal file
88
source/core/StarNetElementSyncGroup.cpp
Normal file
|
@ -0,0 +1,88 @@
|
|||
#include "StarNetElementSyncGroup.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
void NetElementSyncGroup::enableNetInterpolation(float extrapolationHint) {
|
||||
NetElementGroup::enableNetInterpolation(extrapolationHint);
|
||||
if (m_hasRecentChanges)
|
||||
netElementsNeedLoad(false);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::disableNetInterpolation() {
|
||||
NetElementGroup::disableNetInterpolation();
|
||||
if (m_hasRecentChanges)
|
||||
netElementsNeedLoad(false);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::tickNetInterpolation(float dt) {
|
||||
NetElementGroup::tickNetInterpolation(dt);
|
||||
if (m_hasRecentChanges) {
|
||||
m_recentDeltaTime -= dt;
|
||||
if (netInterpolationEnabled())
|
||||
netElementsNeedLoad(false);
|
||||
|
||||
if (m_recentDeltaTime < 0.0f && m_recentDeltaWasBlank)
|
||||
m_hasRecentChanges = false;
|
||||
}
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::netStore(DataStream& ds) const {
|
||||
const_cast<NetElementSyncGroup*>(this)->netElementsNeedStore();
|
||||
return NetElementGroup::netStore(ds);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::netLoad(DataStream& ds) {
|
||||
NetElementGroup::netLoad(ds);
|
||||
netElementsNeedLoad(true);
|
||||
}
|
||||
|
||||
bool NetElementSyncGroup::writeNetDelta(DataStream& ds, uint64_t fromVersion) const {
|
||||
const_cast<NetElementSyncGroup*>(this)->netElementsNeedStore();
|
||||
return NetElementGroup::writeNetDelta(ds, fromVersion);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::readNetDelta(DataStream& ds, float interpolationTime) {
|
||||
NetElementGroup::readNetDelta(ds, interpolationTime);
|
||||
|
||||
m_hasRecentChanges = true;
|
||||
m_recentDeltaTime = interpolationTime;
|
||||
m_recentDeltaWasBlank = false;
|
||||
|
||||
netElementsNeedLoad(false);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::blankNetDelta(float interpolationTime) {
|
||||
NetElementGroup::blankNetDelta(interpolationTime);
|
||||
|
||||
if (!m_recentDeltaWasBlank) {
|
||||
m_recentDeltaTime = interpolationTime;
|
||||
m_recentDeltaWasBlank = true;
|
||||
}
|
||||
|
||||
if (m_hasRecentChanges && netInterpolationEnabled())
|
||||
netElementsNeedLoad(false);
|
||||
}
|
||||
|
||||
void NetElementSyncGroup::netElementsNeedLoad(bool) {}
|
||||
|
||||
void NetElementSyncGroup::netElementsNeedStore() {}
|
||||
|
||||
void NetElementCallbackGroup::setNeedsLoadCallback(function<void(bool)> needsLoadCallback) {
|
||||
m_netElementsNeedLoad = move(needsLoadCallback);
|
||||
}
|
||||
|
||||
void NetElementCallbackGroup::setNeedsStoreCallback(function<void()> needsStoreCallback) {
|
||||
m_netElementsNeedStore = move(needsStoreCallback);
|
||||
}
|
||||
|
||||
void NetElementCallbackGroup::netElementsNeedLoad(bool load) {
|
||||
if (m_netElementsNeedLoad)
|
||||
m_netElementsNeedLoad(load);
|
||||
}
|
||||
|
||||
void NetElementCallbackGroup::netElementsNeedStore() {
|
||||
if (m_netElementsNeedStore)
|
||||
m_netElementsNeedStore();
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue