ProjectDDD/Assets/EasyGridBuilder Pro/Scripts/Utilities/Camera & Character Controllers/SwitchControllers.cs

86 lines
2.8 KiB (Stored with Git LFS)
C#

using UnityEngine;
namespace SoulGames.Utilities
{
public class SwitchControllers : MonoBehaviour
{
[Space]
[Tooltip("Starting enabled game object list")]
[SerializeField]private GameObject[] startingActiveObjects;
[Tooltip("Starting enabled camera parent")]
[SerializeField]private Transform mainCamStartingActiveParent;
[Space]
[Tooltip("Switching enabled game object list. Disabled at the start")]
[SerializeField]private GameObject[] switchingObjects;
[Tooltip("Switching enabled camera parent. Disabled at the start")]
[SerializeField]private Transform mainCamSwitchingParent;
[Space]
[Tooltip("Input key to switch between objects")]
[SerializeField]private KeyCode switchToggleKey = KeyCode.Backspace;
private Transform mainCam;
private bool toggled = false;
private SimpleFirstPersonCameraController cameraController;
private void Start()
{
mainCam = Camera.main.transform;
}
void Update()
{
if (Input.GetKeyDown(switchToggleKey))
{
if (toggled)
{
toggled = false;
if (mainCamStartingActiveParent && mainCamSwitchingParent) mainCam.parent = this.transform;
foreach (var item in startingActiveObjects)
{
item.SetActive(true);
}
foreach (var item in switchingObjects)
{
item.SetActive(false);
}
if (mainCamStartingActiveParent && mainCamSwitchingParent)
{
Invoke("ExecuteAfterTimeNotToggled", 1);
}
}
else
{
toggled = true;
if (mainCamStartingActiveParent && mainCamSwitchingParent) mainCam.parent = this.transform;
foreach (var item in switchingObjects)
{
item.SetActive(true);
}
foreach (var item in startingActiveObjects)
{
item.SetActive(false);
}
if (mainCamStartingActiveParent && mainCamSwitchingParent)
{
Invoke("ExecuteAfterTimeToggled", 1);
}
}
}
}
private void ExecuteAfterTimeNotToggled()
{
mainCam.parent = this.mainCamStartingActiveParent;
}
private void ExecuteAfterTimeToggled()
{
mainCam.parent = this.mainCamSwitchingParent;
}
}
}