#pragma once #include "glm/glm.hpp" #include #include class asIScriptGeneric; class CScriptArray; namespace Deer { class Entity; class EntityEnvironment; struct EntityHandle { uint32_t entityId; EntityHandle(uint32_t _id = 0) : entityId(_id) {} }; namespace Scripting { // SPECIFIC ENTITY SECTION Entity& getContextEntity(EntityHandle); EntityEnvironment& getContextEntityEnvironment(EntityHandle); template T& getContextEntityComponent(EntityHandle handle); EntityHandle entity_getSelf(EntityHandle&); std::string entity_getName(EntityHandle&); int entity_getId(EntityHandle&); void entity_setName(std::string&, EntityHandle&); bool entity_exists(EntityHandle&); bool entity_isRoot(EntityHandle&); void entity_destroy(EntityHandle&); CScriptArray* entity_getChildrens(EntityHandle&); glm::mat4 entity_getWorldMatrix(EntityHandle&); int entity_getNetworkBehaviour(EntityHandle&); void entity_setNetworkBehaviour(int, EntityHandle&); int entity_getForcedNetworkBehaviour(EntityHandle&); bool entity_isValidNetworkBehaviour(EntityHandle&); EntityHandle entity_createChild(std::string&, EntityHandle&); void entity_setParent(EntityHandle, EntityHandle&); EntityHandle entity_getParent(EntityHandle&); bool entity_isDescendantOf(EntityHandle, EntityHandle&); bool entity_opEquals(EntityHandle& other, EntityHandle&); void entity_addGenericComponent(asIScriptGeneric* generic); void entity_removeGenericComponent(asIScriptGeneric* generic); void entity_getGenericComponent(asIScriptGeneric* generic); void entity_hasGenericComponent(asIScriptGeneric* generic); // SPECIFIC TRANSFORM SECTION glm::vec3 transform_getPosition(EntityHandle&); glm::vec3 transform_getScale(EntityHandle&); glm::quat transform_getRotation(EntityHandle&); glm::vec3 transform_getEuler(EntityHandle&); void transform_setPosition(glm::vec3, EntityHandle&); void transform_setScale(glm::vec3, EntityHandle&); void transform_setRotation(glm::quat, EntityHandle&); void transform_setEuler(glm::vec3, EntityHandle&); void constructEntityStruct(void* memory); void destructEntityStruct(void* memory); } // namespace Scripting } // namespace Deer