2026-03-04 00:03:43 +01:00

67 lines
2.2 KiB
C++

#pragma once
#include "glm/glm.hpp"
#include <stdint.h>
#include <string>
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 <typename T>
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