Hello @Havremunken,
no, you did everything correctly, the upper integer boundary is a bit overkill, but should work. Regarding CheckDirty, no, you do not have to enable something, you just replace the default implementation (which does nothing). And you do not need HierarchyHelp, my instructions might have been a bit misleading. You are evaluating/setting your own dirtiness here, so if there is a cache or not is irrelevant for you, you just implement additional factors which should make you dirty. As shown by the example in the docs, you could for example tie your own dirtiness to a change in time.
void CheckDirty(BaseObject* op, const BaseDocument* doc) { if (doc->GetTime()!=cached_time) { cached_time = doc->GetTime(); op->SetDirty(DIRTYFLAGS::DATA); } }In your case you would probably just also make yourself dirty when your font object is dirty.
And yes, please share your code, I could speculate into other directions - you could also try NodeData::GetAccessedObjects - but that will lead to nothing when I send you off into random directions without a clear sense of what your code is doing.
Cheers,
Ferdinand