00001 #ifndef _ENTITY_H_
00002 #define _ENTITY_H_
00003
00004 #include "Defines.h"
00005 #include "Renderer.h"
00006 #include "ScriptMgr.h"
00007 #include <string.h>
00008
00009 #if _MSC_VER > 1000
00010 #pragma once
00011 #endif // _MSC_VER > 1000
00012
00013 namespace zak {
00014
00019 class ZAKENGINE_API ENTITY : protected SupportScriptReferences {
00020 protected:
00021 char _pszNombre[256];
00022 bool _bVisible;
00023
00024 virtual void Release(){}
00025 virtual void Reset(){}
00026
00027 friend class Renderer;
00028
00029 public:
00034 void SetVisible(bool bVis)
00035 {
00036 _bVisible=bVis;
00037 };
00038
00043 bool GetVisible(void)
00044 {
00045 return _bVisible;
00046 };
00047
00052 void SetName(char * pszName)
00053 {
00054 strcpy(_pszNombre, pszName);
00055 }
00056
00061 char *GetName ()
00062 {
00063 return _pszNombre;
00064 }
00065
00066 static bool RegisterEntity (char *className=NULL) {
00067 char _className[100];
00068
00069 if (className != NULL) {
00070 strcpy_s(_className, 100, className);
00071 } else {
00072 strcpy_s(_className, 100, "Entity");
00073 if (ScriptMgr::RegisterObjectType(_className, 0, 0) < 0)
00074 return false;
00075 }
00076
00077 if (ScriptMgr::RegisterObjectBehaviour(_className, asBEHAVE_ADDREF,"void f()", asMETHOD(SupportScriptReferences, AddRef), asCALL_GENERIC) < 0)
00078 return false;
00079 if (ScriptMgr::RegisterObjectBehaviour(_className, asBEHAVE_RELEASE,"void f()", asMETHOD(SupportScriptReferences, Release), asCALL_GENERIC) < 0)
00080 return false;
00081 if (ScriptMgr::RegisterObjectMethod(_className, "void SetVisible(bool)",asMETHODPR(ENTITY, SetVisible,(bool), void),asCALL_THISCALL) < 0)
00082 return false;
00083 if (ScriptMgr::RegisterObjectMethod(_className, "bool GetVisible()",asMETHODPR(ENTITY, GetVisible, (void), bool),asCALL_THISCALL) < 0)
00084 return false;
00085
00086 return true;
00087 }
00088
00092 ENTITY(){
00093 _bVisible = true;
00094 _pszNombre[0]='\0';
00095 g_renderer.Register(this);
00096 };
00097
00101 ~ENTITY(){
00102 g_renderer.Unregister(this);
00103 };
00104 };
00105
00106 }
00107
00108 #endif // _ENTITY_H_