make EyeTombWatcher work

This commit is contained in:
JohnCorby 2022-08-17 17:11:53 -07:00
parent c26a02f3fa
commit b1984e7542
4 changed files with 20 additions and 27 deletions

View File

@ -7,35 +7,30 @@ namespace QSB.EyeOfTheUniverse.Tomb;
internal class EyeTombWatcher : MonoBehaviour
{
private EyeTombController tomb;
private bool _observedGrave;
private EyeTombController _tomb;
private void Start()
private void Awake()
{
tomb = GetComponent<EyeTombController>();
tomb._graveObserveTrigger.OnGainFocus += OnObserveGrave;
_tomb = GetComponent<EyeTombController>();
_tomb._graveObserveTrigger.OnGainFocus += OnObserveGrave;
enabled = false;
}
private void OnDestroy()
=> tomb._graveObserveTrigger.OnGainFocus -= OnObserveGrave;
private void OnDestroy() =>
_tomb._graveObserveTrigger.OnGainFocus -= OnObserveGrave;
private void OnObserveGrave()
{
_observedGrave = true;
tomb._graveObserveTrigger.OnGainFocus -= OnObserveGrave;
_tomb._graveObserveTrigger.OnGainFocus -= OnObserveGrave;
enabled = true;
}
private void FixedUpdate()
{
if (!_observedGrave)
{
return;
}
var canShowStage = true;
foreach (var player in QSBPlayerManager.PlayerList)
{
var playerToStage = tomb._stageRoot.transform.position - player.Body.transform.position;
var playerToStage = _tomb._stageRoot.transform.position - player.Body.transform.position;
var playerLookDirection = player.Body.transform.forward;
var angle = Vector3.Angle(playerLookDirection, playerToStage);
if (angle < 70)
@ -46,9 +41,9 @@ internal class EyeTombWatcher : MonoBehaviour
if (canShowStage)
{
tomb._stageRoot.SetActive(true);
_tomb._stageRoot.SetActive(true);
new ShowStageMessage().Send();
enabled = false;
Destroy(this);
}
}
}

View File

@ -1,6 +1,6 @@
using QSB.Messaging;
using QSB.Utility;
using QSB.WorldSync;
using UnityEngine;
namespace QSB.EyeOfTheUniverse.Tomb.Messages;
@ -10,5 +10,6 @@ internal class ShowStageMessage : QSBMessage
{
var tomb = QSBWorldSync.GetUnityObject<EyeTombController>();
tomb._stageRoot.SetActive(true);
Object.Destroy(tomb.GetComponent<EyeTombWatcher>());
}
}

View File

@ -11,11 +11,8 @@ internal class TombManager : WorldObjectManager
public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
{
if (QSBCore.IsHost)
{
// sike!! no worldobjects here
var tomb = QSBWorldSync.GetUnityObject<EyeTombController>();
tomb.gameObject.AddComponent<EyeTombWatcher>();
}
// sike!! no worldobjects here
var tomb = QSBWorldSync.GetUnityObject<EyeTombController>();
tomb.gameObject.AddComponent<EyeTombWatcher>();
}
}

View File

@ -44,7 +44,7 @@ public class PlayerTransformSync : SectoredTransformSync
{
// this really shouldnt happen...
DebugLog.ToConsole($"Error - A PlayerInfo already exists with TransformSync {name}", MessageType.Error);
Destroy(this);
Destroy(gameObject); // probably bad
return;
}
@ -62,7 +62,7 @@ public class PlayerTransformSync : SectoredTransformSync
if (LocalInstance != null)
{
DebugLog.ToConsole($"ERROR - LocalInstance is already non-null in OnStartLocalPlayer!", MessageType.Error);
Destroy(this);
Destroy(gameObject); // probably bad
return;
}