- Timestamp:
- Mar 21, 2019, 4:06:42 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.cc
r12213 r12217 1 1 #include "mouseapi.h" 2 2 3 MouseAPI::MouseAPI( )3 MouseAPI::MouseAPI(Camera& camera) 4 4 { 5 cam = camera.getOgreCamera(); 6 state = InputManager::getInstance().createInputState("MouseAPI"); 7 state->setMouseExclusive(false); 8 state->setMouseHandler(this); 9 InputManager::getInstance().enterState("MouseAPI"); 5 10 6 11 } 7 12 8 MouseAPI::~MouseAPI(){} 13 MouseAPI::~MouseAPI(){ 14 //todo look at gslevel destructor and implement this one 15 } 9 16 10 virtual void MouseAPI::buttonPressed (MouseButtonCode::ByEnum button){} 11 virtual void MouseAPI::mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize){} 12 virtual void MouseAPI::mouseScrolled (int abs, int rel){} 17 virtual void MouseAPI::buttonPressed (MouseButtonCode::ByEnum button) 18 { 19 Ogre::Viewport vp = GraphicsManager::getInstance().getViewport(); 20 Ogre::Ray ray = getCameraToViewPortRay(mousePos.x/((float)vp.getActualWidth()),mousePos.y/((float)vp.getActualHeight())); 21 for(auto event: clickEvents) 22 { 23 for(auto wantedButton:buttons){ 24 if(wantedButton == button && ray.intersects(Ogre::Sphere(event.position,radius))) 25 (&(event.onClickedFunction))(button); 26 } 27 } 28 } 13 29 14 v oid addClickableObject(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)())30 virtual void MouseAPI::mouseMoved (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) 15 31 { 16 clickEvents.insert({position,radius,events,onClickedFunction});32 mousePos = abs; 17 33 } 18 void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)) 34 35 virtual void MouseAPI::mouseScrolled (int abs, int rel) 36 { 37 Ogre::Viewport vp = GraphicsManager::getInstance().getViewport(); 38 Ogre::Ray ray = getCameraToViewPortRay(mousePos.x/((float)vp.getActualWidth()),mousePos.y/((float)vp.getActualHeight())); 39 for(auto event:scrollEvents){ 40 if(!event.considerPosition || ray.intersects(Ogre::Sphere(event.position,radius))) 41 (*(event.onScrolledFunction))(abs,rel,mousePos); 42 } 43 } 44 45 void MouseAPI::addClickableObject(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button)) 46 { 47 clickEvents.insert({position,radius,buttons,onClickedFunction}); 48 } 49 void MouseAPI::addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)) 19 50 { 20 51 scrollEvents.insert(position,radius,onScrolledFunction); 21 52 } 22 void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos))53 void MouseAPI::addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)) 23 54 { 24 55 scrollEvents.insert(onScrolledFunction); 25 56 } 57 58 void MouseAPI::changeCamera(Camera& camera) 59 { 60 cam = camera.getOgreCamera(); 61 }
Note: See TracChangeset
for help on using the changeset viewer.