bool ModelImporter::LoadSettingsInternal() { if (!AssetImporter::LoadSettingsInternal()) return false; JSONValue import = jsonRoot_.GetChild("ModelImporter", JSON_OBJECT); SetDefaults(); if (import.HasMember("scale")) scale_ = import.GetFloat("scale"); if (import.HasMember("importAnimations")) importAnimations_ = import.GetBool("importAnimations"); if (import.HasMember("animInfo")) { JSONValue animInfo = import.GetChild("animInfo"); for (unsigned i = 0; i < animInfo.GetSize(); i++) { JSONValue anim = animInfo.GetChild(i); SharedPtr<AnimationImportInfo> info(new AnimationImportInfo(context_)); info->name_ = anim.GetString("name"); info->SetStartTime(anim.GetFloat("startTime")); info->SetEndTime(anim.GetFloat("endTime")); animationInfo_.Push(info); } } return true; }
static void ToRapidjsonValue(rapidjson::Value& rapidjsonValue, const JSONValue& jsonValue, rapidjson::MemoryPoolAllocator<>& allocator) { switch (jsonValue.GetValueType()) { case JSON_NULL: rapidjsonValue.SetNull(); break; case JSON_BOOL: rapidjsonValue.SetBool(jsonValue.GetBool()); break; case JSON_NUMBER: { switch (jsonValue.GetNumberType()) { case JSONNT_INT: rapidjsonValue.SetInt(jsonValue.GetInt()); break; case JSONNT_UINT: rapidjsonValue.SetUint(jsonValue.GetUInt()); break; default: rapidjsonValue.SetDouble(jsonValue.GetDouble()); break; } } break; case JSON_STRING: rapidjsonValue.SetString(jsonValue.GetCString(), allocator); break; case JSON_ARRAY: { const JSONArray& jsonArray = jsonValue.GetArray(); rapidjsonValue.SetArray(); rapidjsonValue.Reserve(jsonArray.Size(), allocator); for (unsigned i = 0; i < jsonArray.Size(); ++i) { rapidjson::Value value; rapidjsonValue.PushBack(value, allocator); ToRapidjsonValue(rapidjsonValue[i], jsonArray[i], allocator); } } break; case JSON_OBJECT: { const JSONObject& jsonObject = jsonValue.GetObject(); rapidjsonValue.SetObject(); for (JSONObject::ConstIterator i = jsonObject.Begin(); i != jsonObject.End(); ++i) { const char* name = i->first_.CString(); rapidjson::Value value; rapidjsonValue.AddMember(name, value, allocator); ToRapidjsonValue(rapidjsonValue[name], i->second_, allocator); } } break; default: break; } }