2021-02-28 14:43:05 +00:00
|
|
|
|
using QSB.Player;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace QSB.StatueSync
|
|
|
|
|
{
|
2021-02-28 15:29:09 +00:00
|
|
|
|
internal class StatueManager : MonoBehaviour
|
2021-02-28 14:43:05 +00:00
|
|
|
|
{
|
|
|
|
|
public static StatueManager Instance { get; private set; }
|
|
|
|
|
|
2021-02-28 15:29:09 +00:00
|
|
|
|
private void Awake()
|
2021-02-28 14:43:05 +00:00
|
|
|
|
=> Instance = this;
|
|
|
|
|
|
2021-02-28 15:29:09 +00:00
|
|
|
|
public void BeginSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
2021-02-28 14:43:05 +00:00
|
|
|
|
=> StartCoroutine(BeginRemoteUplinkSequence(position, rotation, cameraDegrees));
|
|
|
|
|
|
|
|
|
|
private IEnumerator BeginRemoteUplinkSequence(Vector3 position, Quaternion rotation, float cameraDegrees)
|
|
|
|
|
{
|
|
|
|
|
var cameraEffectController = Locator.GetPlayerCamera().GetComponent<PlayerCameraEffectController>();
|
|
|
|
|
cameraEffectController.CloseEyes(0.5f);
|
|
|
|
|
OWInput.ChangeInputMode(InputMode.None);
|
|
|
|
|
Locator.GetPauseCommandListener().AddPauseCommandLock();
|
|
|
|
|
Locator.GetToolModeSwapper().UnequipTool();
|
|
|
|
|
Locator.GetFlashlight().TurnOff(false);
|
|
|
|
|
yield return new WaitForSeconds(0.5f);
|
|
|
|
|
// go to position
|
|
|
|
|
QSBPlayerManager.HideAllPlayers();
|
|
|
|
|
var timberHearth = Locator.GetAstroObject(AstroObject.Name.TimberHearth).GetAttachedOWRigidbody();
|
|
|
|
|
Locator.GetPlayerBody().transform.position = timberHearth.transform.TransformPoint(position);
|
|
|
|
|
Locator.GetPlayerBody().transform.rotation = timberHearth.transform.rotation * rotation;
|
|
|
|
|
Locator.GetPlayerCamera().GetComponent<PlayerCameraController>().SetDegreesY(cameraDegrees);
|
|
|
|
|
cameraEffectController.OpenEyes(1f, true);
|
|
|
|
|
var uplinkTrigger = FindObjectOfType<MemoryUplinkTrigger>();
|
|
|
|
|
uplinkTrigger.StartCoroutine("BeginUplinkSequence");
|
|
|
|
|
yield break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|