Converted osgGA::GUIEventAdapter into a concrete class capable of respresenting

keyboard and mouse events.

Added osgGA::EventQueue class to support a thread safe event queue and adaption
of keyboard and mouse events.

Removed osgProducer::EventAdapter as GUIEventAdapter replaces it.

Adapted osgProducer and examples to work with the new changes to osgGA.
This commit is contained in:
Robert Osfield
2006-03-08 14:09:47 +00:00
parent 582967286a
commit dbbabf87c6
37 changed files with 450 additions and 835 deletions

View File

@@ -862,9 +862,9 @@ bool GameEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionA
if (_numberOfPlayers>=2) _players[1].moveRight();
}
static double previous_time = ea.time();
double dt = ea.time()-previous_time;
previous_time = ea.time();
static double previous_time = ea.getTime();
double dt = ea.getTime()-previous_time;
previous_time = ea.getTime();
// move objects
for(CatchableObjectList::iterator itr=_catchableObjects.begin();
@@ -921,7 +921,7 @@ bool GameEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionA
}
if (!(*itr)->anyInside(_origin, _origin+_width+_height) ||
(*itr)->needToRemove(ea.time()) ||
(*itr)->needToRemove(ea.getTime()) ||
removeEntry)
{
// need to remove
@@ -944,16 +944,16 @@ bool GameEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionA
// hit base line
(*itr)->explode();
(*itr)->stop();
(*itr)->setTimeToRemove(ea.time()+3.0);
(*itr)->setTimeToRemove(ea.getTime()+3.0);
}
}
// create new catchable objects
static double previousTime = ea.time();
double deltaTime = ea.time()-previousTime;
previousTime = ea.time();
static double previousTime = ea.getTime();
double deltaTime = ea.getTime()-previousTime;
previousTime = ea.getTime();
float numDropsPerSecond = _initialNumDropsPerSecond * (_level+1);
float r = (float)rand()/(float)RAND_MAX;

View File

@@ -64,7 +64,7 @@ class CameraPacket {
// us to do this, even though its a reference counted object.
osg::FrameStamp _frameStamp;
osgProducer::KeyboardMouseCallback::EventQueue _events;
osgGA::EventQueue::Events _events;
};
@@ -295,36 +295,36 @@ class DataConverter
}
void write(const osgProducer::EventAdapter& event)
void write(const osgGA::GUIEventAdapter& event)
{
writeUInt(event._eventType);
writeUInt(event._key);
writeUInt(event._button);
writeFloat(event._Xmin);
writeFloat(event._Xmax);
writeFloat(event._Ymin);
writeFloat(event._Ymax);
writeFloat(event._mx);
writeFloat(event._my);
writeUInt(event._buttonMask);
writeUInt(event._modKeyMask);
writeDouble(event._time);
writeUInt(event.getEventType());
writeUInt(event.getKey());
writeUInt(event.getButton());
writeFloat(event.getXmin());
writeFloat(event.getXmax());
writeFloat(event.getYmin());
writeFloat(event.getYmax());
writeFloat(event.getX());
writeFloat(event.getY());
writeUInt(event.getButtonMask());
writeUInt(event.getModKeyMask());
writeDouble(event.getTime());
}
void read(osgProducer::EventAdapter& event)
void read(osgGA::GUIEventAdapter& event)
{
event._eventType = (osgGA::GUIEventAdapter::EventType)readUInt();
event._key = readUInt();
event._button = readUInt();
event._Xmin = readFloat();
event._Xmax = readFloat();
event._Ymin = readFloat();
event._Ymax = readFloat();
event._mx = readFloat();
event._my = readFloat();
event._buttonMask = readUInt();
event._modKeyMask = readUInt();
event._time = readDouble();
event.setEventType((osgGA::GUIEventAdapter::EventType)readUInt());
event.setKey(readUInt());
event.setButton(readUInt());
event.setXmin(readFloat());
event.setXmax(readFloat());
event.setYmin(readFloat());
event.setYmax(readFloat());
event.setX(readFloat());
event.setY(readFloat());
event.setButtonMask(readUInt());
event.setModKeyMask(readUInt());
event.setTime(readDouble());
}
void write(CameraPacket& cameraPacket)
@@ -337,9 +337,11 @@ class DataConverter
write(cameraPacket._frameStamp);
writeUInt(cameraPacket._events.size());
for(unsigned int i=0;i<cameraPacket._events.size();++i)
for(osgGA::EventQueue::Events::iterator itr = cameraPacket._events.begin();
itr != cameraPacket._events.end();
++itr)
{
write(*(cameraPacket._events[i]));
write(*(*itr));
}
}
@@ -360,7 +362,7 @@ class DataConverter
unsigned int numEvents = readUInt();
for(unsigned int i=0;i<numEvents;++i)
{
osgProducer::EventAdapter* event = new osgProducer::EventAdapter;
osgGA::GUIEventAdapter* event = new osgGA::GUIEventAdapter;
read(*(event));
cameraPacket._events.push_back(event);
}

