void ResourceThreadModel::Save(const ResourceRequest& request) { DALI_ASSERT_DEBUG(request.GetType()->id == ResourceModel); DALI_LOG_INFO(mLogFilter, Debug::Verbose, "%s(%s)\n", __PRETTY_FUNCTION__, request.GetPath().c_str()); bool success(false); BaseObject* baseObject = dynamic_cast<BaseObject*>(request.GetResource().Get()); if( baseObject != NULL ) { BaseHandle baseHandle(baseObject); ModelData modelData = ModelData::DownCast(baseHandle); if( modelData ) { scoped_ptr<BinaryModelBuilder> modelBuilder (new BinaryModelBuilder(request.GetPath().c_str())); if ( modelBuilder->Write(modelData) ) { success = true; // Construct SavedResource SavedResource resource( request.GetId(), request.GetType()->id); // Queue the loaded resource mResourceLoader.AddSavedResource(resource); } } } if( ! success ) { // add to the failed queue FailedResource resource(request.GetId(), FailureUnknown); mResourceLoader.AddFailedSave(resource); } }