コード例 #1
0
ファイル: window.cpp プロジェクト: Distrotech/mesa-demos
//DEAL WITH ALL WINDOW MESSAGES
//Message Pump
bool WINDOW::HandleMessages(void)
{
	while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))		//Is there a message waiting?
	{
		if(msg.message==WM_QUIT)
			return false;						//if a quit message, return false

		//handle input
		if(msg.message==WM_KEYDOWN)
			SetKeyPressed(msg.wParam);

		if(msg.message==WM_KEYUP)
			SetKeyReleased(msg.wParam);

		if(msg.message==WM_LBUTTONDOWN)
			SetLeftButtonPressed();
		
		if(msg.message==WM_RBUTTONDOWN)
			SetRightButtonPressed();
		
		TranslateMessage(&msg);					//Translate Message
		DispatchMessage(&msg);					//dispatch message
	}
	return true;
}
コード例 #2
0
	//! Update the input state
	void InputManager::Update()
	{
		if(!m_aAsyncInputStates.empty())
		{
			for (size_t i=0; i<m_aAsyncInputStates.size(); ++i)
			{
				SetKeyPressed(m_aAsyncInputStates[i].key, m_aAsyncInputStates[i].bPressed);
			}
			m_aAsyncInputStates.clear();
		}

		if(!m_aAsyncTouchStates.empty())
		{
			SetTouchState(m_aAsyncTouchStates[0]);
			m_aAsyncTouchStates.clear();
		}

		// update focus holder
		if (m_FocusHolder.IsValid())
		{
			auto holder = m_FocusHolder.Get();
			m_FocusHolder.Clear();
			if (IsTouchPressed() || IsTouchJustReleased())
				m_FocusHolder = holder;
		}	
	}
コード例 #3
0
void Application::OnKeyPress(KeyCode key)
{
    SetKeyPressed(key, true);

    switch (key)
    {
    case KEY_F1:
        m_q3map->ToggleRenderFlag(Q3RenderShowWireframe);
        break;
    case KEY_F2:
        m_q3map->ToggleRenderFlag(Q3RenderShowLightmaps);
        glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[RenderLightmaps], m_q3map->HasRenderFlag(Q3RenderShowLightmaps) ? 1 : 0);
        break;
    case KEY_F3:
        m_q3map->ToggleRenderFlag(Q3RenderUseLightmaps);
        glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[UseLightmaps], m_q3map->HasRenderFlag(Q3RenderUseLightmaps) ? 1 : 0);
        break;
    case KEY_F4:
        m_q3map->ToggleRenderFlag(Q3RenderAlphaTest);
        glUniform1i(ShaderManager::GetInstance()->UseShaderProgram(ShaderManager::BasicShader).uniforms[UseAlphaTest], m_q3map->HasRenderFlag(Q3RenderAlphaTest) ? 1 : 0);
        break;
    case KEY_F5:
        m_q3map->ToggleRenderFlag(Q3RenderSkipMissingTex);
        break;
    case KEY_F6:
        m_q3map->ToggleRenderFlag(Q3RenderSkipPVS);
        break;
    case KEY_F7:
        m_q3map->ToggleRenderFlag(Q3RenderSkipFC);
        break;
    case KEY_TILDE:
        m_debugRenderState++;
        if (!VREnabled())
        {
            if (m_debugRenderState > RenderMapStats)
                m_debugRenderState = None;
        }
        else
        {
            if (g_oculusVR.IsDebugHMD() || !g_oculusVR.IsDK2())
                if (m_debugRenderState == RenderVRTrackingCamera)
                    m_debugRenderState++;
        }
        if (m_debugRenderState >= DebugRenderMax)
            m_debugRenderState = None;
        break;
    case KEY_ESC:
        Terminate();
        break;
    default:
        break;
    }

    if (VREnabled())
    {
        g_oculusVR.OnKeyPress(key);
    }
}
コード例 #4
0
/**
 * Starts a new game.
 */
void TetraminoesManager::InnerData::StartGame(int difficulty) {
    level = difficulty;
    lines = 0;
    score = 0;
    target = MAX_LINES[level - 1];

    time = 0;
    timeMark = 0;
    maxInterval = MAX_INTERVALS[level - 1];

    SetKeyPressed();
    InitWorld();

    SelectNextPiece();
    GetNextPiece();

    gameOver = false;
    gamePaused = false;

    UpdateHud();
}
コード例 #5
0
void Application::OnKeyRelease(KeyCode key)
{
    SetKeyPressed(key, false);
}