View File

@@ -227,7 +227,7 @@ bool GliderManipulator::calcMovement()
if (_ga_t0.get()==NULL || _ga_t1.get()==NULL) return false;
double dt = _ga_t0->time()-_ga_t1->time();
double dt = _ga_t0->getTime()-_ga_t1->getTime();
if (dt<0.0f)
{

View File

@@ -160,7 +160,7 @@ bool TestManipulator::isMouseMoving()
float dx = _ga_t0->getXnormalized()-_ga_t1->getXnormalized();
float dy = _ga_t0->getYnormalized()-_ga_t1->getYnormalized();
float len = sqrtf(dx*dx+dy*dy);
float dt = _ga_t0->time()-_ga_t1->time();
float dt = _ga_t0->getTime()-_ga_t1->getTime();
return (len>dt*velocity);
}

View File

@@ -612,17 +612,17 @@ bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAction
if (ea.getKey()=='a')
{
_autoSteppingActive = !_autoSteppingActive;
_previousTime = ea.time();
_previousTime = ea.getTime();
return true;
}
else if (ea.getKey()=='n')
{
_album->nextPage(ea.time()+1.0f);
_album->nextPage(ea.getTime()+1.0f);
return true;
}
else if (ea.getKey()=='p')
{
_album->previousPage(ea.time()+1.0f);
_album->previousPage(ea.getTime()+1.0f);
return true;
}
return false;
@@ -634,13 +634,13 @@ bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAction
if (_firstTraversal)
{
_firstTraversal = false;
_previousTime = ea.time();
_previousTime = ea.getTime();
}
else if (ea.time()-_previousTime>_timePerSlide)
else if (ea.getTime()-_previousTime>_timePerSlide)
{
_previousTime = ea.time();
_previousTime = ea.getTime();
_album->nextPage(ea.time()+1.0f);
_album->nextPage(ea.getTime()+1.0f);
}
}

View File

@@ -118,7 +118,7 @@ bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAction
if (ea.getKey()=='a')
{
_autoSteppingActive = !_autoSteppingActive;
_previousTime = ea.time();
_previousTime = ea.getTime();
return true;
}
else if (ea.getKey()=='n')

View File

@@ -667,8 +667,8 @@ class FollowMouseCallback : public osgGA::GUIEventHandler, public osg::StateSet:
if (ev)
{
osgGA::GUIActionAdapter* aa = ev->getActionAdapter();
osgGA::EventVisitor::EventList& events = ev->getEventList();
for(osgGA::EventVisitor::EventList::iterator itr=events.begin();
osgGA::EventQueue::Events& events = ev->getEvents();
for(osgGA::EventQueue::Events::iterator itr=events.begin();
itr!=events.end();
++itr)
{