UGDK
src/module/ugdk/action/sceneproxy.h
Go to the documentation of this file.
00001 
00002 #ifndef MODULE_PROXY_SCENE_H_
00003 #define MODULE_PROXY_SCENE_H_
00004 
00005 #include <cstdio>
00006 
00007 #include <ugdk/script/virtualobj.h>
00008 #include <ugdk/action/scene.h>
00009 #include <ugdk/action/task.h>
00010 #include <ugdk/script/baseproxy.h>
00011 
00012 namespace ugdk {
00013 namespace action {
00014 
00015 class ScriptUpdateTask : public Task {
00016 public:
00017     ScriptUpdateTask(const ugdk::script::VirtualObj& scene_proxy) : scene_proxy_(scene_proxy) {}
00018     ~ScriptUpdateTask() {}
00019     
00020     void operator()(double dt) {
00021         ugdk::script::VirtualObj vdt = ugdk::script::VirtualObj(scene_proxy_.wrapper());
00022         vdt.set_value(dt);
00023         std::list<ugdk::script::VirtualObj> args;
00024         args.push_back(vdt);
00025         ( scene_proxy_ | "Update" )(args);
00026     }
00027 
00028 private:
00029     ugdk::script::VirtualObj scene_proxy_;
00030 };
00031 
00032 class SceneProxy;
00033 class SceneProxy : public Scene, public ugdk::script::BaseProxy<SceneProxy> {
00034   public:
00035     SceneProxy(const ugdk::script::VirtualObj& proxy) :
00036         Scene(), ugdk::script::BaseProxy<SceneProxy>(proxy) {
00037             this->AddTask(new ScriptUpdateTask(proxy));
00038         }
00039 
00040     virtual void Focus() { 
00041         Scene::Focus();
00042         (proxy_ | "Focus")();
00043     }
00044     virtual void DeFocus() {
00045         Scene::DeFocus();
00046         (proxy_ | "DeFocus")();
00047     }
00048     
00049     virtual void End() { 
00050         Scene::End();
00051         script::VirtualObj::List args;
00052         (proxy_ | "End")(args);
00053     }
00054 
00055 };
00056 
00057 }
00058 }
00059 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines