Example #1
0
    public void ReceiveTransform(NetworkPlayerTransform nTransform)
    {
        //if (interpolator!=null)
        {
            // interpolating received transform
            interpolator.ReceivedTransform(nTransform);

            //lastBoneTransformRotation = boneTransformRotation;
            //boneTransformRotation = nTransform.rotationBone;

            //lastMovementTransformRotation = movementTransformRotation;
            //movementTransformRotation = nTransform.rotationMovement;
        }

        /*else
         * {
         *      //lastMovementTransformRotation = movementTransformRotation;
         *      movementTransformRotation = nTransform.rotationMovement;
         *
         *      //lastBoneTransformRotation = boneTransformRotation;
         *      boneTransformRotation = nTransform.rotationBone;
         *
         *      myTransform.position = nTransform.position;
         *      myTransform.localRotation = nTransform.rotation;
         *      movementTransform.localRotation = nTransform.rotationMovement;
         *      boneTransform.localRotation = nTransform.rotationBone;
         * }*/
    }
Example #2
0
    private void HandlePlayerTransformReceived(ISFSObject data)
    {
        int id = data.GetInt("id");

        //from enemy
        if (SmartFoxConnection.Connection.MySelf.Id != id)
        {
            NetworkPlayerManager.Instance.MoveEnemy(id, NetworkPlayerTransform.fromSFSObject(data));
        }
    }
Example #3
0
    public void SendPlayerTransform(NetworkPlayerTransform nTransform)
    {
        ISFSObject data = new SFSObject();

        nTransform.toSFSObject(data);

        ExtensionRequest request = new ExtensionRequest("sendTransform", data, SmartFoxConnection.Connection.LastJoinedRoom);         // True flag = UDP

        SmartFoxConnection.Connection.Send(request);
    }
    public static NetworkPlayerTransform fromTransform(Transform sendTransform, Quaternion rotMovement, Quaternion rotBone)
    {
        NetworkPlayerTransform nTransform = new NetworkPlayerTransform();

        nTransform.position         = sendTransform.position;
        nTransform.rotation         = sendTransform.rotation;
        nTransform.rotationMovement = rotMovement;
        nTransform.rotationBone     = rotBone;

        return(nTransform);
    }
Example #5
0
    private void FixedUpdate()
    {
        if (boneTransform != null)
        {
            lastSend += Time.deltaTime;

            if (lastSend > timeToSend)
            {
                NMGame.Instance.SendPlayerTransform(NetworkPlayerTransform.fromTransform(myTransform, movementTransform.localRotation, boneTransform.localRotation));
                lastSend = 0f;
            }
        }
    }
    public static NetworkPlayerTransform fromSFSObject(ISFSObject data)
    {
        NetworkPlayerTransform nTransform = new NetworkPlayerTransform();

        nTransform.position         = new Vector3(data.GetFloat("x"), data.GetFloat("y"), data.GetFloat("z"));
        nTransform.rotation         = Quaternion.Euler(new Vector3(data.GetFloat("rx"), data.GetFloat("ry"), data.GetFloat("rz")));
        nTransform.rotationMovement = Quaternion.Euler(new Vector3(data.GetFloat("rMx"), data.GetFloat("rMy"), data.GetFloat("rMz")));
        nTransform.rotationBone     = Quaternion.Euler(new Vector3(data.GetFloat("rBx"), data.GetFloat("rBy"), data.GetFloat("rBz")));
        nTransform.timeStamp        = data.GetDouble("time");

        //Debug.Log("fromSFSObject, timeStamp: " + data.GetDouble("time"));

        return(nTransform);
    }
Example #7
0
    public void ReceivedTransform(NetworkPlayerTransform ntransform)
    {
        if (!running)
        {
            return;
        }

        // When receiving, buffer the information
        // Receive latest state information
        //Vector3 pos = ntransform.position;
        //Quaternion rot = ntransform.rotation;

        // Shift buffer contents, oldest data erased, 18 becomes 19, ... , 0 becomes 1
        for (int i = bufferedStates.Length - 1; i >= 1; i--)
        {
            bufferedStates[i] = bufferedStates[i - 1];
        }

        // Save currect received state as 0 in the buffer, safe to overwrite after shifting
        bufferedStates[0] = ntransform;

        // Increment state count but never exceed buffer size
        statesCount = Mathf.Min(statesCount + 1, bufferedStates.Length);

        // Check integrity, lowest numbered state in the buffer is newest and so on
        for (int i = 0; i < statesCount - 1; i++)
        {
            if (bufferedStates[i].timeStamp < bufferedStates[i + 1].timeStamp)
            {
                print("Latest received transform is indeed the last sent transform.");
            }
        }

        if (bufferedStates[0] != null && bufferedStates[1] != null)
        {
            float timeToTween = (float)(bufferedStates[0].timeStamp - bufferedStates[1].timeStamp) * 0.001f;
            TweenPosition.Begin(myGameObject, timeToTween, bufferedStates[0].position);
            TweenRotation.Begin(myGameObject, timeToTween, bufferedStates[0].rotation);
            TweenRotation.Begin(movementTransform.gameObject, timeToTween, bufferedStates[0].rotationMovement);
            TweenRotation.Begin(boneTransform.gameObject, timeToTween, bufferedStates[0].rotationBone);
        }
    }
 public void MoveEnemy(int userId, NetworkPlayerTransform nTransform)
 {
     characters[userId].ReceiveTransform(nTransform);
 }