private void Start() { lastSyncMessage = AvatarSyncMessage.ToSyncMessage(avatarNPC); if (!NetworkCommander.IsServer && avatarNPC.animationVariator != null) { avatarNPC.StopCoroutine(avatarNPC.animationVariator); } }
public void DoSync() { syncMessage = AvatarSyncMessage.ToSyncMessage(avatarNPC); if (!syncMessage.IsEqual(lastSyncMessage)) { lastSyncMessage = syncMessage; NetworkCommander.CollectSyncMessage(lastSyncMessage); } }
public bool IsEqual(object obj) { AvatarSyncMessage o = (AvatarSyncMessage)obj; return(f == o.f && r == o.r && Mathf.Abs(v -= o.v) < 1000 && n == o.n && s == o.s && Mathf.Abs(y - o.y) < 1000 && (p - o.p).magnitude < 100); }
public AvatarSyncMessage Pull() { if (avatarNPCSync.Count > 0) { AvatarSyncMessage msg = avatarNPCSync[0]; avatarNPCSync.RemoveAt(0); return(msg); } else { return(null); } }
public string Serialize() { string ser = (avatarNPCSync.Count).ToString(); AvatarSyncMessage asm = Pull(); while (asm != null) { ser += Del + asm.Serialize(); asm = Pull(); } return(ser); }
public static AvatarSyncMessage ToSyncMessage(AvatarNPCCommander av) { AvatarSyncMessage msg = new AvatarSyncMessage() { n = av.name, p = Vector3Int.RoundToInt(av.transform.position * 1000), y = Mathf.RoundToInt(av.transform.eulerAngles.y * 1000), s = av.AnimatorSit, f = Mathf.RoundToInt(av.animator.GetFloat("Forward") * 1000), r = Mathf.RoundToInt(av.animator.GetFloat("Turn") * 1000), v = Mathf.RoundToInt(av.animator.GetFloat("Variant") * 1000) }; return(msg); }
public static AvatarSyncMessage FromString(string serialized) { string[] b = serialized.Split(Del); AvatarSyncMessage msg = new AvatarSyncMessage() { n = b[0], p = new Vector3Int(int.Parse(b[1]), int.Parse(b[2]), int.Parse(b[3])), s = b[4] == "1" ? true : false, y = int.Parse(b[5]), f = int.Parse(b[6]), r = int.Parse(b[7]), v = int.Parse(b[8]) }; return(msg); }
public static NetworkSyncData Deserialize(string serialized) { string[] b = serialized.Split(Del); NetworkSyncData l = new NetworkSyncData(); l.avatarNPCSync = new List <AvatarSyncMessage>(); int avatarSyncs = int.Parse(b[0]); int i = 1; for (; i < avatarSyncs + 1; i++) { l.avatarNPCSync.Add(AvatarSyncMessage.FromString(b[i])); } return(l); //return JsonUtility.FromJson<ListOfAvatarNPCCommanderSyncMessage>(json); }
public static void Deserialize(string serialized) { AvatarSyncMessage msg = FromString(serialized); // JsonUtility.FromJson<AvatarNPCCommanderSyncMessage>(serialized); msg.Apply(); }