86 lines
2.8 KiB
C#
86 lines
2.8 KiB
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;
|
||
|
}
|
||
|
}
|
||
|
}
|