bool Application::Run(bool isAsync) {
		// 프레임 계산에 쓰일 변수들
		float fpsTimer = 0.f;
		int prevTime = 0;
		int nowTime = 0;
		int frameCount = 0;

		MSG msg;
		ZeroMemory( &msg, sizeof(msg) );

		do {
			if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
				if ( msg.message == WM_QUIT )
					return true;

				TranslateMessage( &msg );
				DispatchMessage( &msg );
			}
			else {
				_UpdateFrame( fpsTimer, prevTime, nowTime, frameCount );
				
				if ( GetKeyState(VK_ESCAPE) & 0x8000 ) {
					//mRenderer->ToggleFullscreen();
					break;
				}

				//mKeyEventDispatcher->Dispatch( mKeyEventList );
				//mMouseEventDispatcher->Dispatch( mMouseEventList );

				GetInputManager().GetKey();

				mSceneManager->Update( mDeltaTime );

				mCountDPCall = 0;

				mSceneManager->Render();
			}
		} while (isAsync == false);

		return true;
	}
Пример #2
0
// RegValueHome::SetContextRegister
// This will update a register in a given context, and in the regdisplay of a given frame.
// Arguments:
//     input:  pContext - context from which the register comes
//             regnum   - enumeration constant indicating which register is to be updated   
//             newVal   - the new value for the register contents
//     output: no out parameters, but the new value will be written to the context and the frame
// Notes:  We don't take a data target here because we are directly writing process memory and passing
//         in a context, which has the location to update. 
//         Throws
void RegValueHome::SetContextRegister(DT_CONTEXT *     pContext,
                                      CorDebugRegister regNum,
                                      SIZE_T           newVal)
{
    LPVOID rdRegAddr;

#define _UpdateFrame() \
    if (m_pFrame != NULL) \
    { \
        rdRegAddr = m_pFrame->GetAddressOfRegister(regNum); \
        *(SIZE_T *)rdRegAddr = newVal; \
    }

    switch(regNum)
    {
    case REGISTER_INSTRUCTION_POINTER:  CORDbgSetIP(pContext, (LPVOID)newVal); break;
    case REGISTER_STACK_POINTER:        CORDbgSetSP(pContext, (LPVOID)newVal); break;

#if defined(DBG_TARGET_X86)
    case REGISTER_FRAME_POINTER:        CORDbgSetFP(pContext, (LPVOID)newVal);
                                          _UpdateFrame();                         break;

    case REGISTER_X86_EAX:              pContext->Eax = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_X86_ECX:              pContext->Ecx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_X86_EDX:              pContext->Edx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_X86_EBX:              pContext->Ebx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_X86_ESI:              pContext->Esi = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_X86_EDI:              pContext->Edi = newVal;
                                        _UpdateFrame();                        break;

#elif defined(DBG_TARGET_AMD64)
    case REGISTER_AMD64_RBP:            pContext->Rbp = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RAX:            pContext->Rax = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RCX:            pContext->Rcx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RDX:            pContext->Rdx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RBX:            pContext->Rbx = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RSI:            pContext->Rsi = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_RDI:            pContext->Rdi = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R8:             pContext->R8 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R9:             pContext->R9 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R10:            pContext->R10 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R11:            pContext->R11 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R12:            pContext->R12 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R13:            pContext->R13 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R14:            pContext->R14 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_AMD64_R15:            pContext->R15 = newVal;
                                        _UpdateFrame();                        break;
#elif defined(DBG_TARGET_ARM)
    case REGISTER_ARM_R0:               pContext->R0 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R1:               pContext->R1 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R2:               pContext->R2 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R3:               pContext->R3 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R4:               pContext->R4 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R5:               pContext->R5 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R6:               pContext->R6 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R7:               pContext->R7 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R8:               pContext->R8 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R9:               pContext->R9 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R10:               pContext->R10 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R11:               pContext->R11 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_R12:               pContext->R12 = newVal;
                                        _UpdateFrame();                        break;
    case REGISTER_ARM_LR:               pContext->Lr = newVal;
                                        _UpdateFrame();                        break;
#elif defined(DBG_TARGET_ARM64)
    case REGISTER_ARM64_X0:
    case REGISTER_ARM64_X1:
    case REGISTER_ARM64_X2:
    case REGISTER_ARM64_X3:
    case REGISTER_ARM64_X4:
    case REGISTER_ARM64_X5:
    case REGISTER_ARM64_X6:
    case REGISTER_ARM64_X7:
    case REGISTER_ARM64_X8:
    case REGISTER_ARM64_X9:
    case REGISTER_ARM64_X10:
    case REGISTER_ARM64_X11:
    case REGISTER_ARM64_X12:
    case REGISTER_ARM64_X13:
    case REGISTER_ARM64_X14:
    case REGISTER_ARM64_X15:
    case REGISTER_ARM64_X16:
    case REGISTER_ARM64_X17:
    case REGISTER_ARM64_X18:
    case REGISTER_ARM64_X19:
    case REGISTER_ARM64_X20:
    case REGISTER_ARM64_X21:
    case REGISTER_ARM64_X22:
    case REGISTER_ARM64_X23:
    case REGISTER_ARM64_X24:
    case REGISTER_ARM64_X25:
    case REGISTER_ARM64_X26:
    case REGISTER_ARM64_X27:
    case REGISTER_ARM64_X28:            pContext->X[regNum - REGISTER_ARM64_X0] = newVal;
                                        _UpdateFrame();                        break;

    case REGISTER_ARM64_LR:             pContext->Lr = newVal;
                                        _UpdateFrame();                        break;
#endif
    default:
        _ASSERTE(!"Invalid register number!");
        ThrowHR(E_FAIL);
    }
} // RegValueHome::SetContextRegister