diff options
Diffstat (limited to 'src/resources/sprite')
-rw-r--r-- | src/resources/sprite/spritedef.cpp | 37 | ||||
-rw-r--r-- | src/resources/sprite/spritedef.h | 4 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/resources/sprite/spritedef.cpp b/src/resources/sprite/spritedef.cpp index d157028ef..ba3abaec9 100644 --- a/src/resources/sprite/spritedef.cpp +++ b/src/resources/sprite/spritedef.cpp @@ -593,3 +593,40 @@ bool SpriteDef::addSequence(const int start, } return false; } + +int SpriteDef::calcMemoryLocal() +{ + int sz = sizeof(SpriteDef) + + sizeof(ImageSets) + + sizeof(Actions) + + sizeof(std::set<std::string>) + + Resource::calcMemoryLocal(); + FOR_EACH (std::set<std::string>::const_iterator, it, mProcessedFiles) + { + sz += (*it).capacity(); + } + return sz; +} + +int SpriteDef::calcMemoryChilds(const int level) +{ + int sz = 0; + FOR_EACH (ImageSets::iterator, it, mImageSets) + { + sz += (*it).first.capacity(); + ImageSet *const imageSet = (*it).second; + sz += imageSet->calcMemory(level + 1); + } + FOR_EACH (ActionsIter, it, mActions) + { + sz += sizeof(unsigned); + ActionMap *const actionMap = (*it).second; + FOR_EACHP (ActionMap::iterator, it2, actionMap) + { + sz += (*it2).first.capacity(); + Action *const action = (*it2).second; + sz += action->calcMemory(level + 1); + } + } + return sz; +} diff --git a/src/resources/sprite/spritedef.h b/src/resources/sprite/spritedef.h index c7a86f1e6..aea602cee 100644 --- a/src/resources/sprite/spritedef.h +++ b/src/resources/sprite/spritedef.h @@ -68,6 +68,10 @@ class SpriteDef final : public Resource void addAction(const unsigned hp, const std::string &name, Action *const action); + int calcMemoryLocal() override final; + + int calcMemoryChilds(const int level) override final; + static bool addSequence(const int start, const int end, const int delay, |