示例#1
0
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");

}
示例#2
0
//----------------------------------------------------------------------------
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();
    }
}
示例#3
0
//----------------------------------------------------------------------------
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();
}