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.Linq;
|
||||
using UnityEngine;
|
||||
using NewHorizons.Components;
|
||||
using NewHorizons.Utility;
|
||||
using Logger = NewHorizons.Utility.Logger;
|
||||
using static NewHorizons.Main;
|
||||
@ -83,44 +84,53 @@ namespace NewHorizons.Handlers
|
||||
vesselObject.name = VesselPrefab.name;
|
||||
vesselObject.transform.parent = null;
|
||||
|
||||
VesselOrbLocker vesselOrbLocker = vesselObject.GetComponent<VesselOrbLocker>();
|
||||
vesselOrbLocker.InitializeOrbs();
|
||||
vesselOrbLocker.AddLocks();
|
||||
|
||||
if (system.Config.vesselPosition != null)
|
||||
vesselObject.transform.position += system.Config.vesselPosition;
|
||||
|
||||
if (system.Config.vesselRotation != null)
|
||||
vesselObject.transform.eulerAngles = system.Config.vesselRotation;
|
||||
|
||||
vesselOrbLocker.RemoveLocks();
|
||||
vesselOrbLocker.AddLockToWarpOrb();
|
||||
|
||||
VesselSingularityRoot singularityRoot = vesselObject.GetComponentInChildren<VesselSingularityRoot>(true);
|
||||
|
||||
VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren<VesselWarpController>(true);
|
||||
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 warpBH = WarpPlatform.transform.Find("BlackHole").gameObject;
|
||||
GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject;
|
||||
|
||||
GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false);
|
||||
sourceBH.name = "BlackHole";
|
||||
vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren<SingularityController>();
|
||||
|
||||
|
||||
GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false);
|
||||
sourceWH.name = "WhiteHole";
|
||||
vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren<SingularityController>();
|
||||
|
||||
GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false);
|
||||
targetBH.name = "BlackHole";
|
||||
vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren<SingularityController>();
|
||||
|
||||
GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false);
|
||||
targetWH.name = "WhiteHole";
|
||||
vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren<SingularityController>();
|
||||
|
||||
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";
|
||||
vesselWarpController._blackHole = newBlackHole.GetComponentInChildren<SingularityController>();
|
||||
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 newWhiteHole = GameObject.Instantiate(whiteHole, vesselWarpController.transform.parent, false);
|
||||
GameObject newWhiteHole = GameObject.Instantiate(whiteHole, Vector3.zero, Quaternion.identity, singularityRoot.transform);
|
||||
newWhiteHole.name = "WhiteHole";
|
||||
vesselWarpController._whiteHole = newWhiteHole.GetComponentInChildren<SingularityController>();
|
||||
vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent<OWAudioSource>();
|
||||
@ -131,13 +141,9 @@ namespace NewHorizons.Handlers
|
||||
|
||||
if (system.Config.warpExitPosition != null)
|
||||
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)
|
||||
vesselWarpController._targetWarpPlatform.transform.localEulerAngles = system.Config.warpExitRotation;
|
||||
else
|
||||
vesselWarpController._targetWarpPlatform.transform.localEulerAngles = Vector3.zero;
|
||||
|
||||
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);
|
||||
}
|
||||
if (vesselWarpController._cageLoopingAudio != null)
|
||||
vesselWarpController._cageLoopingAudio.FadeIn(1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user