40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
// Handles scene-persistent player data
|
|
public class PlayerManager : MonoBehaviour
|
|
{
|
|
public int CurrentToolIndex;
|
|
|
|
#region Player Data Save/Load
|
|
public void SavePlayerData(ref PlayerSaveData data)
|
|
{
|
|
data.activeToolIndex = GameManager.Instance.PlayerManager.CurrentToolIndex;
|
|
data.camRotation = GameManager.Instance.PlayerController.cameraController.camTargetRotation;
|
|
data.dougPosition = GameManager.Instance.PlayerController.transform.position;
|
|
data.currentScene = SceneManager.GetActiveScene().name;
|
|
}
|
|
|
|
public void LoadPlayerData(PlayerSaveData data)
|
|
{
|
|
/*if (data.currentScene != null && data.currentScene != SceneManager.GetActiveScene().name)
|
|
{
|
|
SceneManager.LoadScene(data.currentScene);
|
|
}*/
|
|
|
|
GameManager.Instance.PlayerManager.CurrentToolIndex = data.activeToolIndex;
|
|
GameManager.Instance.PlayerController.cameraController.SnapToRotation(data.camRotation);
|
|
GameManager.Instance.PlayerController.transform.position = data.dougPosition;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
[System.Serializable]
|
|
public struct PlayerSaveData
|
|
{
|
|
public int activeToolIndex;
|
|
public float camRotation;
|
|
public Vector3 dougPosition;
|
|
public string currentScene;
|
|
}
|