void gameScene::loadLevel(std::string level) { if (gWorld) delete gWorld; gWorld = new world(); initLisp(); std::stringstream ss; ss << path << "levels/" << level << "/"; std::string levelpath = ss.str(); ss << "info.json"; Json::Value root = jsonParseFile(ss.str()); if (root.isNull()) return; std::cout << root["name"].asString() << "\n" << root["description"].asString() << "\n"; if (root["staticmeshes"].isArray()) { for (unsigned int i = 0; i < root["staticmeshes"].size(); i++) { gWorld->addObject(staticFromJson(root["staticmeshes"][i], levelpath)); if (!root["staticmeshes"][i]["tag"].isNull()) (*gWorld->tags)[root["staticmeshes"][i]["tag"].asString()] = tag(tag::body, gWorld->objects.size() - 1); } } if (root["dynamics"].isArray()) { for (unsigned int i = 0; i < root["dynamics"].size(); i++) { gWorld->addObject(dynamicFromJson(root["dynamics"][i], levelpath)); if (!root["dynamics"][i]["tag"].isNull()) (*gWorld->tags)[root["dynamics"][i]["tag"].asString()] = tag(tag::body, gWorld->objects.size() - 1); } } if (root["constraints"].isArray()) { for (unsigned int i = 0; i < root["constraints"].size(); i++) { gWorld->addConstraint(constraintFromJson(root["constraints"][i], gWorld)); } } if (root["assemblies"].isArray()) { for (unsigned int i = 0; i < root["assemblies"].size(); i++) { Json::Value obj = root["assemblies"][i]; btVector3 pos = jsonVector(obj["position"]); btQuaternion orientation = jsonQuaternion(obj["orientation"]); if (!obj["name"].isNull()) loadAssembly(obj["name"].asString(), btTransform(orientation, pos), path, gWorld); } } }
game::game() { Json::Value matroot = jsonParseFile("data/materials.json"); for (unsigned int i = 0; i < matroot.size(); i++) materials.push_back(new material(matroot[i])); wld = new phys::world(); loadDepth("data/depth.png"); buoyancy = 4.0; strength = 0.01; waveheight = 1.0; waterpressure = 0.3; seadepth = 150; showstress = false; quickwaterfix = false; assertSettings(); }