00001 #ifndef GENERIC_OBJECT_CONTAINER_H 00002 #define GENERIC_OBJECT_CONTAINER_H 00003 00004 #include <pluginlib/class_loader.h> 00005 00006 #include <vector> 00007 #include "GenericObjectHandler.h" 00008 00009 #include <map> 00010 00011 class GenericObjectContainer 00012 { 00013 00014 public: 00015 00019 GenericObjectContainer(); 00020 00024 virtual ~GenericObjectContainer(); 00025 00029 void removeAll(); 00030 00035 void removeFromID(int theID); 00036 00042 int insert(boost::shared_ptr<GenericObjectHandler> objectHandler); 00043 00049 boost::shared_ptr<GenericObjectHandler> getFromID(int theID); 00050 00056 boost::shared_ptr<GenericObjectHandler> getFromAssociatedObject(int theAssociatedObjectID); 00057 00063 boost::shared_ptr<GenericObjectHandler> getFromIndex(int ind); 00064 00069 int getCount(); 00070 00075 void actualizeForSceneContent(); 00076 00080 void startOfSimulation(); 00081 00085 void endOfSimulation(); 00086 00090 void handleSimulation(); 00091 00096 static void simExtGetAllCustomData(SLuaCallBack* p); 00097 00102 static void simExtGetCustomDataFromHeader(SLuaCallBack* p); 00103 00109 static void simExtSetFloatCustomDataFromHeader(SLuaCallBack* p); 00110 00116 static void simExtSetIntCustomDataFromHeader(SLuaCallBack* p); 00117 00118 protected: 00119 00120 std::vector<boost::shared_ptr<GenericObjectHandler> > _allObjects; 00121 00122 pluginlib::ClassLoader<GenericObjectHandler> _object_handler_loader; 00123 std::map<std::string, boost::shared_ptr<GenericObjectHandler> > _allExistingPlugins; 00124 }; 00125 00126 #endif // GENERIC_OBJECT_CONTAINER_H 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145