Beispiel #1
0
void OrbitCamera::mouseMove( int x, int y )
{
    Vector2 delta;
    delta.y = y - m_oldY;
    delta.x = x - m_oldX;
    m_oldX = x;
    m_oldY = y;

    m_theta += delta.x * 0.01f;
    m_phi += delta.y * 0.01f;

    m_theta -= floorf(m_theta / (2*M_PI)) * (2*M_PI);
    m_phi = max((float)(0.01f - M_PI / 2), min((float)(M_PI / 2 - 0.01f), m_phi));
    updateModelviewMatrix();
}
	GLBox()
	{
		App = new sf::Window(sf::VideoMode(RESOLUTION, RESOLUTION, 32), "Spherio");
		
		cameraLookMode = false;
		lastPos[0] = -1;
		lastPos[1] = -1;
		cameraTheta = tiltX = tiltZ = 0;
		cameraPhi = 50;
		gfxinit();
		
		double a[] = {20, 0, -20};
		double b[] = {20, 10, -20};

		double block1Color[3] = {1, 0, 0};
		double block1Center[3] = {2, 0, 0};
		level[0] = Block(block1Color, block1Center, 4, 1, 4, 0, 0);
		double ballColor[3] = {0,1,1};
		double ballCenter[3] = {0,1,0};
		ball = Sphere(ballColor,ballCenter,0.1);

		//double block2Color[3] = {0, 0, 1};
		//double block2Center[3] = {2, 0, -5};
		//level[1] = Block(block2Color, block2Center, 1, 1, 1, 0, 45);
		/*level[2] = Block(0, 0, -200, 0, 10, -200, 2);
		level[3] = Block(0, -10, -20, 0, 10, -20, 2);
		level[4] = Block(-10, 0, -20, 10, 0, -2, 2);
		*/
		//level[0].toString();
		while (App->IsOpened())
		{
			
			App->SetActive();
			
			handleEvents();
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			
			updateModelviewMatrix();
			for (int i = 0; i < 1; ++i)
			{
				level[i].display();
			}
			ball.display();
			App->Display();
		}
	}
Beispiel #3
0
void OrbitCamera::mouseMovePan(const int x, const int y)
{
    /*
    if( m_oldX == -1 && m_oldY == -1 )
    {
        m_oldX = x;
        m_oldY = y;
        return;
    }
    */
    //float dx, dy;
    m_panY += (y - m_oldY)*0.01;
    m_panX += (x - m_oldX)*0.01;
    m_oldX = x;
    m_oldY = y;

    updateModelviewMatrix();
}
Beispiel #4
0
void OrbitCamera::updateMatrices()
{
    updateProjectionMatrix();
    updateModelviewMatrix();
}
Beispiel #5
0
void OrbitCamera::mouseWheel(float delta)
{
    m_zoom *= powf(0.999f, delta);
    updateModelviewMatrix();
}
	GLBox()
	{
		App = new sf::Window(sf::VideoMode(RESOLUTION, RESOLUTION, 32), "Spherio");

		glEnable(GL_LIGHTING);
		
		cameraLookMode = false;
		lastPos[0] = -1;
		lastPos[1] = -1;
		cameraTheta = tiltX = tiltZ = 0;
		cameraPhi = 50;
		buttonPressed[0] = buttonPressed[1] = buttonPressed[2] = buttonPressed[3] = false;
		gfxinit();
		
		double a[] = {20, 0, -20};
		double b[] = {20, 10, -20};

		double block1Color[3] = {1, 0, 0};
		double block1Center[3] = {0, 0, 0};
		level[0] = Block(block1Color, block1Center, 4, 1, 4, 0, 0);
		double ballColor[3] = {0,1,1};
		double ballCenter[3] = {0,3,0};
		ball = Sphere(ballColor,ballCenter,0.314159);

		//double block2Color[3] = {0, 0, 1};
		//double block2Center[3] = {2, 0, -5};
		//level[1] = Block(block2Color, block2Center, 1, 1, 1, 0, 45);
		/*level[2] = Block(0, 0, -200, 0, 10, -200, 2);
		level[3] = Block(0, -10, -20, 0, 10, -20, 2);
		level[4] = Block(-10, 0, -20, 10, 0, -2, 2);
		*/
		//level[0].toString();

		FILE * logFile;
		logFile = fopen("log.txt", "wb");
		if(logFile == NULL)
		{
			printf("Unable to open log file. Exiting...\n");
			exit(2);
		}
		
		__glewInit(logFile);
		ShaderManager shaders = ShaderManager(logFile);
		
		const char * vertPath = "Shaders/Render3dModel.vert";
		const char * fragPath = "Shaders/Render3dModel.frag";
		prog = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1);
		vertPath = "Shaders/BallShader.vert";
		fragPath = "Shaders/BallShader.frag";
		ballProg = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1);
		while (App->IsOpened())
		{
			App->SetActive();
			
			handleEvents();
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			
			updateModelviewMatrix();
			glUseProgram(prog);
			setShaderVariables(prog);
			setShaderVariables(ballProg);
			for (int i = 0; i < 1; ++i)
			{
				level[i].display();
			}
			glUseProgram(ballProg);
			ball.display();
			App->Display();
		}
	}