| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- $#include "Connection.h"
- /// Queued remote event.
- struct RemoteEvent
- {
- /// Remote sender node ID (0 if not a remote node event.)
- unsigned senderID_ @ senderID;
- /// Event type.
- StringHash eventType_ @ eventType;
- /// Event data.
- VariantMap eventData_ @ eventData;
- /// In order flag.
- bool inOrder_ @ inOrder;
- };
- /// %Connection to a remote network host.
- class Connection : public Object
- {
- public:
- /// Send a message.
- void SendMessage(int msgID, bool reliable, bool inOrder, const VectorBuffer& msg, unsigned contentID = 0);
- /// Send a message.
- void SendMessage(int msgID, bool reliable, bool inOrder, const unsigned char* data, unsigned numBytes, unsigned contentID = 0);
- /// Send a remote event.
- // void SendRemoteEvent(StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
- tolua_outside void ConnectionSendRemoteEvent @ SendRemoteEvent(const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
-
- /// Send a remote event with the specified node as sender.
- void SendRemoteEvent(Node* node, StringHash eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
- tolua_outside void ConnectSendRemoteEvent @ SendRemoteEvent(Node* node, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap);
- /// Assign scene. On the server, this will cause the client to load it.
- void SetScene(Scene* newScene);
- /// Assign identity. Called by Network.
- void SetIdentity(const VariantMap& identity);
- /// Set new controls.
- void SetControls(const Controls& newControls);
- /// Set the observer position for interest management.
- void SetPosition(const Vector3& position);
- /// Set the connection pending status. Called by Network.
- void SetConnectPending(bool connectPending);
- /// Set whether to log data in/out statistics.
- void SetLogStatistics(bool enable);
- /// Disconnect. If wait time is non-zero, will block while waiting for disconnect to finish.
- void Disconnect(int waitMSec = 0);
- /// Send scene update messages. Called by Network.
- void SendServerUpdate();
- /// Send latest controls from the client. Called by Network.
- void SendClientUpdate();
- /// Send queued remote events. Called by Network.
- void SendRemoteEvents();
- /// Send package files to client. Called by network.
- void SendPackages();
- /// Process pending latest data for nodes and components.
- void ProcessPendingLatestData();
- /// Process a message from the server or client. Called by Network.
- bool ProcessMessage(int msgID, MemoryBuffer& msg);
-
- /// Return client identity.
- const VariantMap& GetIdentity() const { return identity_; }
- /// Return the scene used by this connection.
- Scene* GetScene() const;
- /// Return the client controls of this connection.
- const Controls& GetControls() const { return controls_; }
- /// Return the observer position for interest management.
- const Vector3& GetPosition() const { return position_; }
- /// Return whether is a client connection.
- bool IsClient() const { return isClient_; }
- /// Return whether is fully connected.
- bool IsConnected() const;
- /// Return whether connection is pending.
- bool IsConnectPending() const { return connectPending_; }
- /// Return whether the scene is loaded and ready to receive server updates.
- bool IsSceneLoaded() const { return sceneLoaded_; }
- /// Return whether to log data in/out statistics.
- bool GetLogStatistics() const { return logStatistics_; }
- /// Return remote address.
- String GetAddress() const;
- /// Return remote port.
- unsigned short GetPort() const;
- /// Return an address:port string.
- String ToString() const;
- /// Return number of package downloads remaining.
- unsigned GetNumDownloads() const;
- /// Return name of current package download, or empty if no downloads.
- const String& GetDownloadName() const;
- /// Return progress of current package download, or 1.0 if no downloads.
- float GetDownloadProgress() const;
- };
- ${
- static void ConnectionSendRemoteEvent(Connection* connection, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap)
- {
- connection->SendRemoteEvent(StringHash(eventType), inOrder, eventData);
- }
- static void ConnectSendRemoteEvent(Connection* connection, Node* node, const char* eventType, bool inOrder, const VariantMap& eventData = Variant::emptyVariantMap)
- {
- connection->SendRemoteEvent(node, StringHash(eventType), inOrder, eventData);
- }
- $}
|