mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:24:00 +02:00
add a direct registration for EntityEditPacketSender
This commit is contained in:
parent
2d5428276a
commit
0811553c41
3 changed files with 17 additions and 3 deletions
|
@ -19,7 +19,7 @@
|
|||
|
||||
EntityEditPacketSender::EntityEditPacketSender() {
|
||||
auto& packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
|
||||
packetReceiver.registerListener(PacketType::EntityEditNack, this, "processEntityEditNackPacket");
|
||||
packetReceiver.registerDirectListener(PacketType::EntityEditNack, this, "processEntityEditNackPacket");
|
||||
}
|
||||
|
||||
void EntityEditPacketSender::processEntityEditNackPacket(QSharedPointer<NLPacket> packet, SharedNodePointer sendingNode) {
|
||||
|
|
|
@ -63,6 +63,17 @@ bool PacketReceiver::registerListenerForTypes(const QSet<PacketType::Value>& typ
|
|||
return true;
|
||||
}
|
||||
|
||||
void PacketReceiver::registerDirectListener(PacketType::Value type, QObject* listener, const char* slot) {
|
||||
bool success = registerListener(type, listener, slot);
|
||||
if (success) {
|
||||
_directConnectSetMutex.lock();
|
||||
|
||||
// if we successfully registered, add this object to the set of objects that are directly connected
|
||||
_directlyConnectedObjects.insert(listener);
|
||||
|
||||
_directConnectSetMutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
void PacketReceiver::registerDirectListenerForTypes(const QSet<PacketType::Value>& types,
|
||||
QObject* listener, const char* slot) {
|
||||
|
@ -72,7 +83,7 @@ void PacketReceiver::registerDirectListenerForTypes(const QSet<PacketType::Value
|
|||
_directConnectSetMutex.lock();
|
||||
|
||||
// if we successfully registered, add this object to the set of objects that are directly connected
|
||||
_directlyConnectedObjects.insert(dynamic_cast<QObject*>(listener));
|
||||
_directlyConnectedObjects.insert(listener);
|
||||
|
||||
_directConnectSetMutex.unlock();
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "NLPacket.h"
|
||||
#include "udt/PacketHeaders.h"
|
||||
|
||||
class EntityEditPacketSender;
|
||||
class OctreePacketProcessor;
|
||||
|
||||
class PacketReceiver : public QObject {
|
||||
|
@ -53,9 +54,10 @@ signals:
|
|||
void packetVersionMismatch(PacketType::Value type);
|
||||
|
||||
private:
|
||||
// this is a brutal hack for now - ideally GenericThread / ReceivedPacketProcessor
|
||||
// these are brutal hacks for now - ideally GenericThread / ReceivedPacketProcessor
|
||||
// should be changed to have a true event loop and be able to handle our QMetaMethod::invoke
|
||||
void registerDirectListenerForTypes(const QSet<PacketType::Value>& types, QObject* listener, const char* slot);
|
||||
void registerDirectListener(PacketType::Value type, QObject* listener, const char* slot);
|
||||
|
||||
bool packetVersionMatch(const NLPacket& packet);
|
||||
|
||||
|
@ -72,6 +74,7 @@ private:
|
|||
QMutex _directConnectSetMutex;
|
||||
QSet<QObject*> _directlyConnectedObjects;
|
||||
|
||||
friend class EntityEditPacketSender;
|
||||
friend class OctreePacketProcessor;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue