Exemplo n.º 1
0
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);
        }
    }
}
Exemplo n.º 2
0
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();
}