Beispiel #1
0
int GlutApp::mousePressed(int button, int x, int y)
{
	// std::cout << "mouse pressed: " << x << ", " << y << std::endl;
	lastMousePt->set(x, y);
	windowToViewport(*lastMousePt);
	m_button1Down = true;
}
Beispiel #2
0
int GlutApp::mouseMoved(int x, int y)
{
	// std::cout << "mouse moved: " << x << ", " << y << std::endl;
	currMousePt->set(x, y);
	windowToViewport(*currMousePt);
	m_camera->orbit(*lastMousePt, *currMousePt);
	*lastMousePt = *currMousePt;
}
void WindowEventProducer::produceMouseDragged(const MouseEventDetails::MouseButton& Button, const Pnt2f& Location, const Vec2f& Delta)
{
    //Check if Input is blocked
    if(_BlockInput) { return; }

   Pnt2f ViewportLocation;
   ViewportUnrecPtr ResultViewport;
   ResultViewport = windowToViewport(Location, ViewportLocation);
   if(ResultViewport != NULL)
   {
	   MouseEventDetailsUnrecPtr Details = MouseEventDetails::create(this, getSystemTime(), Button, 0, ViewportLocation, ResultViewport,Delta );

       WindowEventProducerBase::produceMouseDragged(Details);
   }
}
void WindowEventProducer::produceMouseWheelMoved(const Int32& WheelRotation, const Pnt2f& Location, const MouseWheelEventDetails::ScrollType& TheScrollType)
{
    //Check if Input is blocked
    if(_BlockInput) { return; }

   Pnt2f ViewportLocation;
   ViewportUnrecPtr ResultViewport;
   ResultViewport = windowToViewport(Location, ViewportLocation);
   if(ResultViewport != NULL)
   {
	   const MouseWheelEventDetailsUnrecPtr Details = MouseWheelEventDetails::create( this, getSystemTime(), WheelRotation, TheScrollType,MouseWheelEventDetails::SCROLL_ORIENTATION_VERTICAL, ViewportLocation, ResultViewport );

       WindowEventProducerBase::produceMouseWheelMoved(Details);
   }
}
void WindowEventProducer::produceMouseExited(const Pnt2f& Location)
{
    //Check if Input is blocked
    if(_BlockInput) { return; }

   Pnt2f ViewportLocation;
   ViewportUnrecPtr ResultViewport;
   ResultViewport = windowToViewport(Location, ViewportLocation);
   if(ResultViewport != NULL)
   {
	   MouseEventDetailsUnrecPtr Details = MouseEventDetails::create(this, getSystemTime(), MouseEventDetails::NO_BUTTON, 0, ViewportLocation, ResultViewport );

       WindowEventProducerBase::produceMouseExited(Details);
   }
}
void WindowEventProducer::produceMouseClicked(const MouseEventDetails::MouseButton& Button, const Pnt2f& Location)
{
    //Check if Input is blocked
    if(_BlockInput) { return; }

   Time t(getSystemTime());
   updateClickCount(Button, t, Location);
   Pnt2f ViewportLocation;
   ViewportUnrecPtr ResultViewport;
   ResultViewport = windowToViewport(Location, ViewportLocation);
   if(ResultViewport != NULL)
   {
	   MouseEventDetailsUnrecPtr Details = MouseEventDetails::create(this, t, Button, _ButtonClickCountMap[Button].size(), ViewportLocation, ResultViewport );
	   
       WindowEventProducerBase::produceMouseClicked(Details);
   }
}
void WindowEventProducer::produceMouseReleased(const MouseEventDetails::MouseButton& Button, const Pnt2f& Location)
{
    //Check if Input is blocked
    if(_BlockInput) { return; }

	TimeStamp t(getSystemTime());
	validateClickCount(Button, t, Location);
    Pnt2f ViewportLocation;
    Real32 DriftAllowance(InputSettings::the()->getMultipleClickMouseDriftAllowance());
    if(Location.dist2(_ButtonClickMap[Button]) <= (DriftAllowance * DriftAllowance))
    {
        produceMouseClicked(Button, Location);
    }
    ViewportUnrecPtr ResultViewport;
    ResultViewport = windowToViewport(Location, ViewportLocation);
    if(ResultViewport != NULL)
    {
        MouseEventDetailsUnrecPtr Details = MouseEventDetails::create(this, t, Button, _ButtonClickCountMap[Button].size(), ViewportLocation, ResultViewport );

        WindowEventProducerBase::produceMouseReleased(Details);
    }
}