Esempio n. 1
0
    private void OnSerializeSparkView(SparkStream stream, SparkMessageInfo info)
    {
        if (stream.IsWriting)
        {
            if ((sparkView.IsLocalPlayer && syncer == Syncer.LocalPlayer) || (SparkManager.instance.IsMasterPlayer && syncer == Syncer.MasterPlayer))
            {
                stream.SendNext(transform.position);
                stream.SendNext(transform.localScale);
                stream.SendNext(transform.eulerAngles);
            }
        }
        else
        {
            previousPosition = transform.position;
            nextPosition     = stream.ReceiveNext <Vector3>();

            previousScale = transform.localScale;
            nextScale     = stream.ReceiveNext <Vector3>();

            previousRotation = transform.eulerAngles;
            nextRotation     = stream.ReceiveNext <Vector3>();

            syncTime  = 0f;
            syncDelay = Time.time - lastSynchronizationTime;
            lastSynchronizationTime = Time.time;
        }
    }
Esempio n. 2
0
    private void Update()
    {
        if (!SparkManager.instance.isAvailable)
        {
            return;
        }

        sendTime += Time.deltaTime;

        if (sendTime >= 1f / sendRate)
        {
            sendTime = 0;

            foreach (SparkBehaviour behaviour in ObservedBehaviours)
            {
                if (behaviour.netGuid == Guid.Empty)
                {
                    continue;
                }

                SparkStream stream;

                if (!streams.TryGetValue(behaviour.netGuid, out stream))
                {
                    stream = new SparkStream(behaviour.netGuid, observeMethod, true);
                    streams[behaviour.netGuid] = stream;
                }

                SendEvent_OnSerializeSparkView(behaviour, stream, info);

                stream.Call("Finish", info);
            }
        }
    }
Esempio n. 3
0
    /// <summary>
    /// Raises the packet event.
    /// </summary>
    /// <param name="packet">Packet.</param>
    public void OnPacket(RTPacket packet)
    {
        switch ((SparkManager.OpCode)Enum.ToObject(typeof(SparkManager.OpCode), packet.OpCode))
        {
        case SparkManager.OpCode.Sync:

            SparkStream      stream = SparkExtensions.Deserialize <SparkStream>(packet.Data.GetString(1));
            SparkMessageInfo info   = SparkExtensions.Deserialize <SparkMessageInfo>(packet.Data.GetString(2));

            foreach (SparkBehaviour behaviour in ObservedBehaviours)
            {
                if (stream.NetGuid == behaviour.netGuid)
                {
                    SendEvent_OnSerializeSparkView(behaviour, stream, info);
                }
            }

            break;

        case SparkManager.OpCode.SparkView_RPC:

            // RPC handling

            SparkRPC rpc = SparkExtensions.Deserialize <SparkRPC>(packet.Data.GetString(1));

            foreach (SparkBehaviour behaviour in ObservedBehaviours)
            {
                if (behaviour.netGuid == rpc.NetGuid)
                {
                    behaviour.Call(rpc.MethodName, rpc.Parameters);
                }
            }

            break;

        case SparkManager.OpCode.SparkView_LocalRPC:
            SparkRPC localRpc = SparkExtensions.Deserialize <SparkRPC>(packet.Data.GetString(1));

            if (localRpc.NetGuid == netGuid)
            {
                this.Call(localRpc.MethodName, localRpc.Parameters);
            }

            break;
        }
    }
Esempio n. 4
0
 // Serialize
 private void OnSerializeSparkView(SparkStream stream, SparkMessageInfo info)
 {
 }
Esempio n. 5
0
 /// <summary>
 /// Sends the event on serialize spark view.
 /// </summary>
 /// <param name="behaviour">Behaviour.</param>
 /// <param name="stream">Stream.</param>
 /// <param name="info">Info.</param>
 private void SendEvent_OnSerializeSparkView(SparkBehaviour behaviour, SparkStream stream, SparkMessageInfo info)
 {
     behaviour.Call("OnSerializeSparkView", stream, info);
 }