Ejemplo n.º 1
0
        /// <summary>
        /// Gets a <see cref="ITinyNetObject"/> by it's network identifier.
        /// </summary>
        /// <param name="nId">The NetworkID.</param>
        /// <returns></returns>
        public static ITinyNetObject GetTinyNetObjectByNetworkID(int nId)
        {
            ITinyNetObject reference = null;

            //return _localNetObjects.ContainsKey(nId) ? _localNetObjects[nId] : null;
            _localNetObjects.TryGetValue(nId, out reference);
            return(reference);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Called on the server to serialize all <see cref="ITinyNetObject"/> attached to this prefab.
 /// </summary>
 /// <param name="writer"></param>
 public void SerializeAllTinyNetObjects(NetDataWriter writer)
 {
     for (int i = 0; i < _tinyNetObjects.Length; i++)
     {
         ITinyNetObject obj = _tinyNetObjects[i];
         obj.TinySerialize(writer, true);
     }
 }
Ejemplo n.º 3
0
        //============ Static Methods =======================//



        //============ Object Networking ====================//

        /// <summary>
        /// Sends the RPC to server.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="rpcMethodIndex">Index of the RPC method.</param>
        /// <param name="iObj">The <see cref="ITinyNetObject"/> instance.</param>
        public void SendRPCToServer(NetDataWriter stream, int rpcMethodIndex, ITinyNetObject iObj)
        {
            var msg = new TinyNetRPCMessage();

            msg.networkID      = iObj.NetworkID;
            msg.rpcMethodIndex = rpcMethodIndex;
            msg.parameters     = stream.Data;

            SendMessageByChannelToTargetConnection(msg, DeliveryMethod.ReliableOrdered, connToHost);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Sends the RPC to all clients.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <param name="rpcMethodIndex">Index of the RPC method.</param>
        /// <param name="iObj">The object.</param>
        public void SendRPCToAllClients(NetDataWriter stream, int rpcMethodIndex, ITinyNetObject iObj)
        {
            var msg = new TinyNetRPCMessage();

            msg.networkID      = iObj.NetworkID;
            msg.rpcMethodIndex = rpcMethodIndex;
            msg.parameters     = stream.Data;

            SendMessageByChannelToAllObserversOf(iObj.NetIdentity, msg, DeliveryMethod.ReliableOrdered);
        }
Ejemplo n.º 5
0
        //============ TinyNetMessages Handlers =============//

        /// <summary>
        /// Called when an RPC message is received.
        /// </summary>
        /// <param name="netMsg">The net message.</param>
        protected virtual void OnRPCMessage(TinyNetMessageReader netMsg)
        {
            netMsg.ReadMessage(s_TinyNetRPCMessage);

            ITinyNetObject iObj = GetTinyNetObjectByNetworkID(s_TinyNetRPCMessage.networkID);

            if (iObj == null)
            {
                if (TinyNetLogLevel.logError)
                {
                    TinyLogger.LogError("TinyNetScene::OnRPCMessage No ITinyNetObject with the HNetworkID: " + s_TinyNetRPCMessage.networkID);
                }
                return;
            }

            recycleMessageReader.reader.SetSource(s_TinyNetRPCMessage.parameters);
            iObj.InvokeRPC(s_TinyNetRPCMessage.rpcMethodIndex, recycleMessageReader.reader);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// By default it will deserialize the <see cref="TinyNetSyncVar"/> properties.
        /// </summary>
        /// <param name="netMsg">A wrapper for a <see cref="TinyNetObjectStateUpdate"/> message.</param>
        void OnStateUpdateMessage(TinyNetMessageReader netMsg)
        {
            int networkID = netMsg.reader.GetInt();

            if (TinyNetLogLevel.logDev)
            {
                TinyLogger.Log("TinyNetClient::OnUpdateVarsMessage " + networkID + " channel:" + netMsg.channelId);
            }

            ITinyNetObject localObject = _localNetObjects[networkID];

            if (localObject != null)
            {
                localObject.TinyDeserialize(netMsg.reader, false);
            }
            else
            {
                if (TinyNetLogLevel.logWarn)
                {
                    TinyLogger.LogWarning("Did not find target for sync message for " + networkID);
                }
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Removes the <see cref="ITinyNetObject"/> from the list.
 /// </summary>
 /// <param name="netObj">The net object.</param>
 public static void RemoveTinyNetObjectFromList(ITinyNetObject netObj)
 {
     _localNetObjects.Remove(netObj.NetworkID);
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Adds the <see cref="ITinyNetObject"/> to list.
 /// </summary>
 /// <param name="netObj">The net object.</param>
 public static void AddTinyNetObjectToList(ITinyNetObject netObj)
 {
     _localNetObjects.Add(netObj.NetworkID, netObj);
 }