00001 /****************************************************************************** 00002 * SOFA, Simulation Open-Framework Architecture, version 1.0 beta 3 * 00003 * (c) 2006-2008 MGH, INRIA, USTL, UJF, CNRS * 00004 * * 00005 * This library is free software; you can redistribute it and/or modify it * 00006 * under the terms of the GNU Lesser General Public License as published by * 00007 * the Free Software Foundation; either version 2.1 of the License, or (at * 00008 * your option) any later version. * 00009 * * 00010 * This library is distributed in the hope that it will be useful, but WITHOUT * 00011 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * 00012 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * 00013 * for more details. * 00014 * * 00015 * You should have received a copy of the GNU Lesser General Public License * 00016 * along with this library; if not, write to the Free Software Foundation, * 00017 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * 00018 ******************************************************************************* 00019 * SOFA :: Modules * 00020 * * 00021 * Authors: The SOFA Team and external contributors (see Authors.txt) * 00022 * * 00023 * Contact information: contact@sofa-framework.org * 00024 ******************************************************************************/ 00025 // 00026 // C++ Implementation : Controller 00027 // 00028 // Description: 00029 // 00030 // 00031 // Author: Pierre-Jean Bensoussan, Digital Trainers (2008) 00032 // 00033 // Copyright: See COPYING file that comes with this distribution 00034 // 00035 // 00036 00037 #include <sofa/component/controller/Controller.h> 00038 00039 #include <sofa/core/objectmodel/Event.h> 00040 #include <sofa/core/objectmodel/JoystickEvent.h> 00041 #include <sofa/core/objectmodel/KeypressedEvent.h> 00042 #include <sofa/core/objectmodel/KeyreleasedEvent.h> 00043 #include <sofa/core/objectmodel/MouseEvent.h> 00044 #include <sofa/core/objectmodel/OmniEvent.h> 00045 00046 #include <sofa/simulation/common/AnimateBeginEvent.h> 00047 #include <sofa/simulation/common/AnimateEndEvent.h> 00048 00049 #include <iostream> 00050 00051 00052 namespace sofa 00053 { 00054 00055 namespace component 00056 { 00057 00058 namespace controller 00059 { 00060 00061 00062 Controller::Controller() 00063 : handleEventTriggersUpdate( initData(&handleEventTriggersUpdate, "handleEventTriggersUpdate", "Event handling frequency controls the controller update frequency" ) ) 00064 { 00065 00066 } 00067 00068 00069 00070 void Controller::handleEvent(core::objectmodel::Event *event) 00071 { 00072 if (dynamic_cast<sofa::simulation::AnimateBeginEvent *>(event)) 00073 { 00074 onBeginAnimationStep(); 00075 } 00076 else if (dynamic_cast<sofa::simulation::AnimateEndEvent *>(event)) 00077 { 00078 onEndAnimationStep(); 00079 } 00080 else if (dynamic_cast<sofa::core::objectmodel::KeypressedEvent *>(event)) 00081 { 00082 sofa::core::objectmodel::KeypressedEvent *kpev = dynamic_cast<sofa::core::objectmodel::KeypressedEvent *>(event); 00083 onKeyPressedEvent(kpev); 00084 } 00085 else if (dynamic_cast<sofa::core::objectmodel::KeyreleasedEvent *>(event)) 00086 { 00087 sofa::core::objectmodel::KeyreleasedEvent *krev = dynamic_cast<sofa::core::objectmodel::KeyreleasedEvent *>(event); 00088 onKeyReleasedEvent(krev); 00089 } 00090 else if (dynamic_cast<sofa::core::objectmodel::MouseEvent *>(event)) 00091 { 00092 sofa::core::objectmodel::MouseEvent *mev = dynamic_cast<sofa::core::objectmodel::MouseEvent *>(event); 00093 onMouseEvent(mev); 00094 } 00095 else if (dynamic_cast<sofa::core::objectmodel::JoystickEvent *>(event)) 00096 { 00097 sofa::core::objectmodel::JoystickEvent *jev = dynamic_cast<sofa::core::objectmodel::JoystickEvent *>(event); 00098 onJoystickEvent(jev); 00099 } 00100 else if (dynamic_cast<sofa::core::objectmodel::OmniEvent *>(event)) 00101 { 00102 sofa::core::objectmodel::OmniEvent *oev = dynamic_cast<sofa::core::objectmodel::OmniEvent *>(event); 00103 onOmniEvent(oev); 00104 } 00105 } 00106 00107 } // namespace controller 00108 00109 } // namepace component 00110 00111 } // namespace sofa 00112
1.5.7.1