Assorted Filesystem Related Questions

This is a thread for me to ask assorted questions about Filesystem related functions (such as GetInternalPath, AddTrailingSlash, etc.) and their usages while working on adding a Path class to Urho instead of just String and a handful of functions.

To start things off, why is GetInternalPath used here and not ResourceCache::SanitateResourceName?

void AnimationController::FindAnimation(const String& name, unsigned& index, AnimationState*& state) const
{
    StringHash nameHash(GetInternalPath(name));
...

I think this may mainly be an optimization; SanitateResourceName is more complex and FindAnimation is called by almost all of AnimationController's member functions.

Seems plausible. If that’s the case, though, I think we should probably not call GetInternalPath and just require the user to pass a proper (internal, trimmed) string. I don’t plan on doing either option, that’s just my thoughts on the matter.

Another option would be to add #ifdef _WIN32 either within GetInternalPath or anywhere the function is used. I expect this would not cause problems since GetNativePath also assumes no modification to the string are required when operating outside of bat country (aka Windows).