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; * }*/ }
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)); } }
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); }
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); }
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); }