Пример #1
0
	void BilliardsDemo::Reset()
	{
		Model* model;
		Body* body;

		// Balls
		float r, g, b;
		for (int i = 0; i < 5; i++)
		{
			for (int j = 0; j < i + 1; j++)
			{
				r = glm::linearRand(0.0f, 1.0f);
				g = glm::linearRand(0.0f, 1.0f);
				b = glm::linearRand(0.0f, 1.0f);
				model = new Sphere(glm::vec3(r, g, b));
				glm::vec3 scale = glm::vec3(1);
				glm::vec3 position = glm::vec3((-i + 2 * j), 3, -1.73*i);
			    glm::quat orientation = glm::quat(1, 0, 0, 0);
				body = new Body(position, orientation, scale);
				body->SetCollider(new SphereCollider(body, scale.x));
				objects.push_back(new Object(model, body));
			}
		}
		model = new Sphere(glm::vec3(1));
	    glm::vec3 scale = glm::vec3(1);
		glm::vec3 position = glm::vec3(0, 3, 16);
		glm::quat orientation = glm::quat(1, 0, 0, 0);
		body = new Body(position, orientation, scale);
		body->SetMass(125);
		body->SetCollider(new SphereCollider(body, scale.x));
		body->SetVelocity(glm::vec3(0, 0, -50));
		objects.push_back(new Object(model, body));
	}
Пример #2
0
	void BilliardsDemo::OnInit(GLFWwindow* window)
	{
		Scene::OnInit(window);

		Model* model;
		Body* body;

		// Table
		model = new Cube(glm::vec3(0, 0.7, 0));
		glm::vec3 position = glm::vec3(0,1,0);
		glm::vec3 scale = glm::vec3(10, 1, 25);
		glm::quat orientation = glm::quat(1,0,0,0);
		body = new Body(position, orientation, scale);
		body->SetCollider(new BoxCollider(body, scale));
		body->SetStatic();
		objects.push_back(new Object(model, body));
		model = new Cube(glm::vec3(0, 1, 0));
		position = glm::vec3(-10, 1, 0);
		scale = glm::vec3(1, 4, 25);
		orientation = glm::quat(1, 0, 0, 0);
		body = new Body(position, orientation, scale);
		body->SetCollider(new BoxCollider(body, scale));
		body->SetStatic();
		objects.push_back(new Object(model, body));
		model = new Cube(glm::vec3(0, 1, 0));
		position = glm::vec3(10, 1, 0);
		scale = glm::vec3(1, 4, 25);
		orientation = glm::quat(1, 0, 0, 0);
		body = new Body(position, orientation, scale);
		body->SetCollider(new BoxCollider(body, scale));
		body->SetStatic();
		objects.push_back(new Object(model, body));
		model = new Cube(glm::vec3(0, 1, 0));
		position = glm::vec3(0, 1, -25);
		scale = glm::vec3(10, 4, 1);
		orientation = glm::quat(1, 0, 0, 0);
		body = new Body(position, orientation, scale);
		body->SetCollider(new BoxCollider(body, scale));
		body->SetStatic();
		objects.push_back(new Object(model, body));
		model = new Cube(glm::vec3(0, 1, 0));
		position = glm::vec3(0, 1, 25);
		scale = glm::vec3(10, 4, 1);
		orientation = glm::quat(1, 0, 0, 0);
		body = new Body(position, orientation, scale);
		body->SetCollider(new BoxCollider(body, scale));
		body->SetStatic();
		objects.push_back(new Object(model, body));

		Reset();
	}