12 #ifndef hifi_EntityTypes_h
13 #define hifi_EntityTypes_h
20 #include "EntitiesLogging.h"
23 using EntityItemPointer = std::shared_ptr<EntityItem>;
24 using EntityItemWeakPointer = std::weak_ptr<EntityItem>;
26 inline uint qHash(
const EntityItemPointer& a, uint seed) {
27 return qHash(a.get(), seed);
32 class ReadBitstreamToTreeParams;
93 typedef enum EntityType_t {
114 static bool typeIsValid(EntityType type);
115 static const QString& getEntityTypeName(EntityType entityType);
116 static EntityTypes::EntityType getEntityTypeFromName(
const QString& name);
117 static bool registerEntityType(EntityType entityType,
const char* name, EntityTypeFactory factoryMethod);
118 static void extractEntityTypeAndID(
const unsigned char* data,
int dataLength, EntityTypes::EntityType& typeOut, QUuid& idOut);
120 static EntityItemPointer constructEntityItem(
const unsigned char* data,
int bytesToRead);
121 static EntityItemPointer constructEntityItem(
const QUuid&
id,
const EntityItemProperties& properties);
124 static QMap<EntityType, QString> _typeToNameMap;
125 static QMap<QString, EntityTypes::EntityType> _nameToTypeMap;
126 static EntityTypeFactory _factories[NUM_TYPES];
127 static bool _factoriesInitialized;
135 #define REGISTER_ENTITY_TYPE(x) bool x##Registration = \
136 EntityTypes::registerEntityType(EntityTypes::x, #x, x##EntityItem::factory);
139 struct EntityRegistrationChecker {
140 EntityRegistrationChecker(
bool result,
const char* debugMessage) {
142 qCDebug(entities) << debugMessage;
152 #define REGISTER_ENTITY_TYPE_WITH_FACTORY(x,y) static bool x##Registration = \
153 EntityTypes::registerEntityType(EntityTypes::x, #x, y); \
154 EntityRegistrationChecker x##RegistrationChecker( \
156 "UNEXPECTED: REGISTER_ENTITY_TYPE_WITH_FACTORY(" #x "," #y ") FAILED.!");
Definition: EntityItem.h:82
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
Definition: EntityItemProperties.h:106
A generic 3D model displaying geometry loaded from a URL.
Definition: Model.h:84
@ Unknown
Socket type unknown or not set.