示例#1
0
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;
}