00001 #ifndef IPSA_SIMULATOR_H
00002 #define IPSA_SIMULATOR_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #include "IPSA.h"
00028
00029 #include <string>
00030
00031 class SoNode;
00032 class SoSeparator;
00033 class IpsaSimulatorDelegate;
00034
00035 class IPSA_VIEWER_IMPORT_EXPORT IpsaSimulator
00036 {
00037 public:
00038 IpsaSimulator();
00039 virtual ~IpsaSimulator();
00040
00041 static void ExpandFileNodes(SoNode* root);
00042
00043 void setVerbosity(bool verbosityOn = true) {verboseOutput = verbosityOn;}
00044 bool getVerbosity() {return verboseOutput;}
00045
00046 void setSceneryFilename(const std::string& newFile) {sceneryFilename = newFile;}
00047
00048 void setDelegate(IpsaSimulatorDelegate* delegate);
00049
00050 bool isScheduled() {return this->isIpsaScheduled;}
00051
00052 SoNode* getSceneGraph();
00053
00054 public:
00055 void schedule();
00056 void reload();
00057 void reset();
00058 void save(const std::string& saveFile);
00059
00060 protected:
00061 virtual bool buildScenery();
00062 SoNode* readSceneryFromFile(bool expandFileNodesInGraph = true);
00063 SoSeparator* createPhysicsWorldIfMissing(SoNode* root);
00064 void applyPrefixNodes();
00065
00066 bool verboseOutput;
00067 bool isIpsaScheduled;
00068 std::string sceneryFilename;
00069
00070 SoSeparator* simulationRoot;
00071
00072 IpsaSimulatorDelegate* delegate;
00073 };
00074
00075 #endif