From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- .../Network/PlayerCommunicator/EditorConnection.h | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Runtime/Network/PlayerCommunicator/EditorConnection.h (limited to 'Runtime/Network/PlayerCommunicator/EditorConnection.h') diff --git a/Runtime/Network/PlayerCommunicator/EditorConnection.h b/Runtime/Network/PlayerCommunicator/EditorConnection.h new file mode 100644 index 0000000..c2f020d --- /dev/null +++ b/Runtime/Network/PlayerCommunicator/EditorConnection.h @@ -0,0 +1,77 @@ +#pragma once + +#if UNITY_EDITOR + +#include "GeneralConnection.h" +#include "Runtime/Misc/SystemInfo.h" +#include "Runtime/Serialize/SwapEndianBytes.h" + + +#if UNITY_WIN +#include +#include +#else +#include +#include +#include +#include +#include +#include +#endif +#include "Runtime/Profiler/TimeHelper.h" +#include "Runtime/Threads/Mutex.h" + + +class EditorConnection : public GeneralConnection +{ +public: + EditorConnection (unsigned short multicastPort = PLAYER_MULTICAST_PORT); + + static void Initialize (); + static void Cleanup (); + + void ResetLastPlayer(); + + void GetAvailablePlayers( std::vector& values ); + void GetAvailablePlayers( RuntimePlatform platform, std::vector& values ); + std::string GetConnectionIdentifier( UInt32 guid ); + bool IsIdentifierConnectable( UInt32 guid ); + bool IsIdentifierOnLocalhost( UInt32 guid ); + + int ConnectPlayer (UInt32 guid); + int ConnectPlayerDirectIP(const std::string& IP); + + UInt32 AddPlayer(std::string hostName, std::string localIP, unsigned short port, UInt32 guid, int flags); + void RemovePlayer(UInt32 guid); + void EnablePlayer(UInt32 guid, bool enable); + + // Singleton accessor for editorconnection + static EditorConnection& Get (); + static EditorConnection* ms_Instance; + + MulticastInfo PollWithCustomMessage (); + +private: + virtual bool IsServer () { return false; } + + struct AvailablePlayer + { + AvailablePlayer(ABSOLUTE_TIME time, const MulticastInfo& info) + : m_LastPing (time) + , m_MulticastInfo(info) + , m_Enabled(true) + {} + + ABSOLUTE_TIME m_LastPing; + MulticastInfo m_MulticastInfo; + bool m_Enabled; + }; + +private: + typedef std::map< UInt32, AvailablePlayer > AvailablePlayerMap; + AvailablePlayerMap m_AvailablePlayers; + + ABSOLUTE_TIME m_LastCleanup; +}; + +#endif -- cgit v1.1-26-g67d0