void SkeletonAnimationManager::ReloadAssets()
		{
			Engine *eng = Engine::Get();

			const ResourcePool<SkeletonAnimation>::Iterator end = resPool->End();
			for(ResourcePool<SkeletonAnimation>::Iterator iter = resPool->Begin(); iter != end; ++iter) {
				SkeletonAnimation *skelAnim = iter.Ptr();
				Rid rid = skelAnim->rid;
				if(rid != RID_NONE) {
					skelAnim->~SkeletonAnimation();
					new(skelAnim) SkeletonAnimation();
					skelAnim->Load(rid);
				}
			}
		}
		bool SkeletonAnimationManager::ReloadAsset(Rid rid)
		{
			Handle handle = resPool->Match(Resource::FindPredicate<SkeletonAnimation>(rid)) | managerId;
			if(handle == HANDLE_NONE) {
				return false;
			}
			SkeletonAnimation *skelAnim = resPool->Get(handle & HANDLE_VALUE_MASK);
			resPool->Free(handle & HANDLE_VALUE_MASK);

			if(rid != RID_NONE) {
				skelAnim->~SkeletonAnimation();
				new(skelAnim) SkeletonAnimation();
				return skelAnim->Load(rid);
			}
			return true;
		}
		Handle SkeletonAnimationManager::Load(Rid rid)
		{
			Handle handle = resPool->Match(Resource::FindPredicate<SkeletonAnimation>(rid)) | managerId;
			if(handle != HANDLE_NONE) {
				return handle;
			}

			handle = resPool->Alloc() | managerId;
			SkeletonAnimation *skelAnim = resPool->Get(handle & HANDLE_VALUE_MASK);
			new(skelAnim) SkeletonAnimation();
		
			if(!skelAnim->Load(rid)) {
				resPool->Free(handle & HANDLE_VALUE_MASK);
				return HANDLE_NONE;
			}
			return handle;
		}