UGDK
|
00001 #ifndef MODULE_PROXY_ENTITY_H_ 00002 #define MODULE_PROXY_ENTITY_H_ 00003 00004 #include <ugdk/action/entity.h> 00005 #include <ugdk/script/baseproxy.h> 00006 #include <list> 00007 #include <module/ugdk/action/sceneproxy.h> 00008 00009 namespace ugdk { 00010 namespace action { 00011 00012 class EntityProxy; 00013 00014 class EntityProxy : public Entity, public ugdk::script::BaseProxy<EntityProxy> { 00015 public: 00016 EntityProxy(const ugdk::script::VirtualObj& proxy) : ugdk::script::BaseProxy<EntityProxy>(proxy) {} 00017 00018 virtual bool to_be_removed() const { 00019 ugdk::script::VirtualObj to_be_removed = proxy_["to_be_removed"]; 00020 if (to_be_removed) 00021 return to_be_removed.value<bool>(); 00022 return to_be_removed_; 00023 } 00024 00025 virtual void Update(double dt) { 00026 if (to_be_removed()) return; 00027 ugdk::script::VirtualObj vdt = ugdk::script::VirtualObj(proxy_.wrapper()); 00028 vdt.set_value(dt); 00029 std::list<ugdk::script::VirtualObj> args; 00030 args.push_back(vdt); 00031 ( proxy_ | "Update" )(args); 00032 } 00033 00034 virtual void OnSceneAdd(Scene* scene) { 00035 std::list<ugdk::script::VirtualObj> args; 00036 00037 SceneProxy* sceneproxy = dynamic_cast<SceneProxy*>(scene); 00038 if (sceneproxy != NULL) { 00039 args.push_back( sceneproxy->get_proxy_vobj() ); 00040 } 00041 else { 00042 ugdk::script::VirtualObj vscene = ugdk::script::VirtualObj(proxy_.wrapper()); 00043 vscene.set_value<Scene*>(scene); 00044 args.push_back( vscene ); 00045 } 00046 00047 if(proxy_["OnSceneAdd"]) 00048 ( proxy_ | "OnSceneAdd" )(args); 00049 } 00050 00051 }; 00052 00053 } 00054 } 00055 #endif