00001 /* 00002 * $Id: $ 00003 * 00004 * Description : Scripting module. 00005 * Author : Jakub Zelenka <mail: jakub.zelenka@gmail.com> 00006 * 00007 * Purpose : 00008 * Scripting synchronizer. 00009 */ 00010 00011 00012 #ifndef __SCRIPTSYNC_H_ 00013 #define __SCRIPTSYNC_H_ 00014 00015 #include <queue> 00016 00017 #include "../../core/src/module.h" 00018 00019 namespace VRUT { 00021 class JSEnvironment; 00023 class JSScriptingModule; 00024 00025 class JSHandler 00026 { 00027 private: 00029 static const unsigned long TIMEOUT_WAITING = 50; 00031 static const unsigned long TIMEOUT_SLEEP = 50; 00032 00034 struct RunData 00035 { 00037 wxString scriptPath; 00039 SCENE_ID sceneID; 00041 RunData(wxString & path, SCENE_ID id) : scriptPath(path), sceneID(id) {} 00042 }; 00044 std::queue<RunData> executions; 00045 00047 JSScriptingModule *module; 00049 JSEnvironment *jsEnv; 00050 00051 public: 00053 JSHandler(JSScriptingModule *_module); 00055 ~JSHandler(); 00056 00058 bool Sleep(unsigned long milis); 00060 wxCommandEvent *WaitForEvent(Event::EVENT_TYPE type, unsigned long milis, bool waitFromNow); 00062 void PostEvent(wxCommandEvent & evt); 00064 void PostToKernel(wxCommandEvent & evt); 00066 void ProcessEvent(wxCommandEvent & evt); 00068 bool RunScript(); 00069 00071 bool IsEnd(); 00072 00073 friend class JSEnvironment; 00074 }; 00075 } 00076 #endif /* __SCRIPTSYNC_H_ */ 00077
1.5.5