examples/eqNBody/config.h

00001 /*
00002  * Copyright (c) 2009, Philippe Robert <probert@eyescale.ch> 
00003  *
00004  * This library is free software; you can redistribute it and/or modify it under
00005  * the terms of the GNU Lesser General Public License version 2.1 as published
00006  * by the Free Software Foundation.
00007  *  
00008  * This library is distributed in the hope that it will be useful, but WITHOUT
00009  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00010  * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
00011  * details.
00012  * 
00013  * You should have received a copy of the GNU Lesser General Public License
00014  * along with this library; if not, write to the Free Software Foundation, Inc.,
00015  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
00016  */
00017 
00018 #ifndef EQNBODY_CONFIG_H
00019 #define EQNBODY_CONFIG_H
00020 
00021 #include <eq/eq.h>
00022 
00023 #include "localInitData.h"
00024 #include "frameData.h"
00025 #include "configEvent.h"
00026 
00027 namespace eqNbody
00028 {
00029     class Config : public eq::Config
00030     {
00031     public:
00032         Config( eq::base::RefPtr< eq::Server > parent );
00033         
00034         const FrameData& getFrameData() const { return _frameData; }
00035         
00036         virtual bool init();
00037         virtual bool exit();
00038         
00039         virtual uint32_t startFrame();
00040         
00041         void setInitData( const LocalInitData& data ) { _initData = data; }
00042         const InitData& getInitData() const { return _initData; }
00043         
00044         void mapData( const uint32_t initDataID );      
00045         void unmapData();
00046         
00047         virtual bool handleEvent( const eq::ConfigEvent* event );
00048         bool needsRedraw();
00049                 
00050     protected:
00051         virtual ~Config() {}
00052         
00053         LocalInitData   _initData;
00054         FrameData       _frameData;
00055         bool            _redraw;
00056                 
00057     private:
00058         bool _readyToCommit();
00059         bool _handleKeyEvent( const eq::KeyEvent& event );
00060 
00061         void _updateSimulation();
00062         void _registerData(const ConfigEvent* event);
00063         void _updateData(const ConfigEvent* event);
00064         void _deregisterData();                     
00065     };
00066 }
00067 
00068 #endif // EQ_PLY_CONFIG_H
Generated on Mon Aug 10 18:58:32 2009 for Equalizer 0.9 by  doxygen 1.5.8