/// <summary>
    /// sends a message to the client
    /// </summary>
    /// <param name="pNetworkObject"></param>
    /// <param name="pClient"></param>
    public void SendObjectToClient(NetworkObject pNetworkObject, IClient pClient)
    {
        int i = 1;

        foreach (IClient client in clients.Where(x => x != pClient))
        {
            //Spawn data to send
            SpawnMessageModel spawnMessageData = new SpawnMessageModel
            {
                networkID  = i,
                resourceID = pNetworkObject.resourceId,
                x          = pNetworkObject.gameObject.transform.position.x,
                y          = pNetworkObject.gameObject.transform.position.y
            };

            //create the message
            using (Message m = Message.Create(
                       NetworkTags.InGame.SPAWN_OBJECT,         //Tag
                       spawnMessageData)                        //Data
                   )
            {
                //Send the message in TCP mode (Reliable)
                pClient.SendMessage(m, SendMode.Reliable);

                i++;
            }
        }
    }
Example #2
0
    /// <summary>
    /// Spawn object if message received is tagged as SPAWN_OBJECT
    /// </summary>

    /* <param name="sender"></param>
     * /// <param name="e"></param> */
    private void SpawnGameObjects(object sender, MessageReceivedEventArgs e)
    {
        if (e.Tag == NetworkTags.InGame.SPAWN_OBJECT)
        {
            //Get message data
            SpawnMessageModel spawnMessage = e.GetMessage().Deserialize <SpawnMessageModel>();
            //Spawn the game object
            string     resourcePath = NetworkObjectDictionnary.GetResourcePathFor(spawnMessage.resourceID);
            GameObject go           = Resources.Load(resourcePath) as GameObject;
            go.GetComponent <NetworkObject>().id = spawnMessage.networkID;
            Instantiate(go, new Vector3(spawnMessage.x, spawnMessage.y, 0), Quaternion.identity);
        }
    }
    /// <summary>
    /// Send a message to the client to spawn an object into its scene
    /// </summary>
    /// <param name="pClient"></param>
    public void SendObjectToSpawnTo(NetworkObject pNetworkObject, IClient pClient)
    {
        //Spawn data to send
        SpawnMessageModel spawnMessageData = new SpawnMessageModel
        {
            networkID  = pNetworkObject.id,
            resourceID = pNetworkObject.resourceId,
            x          = pNetworkObject.gameObject.transform.position.x,
            y          = pNetworkObject.gameObject.transform.position.y
        };

        //create the message
        using (Message m = Message.Create(
                   NetworkTags.InGame.SPAWN_OBJECT,         //Tag
                   spawnMessageData)                        //Data
               ){
            //Send the message in TCP mode (Reliable)
            pClient.SendMessage(m, SendMode.Reliable);
        }
    }