Compare commits

..

No commits in common. "ef941cd344e711416a0cee7797c8157e5e612205" and "08db445a53b16ac16294d35a6f9bb7847731ba55" have entirely different histories.

7 changed files with 15 additions and 160 deletions

View File

@ -7,11 +7,8 @@ using UnityEngine.Networking;
public class CSNC : MonoBehaviour public class CSNC : MonoBehaviour
{ {
public string ip; public string ip;
public GameObjectManager manager; private class EZtransform //ez consistent serialization of transforms
public class EZtransform //ez consistent serialization of transforms
{ {
public List<float> position; public List<float> position;
public List<float> rotation; public List<float> rotation;
@ -29,38 +26,26 @@ public class CSNC : MonoBehaviour
rotation.Add(transform.rotation.z); rotation.Add(transform.rotation.z);
rotation.Add(transform.rotation.w); rotation.Add(transform.rotation.w);
} }
public EZtransform()
{
position = new List<float>();
rotation = new List<float>();
}
} }
public class CSNCObject private class CSNCObject
{ {
public string id;
public string type; public string type;
public EZtransform transform; public EZtransform transform;
public CSNCObject()
public CSNCObject(string type, Transform trans)
{ {
id = "";
type = "";
transform = new EZtransform();
}
public CSNCObject(string type, Transform trans, string id)
{
this.id = id;
this.type = type; this.type = type;
this.transform = new EZtransform(trans); this.transform = new EZtransform(trans);
} }
public CSNCObject(string type, EZtransform trans, string id) public CSNCObject(string type, EZtransform trans)
{ {
this.id = id;
this.type = type; this.type = type;
this.transform = trans; this.transform = trans;
} }
} }
public class SendData private class SendData
{ {
public string uuid; public string uuid;
public List<CSNCObject> gameObjects; public List<CSNCObject> gameObjects;
@ -89,7 +74,7 @@ public class CSNC : MonoBehaviour
foreach (SyncData obj in GameObjectRegistry.instance.registeredObjects) foreach (SyncData obj in GameObjectRegistry.instance.registeredObjects)
{ {
gameObjects.Add(new CSNCObject(obj.type, obj.transform, obj.id)); gameObjects.Add(new CSNCObject(obj.type, obj.transform));
} }
SendData sendData = new SendData(gameObjects); SendData sendData = new SendData(gameObjects);
@ -105,7 +90,9 @@ public class CSNC : MonoBehaviour
} }
else else
{ {
manager.SyncObjects(JsonConvert.DeserializeObject<GameObjectManager.RecievedData>(req.downloadHandler.text));
Debug.Log(req.downloadHandler.text);
} }
} }
} }

View File

