bool SceneLoader::Load(SECore::Scene* scene, const TCHAR* filename) { bool ret = false; Json::Value root; CHECK(scene); CHECK(LoadJsonFromFile(filename, root)); if (root.isMember("Config")) { const Json::Value& configRoot = root["Config"]; if (configRoot.isMember("ShowGizmo")) scene->GetConfig()->EnableGizmo(configRoot["ShowGizmo"].asBool()); if (configRoot.isMember("AmbientColor")) { scene->GetConfig()->SetAmbientColor(Json2Color(configRoot["AmbientColor"])); } } CHECK(root.isMember("Entities")); CHECK(root["Entities"].isArray()); size_t entityCount = root["Entities"].size(); for (size_t i = 0; i < entityCount; ++i) { SECore::Scene::Entity* entity = scene->CreateEntity(); const Json::Value& entityRoot = root["Entities"][i]; if (entityRoot.isMember("Prefab")) { CString filename = MStr2WStr(entityRoot["Prefab"].asCString()); Json::Value prefab; LoadJsonFromFile(filename, prefab); LoadEntity(scene->GetCore(), entity, prefab); } LoadEntity(scene->GetCore(), entity, entityRoot); } size_t lightCount = root["Lights"].size(); for (size_t i = 0; i < lightCount; i++) { LoadLight(scene, root["Lights"][i]); } ret = true; Exit0: return ret; }
Json::Value ReadDisplayData() { Json::Value jsonData; char filePath[MAX_PATH]; sprintf_s(filePath, "%s/DBM_MuseumData.json", GetUserDirectory().c_str()); LoadJsonFromFile(filePath, jsonData); return jsonData; }