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; }
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 ); }