@ -11,7 +11,6 @@ GameObject:
- component: {fileID: 7121321073155658785} - component: {fileID: 7121321073155658785}
- component: {fileID: 7629741995735410931} - component: {fileID: 7629741995735410931}
- component: {fileID: 5596437124550187285} - component: {fileID: 5596437124550187285}
- component: {fileID: 1768507704600374837}
m_Layer: 0 m_Layer: 0
m_Name: CSNC m_Name: CSNC
m_TagString: Untagged m_TagString: Untagged
@ -46,9 +45,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 1c20e30fdef1b0841aa0fdb48748a6a6, type: 3} m_Script: {fileID: 11500000, guid: 1c20e30fdef1b0841aa0fdb48748a6a6, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
uuid:
gameObjects: []
ids: []
--- !u!114 &5596437124550187285 --- !u!114 &5596437124550187285
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -61,17 +57,3 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6772f36d5b93fd5498e8f3f1d8155ff2, type: 3} m_Script: {fileID: 11500000, guid: 6772f36d5b93fd5498e8f3f1d8155ff2, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
ip:
manager: {fileID: 1768507704600374837}
--- !u!114 &1768507704600374837
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9009233966360587498}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7f3dbff6bcfe57f4fb9ba717c6fecc0e, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -1,99 +0,0 @@
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameObjectManager : MonoBehaviour
{
/*
This MonoBehaviour Synchronizes the position of All the game objects recieved from other clients
*/
// ID GAMEOBJECT+TYPE
Dictionary<string, GameObjectDataWrapper> inSceneGameObjects = new Dictionary<string, GameObjectDataWrapper>();
void Start()
{
}
public class RecievedData
{
/*
{
"gameObjects": //list of CSNCObjects
[
{
"id": "uuid here",
"type": "razorblade",
"transform": {
"position": [
0.0,
0.53,
0.0
],
"rotation": [
0.0,
0.0,
0.0,
1.0
]
}
},
]
}
*/
public RecievedData(List<CSNC.CSNCObject> gameObjects)
{
this.gameObjects = gameObjects;
}
public List<CSNC.CSNCObject> gameObjects;
}
public class GameObjectDataWrapper
{
public GameObject gameObject;
public string type;
public GameObjectDataWrapper(string type, GameObject gameObject)
{
this.type = type;
this.gameObject = gameObject;
}
}
public void SyncObjects(RecievedData data)
{
//Debug.Log(JsonConvert.SerializeObject(data));
foreach (CSNC.CSNCObject obj in data.gameObjects)
{
if (inSceneGameObjects.ContainsKey(obj.id)) //if in registry update
{
Quaternion rot = new Quaternion(obj.transform.rotation[0], obj.transform.rotation[1], obj.transform.rotation[2], obj.transform.rotation[3]);
Debug.Log(JsonConvert.SerializeObject(obj.transform.position));
Vector3 pos = new Vector3(obj.transform.position[0], obj.transform.position[1], obj.transform.position[2]);
IEnumerator cor = LerpGameObjectFromFixedUpdate(inSceneGameObjects[obj.id].gameObject, rot, pos);
StartCoroutine(cor);
} else //otherwise add to registry
{
inSceneGameObjects.Add(obj.id, new GameObjectDataWrapper(obj.type,Instantiate(GameObjectRegistry.instance.registry[obj.type]))); //Dubious ahh line of code
GameObject g = inSceneGameObjects[obj.id].gameObject;
g.SetActive(true);
g.transform.position = new Vector3(obj.transform.position[0], obj.transform.position[1], obj.transform.position[2]); //these 2 might be even more dubious than the last
g.transform.rotation = new Quaternion(obj.transform.rotation[0], obj.transform.rotation[1], obj.transform.rotation[2], obj.transform.rotation[3]);
}
}
}
IEnumerator LerpGameObjectFromFixedUpdate(GameObject obj, Quaternion rot, Vector3 pos)
{
obj.transform.position = pos;
obj.transform.rotation = rot;
yield return null;
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 7f3dbff6bcfe57f4fb9ba717c6fecc0e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -8,8 +8,7 @@ public class GameObjectRegistry : MonoBehaviour
public static GameObjectRegistry instance; //instance of gameobject registry in scene public static GameObjectRegistry instance; //instance of gameobject registry in scene
public string uuid; //unique identifier for this client public string uuid; //unique identifier for this client
public List<GameObject> gameObjects; //list to make it easy to register new gameobjects public List<GameObject> gameObjects; //list to make it easy to register new gameobjects
public List<string> types; public List<string> ids;
public Dictionary<string, GameObject> registry = new Dictionary<string, GameObject>(); //registry of game objects that can be synced (needs to be identical on both clients public Dictionary<string, GameObject> registry = new Dictionary<string, GameObject>(); //registry of game objects that can be synced (needs to be identical on both clients
public List<SyncData> registeredObjects = new List<SyncData>(); //game objcets that are currently being synced public List<SyncData> registeredObjects = new List<SyncData>(); //game objcets that are currently being synced
@ -26,7 +25,7 @@ public class GameObjectRegistry : MonoBehaviour
void initializeRegistry() void initializeRegistry()
{ {
int i = 0; int i = 0;
foreach (string id in types) foreach (string id in ids)
{ {
registry.Add(id, gameObjects[i]); registry.Add(id, gameObjects[i]);
i++; i++;

View File

@ -1,6 +1,6 @@
# Unity Setup # Unity Setup
First, set the ip of the csnc compatible server. First, set the ip of the csnc compatible server.
(it needs to be formatted as such http://192.51.100.123:1234/ or http://mydomain.tld:1234/)
![image](./InstructionalImages/ipchange.png) ![image](./InstructionalImages/ipchange.png)
Then schedule the GameObjectRegistry script to be\ Then schedule the GameObjectRegistry script to be\

View File

@ -6,12 +6,9 @@ public class SyncData //structure for gameobjects and data sent over to the serv
{ {
public SyncData(Transform pos, string type) public SyncData(Transform pos, string type)
{ {
this.id = System.Guid.NewGuid().ToString();
this.transform = pos; this.transform = pos;
this.type = type; this.type = type;
} }
public Transform transform; public Transform transform;
public string id;
public string type; //key in registry data that defines which gameobject to instantiate with transform: position public string type; //key in registry data that defines which gameobject to instantiate with transform: position
} }