From f92830959617ee656a4e16a6f4c123c3fc7e5a44 Mon Sep 17 00:00:00 2001 From: Joshua Thome Date: Sat, 18 Mar 2023 09:29:48 -0500 Subject: [PATCH] Vessel prop tweaks --- .../Builder/Props/GeneralPropBuilder.cs | 4 +-- .../External/Configs/StarSystemConfig.cs | 26 +++++++++---------- NewHorizons/Handlers/VesselWarpHandler.cs | 10 +++++-- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/NewHorizons/Builder/Props/GeneralPropBuilder.cs b/NewHorizons/Builder/Props/GeneralPropBuilder.cs index adefa07f..691f1083 100644 --- a/NewHorizons/Builder/Props/GeneralPropBuilder.cs +++ b/NewHorizons/Builder/Props/GeneralPropBuilder.cs @@ -62,8 +62,8 @@ namespace NewHorizons.Builder.Props go.transform.localRotation = rot; } else if (parent) { - go.transform.position = parent.TransformPoint(pos); - go.transform.rotation = parent.TransformRotation(rot); + go.transform.position = parent.root.TransformPoint(pos); + go.transform.rotation = parent.root.TransformRotation(rot); } else { go.transform.position = pos; diff --git a/NewHorizons/External/Configs/StarSystemConfig.cs b/NewHorizons/External/Configs/StarSystemConfig.cs index c9307b98..0830d033 100644 --- a/NewHorizons/External/Configs/StarSystemConfig.cs +++ b/NewHorizons/External/Configs/StarSystemConfig.cs @@ -85,16 +85,16 @@ namespace NewHorizons.External.Configs [Obsolete("coords is deprecated, please use Vessel.coords instead")] public NomaiCoordinates coords; - [Obsolete("vesselPosition is deprecated, please use Vessel.vesselPosition instead")] + [Obsolete("vesselPosition is deprecated, please use Vessel.vesselSpawn.position instead")] public MVector3 vesselPosition; - [Obsolete("vesselRotation is deprecated, please use Vessel.vesselRotation instead")] + [Obsolete("vesselRotation is deprecated, please use Vessel.vesselSpawn.rotation instead")] public MVector3 vesselRotation; - [Obsolete("warpExitPosition is deprecated, please use Vessel.warpExitPosition instead")] + [Obsolete("warpExitPosition is deprecated, please use Vessel.warpExit.position instead")] public MVector3 warpExitPosition; - [Obsolete("warpExitRotation is deprecated, please use Vessel.warpExitRotation instead")] + [Obsolete("warpExitRotation is deprecated, please use Vessel.warpExit.rotation instead")] public MVector3 warpExitRotation; /// @@ -193,17 +193,17 @@ namespace NewHorizons.External.Configs /// /// The location that the vessel will warp to. /// - public VesselInfo vessel; + public VesselInfo vesselSpawn; /// /// The location that you will be teleported to when you exit the vessel through the black hole. /// public WarpExitInfo warpExit; - [Obsolete("vesselPosition is deprecated, use vessel.position instead")] public MVector3 vesselPosition; - [Obsolete("vesselRotation is deprecated, use vessel.rotation instead")] public MVector3 vesselRotation; - [Obsolete("warpExitPosition is deprecated, use warpExit.position instead")] public MVector3 warpExitPosition; - [Obsolete("warpExitRotation is deprecated, use warpExit.rotation instead")] public MVector3 warpExitRotation; + [Obsolete("vesselPosition is deprecated, use vesselSpawn.position instead")] public MVector3 vesselPosition; + [Obsolete("vesselRotation is deprecated, use vesselSpawn.rotation instead")] public MVector3 vesselRotation; + [Obsolete("warpExitPosition is deprecated, use vesselSpawn.position instead")] public MVector3 warpExitPosition; + [Obsolete("warpExitRotation is deprecated, use vesselSpawn.rotation instead")] public MVector3 warpExitRotation; [JsonObject] public class VesselInfo : PropModule.GeneralSolarSystemPropInfo @@ -291,12 +291,12 @@ namespace NewHorizons.External.Configs { if (Vessel.vesselPosition != null || Vessel.vesselRotation != null) { - if (Vessel.vessel == null) + if (Vessel.vesselSpawn == null) { - Vessel.vessel = new VesselModule.VesselInfo(); + Vessel.vesselSpawn = new VesselModule.VesselInfo(); } - Vessel.vessel.position ??= Vessel.vesselPosition; - Vessel.vessel.rotation ??= Vessel.vesselRotation; + Vessel.vesselSpawn.position ??= Vessel.vesselPosition; + Vessel.vesselSpawn.rotation ??= Vessel.vesselRotation; } if (Vessel.warpExitPosition != null || Vessel.warpExitRotation != null) { diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 03253384..01e19c5c 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -85,7 +85,7 @@ namespace NewHorizons.Handlers if (VesselPrefab == null) return null; Logger.LogVerbose("Creating Vessel"); - var vesselObject = GeneralPropBuilder.MakeFromPrefab(VesselPrefab, VesselPrefab.name, null, system.Config.Vessel?.vessel); + var vesselObject = GeneralPropBuilder.MakeFromPrefab(VesselPrefab, VesselPrefab.name, null, system.Config.Vessel?.vesselSpawn); VesselObject = vesselObject; vesselObject.transform.parent = null; @@ -142,7 +142,13 @@ namespace NewHorizons.Handlers vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; - GeneralPropBuilder.MakeFromExisting(vesselWarpController._targetWarpPlatform.gameObject, vesselWarpController._targetWarpPlatform.transform.parent, system.Config.Vessel?.warpExit); + var attachWarpExitToVessel = system.Config.Vessel?.warpExit?.attachToVessel ?? false; + var warpExitParent = vesselWarpController._targetWarpPlatform.transform.parent; + var warpExit = GeneralPropBuilder.MakeFromExisting(vesselWarpController._targetWarpPlatform.gameObject, attachWarpExitToVessel ? warpExitParent : null, system.Config.Vessel?.warpExit); + if (attachWarpExitToVessel) + { + warpExit.transform.parent = warpExitParent; + } vesselObject.GetComponent()._labelID = (UITextType)TranslationHandler.AddUI("Vessel");