/// @brief Performs upkeep logic /// @param bPressed If true, there is a press void Widget::Upkeep (bool bPressed) { IssueEvent(ePreUpkeep); // Perform leave logic. Leave(); // If the widget is signaled, perform enter logic; on a press, perform grab logic. if (IsSignaled()) { Enter(); if (bPressed) Grab(); } // If there is no press, perform drop logic. if (!bPressed) Drop(); // If the widget remains chosen, post-process it; otherwise, abandon it. if (!IsSignaled() && !IsChosen()) { mState->ClearChoice(); IssueEvent(eAbandon); } else IssueEvent(ePostUpkeep); }
/// @brief Performs choose logic /// @param bPressed If true, there is a press void Widget::Choose (bool bPressed) { IssueEvent(ePreChoose); Enter(); if (bPressed) Grab(); IssueEvent(ePostChoose); }
/// @brief Performs leave logic void Widget::Leave (void) { if (0 == mState->mEntered || mState->mEntered == mState->mSignaled) return; IssueEvent(IsEntered() ? eLeave : eLeavePart); mState->mEntered = 0; }
/// @brief Performs grab logic void Widget::Grab (void) { if (mState->mGrabbed != 0) return; mState->mGrabbed = mState->mSignaled; IssueEvent(IsGrabbed() ? eGrab : eGrabPart); }
/// @brief Performs enter logic void Widget::Enter (void) { if (mState->mEntered == mState->mSignaled) return; mState->mEntered = mState->mSignaled; IssueEvent(IsEntered() ? eEnter : eEnterPart); }
/// @brief Performs drop logic void Widget::Drop (void) { if (0 == mState->mGrabbed) return; IssueEvent(IsGrabbed() ? eDrop : eDropPart); mState->mGrabbed = 0; }
void FD3D11EventQuery::InitDynamicRHI() { D3D11_QUERY_DESC QueryDesc; QueryDesc.Query = D3D11_QUERY_EVENT; QueryDesc.MiscFlags = 0; VERIFYD3D11RESULT(D3DRHI->GetDevice()->CreateQuery(&QueryDesc,Query.GetInitReference())); // Initialize the query by issuing an initial event. IssueEvent(); }