Mouse::Mouse(WindowFramework* window) : _window(window) { cout << "- Initializing mouse..." << endl; MouseWatcher::init_type(); _lastMousePos.set_x(0); _lastMousePos.set_y(0); _camera = window->get_camera_group(); _hovering.Reset(); _mouseWatcher = dynamic_cast<MouseWatcher*>(window->get_mouse().node()); _pickerNode = new CollisionNode("mouseRay"); _pickerPath = _camera.attach_new_node(_pickerNode); _pickerNode->set_from_collide_mask(CollideMask(/*ColMask::Waypoint | */ColMask::DynObject)); _pickerNode->set_into_collide_mask(0); _pickerRay = new CollisionRay(); _pickerNode->add_solid(_pickerRay); _collisionHandlerQueue = new CollisionHandlerQueue(); _collisionTraverser.add_collider(_pickerPath, _collisionHandlerQueue); EventHandler* events = EventHandler::get_global_event_handler(); if (!(events->add_hook("mouse1", &Mouse::CallbackButton1, (void*)this))) cerr << "Failed to registrate mouse1 event" << endl; if (!(events->add_hook("mouse2", &Mouse::CallbackButton2, (void*)this))) cerr << "Failed to registrate mouse2 event" << endl; if (!(events->add_hook("mouse3", &Mouse::CallbackButton3, (void*)this))) cerr << "Failed to registrate mouse3 event" << endl; if (!(events->add_hook("wheel_up", &Mouse::CallbackWheelUp, (void*)this))) cerr << "Failed to register wheel_up event" << endl; if (!(events->add_hook("wheel_down", &Mouse::CallbackWheelDown, (void*)this))) cerr << "Failed to register wheel_down event" << endl; SetMouseState('a'); cout << "-> Done." << endl; }