mirror of
https://github.com/overte-org/overte.git
synced 2025-08-13 00:35:14 +02:00
64 lines
2.1 KiB
C++
64 lines
2.1 KiB
C++
//
|
|
// AvatarHashMap.h
|
|
// libraries/avatars/src
|
|
//
|
|
// Created by Stephen AndrewMeadows on 1/28/2014.
|
|
// Copyright 2014 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#ifndef hifi_AvatarHashMap_h
|
|
#define hifi_AvatarHashMap_h
|
|
|
|
#include <QtCore/QHash>
|
|
#include <QtCore/QSharedPointer>
|
|
#include <QtCore/QUuid>
|
|
|
|
#include <DependencyManager.h>
|
|
#include <Node.h>
|
|
|
|
#include "AvatarData.h"
|
|
#include <glm/glm.hpp>
|
|
|
|
typedef QSharedPointer<AvatarData> AvatarSharedPointer;
|
|
typedef QWeakPointer<AvatarData> AvatarWeakPointer;
|
|
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
|
|
|
|
class AvatarHashMap : public QObject, public Dependency {
|
|
Q_OBJECT
|
|
SINGLETON_DEPENDENCY
|
|
|
|
public:
|
|
const AvatarHash& getAvatarHash() { return _avatarHash; }
|
|
int size() { return _avatarHash.size(); }
|
|
|
|
public slots:
|
|
void processAvatarMixerDatagram(const QByteArray& datagram, const QWeakPointer<Node>& mixerWeakPointer);
|
|
bool containsAvatarWithDisplayName(const QString& displayName);
|
|
bool isAvatarInRange(const glm::vec3 & position, const float range);
|
|
AvatarWeakPointer avatarWithDisplayName(const QString& displayname);
|
|
|
|
private slots:
|
|
void sessionUUIDChanged(const QUuid& sessionUUID, const QUuid& oldUUID);
|
|
|
|
protected:
|
|
AvatarHashMap();
|
|
virtual AvatarHash::iterator erase(const AvatarHash::iterator& iterator);
|
|
|
|
bool shouldKillAvatar(const AvatarSharedPointer& sharedAvatar);
|
|
|
|
virtual AvatarSharedPointer newSharedAvatar();
|
|
AvatarSharedPointer matchingOrNewAvatar(const QUuid& nodeUUID, const QWeakPointer<Node>& mixerWeakPointer);
|
|
|
|
void processAvatarDataPacket(const QByteArray& packet, const QWeakPointer<Node>& mixerWeakPointer);
|
|
void processAvatarIdentityPacket(const QByteArray& packet, const QWeakPointer<Node>& mixerWeakPointer);
|
|
void processAvatarBillboardPacket(const QByteArray& packet, const QWeakPointer<Node>& mixerWeakPointer);
|
|
void processKillAvatar(const QByteArray& datagram);
|
|
|
|
AvatarHash _avatarHash;
|
|
QUuid _lastOwnerSessionUUID;
|
|
};
|
|
|
|
#endif // hifi_AvatarHashMap_h
|