You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

52 lines
1.1 KiB

#include <glm/glm.hpp>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "aixlog.hpp"
#include "entity.h"
#include "mesh.h"
#include "util.h"
#include "scene_loader.h"
bool
slLoadFile(const char* file_name, Entity* entity_array, uint& entity_count, uint max_entities)
{
if (entity_array == nullptr) {
LOG(ERROR) << "entity array not initialized\n";
return false;
}
rapidjson::Document doc;
char* contents = utilDumpTextFile(file_name);
if (contents == nullptr) {
LOG(ERROR) << "Error reading file: " << file_name << "\n";
return false;
}
if (doc.Parse(contents).HasParseError() || !doc.IsObject()) {
LOG(ERROR) << "Error parrsing scene file: " << file_name << "\n";
return false;
}
// entities
if (doc.HasMember("entities")) {
const rapidjson::Value& e = doc["entities"];
assert (e.IsArray());
for (uint i = 0; i < e.Size(); i++) {
assert(e[i].HasMember("name"));
assert(e[i]["name"].IsString());
assert(i < max_entities);
std::string s = e[i]["name"].GetString();
LOG(INFO) << "e[" << i << "][\"name\"]: " << s << "\n";
}
}
return true;
}