00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "asEntity.h"
00018
00019 #ifdef __COMPILE_WITH_ANGELSCRIPT__
00020
00021 #include "asHasEvents.h"
00022 #include "asEntityComponent.h"
00023 #include "../ScriptHelper.h"
00024
00025 #include "../../core/Entity.h"
00026
00027
00029 Entity* createEntity(const std::string &name)
00030 {
00031 return new Entity(name);
00032 }
00033
00036 bool addComponent(asIScriptObject *object, Entity *entity)
00037 {
00038 ScriptedEntityComponent *component = new ScriptedEntityComponent(object);
00039 bool succeeded = entity->addComponent(component);
00040 component->drop();
00041
00042 return succeeded;
00043 }
00044
00045
00047 void bindEntity(asIScriptEngine *engine)
00048 {
00049
00050 int r;
00051
00052
00053 r = engine->RegisterObjectType("Entity", sizeof(Entity), asOBJ_REF);
00054 r = engine->RegisterObjectType("EntityComponent", sizeof(EntityComponent), asOBJ_REF);
00055 r = engine->RegisterInterface("IEntityComponent");
00056
00057
00058 bindHasEventsBase<Entity>(engine, "Entity");
00059
00060
00061 r = engine->RegisterObjectBehaviour("Entity", asBEHAVE_FACTORY, "Entity@ f(const string &in)",
00062 asFUNCTION(createEntity), asCALL_CDECL); assert(r >= 0);
00063 r = engine->RegisterObjectBehaviour("Entity", asBEHAVE_ADDREF, "void f()",
00064 asMETHOD(Entity, grab), asCALL_THISCALL); assert(r >= 0);
00065 r = engine->RegisterObjectBehaviour("Entity", asBEHAVE_RELEASE, "void f()",
00066 asMETHOD(Entity, drop), asCALL_THISCALL); assert(r >= 0);
00067
00068 r = engine->RegisterObjectMethod("Entity", "Entity& opAssign(const Entity &in)",
00069 asFUNCTION(assignT<Entity>), asCALL_CDECL_OBJLAST); assert(r >= 0);
00070
00071
00072 r = engine->RegisterObjectMethod("Entity", "u32 getID()",
00073 asMETHOD(Entity, getID), asCALL_THISCALL); assert(r >= 0);
00074 r = engine->RegisterObjectMethod("Entity", "const string& getName()",
00075 asMETHOD(Entity, getName), asCALL_THISCALL); assert(r >= 0);
00076
00077 r = engine->RegisterObjectMethod("Entity", "bool addChild(Entity @+)",
00078 asMETHOD(Entity, addChild), asCALL_THISCALL); assert(r >= 0);
00079 r = engine->RegisterObjectMethod("Entity", "bool addComponent(EntityComponent @+)",
00080 asMETHOD(Entity, addComponent), asCALL_THISCALL); assert(r >= 0);
00081 r = engine->RegisterObjectMethod("Entity", "bool addComponent(IEntityComponent @+)",
00082 asFUNCTION(addComponent), asCALL_CDECL_OBJLAST); assert(r >= 0);
00083
00084 r = engine->RegisterObjectMethod("Entity", "AssetGroup@ getAssetGroup()",
00085 asMETHOD(Entity, getAssetGroup), asCALL_THISCALL); assert(r >= 0);
00086 r = engine->RegisterObjectMethod("Entity", "Entity@ getChild(const u32)",
00087 asMETHODPR(Entity, getChild, (const u32), Entity*),
00088 asCALL_THISCALL); assert(r >= 0);
00089 r = engine->RegisterObjectMethod("Entity", "Entity@ getChild(const string &in)",
00090 asMETHODPR(Entity, getChild, (const std::string &), Entity*),
00091 asCALL_THISCALL); assert(r >= 0);
00092 r = engine->RegisterObjectMethod("Entity", "EntityComponent@ getComponent(const u32)",
00093 asMETHODPR(Entity, getComponent, (const u32), EntityComponent*),
00094 asCALL_THISCALL); assert(r >= 0);
00095 r = engine->RegisterObjectMethod("Entity", "EntityComponent@ getComponent(const string &in)",
00096 asMETHODPR(Entity, getComponent, (const std::string &), EntityComponent*),
00097 asCALL_THISCALL); assert(r >= 0);
00098
00099 r = engine->RegisterObjectMethod("Entity", "Entity@ getParent()",
00100 asMETHOD(Entity, getParent), asCALL_THISCALL); assert(r >= 0);
00101
00102 r = engine->RegisterObjectMethod("Entity", "bool loadXML(const string &in)",
00103 asMETHODPR(Entity, loadXML, (const std::string&), bool), asCALL_THISCALL);
00104 assert(r >= 0);
00105
00106 r = engine->RegisterObjectMethod("Entity", "void removeChildren()",
00107 asMETHOD(Entity, removeChildren), asCALL_THISCALL); assert(r >= 0);
00108 r = engine->RegisterObjectMethod("Entity", "void removeComponents()",
00109 asMETHOD(Entity, removeComponents), asCALL_THISCALL); assert(r >= 0);
00110 r = engine->RegisterObjectMethod("Entity", "bool removeChild(Entity @+)",
00111 asMETHODPR(Entity, removeChild, (Entity*), bool),
00112 asCALL_THISCALL); assert(r >= 0);
00113 r = engine->RegisterObjectMethod("Entity", "bool removeChild(const u32)",
00114 asMETHODPR(Entity, removeChild, (const u32), bool),
00115 asCALL_THISCALL); assert(r >= 0);
00116 r = engine->RegisterObjectMethod("Entity", "bool removeChild(const string &in)",
00117 asMETHODPR(Entity, removeChild, (const std::string&), bool),
00118 asCALL_THISCALL); assert(r >= 0);
00119 r = engine->RegisterObjectMethod("Entity", "bool removeComponent(EntityComponent @+)",
00120 asMETHODPR(Entity, removeComponent, (EntityComponent*), bool),
00121 asCALL_THISCALL); assert(r >= 0);
00122 r = engine->RegisterObjectMethod("Entity", "bool removeComponent(const u32)",
00123 asMETHODPR(Entity, removeComponent, (const u32), bool),
00124 asCALL_THISCALL); assert(r >= 0);
00125 r = engine->RegisterObjectMethod("Entity", "bool removeComponent(const string &in)",
00126 asMETHODPR(Entity, removeComponent, (const std::string&), bool),
00127 asCALL_THISCALL); assert(r >= 0);
00128 r = engine->RegisterObjectMethod("Entity", "void removeParent()",
00129 asMETHOD(Entity, removeParent), asCALL_THISCALL); assert(r >= 0);
00130
00131 r = engine->RegisterObjectMethod("Entity", "void setParent(Entity @+)",
00132 asMETHOD(Entity, setParent), asCALL_THISCALL); assert(r >= 0);
00133
00134 r = engine->RegisterObjectMethod("Entity", "void setAbsolutePosition(vector3df &in)",
00135 asMETHOD(Entity, setAbsolutePosition), asCALL_THISCALL); assert(r >= 0);
00136 r = engine->RegisterObjectMethod("Entity", "void setPosition(vector3df &in)",
00137 asMETHOD(Entity, setPosition), asCALL_THISCALL); assert(r >= 0);
00138 r = engine->RegisterObjectMethod("Entity", "void setAbsoluteRotation(vector3df &in)",
00139 asMETHOD(Entity, setAbsoluteRotation), asCALL_THISCALL); assert(r >= 0);
00140 r = engine->RegisterObjectMethod("Entity", "void setRotation(vector3df &in)",
00141 asMETHOD(Entity, setRotation), asCALL_THISCALL); assert(r >= 0);
00142 }
00143
00144 #endif // __COMPILE_WITH_ANGELSCRIPT__
00145
00146