using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class CSNC : MonoBehaviour { public string ip; public GameObjectManager manager; public class EZtransform //ez consistent serialization of transforms { public List position; public List rotation; public EZtransform(Transform transform) { position = new List(3); rotation = new List(4); position.Add(transform.position.x); position.Add(transform.position.y); position.Add(transform.position.z); rotation.Add(transform.rotation.x); rotation.Add(transform.rotation.y); rotation.Add(transform.rotation.z); rotation.Add(transform.rotation.w); } public EZtransform() { position = new List(); rotation = new List(); } } private class CSNCObject { public string type; public EZtransform transform; public CSNCObject(string type, Transform trans) { this.type = type; this.transform = new EZtransform(trans); } public CSNCObject(string type, EZtransform trans) { this.type = type; this.transform = trans; } } private class SendData { public string uuid; public List gameObjects; public SendData(List gameobjects) { uuid = GameObjectRegistry.instance.uuid; gameObjects = gameobjects; } } void Start() { ip = CHANGEME; //CHANGE THIS VALUE to the ip address } void FixedUpdate() { IEnumerator req = request(); StartCoroutine(req); } IEnumerator request() { //Debug.Log(GameObjectRegistry.instance.registeredObjects); List gameObjects = new List(); foreach (SyncData obj in GameObjectRegistry.instance.registeredObjects) { gameObjects.Add(new CSNCObject(obj.type, obj.transform)); } SendData sendData = new SendData(gameObjects); //Debug.Log(JsonConvert.SerializeObject(sendData)); using (UnityWebRequest req = UnityWebRequest.Post(ip, JsonConvert.SerializeObject(sendData), "application/json")) { req.SetRequestHeader("request-type", "csnc"); yield return req.SendWebRequest(); if (req.result != UnityWebRequest.Result.Success) { Debug.LogError(req.error); } else { Debug.Log(req.downloadHandler.text); } } } }