mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Add Orb Locker and Singularity Root
Fixed interface orbs disappearing when vessel is moved Moves some things to asset bundle
This commit is contained in:
parent
c9235c07c7
commit
77a81c8a1e
Binary file not shown.
52
NewHorizons/Components/VesselOrbLocker.cs
Normal file
52
NewHorizons/Components/VesselOrbLocker.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace NewHorizons.Components
|
||||||
|
{
|
||||||
|
public class VesselOrbLocker : MonoBehaviour
|
||||||
|
{
|
||||||
|
public GameObject _coordinateInterfaceOrbObject;
|
||||||
|
private NomaiInterfaceOrb _coordinateInterfaceOrb;
|
||||||
|
|
||||||
|
public GameObject _coordinateInterfaceUpperOrbObject;
|
||||||
|
private NomaiInterfaceOrb _coordinateInterfaceUpperOrb;
|
||||||
|
|
||||||
|
public GameObject _powerOrbObject;
|
||||||
|
private NomaiInterfaceOrb _powerOrb;
|
||||||
|
|
||||||
|
public void InitializeOrbs()
|
||||||
|
{
|
||||||
|
_coordinateInterfaceOrb = _coordinateInterfaceOrbObject.GetComponent<NomaiInterfaceOrb>();
|
||||||
|
_coordinateInterfaceUpperOrb = _coordinateInterfaceUpperOrbObject.GetComponent<NomaiInterfaceOrb>();
|
||||||
|
_powerOrb = _powerOrbObject.GetComponent<NomaiInterfaceOrb>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLocks()
|
||||||
|
{
|
||||||
|
_coordinateInterfaceOrb.AddLock();
|
||||||
|
_coordinateInterfaceUpperOrb.AddLock();
|
||||||
|
_powerOrb.AddLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLockToCoordinateOrb()
|
||||||
|
{
|
||||||
|
_coordinateInterfaceOrb.AddLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLockToWarpOrb()
|
||||||
|
{
|
||||||
|
_coordinateInterfaceUpperOrb.AddLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLockToPowerOrb()
|
||||||
|
{
|
||||||
|
_powerOrb.AddLock();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveLocks()
|
||||||
|
{
|
||||||
|
_coordinateInterfaceOrb.RemoveAllLocks();
|
||||||
|
_coordinateInterfaceUpperOrb.RemoveAllLocks();
|
||||||
|
_powerOrb.RemoveAllLocks();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
8
NewHorizons/Components/VesselSingularityRoot.cs
Normal file
8
NewHorizons/Components/VesselSingularityRoot.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace NewHorizons.Components
|
||||||
|
{
|
||||||
|
public class VesselSingularityRoot : MonoBehaviour
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using NewHorizons.Components;
|
||||||
using NewHorizons.Utility;
|
using NewHorizons.Utility;
|
||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
using static NewHorizons.Main;
|
using static NewHorizons.Main;
|
||||||
@ -83,44 +84,53 @@ namespace NewHorizons.Handlers
|
|||||||
vesselObject.name = VesselPrefab.name;
|
vesselObject.name = VesselPrefab.name;
|
||||||
vesselObject.transform.parent = null;
|
vesselObject.transform.parent = null;
|
||||||
|
|
||||||
|
VesselOrbLocker vesselOrbLocker = vesselObject.GetComponent<VesselOrbLocker>();
|
||||||
|
vesselOrbLocker.InitializeOrbs();
|
||||||
|
vesselOrbLocker.AddLocks();
|
||||||
|
|
||||||
if (system.Config.vesselPosition != null)
|
if (system.Config.vesselPosition != null)
|
||||||
vesselObject.transform.position += system.Config.vesselPosition;
|
vesselObject.transform.position += system.Config.vesselPosition;
|
||||||
|
|
||||||
if (system.Config.vesselRotation != null)
|
if (system.Config.vesselRotation != null)
|
||||||
vesselObject.transform.eulerAngles = system.Config.vesselRotation;
|
vesselObject.transform.eulerAngles = system.Config.vesselRotation;
|
||||||
|
|
||||||
|
vesselOrbLocker.RemoveLocks();
|
||||||
|
vesselOrbLocker.AddLockToWarpOrb();
|
||||||
|
|
||||||
|
VesselSingularityRoot singularityRoot = vesselObject.GetComponentInChildren<VesselSingularityRoot>(true);
|
||||||
|
|
||||||
VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren<VesselWarpController>(true);
|
VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren<VesselWarpController>(true);
|
||||||
WarpController = vesselWarpController;
|
WarpController = vesselWarpController;
|
||||||
|
|
||||||
vesselWarpController._sourceWarpPlatform.transform.DestroyAllChildren();
|
|
||||||
vesselWarpController._targetWarpPlatform.transform.DestroyAllChildren();
|
|
||||||
GameObject.Destroy(vesselWarpController._blackHole.transform.parent.gameObject);
|
|
||||||
GameObject.Destroy(vesselWarpController._whiteHole.transform.parent.gameObject);
|
|
||||||
|
|
||||||
GameObject WarpPlatform = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WarpController/Prefab_NOM_WarpPlatform");
|
GameObject WarpPlatform = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WarpController/Prefab_NOM_WarpPlatform");
|
||||||
GameObject warpBH = WarpPlatform.transform.Find("BlackHole").gameObject;
|
GameObject warpBH = WarpPlatform.transform.Find("BlackHole").gameObject;
|
||||||
GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject;
|
GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject;
|
||||||
|
|
||||||
GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false);
|
GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false);
|
||||||
|
sourceBH.name = "BlackHole";
|
||||||
vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren<SingularityController>();
|
vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren<SingularityController>();
|
||||||
|
|
||||||
|
|
||||||
GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false);
|
GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false);
|
||||||
|
sourceWH.name = "WhiteHole";
|
||||||
vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren<SingularityController>();
|
vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren<SingularityController>();
|
||||||
|
|
||||||
GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false);
|
GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false);
|
||||||
|
targetBH.name = "BlackHole";
|
||||||
vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren<SingularityController>();
|
vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren<SingularityController>();
|
||||||
|
|
||||||
GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false);
|
GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false);
|
||||||
|
targetWH.name = "WhiteHole";
|
||||||
vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren<SingularityController>();
|
vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren<SingularityController>();
|
||||||
|
|
||||||
GameObject blackHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/BlackHole");
|
GameObject blackHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/BlackHole");
|
||||||
GameObject newBlackHole = GameObject.Instantiate(blackHole, vesselWarpController.transform.parent, false);
|
GameObject newBlackHole = GameObject.Instantiate(blackHole, Vector3.zero, Quaternion.identity, singularityRoot.transform);
|
||||||
newBlackHole.name = "BlackHole";
|
newBlackHole.name = "BlackHole";
|
||||||
vesselWarpController._blackHole = newBlackHole.GetComponentInChildren<SingularityController>();
|
vesselWarpController._blackHole = newBlackHole.GetComponentInChildren<SingularityController>();
|
||||||
vesselWarpController._blackHoleOneShot = vesselWarpController._blackHole.transform.parent.Find("BlackHoleAudio_OneShot").GetComponent<OWAudioSource>();
|
vesselWarpController._blackHoleOneShot = vesselWarpController._blackHole.transform.parent.Find("BlackHoleAudio_OneShot").GetComponent<OWAudioSource>();
|
||||||
|
|
||||||
GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole");
|
GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole");
|
||||||
GameObject newWhiteHole = GameObject.Instantiate(whiteHole, vesselWarpController.transform.parent, false);
|
GameObject newWhiteHole = GameObject.Instantiate(whiteHole, Vector3.zero, Quaternion.identity, singularityRoot.transform);
|
||||||
newWhiteHole.name = "WhiteHole";
|
newWhiteHole.name = "WhiteHole";
|
||||||
vesselWarpController._whiteHole = newWhiteHole.GetComponentInChildren<SingularityController>();
|
vesselWarpController._whiteHole = newWhiteHole.GetComponentInChildren<SingularityController>();
|
||||||
vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>();
|
vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>();
|
||||||
@ -131,13 +141,9 @@ namespace NewHorizons.Handlers
|
|||||||
|
|
||||||
if (system.Config.warpExitPosition != null)
|
if (system.Config.warpExitPosition != null)
|
||||||
vesselWarpController._targetWarpPlatform.transform.localPosition = system.Config.warpExitPosition;
|
vesselWarpController._targetWarpPlatform.transform.localPosition = system.Config.warpExitPosition;
|
||||||
else
|
|
||||||
vesselWarpController._targetWarpPlatform.transform.localPosition = new Vector3(-95.6f, -41.7f, 36.9f);
|
|
||||||
|
|
||||||
if (system.Config.warpExitRotation != null)
|
if (system.Config.warpExitRotation != null)
|
||||||
vesselWarpController._targetWarpPlatform.transform.localEulerAngles = system.Config.warpExitRotation;
|
vesselWarpController._targetWarpPlatform.transform.localEulerAngles = system.Config.warpExitRotation;
|
||||||
else
|
|
||||||
vesselWarpController._targetWarpPlatform.transform.localEulerAngles = Vector3.zero;
|
|
||||||
|
|
||||||
vesselObject.GetComponent<MapMarker>()._labelID = (UITextType)TranslationHandler.AddUI("VESSEL");
|
vesselObject.GetComponent<MapMarker>()._labelID = (UITextType)TranslationHandler.AddUI("VESSEL");
|
||||||
|
|
||||||
@ -231,8 +237,6 @@ namespace NewHorizons.Handlers
|
|||||||
vesselWarpController._cageAnimator.OnTranslationComplete -= new TransformAnimator.AnimationEvent(vesselWarpController.OnCageAnimationComplete);
|
vesselWarpController._cageAnimator.OnTranslationComplete -= new TransformAnimator.AnimationEvent(vesselWarpController.OnCageAnimationComplete);
|
||||||
vesselWarpController._cageAnimator.OnTranslationComplete += new TransformAnimator.AnimationEvent(vesselWarpController.OnCageAnimationComplete);
|
vesselWarpController._cageAnimator.OnTranslationComplete += new TransformAnimator.AnimationEvent(vesselWarpController.OnCageAnimationComplete);
|
||||||
}
|
}
|
||||||
if (vesselWarpController._cageLoopingAudio != null)
|
|
||||||
vesselWarpController._cageLoopingAudio.FadeIn(1f);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user