66 lines
4.4 KiB
C++
66 lines
4.4 KiB
C++
#include "DeerCore/Components.h"
|
|
#include "DeerCore/Scripting/Helpers.h"
|
|
#include "DeerCore/Scripting/InternalAPI/Entity.h"
|
|
|
|
namespace Deer {
|
|
namespace Scripting {
|
|
extern asIScriptEngine* scriptEngine;
|
|
|
|
void registerEntity();
|
|
|
|
void registerEntityFunctions();
|
|
void registerEntityStructs();
|
|
} // namespace Scripting
|
|
|
|
void Scripting::registerEntity() {
|
|
registerEntityStructs();
|
|
registerEntityFunctions();
|
|
}
|
|
|
|
void Scripting::registerEntityFunctions() {
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "string get_name() const property", entity_getName);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "int get_id() const property", entity_getId);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "void set_name(string& in) property", entity_setName);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "Entity createChild(const string& in)", entity_createChild);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "bool get_isRoot() const property", entity_isRoot);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "void destroy()", entity_destroy);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "bool get_exists() const property", entity_exists);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "Entity get_parent() property", entity_getParent);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "void set_parent(Entity) property", entity_setParent);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "bool isDescendantOf(Entity)", entity_isDescendantOf);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "bool opEquals(const Entity &in) const", entity_opEquals);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "array<Entity>@ getChildrens()", entity_getChildrens);
|
|
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "EntityNetworkBehaviour get_networkBehaviour() const property", entity_getNetworkBehaviour);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "void set_networkBehaviour(EntityNetworkBehaviour) property", entity_setNetworkBehaviour);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "EntityNetworkBehaviour getForcedNetworkBehaviour()", entity_getForcedNetworkBehaviour);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "Entity", "bool isValidNetworkBehaviour()", entity_isValidNetworkBehaviour);
|
|
|
|
REGISTER_GENERIC_OBJECT_METHOD(scriptEngine, "Entity", "T getComponent<T>()", entity_getGenericComponent);
|
|
REGISTER_GENERIC_OBJECT_METHOD(scriptEngine, "Entity", "T addComponent<T>()", entity_addGenericComponent);
|
|
REGISTER_GENERIC_OBJECT_METHOD(scriptEngine, "Entity", "void removeComponent<T>()", entity_removeGenericComponent);
|
|
REGISTER_GENERIC_OBJECT_METHOD(scriptEngine, "Entity", "bool hasComponent<T>()", entity_hasGenericComponent);
|
|
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "vec3 get_position() const property", transform_getPosition);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "vec3 get_scale() const property", transform_getScale);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "vec3 get_rotation() const property", transform_getRotation);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "void set_position(const vec3) property", transform_setPosition);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "void set_scale(const vec3) property", transform_setScale);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "TransformComponent", "void set_rotation(const vec3) property", transform_setRotation);
|
|
}
|
|
|
|
void Scripting::registerEntityStructs() {
|
|
AS_CHECK(scriptEngine->RegisterObjectType("Entity", sizeof(EntityHandle), asOBJ_VALUE | asOBJ_POD | asGetTypeTraits<EntityHandle>() | asOBJ_APP_CLASS_ALLINTS));
|
|
AS_CHECK(scriptEngine->RegisterObjectType("TransformComponent", sizeof(EntityHandle), asOBJ_VALUE | asOBJ_POD | asGetTypeTraits<EntityHandle>() | asOBJ_APP_CLASS_ALLINTS));
|
|
|
|
REGISTER_EXT_OBJECT_CONSTRUCTOR(scriptEngine, "Entity", "void f()", constructEntityStruct);
|
|
REGISTER_EXT_OBJECT_CONSTRUCTOR(scriptEngine, "TransformComponent", "void f()", constructEntityStruct);
|
|
|
|
AS_CHECK(scriptEngine->RegisterEnum("EntityNetworkBehaviour"));
|
|
AS_CHECK(scriptEngine->RegisterEnumValue("EntityNetworkBehaviour", "Parent", (int)EntityNetworkBehaviour::PARENT));
|
|
AS_CHECK(scriptEngine->RegisterEnumValue("EntityNetworkBehaviour", "Client", (int)EntityNetworkBehaviour::CLIENT));
|
|
AS_CHECK(scriptEngine->RegisterEnumValue("EntityNetworkBehaviour", "Server", (int)EntityNetworkBehaviour::SERVER));
|
|
}
|
|
|
|
} // namespace Deer
|