void Level1Part1::initGameObjects(){ // Boden Für Alle MapParts auto normalGround = new Ground(Vektoria::CHVector(2, 2.0, 42)); normalGround->setName("NormalGround"); normalGround->GetRigidBody()->GetCollider()->SetLayer(normalGround->getName()); normalGround->getPlacement()->Translate(0, -1.0, -20); addGameObject(normalGround); // Fallenboden Für Alle MapParts auto pitGround = new Ground(Vektoria::CHVector(10, 2.0, 42)); pitGround->setName("PitGround"); pitGround->GetRigidBody()->GetCollider()->SetLayer(pitGround->getName()); pitGround->getPlacement()->Translate(0, -1.5, -20); addGameObject(pitGround); PhysicsModule* physicsModule = ENGINE_PHYSICS; physicsModule->SetLayerProperty("NormalGround", "PitGround", false); physicsModule->SetLayerProperty("Player", "NormaleGround", true); physicsModule->SetLayerProperty("Player", "PitGround", false); // Mapbegrenzung auto wallLeft = new MapWall(Vektoria::CHVector(1.0f, 0.5f, 8.0f)); wallLeft->getPlacement()->Translate(-1.1f, 0.25f, -4.0f); addGameObject(wallLeft); auto wallRight = new MapWall(Vektoria::CHVector(1.0f, 0.5f, 8.0f)); wallRight->getPlacement()->Translate(1.1f, 0.25f, -4.0f); addGameObject(wallRight); // Fallen und Wände addGameObjectsFromFile("GameResources\\Levels\\level1\\part1\\gameobjects_part1.txt"); }
//---------------------------------------------------------------------------- void Simulation () { // set up the physics module PhysicsModule kModule; kModule.Gravity = 1.0; kModule.Mass = 0.1; double dTime = 0.0; double dDeltaTime = 0.001; double dQ = 1.0; double dQDer = 0.0; kModule.Initialize(dTime,dDeltaTime,dQ,dQDer); // run the simulation ofstream kOStr("simulation.txt"); kOStr << "time q qder position" << endl; const int iMax = 2500; for (int i = 0; i < iMax; i++) { double dX = dQ, dY = dQ*dQ, dZ = dQ*dY; char acMsg[512]; sprintf(acMsg,"%5.3lf %+16.8lf %+16.8lf %+8.4lf %+8.4lf %+8.4lf", dTime,dQ,dQDer,dX,dY,dZ); kOStr << acMsg << endl; kModule.Update(); dTime = kModule.GetTime(); dQ = kModule.GetQ(); dQDer = kModule.GetQDer(); } }
//---------------------------------------------------------------------------- void BeadSlide::Simulation () { // Set up the physics module. PhysicsModule module; module.Gravity = 1.0; module.Mass = 0.1; double time = 0.0; double deltaTime = 0.001; double q = 1.0; double qDot = 0.0; module.Initialize(time, deltaTime, q, qDot); // Run the simulation. std::string path = ThePath + "simulation.txt"; std::ofstream outFile(path.c_str()); outFile << "time q qder position" << std::endl; const int imax = 2500; for (int i = 0; i < imax; ++i) { double x = q, y = q*q, z = q*y; char message[512]; sprintf(message, "%5.3lf %+16.8lf %+16.8lf %+8.4lf %+8.4lf %+8.4lf", time, q, qDot, x, y, z); outFile << message << std::endl; module.Update(); time = module.GetTime(); q = module.GetQ(); qDot = module.GetQDot(); } outFile.close(); }