- added more crc capture data to track down oos
This commit is contained in:
parent
23963e537d
commit
83055456d2
|
@ -155,9 +155,13 @@ Vec2i UnitPathBasic::pop(bool removeFrontPos) {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
std::string UnitPathBasic::toString() const {
|
std::string UnitPathBasic::toString() const {
|
||||||
std::string result = "unit path blockCount = " + intToStr(blockCount) + " pathQueue size = " + intToStr(pathQueue.size());
|
std::string result = "unit path blockCount = " + intToStr(blockCount) + "\npathQueue size = " + intToStr(pathQueue.size());
|
||||||
for(int idx = 0; idx < pathQueue.size(); ++idx) {
|
for(int idx = 0; idx < pathQueue.size(); ++idx) {
|
||||||
result += " index = " + intToStr(idx) + " " + pathQueue[idx].getString();
|
result += " index = " + intToStr(idx) + " value = " + pathQueue[idx].getString();
|
||||||
|
}
|
||||||
|
result += "\nlastPathCacheQueue size = " + intToStr(lastPathCacheQueue.size());
|
||||||
|
for(int idx = 0; idx < lastPathCacheQueue.size(); ++idx) {
|
||||||
|
result += " index = " + intToStr(idx) + " value = " + lastPathCacheQueue[idx].getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -209,6 +213,16 @@ void UnitPathBasic::loadGame(const XmlNode *rootNode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Checksum UnitPathBasic::getCRC() {
|
||||||
|
Checksum crcForPath;
|
||||||
|
|
||||||
|
crcForPath.addInt(blockCount);
|
||||||
|
crcForPath.addInt(pathQueue.size());
|
||||||
|
crcForPath.addInt(lastPathCacheQueue.size());
|
||||||
|
|
||||||
|
return crcForPath;
|
||||||
|
}
|
||||||
|
|
||||||
// =====================================================
|
// =====================================================
|
||||||
// class UnitPath
|
// class UnitPath
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
@ -3858,11 +3872,14 @@ bool Unit::isMeetingPointSettable() const {
|
||||||
return (type != NULL ? type->getMeetingPoint() : false);
|
return (type != NULL ? type->getMeetingPoint() : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Unit::getFrameCount() const {
|
uint32 Unit::getFrameCount() const {
|
||||||
int frameCount = 0;
|
uint32 frameCount = 0;
|
||||||
const Game *game = Renderer::getInstance().getGame();
|
//const Game *game = Renderer::getInstance().getGame();
|
||||||
if(game != NULL && game->getWorld() != NULL) {
|
if(game != NULL && game->getWorld() != NULL) {
|
||||||
frameCount = game->getWorld()->getFrameCount();
|
int frameCountAsInt = game->getWorld()->getFrameCount();
|
||||||
|
if(frameCountAsInt >= 0) {
|
||||||
|
frameCount = frameCountAsInt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return frameCount;
|
return frameCount;
|
||||||
|
@ -4522,7 +4539,7 @@ void Unit::saveGame(XmlNode *rootNode) {
|
||||||
// bool ignoreCheckCommand;
|
// bool ignoreCheckCommand;
|
||||||
unitNode->addAttribute("ignoreCheckCommand",intToStr(ignoreCheckCommand), mapTagReplacements);
|
unitNode->addAttribute("ignoreCheckCommand",intToStr(ignoreCheckCommand), mapTagReplacements);
|
||||||
// uint32 lastStuckFrame;
|
// uint32 lastStuckFrame;
|
||||||
unitNode->addAttribute("lastStuckFrame",intToStr(lastStuckFrame), mapTagReplacements);
|
unitNode->addAttribute("lastStuckFrame",uIntToStr(lastStuckFrame), mapTagReplacements);
|
||||||
// Vec2i lastStuckPos;
|
// Vec2i lastStuckPos;
|
||||||
unitNode->addAttribute("lastStuckPos",lastStuckPos.getString(), mapTagReplacements);
|
unitNode->addAttribute("lastStuckPos",lastStuckPos.getString(), mapTagReplacements);
|
||||||
// uint32 lastPathfindFailedFrame;
|
// uint32 lastPathfindFailedFrame;
|
||||||
|
@ -5136,6 +5153,10 @@ Checksum Unit::getCRC() {
|
||||||
|
|
||||||
//Map *map;
|
//Map *map;
|
||||||
//UnitPathInterface *unitPath;
|
//UnitPathInterface *unitPath;
|
||||||
|
if(unitPath != NULL) {
|
||||||
|
uint32 crc = unitPath->getCRC().getSum();
|
||||||
|
crcForUnit.addBytes(&crc,sizeof(uint32));
|
||||||
|
}
|
||||||
//WaypointPath waypointPath;
|
//WaypointPath waypointPath;
|
||||||
|
|
||||||
if(consoleDebug) printf("#11 Unit: %d CRC: %u commands.size(): %ld\n",id,crcForUnit.getSum(),commands.size());
|
if(consoleDebug) printf("#11 Unit: %d CRC: %u commands.size(): %ld\n",id,crcForUnit.getSum(),commands.size());
|
||||||
|
@ -5196,7 +5217,7 @@ Checksum Unit::getCRC() {
|
||||||
//bool ignoreCheckCommand;
|
//bool ignoreCheckCommand;
|
||||||
|
|
||||||
//uint32 lastStuckFrame;
|
//uint32 lastStuckFrame;
|
||||||
crcForUnit.addInt(lastStuckFrame);
|
crcForUnit.addUInt(lastStuckFrame);
|
||||||
//Vec2i lastStuckPos;
|
//Vec2i lastStuckPos;
|
||||||
crcForUnit.addInt(lastStuckPos.x);
|
crcForUnit.addInt(lastStuckPos.x);
|
||||||
crcForUnit.addInt(lastStuckPos.y);
|
crcForUnit.addInt(lastStuckPos.y);
|
||||||
|
|
|
@ -164,6 +164,8 @@ public:
|
||||||
virtual void loadGame(const XmlNode *rootNode) = 0;
|
virtual void loadGame(const XmlNode *rootNode) = 0;
|
||||||
|
|
||||||
virtual void clearCaches() = 0;
|
virtual void clearCaches() = 0;
|
||||||
|
|
||||||
|
virtual Checksum getCRC() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class UnitPathBasic : public UnitPathInterface {
|
class UnitPathBasic : public UnitPathInterface {
|
||||||
|
@ -214,6 +216,8 @@ public:
|
||||||
virtual void saveGame(XmlNode *rootNode);
|
virtual void saveGame(XmlNode *rootNode);
|
||||||
virtual void loadGame(const XmlNode *rootNode);
|
virtual void loadGame(const XmlNode *rootNode);
|
||||||
virtual void clearCaches();
|
virtual void clearCaches();
|
||||||
|
|
||||||
|
virtual Checksum getCRC();
|
||||||
};
|
};
|
||||||
|
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
@ -275,6 +279,8 @@ public:
|
||||||
virtual void saveGame(XmlNode *rootNode) {};
|
virtual void saveGame(XmlNode *rootNode) {};
|
||||||
virtual void loadGame(const XmlNode *rootNode) {};
|
virtual void loadGame(const XmlNode *rootNode) {};
|
||||||
virtual void clearCaches() {};
|
virtual void clearCaches() {};
|
||||||
|
|
||||||
|
virtual Checksum getCRC() { return Checksum(); };
|
||||||
};
|
};
|
||||||
|
|
||||||
class WaypointPath : public list<Vec2i> {
|
class WaypointPath : public list<Vec2i> {
|
||||||
|
@ -751,7 +757,7 @@ public:
|
||||||
|
|
||||||
bool isLastStuckFrameWithinCurrentFrameTolerance(bool evalMode);
|
bool isLastStuckFrameWithinCurrentFrameTolerance(bool evalMode);
|
||||||
inline uint32 getLastStuckFrame() const { return lastStuckFrame; }
|
inline uint32 getLastStuckFrame() const { return lastStuckFrame; }
|
||||||
inline void setLastStuckFrame(uint32 value) { lastStuckFrame = value; }
|
//inline void setLastStuckFrame(uint32 value) { lastStuckFrame = value; }
|
||||||
void setLastStuckFrameToCurrentFrame();
|
void setLastStuckFrameToCurrentFrame();
|
||||||
|
|
||||||
inline Vec2i getLastStuckPos() const { return lastStuckPos; }
|
inline Vec2i getLastStuckPos() const { return lastStuckPos; }
|
||||||
|
@ -805,7 +811,7 @@ private:
|
||||||
void stopDamageParticles(bool force);
|
void stopDamageParticles(bool force);
|
||||||
void startDamageParticles();
|
void startDamageParticles();
|
||||||
|
|
||||||
int getFrameCount() const;
|
uint32 getFrameCount() const;
|
||||||
void checkCustomizedParticleTriggers(bool force);
|
void checkCustomizedParticleTriggers(bool force);
|
||||||
bool checkModelStateInfoForNewHpValue();
|
bool checkModelStateInfoForNewHpValue();
|
||||||
void checkUnitLevel();
|
void checkUnitLevel();
|
||||||
|
|
|
@ -701,8 +701,8 @@ void World::updateAllFactionUnits() {
|
||||||
|
|
||||||
int unitBlockCount = unit->getPath()->getBlockCount();
|
int unitBlockCount = unit->getPath()->getBlockCount();
|
||||||
bool isStuck = unit->getPath()->isStuck();
|
bool isStuck = unit->getPath()->isStuck();
|
||||||
bool isStuckWithinTolerance = unit->isLastStuckFrameWithinCurrentFrameTolerance(false);
|
//bool isStuckWithinTolerance = unit->isLastStuckFrameWithinCurrentFrameTolerance(false);
|
||||||
uint32 lastStuckFrame = unit->getLastStuckFrame();
|
//uint32 lastStuckFrame = unit->getLastStuckFrame();
|
||||||
|
|
||||||
if(unitUpdater.updateUnit(unit) == true) {
|
if(unitUpdater.updateUnit(unit) == true) {
|
||||||
unitCountUpdated++;
|
unitCountUpdated++;
|
||||||
|
@ -716,7 +716,8 @@ void World::updateAllFactionUnits() {
|
||||||
totalUnitsChecked++;
|
totalUnitsChecked++;
|
||||||
|
|
||||||
if(showPerfStats && chronoPerfUnit.getMillis() >= 10) {
|
if(showPerfStats && chronoPerfUnit.getMillis() >= 10) {
|
||||||
sprintf(perfBuf,"In [%s::%s] Line: %d took msecs: " MG_I64_SPECIFIER " stuck: %d [%d] for unit:\n%sBEFORE unitBlockCount = %d, AFTER = %d, BEFORE lastStuckFrame = %u, AFTER: %u\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,chronoPerfUnit.getMillis(),isStuck,isStuckWithinTolerance,unit->toString().c_str(),unitBlockCount,unit->getPath()->getBlockCount(),lastStuckFrame,unit->getLastStuckFrame());
|
//sprintf(perfBuf,"In [%s::%s] Line: %d took msecs: " MG_I64_SPECIFIER " stuck: %d [%d] for unit:\n%sBEFORE unitBlockCount = %d, AFTER = %d, BEFORE lastStuckFrame = %u, AFTER: %u\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,chronoPerfUnit.getMillis(),isStuck,isStuckWithinTolerance,unit->toString().c_str(),unitBlockCount,unit->getPath()->getBlockCount(),lastStuckFrame,unit->getLastStuckFrame());
|
||||||
|
sprintf(perfBuf,"In [%s::%s] Line: %d took msecs: " MG_I64_SPECIFIER " stuck: %d for unit:\n%sBEFORE unitBlockCount = %d, AFTER = %d, BEFORE , AFTER: %u\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,chronoPerfUnit.getMillis(),isStuck,unit->toString().c_str(),unitBlockCount,unit->getPath()->getBlockCount(),unit->getLastStuckFrame());
|
||||||
perfList.push_back(perfBuf);
|
perfList.push_back(perfBuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ public:
|
||||||
uint32 addBytes(const void *_data, size_t _size);
|
uint32 addBytes(const void *_data, size_t _size);
|
||||||
void addString(const string &value);
|
void addString(const string &value);
|
||||||
uint32 addInt(const int32 &value);
|
uint32 addInt(const int32 &value);
|
||||||
|
uint32 addUInt(const uint32 &value);
|
||||||
uint32 addInt64(const int64 &value);
|
uint32 addInt64(const int64 &value);
|
||||||
void addFile(const string &path);
|
void addFile(const string &path);
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,19 @@ uint32 Checksum::addInt(const int32 &value) {
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32 Checksum::addUInt(const uint32 &value) {
|
||||||
|
int8 byte = (value >> 0) & 0xFF;
|
||||||
|
addByte(byte);
|
||||||
|
byte = (value >> 8) & 0xFF;
|
||||||
|
addByte(byte);
|
||||||
|
byte = (value >> 16) & 0xFF;
|
||||||
|
addByte(byte);
|
||||||
|
byte = (value >> 24) & 0xFF;
|
||||||
|
addByte(byte);
|
||||||
|
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
uint32 Checksum::addInt64(const int64 &value) {
|
uint32 Checksum::addInt64(const int64 &value) {
|
||||||
int8 byte = (value >> 0) & 0xFF;
|
int8 byte = (value >> 0) & 0xFF;
|
||||||
addByte(byte);
|
addByte(byte);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user