bool ShapesScene::addFromJsonFile(const std::string &path, std::string &errorReason)
{
	json11::Json json;
	if (FILE *file = fopen(path.c_str(), "r")) {
		std::string jsonContent;
		std::array<char, 64 * 1024> buffer;
		while (size_t len = fread(buffer.data(), sizeof(char), buffer.size(), file))
			jsonContent.append(buffer.data(), len);
		if (ferror(file)) {
			fclose(file);
			errorReason = "Failed to completely read scene file content";
			return false;
		}
		fclose(file);
		json = json11::Json::parse(jsonContent, errorReason);
		if (json.is_null())
			return false;
	} else {
		errorReason = "Failed to read scene file content";
		return false;
	}
	std::string incorrectJson;
	if (!addFromJson(json, incorrectJson)) {
		errorReason = "Scene file corrupted, incorrect JSON part: " + incorrectJson;
		return false;
	}
	return true;
}
Esempio n. 2
0
    ResourceMap(ResourcePackage package) {
        m_name = package.getName();
        m_type = package.getType();

        for (json11::Json j : package.getJsonManifest()) {
            if (j["type"].string_value() == T::getTypeName()) {
                addFromJson(j);
            }
        }
    }