Files
beyond/Assets/ThirdParty/Procedural Worlds/Gaia/Scripts/ValueAdds/Location System/LocationSystem.cs
2024-11-20 15:21:28 +01:00

104 lines
3.5 KiB
C#

using UnityEngine;
namespace Gaia
{
[ExecuteAlways]
public class LocationSystem : MonoBehaviour
{
[HideInInspector]
public LocationSystemScriptableObject m_locationProfile;
[HideInInspector]
public Transform m_camera;
[HideInInspector]
public Transform m_player;
[HideInInspector]
public bool m_trackPlayer = false;
[HideInInspector]
public LocationBookmarkSettings m_bookmarkSettings;
[HideInInspector]
public int m_selectedBookmark;
[HideInInspector]
public string m_bookmarkName = "My New Location Name";
[HideInInspector]
public bool m_rename = false;
[HideInInspector]
public string m_savedName;
private void OnEnable()
{
Initilize();
if (m_locationProfile == null)
{
return;
}
if (m_locationProfile.HasBeenSaved())
{
if (m_trackPlayer)
{
m_locationProfile.LoadLocation(m_camera, m_player);
}
}
}
private void Update()
{
if (Application.isPlaying)
{
if (m_camera == null || m_locationProfile == null)
{
return;
}
if (m_trackPlayer)
{
m_locationProfile.SaveLocation(m_camera, m_player);
}
if (Input.GetKey(m_locationProfile.m_mainKey) && Input.GetKeyDown(m_locationProfile.m_prevBookmark))
{
m_selectedBookmark--;
if (m_selectedBookmark < 0)
{
m_selectedBookmark = m_locationProfile.m_bookmarkedLocationNames.Count - 1;
}
m_locationProfile.LoadBookmark(this);
}
if (Input.GetKey(m_locationProfile.m_mainKey) && Input.GetKeyDown(m_locationProfile.m_nextBookmark))
{
m_selectedBookmark++;
if (m_selectedBookmark > m_locationProfile.m_bookmarkedLocationNames.Count - 1)
{
m_selectedBookmark = 0;
}
m_locationProfile.LoadBookmark(this);
}
if (Input.GetKey(m_locationProfile.m_mainKey) && Input.GetKeyDown(m_locationProfile.m_addBookmarkKey))
{
LocationBookmarkSettings settings = LocationSystemScriptableObject.GetCurrentLocation(this);
string name = "Bookmark " + " Position(" + settings.m_savedCameraPosition.x + ", " +
settings.m_savedCameraPosition.y + ", " +
settings.m_savedCameraPosition.z + ")";
m_locationProfile.AddNewBookmark(this, name);
m_selectedBookmark = m_locationProfile.m_bookmarkedLocationNames.Count - 1;
Debug.Log("New Bookmark: " + name);
}
}
}
private void Initilize()
{
if (m_locationProfile == null)
{
#if UNITY_EDITOR
m_locationProfile = UnityEditor.AssetDatabase.LoadAssetAtPath<LocationSystemScriptableObject>(GaiaUtils.GetAssetPath("Location Profile.asset"));
#endif
}
}
}
}