12 #ifndef hifi_AvatarTraits_h
13 #define hifi_AvatarTraits_h
20 #include <QtCore/QUuid>
22 class ExtendedIODevice;
25 namespace AvatarTraits {
26 enum TraitType : int8_t {
35 AvatarEntity = FirstInstancedTrait,
42 const int NUM_SIMPLE_TRAITS = (int)FirstInstancedTrait;
43 const int NUM_INSTANCED_TRAITS = (int)TotalTraitTypes - (
int)FirstInstancedTrait;
44 const int NUM_TRAITS = (int)TotalTraitTypes;
46 using TraitInstanceID = QUuid;
48 inline bool isSimpleTrait(TraitType traitType) {
49 return traitType > NullTrait && traitType < FirstInstancedTrait;
52 using TraitVersion = int32_t;
53 const TraitVersion DEFAULT_TRAIT_VERSION = 0;
54 const TraitVersion NULL_TRAIT_VERSION = -1;
56 using TraitWireSize = int16_t;
57 const TraitWireSize DELETED_TRAIT_SIZE = -1;
58 const TraitWireSize MAXIMUM_TRAIT_SIZE = INT16_MAX;
60 using TraitMessageSequence = int64_t;
61 const TraitMessageSequence FIRST_TRAIT_SEQUENCE = 0;
62 const TraitMessageSequence MAX_TRAIT_SEQUENCE = INT64_MAX;
64 qint64 packTrait(TraitType traitType, ExtendedIODevice& destination,
const AvatarData& avatar);
65 qint64 packVersionedTrait(TraitType traitType, ExtendedIODevice& destination,
66 TraitVersion traitVersion,
const AvatarData& avatar);
68 qint64 packTraitInstance(TraitType traitType, TraitInstanceID traitInstanceID,
69 ExtendedIODevice& destination, AvatarData& avatar);
70 qint64 packVersionedTraitInstance(TraitType traitType, TraitInstanceID traitInstanceID,
71 ExtendedIODevice& destination, TraitVersion traitVersion,
74 qint64 packInstancedTraitDelete(TraitType traitType, TraitInstanceID instanceID, ExtendedIODevice& destination,
75 TraitVersion traitVersion = NULL_TRAIT_VERSION);