示例#1
0
bool CNrpCircleScrollBar::OnEvent( const SEvent& event )
{
	switch( event.EventType )
	{
	case EET_GUI_EVENT:
		if(  event.GUIEvent.EventType == EGET_ELEMENT_LEFT )
		{
			mouse2rotate_ = false;
			return true;
		}
	break;

	case EET_MOUSE_INPUT_EVENT:
		if( event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN )
		{
			mouse2rotate_ = true;	
			startAngle_ = GetCurrentAngle_( core::position2di( event.MouseInput.X, event.MouseInput.Y) );
			return true;
		}

		if( event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP )
		{
			mouse2rotate_ = false;

			return true;
		}

		if( event.MouseInput.Event == EMIE_MOUSE_MOVED )
		{
			if( mouse2rotate_ )
			{
				f32 offset = GetCurrentAngle_( core::position2di( event.MouseInput.X, event.MouseInput.Y) ) - startAngle_;
										
				if( aPos + offset >= Min && aPos + offset < Max )
				{
					startAngle_ += offset;
					aPos += offset;
					rImage_->SetRotate( core::vector3df( 0, 0, rImage_->getRotate().Z - offset ) );

					if( onChangedAction_.size() > 0 )
						nrp::CNrpScript::Instance().CallFunction( onChangedAction_, this );
				}
				else
				{
					mouse2rotate_ = false;
				}
			}		
		}
		break;

	}

	return false;
}
示例#2
0
bool CNrpMiniMap::OnEvent( const SEvent& event )
{
	switch( event.EventType )
	{
	case EET_GUI_EVENT:
		if(  event.GUIEvent.EventType == EGET_ELEMENT_LEFT )
		{
			mouse2rotate_ = false;
			return true;
		}
	break;

	case EET_MOUSE_INPUT_EVENT:
		if( event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN )
		{
			mouse2rotate_ = true;	
			startAngle_ = GetCurrentAngle_( core::position2di( event.MouseInput.X, event.MouseInput.Y) );
			return true;
		}

		if( event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP )
		{
			mouse2rotate_ = false;

			return true;
		}

		if( event.MouseInput.Event == EMIE_MOUSE_MOVED )
		{
			if( mouse2rotate_ )
			{
				offsetAngle_ = GetCurrentAngle_( core::position2di( event.MouseInput.X, event.MouseInput.Y) ) - startAngle_;

				startAngle_ += offsetAngle_;

				if( onRotateAction_.size() > 0 )
					nrp::CNrpScript::Instance().CallFunction( onRotateAction_, this );
			}			
		}
	break;

	}

	return IGUIElement::OnEvent( event );
}