2021-02-20 21:54:25 +00:00
|
|
|
|
using SanAndreasUnity.Utilities;
|
|
|
|
|
using UnityEngine;
|
2021-02-20 01:20:19 +00:00
|
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
|
|
|
|
|
namespace SanAndreasUnity.Net
|
|
|
|
|
{
|
|
|
|
|
public class SyncedServerDataObjectSpawner : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
[SerializeField] private GameObject m_syncedServerDataPrefab = null;
|
|
|
|
|
|
|
|
|
|
|
2021-02-20 21:54:25 +00:00
|
|
|
|
private void Awake()
|
|
|
|
|
{
|
|
|
|
|
m_syncedServerDataPrefab.GetComponentOrLogError<SyncedServerData>();
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-20 01:20:19 +00:00
|
|
|
|
private void Start()
|
|
|
|
|
{
|
|
|
|
|
NetManager.Instance.onServerStatusChanged += OnServerStatusChanged;
|
|
|
|
|
SceneManager.activeSceneChanged += OnActiveSceneChanged;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnServerStatusChanged()
|
|
|
|
|
{
|
|
|
|
|
// scene is not changed yet, so the object will get destroyed when it changes
|
|
|
|
|
//Spawn();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnActiveSceneChanged(Scene arg0, Scene arg1)
|
|
|
|
|
{
|
|
|
|
|
Spawn();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Spawn()
|
|
|
|
|
{
|
|
|
|
|
if (!NetStatus.IsServer)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (null != SyncedServerData.Instance)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var go = Instantiate(m_syncedServerDataPrefab);
|
|
|
|
|
NetManager.Spawn(go);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|