// ThinkFunction: Will be called by the engine once per tick/frame.
// Useful for regular updates (e.g. keyboard, artificial intelligence).
void VisMouseCamera_cl::ThinkFunction()
{
  if (m_bSimulationIndependent)
    return;

  float fTimeDiff = Vision::GetTimer()->GetTimeDifference();
  TickFunction(fTimeDiff);
}
void VisMouseCamera_cl::OnHandleCallback(IVisCallbackDataObject_cl *pData)
{
  if (pData->m_pSender == &Vision::Callbacks.OnFrameUpdatePreRender)
  {
    // this function gets called once per frame, not once per simulation tick

    if (this->GetThinkFunctionStatus()) // take the same flag into account
    {
      float fTimeDiff = Vision::GetUITimer()->GetTimeDifference();
      TickFunction(fTimeDiff);
    }
  }
  else if (pData->m_pSender == &Vision::Callbacks.OnVideoChanged)
  {
#if defined(SUPPORTS_MULTITOUCH)
    // Re-initialize valid area
    if (m_pVirtualThumbStick != NULL)
      m_pVirtualThumbStick->SetValidArea(VRectanglef());
#endif
  }
}