Ejemplo n.º 1
0
    /// <summary>
    /// Called by the server on the clients to instantiate a Synchronized GameObject
    /// </summary>
    private void InstantiateSyncObject(string _prefabName, string _GUID, Vector3 _position, Quaternion _rotation, string _parentName = null)
    {
        if (string.IsNullOrEmpty(_GUID))
        {
            Debug.LogError("You tried to instantiate a Game Object without a GUID");
            return;
        }
        if (Resources.Load <GameObject>(_prefabName) == null)
        {
            Debug.LogError($"Can't find any {_prefabName} prefab in the Resources Folder");
            return;
        }

        Transform parent = null;

        if (!string.IsNullOrEmpty(_parentName))
        {
            parent = GameObject.Find(_parentName).transform;
        }

        GameObject        instance = Instantiate(Resources.Load <GameObject>(_prefabName), _position, _rotation, parent) as GameObject;
        SyncMonoBehaviour SMB      = instance.GetComponent <SyncMonoBehaviour>();

        SMB.InitializeGUID(_GUID);
        NetworkSynchronizer.Instance.AddSynchronizeObject(SMB);
        Debug.Log($"Instantiating {_prefabName} under {_parentName} at ({_position}), {_rotation} with GUID({_GUID})", instance);

        if (SMB == null)
        {
            Debug.LogError("You tried to instantiate a prefab which does not have a SyncMonoBehaviour");
            Destroy(instance);
            return;
        }

        OnInstantiate?.Invoke(SMB.gameObject);
    }
Ejemplo n.º 2
0
 //Send to server an object that has moved
 public void SyncUp(SyncMonoBehaviour SMB)
 {
     Debug.Log($"{SMB.name} has moved locally, synchro up");
     NetworkManager.Instance.SendNetworkMessageToServer(new SNetworkMessage(EMessageType.UpdateTransform, JsonUtility.ToJson(new SMessageUpdateTransform(SMB.GUID, SMB.transform.position, SMB.transform.rotation, SMB.transform.localScale))));
 }
Ejemplo n.º 3
0
 public void AddSynchronizeObject(SyncMonoBehaviour _SMB)
 {
     synchronizedObjects.Add(_SMB.GUID, _SMB);
     Debug.Log($"Adding {_SMB.name} ({_SMB.GUID}) to synchronized objects", _SMB);
 }