mirror of
https://github.com/lubosz/overte.git
synced 2025-04-24 11:43:16 +02:00
more hacking
This commit is contained in:
parent
83d1cc911a
commit
45dbff67f8
7 changed files with 71 additions and 23 deletions
|
@ -101,3 +101,12 @@ void BoxEntityItem::computeShapeInfo(ShapeInfo& info) const {
|
|||
info.setBox(halfExtents);
|
||||
}
|
||||
|
||||
void BoxEntityItem::debugDump() const {
|
||||
quint64 now = usecTimestampNow();
|
||||
qDebug() << " BOX EntityItem id:" << getEntityItemID() << "---------------------------------------------";
|
||||
qDebug() << " color:" << _color[0] << "," << _color[1] << "," << _color[2];
|
||||
qDebug() << " position:" << debugTreeVector(_position);
|
||||
qDebug() << " dimensions:" << debugTreeVector(_dimensions);
|
||||
qDebug() << " getLastEdited:" << debugTime(getLastEdited(), now);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ public:
|
|||
|
||||
void computeShapeInfo(ShapeInfo& info) const;
|
||||
|
||||
virtual void debugDump() const;
|
||||
|
||||
protected:
|
||||
rgbColor _color;
|
||||
};
|
||||
|
|
|
@ -380,7 +380,11 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
float editedAgo = getEditedAgo();
|
||||
QString agoAsString = formatSecondsElapsed(editedAgo);
|
||||
QString ageAsString = formatSecondsElapsed(getAge());
|
||||
qDebug() << "------------------------------------------";
|
||||
qDebug() << "Loading entity " << getEntityItemID() << " from buffer...";
|
||||
qDebug() << "------------------------------------------";
|
||||
debugDump();
|
||||
qDebug() << "------------------------------------------";
|
||||
qDebug() << " _created =" << _created;
|
||||
qDebug() << " age=" << getAge() << "seconds - " << ageAsString;
|
||||
qDebug() << " lastEdited =" << lastEdited;
|
||||
|
@ -402,19 +406,17 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
|
||||
bool fromSameServerEdit = (lastEditedFromBuffer == _lastEditedFromRemoteInRemoteTime);
|
||||
|
||||
if (wantDebug) {
|
||||
if (true || wantDebug) {
|
||||
qDebug() << "data from server **************** ";
|
||||
qDebug() << " entityItemID=" << getEntityItemID();
|
||||
qDebug() << " now=" << now;
|
||||
qDebug() << " getLastEdited()=" << getLastEdited();
|
||||
qDebug() << " lastEditedFromBuffer=" << lastEditedFromBuffer << " (BEFORE clockskew adjust)";
|
||||
qDebug() << " clockSkew=" << clockSkew;
|
||||
qDebug() << " lastEditedFromBufferAdjusted=" << lastEditedFromBufferAdjusted << " (AFTER clockskew adjust)";
|
||||
qDebug() << " _lastEditedFromRemote=" << _lastEditedFromRemote
|
||||
<< " (our local time the last server edit we accepted)";
|
||||
qDebug() << " _lastEditedFromRemoteInRemoteTime=" << _lastEditedFromRemoteInRemoteTime
|
||||
<< " (remote time the last server edit we accepted)";
|
||||
qDebug() << " fromSameServerEdit=" << fromSameServerEdit;
|
||||
qDebug() << " entityItemID:" << getEntityItemID();
|
||||
qDebug() << " now:" << now;
|
||||
qDebug() << " getLastEdited:" << debugTime(getLastEdited(), now);
|
||||
qDebug() << " lastEditedFromBuffer:" << debugTime(lastEditedFromBuffer, now);
|
||||
qDebug() << " clockSkew:" << debugTimeOnly(clockSkew);
|
||||
qDebug() << " lastEditedFromBufferAdjusted:" << debugTime(lastEditedFromBufferAdjusted, now);
|
||||
qDebug() << " _lastEditedFromRemote:" << debugTime(_lastEditedFromRemote, now);
|
||||
qDebug() << " _lastEditedFromRemoteInRemoteTime:" << debugTime(_lastEditedFromRemoteInRemoteTime, now);
|
||||
qDebug() << " fromSameServerEdit:" << fromSameServerEdit;
|
||||
}
|
||||
|
||||
bool ignoreServerPacket = false; // assume we'll use this server packet
|
||||
|
@ -438,13 +440,15 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
|
||||
if (ignoreServerPacket) {
|
||||
overwriteLocalData = false;
|
||||
if (wantDebug) {
|
||||
if (true || wantDebug) {
|
||||
qDebug() << "IGNORING old data from server!!! ****************";
|
||||
debugDump();
|
||||
}
|
||||
} else {
|
||||
|
||||
if (wantDebug) {
|
||||
if (true || wantDebug) {
|
||||
qDebug() << "USING NEW data from server!!! ****************";
|
||||
debugDump();
|
||||
}
|
||||
|
||||
// don't allow _lastEdited to be in the future
|
||||
|
@ -464,9 +468,9 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
if (overwriteLocalData) {
|
||||
_lastUpdated = lastEditedFromBufferAdjusted + updateDelta; // don't adjust for clock skew since we already did that
|
||||
if (wantDebug) {
|
||||
qDebug() << "_lastUpdated =" << _lastUpdated;
|
||||
qDebug() << "_lastEdited=" << _lastEdited;
|
||||
qDebug() << "lastEditedFromBufferAdjusted=" << lastEditedFromBufferAdjusted;
|
||||
qDebug() << " _lastUpdated:" << debugTime(_lastUpdated, now);
|
||||
qDebug() << " _lastEdited:" << debugTime(_lastEdited, now);
|
||||
qDebug() << " lastEditedFromBufferAdjusted:" << debugTime(lastEditedFromBufferAdjusted, now);
|
||||
}
|
||||
}
|
||||
encodedUpdateDelta = updateDeltaCoder; // determine true length
|
||||
|
@ -482,15 +486,25 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
|||
if (overwriteLocalData) {
|
||||
_lastSimulated = lastEditedFromBufferAdjusted + simulatedDelta; // don't adjust for clock skew since we already did that
|
||||
if (wantDebug) {
|
||||
qDebug() << "_lastSimulated =" << _lastSimulated;
|
||||
qDebug() << "_lastEdited=" << _lastEdited;
|
||||
qDebug() << "lastEditedFromBufferAdjusted=" << lastEditedFromBufferAdjusted;
|
||||
qDebug() << " _lastSimulated:" << debugTime(_lastSimulated, now);
|
||||
qDebug() << " _lastEdited:" << debugTime(_lastEdited, now);
|
||||
qDebug() << " lastEditedFromBufferAdjusted:" << debugTime(lastEditedFromBufferAdjusted, now);
|
||||
}
|
||||
}
|
||||
encodedSimulatedDelta = simulatedDeltaCoder; // determine true length
|
||||
dataAt += encodedSimulatedDelta.size();
|
||||
bytesRead += encodedSimulatedDelta.size();
|
||||
}
|
||||
}
|
||||
|
||||
#if 1 //def WANT_DEBUG
|
||||
if (overwriteLocalData) {
|
||||
qDebug() << "EntityItem::readEntityDataFromBuffer()... changed entity:" << getEntityItemID();
|
||||
qDebug() << " getLastEdited:" << debugTime(getLastEdited(), now);
|
||||
qDebug() << " getLastSimulated:" << debugTime(getLastSimulated(), now);
|
||||
qDebug() << " getLastUpdated:" << debugTime(getLastUpdated(), now);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// Property Flags
|
||||
QByteArray encodedPropertyFlags = originalDataBuffer.mid(bytesRead); // maximum possible size
|
||||
|
@ -592,7 +606,7 @@ void EntityItem::adjustEditPacketForClockSkew(unsigned char* editPacketBuffer, s
|
|||
memcpy(&lastEditedInLocalTime, dataAt, sizeof(lastEditedInLocalTime));
|
||||
quint64 lastEditedInServerTime = lastEditedInLocalTime + clockSkew;
|
||||
memcpy(dataAt, &lastEditedInServerTime, sizeof(lastEditedInServerTime));
|
||||
const bool wantDebug = false;
|
||||
const bool wantDebug = true;
|
||||
if (wantDebug) {
|
||||
qDebug("EntityItem::adjustEditPacketForClockSkew()...");
|
||||
qDebug() << " lastEditedInLocalTime: " << lastEditedInLocalTime;
|
||||
|
|
|
@ -36,6 +36,10 @@ class EntityTreeElementExtraEncodeData;
|
|||
#define DONT_ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() = 0;
|
||||
#define ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() { };
|
||||
|
||||
#define debugTime(T, N) qPrintable(QString("%1 [ %2 ago]").arg(T, 16, 10).arg(formatUsecTime(N - T), 15))
|
||||
#define debugTimeOnly(T) qPrintable(QString("%1").arg(T, 16, 10))
|
||||
#define debugTreeVector(V) V << "[" << (V * (float)TREE_SCALE) << " in meters ]"
|
||||
|
||||
|
||||
/// EntityItem class this is the base class for all entity types. It handles the basic properties and functionality available
|
||||
/// to all other entity types. In particular: postion, size, rotation, age, lifetime, velocity, gravity. You can not instantiate
|
||||
|
|
|
@ -132,3 +132,14 @@ bool SphereEntityItem::findDetailedRayIntersection(const glm::vec3& origin, cons
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void SphereEntityItem::debugDump() const {
|
||||
quint64 now = usecTimestampNow();
|
||||
qDebug() << "SHPERE EntityItem id:" << getEntityItemID() << "---------------------------------------------";
|
||||
qDebug() << " color:" << _color[0] << "," << _color[1] << "," << _color[2];
|
||||
qDebug() << " position:" << debugTreeVector(_position);
|
||||
qDebug() << " dimensions:" << debugTreeVector(_dimensions);
|
||||
qDebug() << " getLastEdited:" << debugTime(getLastEdited(), now);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,6 +63,8 @@ public:
|
|||
bool& keepSearching, OctreeElement*& element, float& distance, BoxFace& face,
|
||||
void** intersectedObject, bool precisionPicking) const;
|
||||
|
||||
virtual void debugDump() const;
|
||||
|
||||
protected:
|
||||
virtual void recalculateCollisionShape();
|
||||
|
||||
|
|
|
@ -228,9 +228,15 @@ void EntityMotionState::sendUpdate(OctreeEditPacketSender* packetSender, uint32_
|
|||
// we only update lastEdited when we're sending new physics data
|
||||
// (i.e. NOT when we just simulate the positions forward, nore when we resend non-moving data)
|
||||
// NOTE: Andrew & Brad to discuss. Let's make sure we're using lastEdited, lastSimulated, and lastUpdated correctly
|
||||
quint64 lastSimulated = _entity->getLastSimulated();
|
||||
quint64 now = usecTimestampNow();
|
||||
quint64 lastSimulated = _entity->getLastSimulated(); // or now???
|
||||
_entity->setLastEdited(lastSimulated);
|
||||
properties.setLastEdited(lastSimulated);
|
||||
|
||||
qDebug() << "EntityMotionState::sendUpdate()";
|
||||
qDebug() << " EntityItemId:" << _entity->getEntityItemID() << "---------------------------------------------";
|
||||
qDebug() << " lastSimulated:" << debugTime(lastSimulated, now);
|
||||
|
||||
} else {
|
||||
properties.setLastEdited(_entity->getLastEdited());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue