Ejemplo n.º 1
0
 public SparkRPC(Guid netGuid, string methodName, int[] receiverIds, SparkPeer sender, object[] parameters)
 {
     this.NetGuid     = netGuid;
     this.MethodName  = methodName;
     this.ReceiverIds = receiverIds;
     this.Sender      = sender;
     this.Parameters  = parameters;
 }
Ejemplo n.º 2
0
    /// <summary>
    /// Starts the match.
    /// </summary>
    /// <param name="message">Message.</param>
    public void StartMatch(MatchFoundMessage message)
    {
        sparkMatch = new SparkMatch(message);

        foreach (MatchFoundMessage._Participant participant in message.Participants)
        {
            SparkPeer peer = new SparkPeer(participant.DisplayName, participant.Id, participant.PeerId.Value);

            sparkMatch.peerList.Add(peer);
        }

        sparkNetwork.Configure(message,
                               OnPlayerConnect,
                               OnPlayerDisconnect,
                               OnReady,
                               OnPacket
                               );

        sparkNetwork.Connect();
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Raises the player disconnect event.
    /// </summary>
    /// <param name="peerId">Peer identifier.</param>
    private void OnPlayerDisconnect(int peerId)
    {
        SparkPeer peer = sparkMatch.FindBy_Id(peerId);

        foreach (SparkView view in sparkViews)
        {
            if (view.sparkPeer.id == peerId)
            {
                view.SendEvent_PlayerDisconnect(peer);
            }
        }

        if (IsMasterPlayer)
        {
            LocalRPC("Remove_LocalRPC_Buffer", SparkTargets.Others, false, peer);
            LocalRPC("Remove_RPC_Buffer", SparkTargets.Others, false, peer);

            Remove_LocalRPC_Buffer(peer);
            Remove_RPC_Buffer(peer);
        }

        for (int i = sparkViews.Count - 1; i >= 0; i--)
        {
            if (sparkViews[i].sparkPeer.id == peerId)
            {
                Destroy(sparkViews[i].gameObject);
            }
        }

        if (IsMasterPlayer)
        {
            foreach (SparkView view in sparkViews)
            {
                view.Call("LocalRPC", "Remove_LocalRPC_Buffer", SparkTargets.Others, false, peer);
                view.Call("LocalRPC", "Remove_RPC_Buffer", SparkTargets.Others, false, peer);

                view.Call("Remove_LocalRPC_Buffer", SparkTargets.Others, false, peer);
                view.Call("Remove_RPC_Buffer", SparkTargets.Others, false, peer);
            }
        }
    }
Ejemplo n.º 4
0
    private GameObject TryInstantiate(GameObject prefab, Vector3 position, Quaternion rotation, bool isBuffered = true)
    {
        SparkIdentity identity = prefab.GetComponent <SparkIdentity> ();
        SparkPeer     sender   = sparkMatch.peerList.Find(x => x.id == sparkNetwork.PeerId);

        List <Guid> guids = new List <Guid> ();

        foreach (SparkBehaviour behaviour in prefab.GetComponentsInChildren <SparkBehaviour>())
        {
            guids.Add(Guid.NewGuid());
        }
        foreach (SparkView view in prefab.GetComponentsInChildren <SparkView>())
        {
            guids.Add(Guid.NewGuid());
        }

        GameObject instantiate = NetworkInstantiate(identity.uniqueId, isBuffered, position, rotation, sender, guids.ToArray());

        LocalRPC("NetworkInstantiate", SparkTargets.Others, isBuffered, identity.uniqueId, isBuffered, position, rotation, sender, guids.ToArray());

        return(instantiate);
    }
Ejemplo n.º 5
0
    /// <summary>
    /// Raises the match updated event.
    /// </summary>
    /// <param name="message">Message.</param>
    private void OnMatchUpdated(MatchUpdatedMessage message)
    {
        foreach (SparkView view in sparkViews)
        {
            view.SendEvent_MatchUpdated(message);
        }

        foreach (MatchUpdatedMessage._Participant participant in message.Participants)
        {
            SparkPeer peer = new SparkPeer(participant.DisplayName, participant.Id, participant.PeerId.Value);

            if (message.AddedPlayers.Contains(participant.Id))
            {
                sparkMatch.peerList.Add(peer);
            }

            if (message.RemovedPlayers.Contains(participant.Id))
            {
                sparkMatch.peerList.Remove(peer);
            }
        }
    }
Ejemplo n.º 6
0
 // Disconnect
 private void OnPlayerDisconnect(SparkPeer peer)
 {
 }
Ejemplo n.º 7
0
    private GameObject NetworkInstantiate(string uniqueId, bool isBuffered, Vector3 position, Quaternion rotation, SparkPeer sender, Guid[] guids)
    {
        GameObject[] gameObjects = Resources.FindObjectsOfTypeAll <GameObject> ();

        foreach (GameObject instantiate in gameObjects)
        {
            SparkIdentity identity = instantiate.GetComponent <SparkIdentity> ();

            if (identity != null && identity.uniqueId == uniqueId)
            {
                GameObject obj = GameObject.Instantiate(instantiate, position, rotation);

                int count = 0;
                foreach (SparkBehaviour behaviour in obj.GetComponentsInChildren <SparkBehaviour>())
                {
                    behaviour.netGuid = guids [count++];
                }

                foreach (SparkView view in obj.GetComponentsInChildren <SparkView>())
                {
                    view.sparkPeer = sender;
                    view.SendEvent_OnInstantiate();
                    view.netGuid = guids[count++];
                }

                return(obj);
            }
        }

        throw new Exception("A GameObject with this SparkIdentity ID was not found.");
    }
Ejemplo n.º 8
0
 /// <summary>
 /// Removes the RPC from the local RPC buffer.
 /// </summary>
 /// <param name="sender">Sender.</param>
 private void Remove_LocalRPC_Buffer(SparkPeer sender)
 {
     LocalRPC_Buffer.RemoveAll(x => x.Sender == sender);
 }
Ejemplo n.º 9
0
 public SparkMessageInfo(SparkPeer sender)
 {
     this.Sender = sender;
 }
Ejemplo n.º 10
0
 private void OnPlayerDisconnect(SparkPeer peer)
 {
     Debug.Log("On player disconnect.");
 }