13 #ifndef hifi_EntityTypes_h
14 #define hifi_EntityTypes_h
21 #include "EntitiesLogging.h"
24 using EntityItemPointer = std::shared_ptr<EntityItem>;
25 using EntityItemWeakPointer = std::weak_ptr<EntityItem>;
27 inline uint qHash(
const EntityItemPointer& a, uint seed) {
28 return qHash(a.get(), seed);
32 class EntityItemProperties;
33 class ReadBitstreamToTreeParams;
35 typedef EntityItemPointer (*EntityTypeFactory)(
const EntityItemID& entityID,
const EntityItemProperties& properties);
105 typedef enum EntityType_t {
115 ProceduralParticleEffect,
131 static bool typeIsValid(EntityType type);
132 static const QString& getEntityTypeName(EntityType entityType);
133 static EntityTypes::EntityType getEntityTypeFromName(
const QString& name);
134 static bool registerEntityType(EntityType entityType,
const char* name, EntityTypeFactory factoryMethod);
135 static void extractEntityTypeAndID(
const unsigned char* data,
int dataLength, EntityTypes::EntityType& typeOut, QUuid& idOut);
136 static EntityItemPointer constructEntityItem(EntityType entityType,
const EntityItemID& entityID,
const EntityItemProperties& properties);
137 static EntityItemPointer constructEntityItem(
const unsigned char* data,
int bytesToRead);
138 static EntityItemPointer constructEntityItem(
const QUuid&
id,
const EntityItemProperties& properties);
141 static QMap<EntityType, QString> _typeToNameMap;
142 static QMap<QString, EntityTypes::EntityType> _nameToTypeMap;
143 static EntityTypeFactory _factories[NUM_TYPES];
144 static bool _factoriesInitialized;
152 #define REGISTER_ENTITY_TYPE(x) bool x##Registration = \
153 EntityTypes::registerEntityType(EntityTypes::x, #x, x##EntityItem::factory);
156 struct EntityRegistrationChecker {
157 EntityRegistrationChecker(
bool result,
const char* debugMessage) {
159 qCDebug(entities) << debugMessage;
169 #define REGISTER_ENTITY_TYPE_WITH_FACTORY(x,y) static bool x##Registration = \
170 EntityTypes::registerEntityType(EntityTypes::x, #x, y); \
171 EntityRegistrationChecker x##RegistrationChecker( \
173 "UNEXPECTED: REGISTER_ENTITY_TYPE_WITH_FACTORY(" #x "," #y ") FAILED.!");
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
A generic 3D model displaying geometry loaded from a URL.
Definition: Model.h:85
@ Unknown
Socket type unknown or not set.