mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
merged dev
This commit is contained in:
commit
43b29e7775
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/master/NewHorizons/translation_schema.json",
|
"$schema": "https://raw.githubusercontent.com/xen-42/outer-wilds-new-horizons/main/NewHorizons/Schemas/translation_schema.json",
|
||||||
"DialogueDictionary":
|
"DialogueDictionary":
|
||||||
{
|
{
|
||||||
"NEW_HORIZONS_WARP_DRIVE_DIALOGUE_1" : "Your ship is now equiped with a warp drive!",
|
"NEW_HORIZONS_WARP_DRIVE_DIALOGUE_1" : "Your ship is now equiped with a warp drive!",
|
||||||
@ -11,6 +11,8 @@
|
|||||||
"INTERSTELLAR_MODE" : "Interstellar Mode",
|
"INTERSTELLAR_MODE" : "Interstellar Mode",
|
||||||
"FREQ_STATUE" : "Nomai Statue",
|
"FREQ_STATUE" : "Nomai Statue",
|
||||||
"FREQ_WARP_CORE" : "Anti-Graviton Flux",
|
"FREQ_WARP_CORE" : "Anti-Graviton Flux",
|
||||||
"FREQ_UNKNOWN" : "???"
|
"FREQ_UNKNOWN" : "???",
|
||||||
|
"ENGAGE_WARP_PROMPT" : "Engage Warp To {0}",
|
||||||
|
"WARP_LOCKED" : "AUTOPILOT LOCKED TO:\n{0}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -11,6 +11,8 @@
|
|||||||
"INTERSTELLAR_MODE" : "Режим Interstellar",
|
"INTERSTELLAR_MODE" : "Режим Interstellar",
|
||||||
"FREQ_STATUE" : "Статуя Номаи",
|
"FREQ_STATUE" : "Статуя Номаи",
|
||||||
"FREQ_WARP_CORE" : "Гиперядро",
|
"FREQ_WARP_CORE" : "Гиперядро",
|
||||||
"FREQ_UNKNOWN" : "???"
|
"FREQ_UNKNOWN" : "???",
|
||||||
|
"ENGAGE_WARP_PROMPT" : "Телепортироваться к {0}",
|
||||||
|
"WARP_LOCKED" : "АВТОПИЛОТ ЗАКРЕПЛЁН НА:\n{0}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,18 +14,33 @@ namespace NewHorizons.Builder.Body
|
|||||||
|
|
||||||
public static void Make(GameObject planetGO, Sector sector, HeightMapModule module, IModBehaviour mod, int resolution = 51)
|
public static void Make(GameObject planetGO, Sector sector, HeightMapModule module, IModBehaviour mod, int resolution = 51)
|
||||||
{
|
{
|
||||||
|
var deleteHeightmapFlag = false;
|
||||||
|
|
||||||
Texture2D heightMap, textureMap;
|
Texture2D heightMap, textureMap;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (module.heightMap == null) heightMap = Texture2D.whiteTexture;
|
if (module.heightMap == null)
|
||||||
|
{
|
||||||
|
heightMap = Texture2D.whiteTexture;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// If we've loaded a new heightmap we'll delete the texture after
|
||||||
heightMap = ImageUtilities.GetTexture(mod, module.heightMap);
|
heightMap = ImageUtilities.GetTexture(mod, module.heightMap);
|
||||||
// defer remove texture to next frame
|
deleteHeightmapFlag = true;
|
||||||
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => Object.Destroy(heightMap));
|
|
||||||
}
|
}
|
||||||
if (module.textureMap == null) textureMap = Texture2D.whiteTexture;
|
|
||||||
else textureMap = ImageUtilities.GetTexture(mod, module.textureMap);
|
if (module.textureMap == null)
|
||||||
|
{
|
||||||
|
textureMap = Texture2D.whiteTexture;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
textureMap = ImageUtilities.GetTexture(mod, module.textureMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the texturemap is the same as the heightmap don't delete it #176
|
||||||
|
if (textureMap == heightMap) deleteHeightmapFlag = false;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -45,11 +60,9 @@ namespace NewHorizons.Builder.Body
|
|||||||
cubeSphere.GetComponent<MeshFilter>().mesh = mesh;
|
cubeSphere.GetComponent<MeshFilter>().mesh = mesh;
|
||||||
|
|
||||||
if (PlanetShader == null) PlanetShader = Main.NHAssetBundle.LoadAsset<Shader>("Assets/Shaders/SphereTextureWrapper.shader");
|
if (PlanetShader == null) PlanetShader = Main.NHAssetBundle.LoadAsset<Shader>("Assets/Shaders/SphereTextureWrapper.shader");
|
||||||
//if (PlanetShader == null) PlanetShader = Shader.Find("Standard");
|
|
||||||
|
|
||||||
var cubeSphereMR = cubeSphere.AddComponent<MeshRenderer>();
|
var cubeSphereMR = cubeSphere.AddComponent<MeshRenderer>();
|
||||||
var material = cubeSphereMR.material;
|
var material = new Material(PlanetShader);
|
||||||
material = new Material(PlanetShader);
|
|
||||||
cubeSphereMR.material = material;
|
cubeSphereMR.material = material;
|
||||||
material.name = textureMap.name;
|
material.name = textureMap.name;
|
||||||
material.mainTexture = textureMap;
|
material.mainTexture = textureMap;
|
||||||
@ -65,6 +78,9 @@ namespace NewHorizons.Builder.Body
|
|||||||
cubeSphere.transform.position = planetGO.transform.position;
|
cubeSphere.transform.position = planetGO.transform.position;
|
||||||
|
|
||||||
cubeSphere.SetActive(true);
|
cubeSphere.SetActive(true);
|
||||||
|
|
||||||
|
// Now that we've made the mesh we can delete the heightmap texture
|
||||||
|
if (deleteHeightmapFlag) ImageUtilities.DeleteTexture(mod, module.heightMap, heightMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,10 +73,18 @@ namespace NewHorizons.Builder.Body
|
|||||||
deathVolume.transform.localPosition = Vector3.zero;
|
deathVolume.transform.localPosition = Vector3.zero;
|
||||||
deathVolume.transform.localScale = Vector3.one;
|
deathVolume.transform.localScale = Vector3.one;
|
||||||
deathVolume.GetComponent<SphereCollider>().radius = 1f;
|
deathVolume.GetComponent<SphereCollider>().radius = 1f;
|
||||||
deathVolume.GetComponent<DestructionVolume>()._onlyAffectsPlayerAndShip = false;
|
deathVolume.GetComponent<DestructionVolume>()._onlyAffectsPlayerAndShip = true;
|
||||||
deathVolume.GetComponent<DestructionVolume>()._shrinkBodies = true;
|
deathVolume.GetComponent<DestructionVolume>()._shrinkBodies = true;
|
||||||
deathVolume.name = "DestructionVolume";
|
deathVolume.name = "DestructionVolume";
|
||||||
|
|
||||||
|
var planetDestructionVolume = Object.Instantiate(deathVolume, starGO.transform);
|
||||||
|
planetDestructionVolume.transform.localPosition = Vector3.zero;
|
||||||
|
planetDestructionVolume.transform.localScale = Vector3.one;
|
||||||
|
planetDestructionVolume.GetComponent<SphereCollider>().radius = 0.75f;
|
||||||
|
planetDestructionVolume.GetComponent<DestructionVolume>()._onlyAffectsPlayerAndShip = false;
|
||||||
|
planetDestructionVolume.GetComponent<DestructionVolume>()._shrinkBodies = true;
|
||||||
|
planetDestructionVolume.name = "PlanetDestructionVolume";
|
||||||
|
|
||||||
Light ambientLight = ambientLightGO.GetComponent<Light>();
|
Light ambientLight = ambientLightGO.GetComponent<Light>();
|
||||||
|
|
||||||
var sunLight = new GameObject("StarLight");
|
var sunLight = new GameObject("StarLight");
|
||||||
|
|||||||
@ -45,15 +45,7 @@ namespace NewHorizons.Builder.Orbital
|
|||||||
{
|
{
|
||||||
orbitLine = orbitGO.AddComponent<NHOrbitLine>();
|
orbitLine = orbitGO.AddComponent<NHOrbitLine>();
|
||||||
|
|
||||||
var a = astroObject.semiMajorAxis;
|
(orbitLine as NHOrbitLine).SetFromParameters(astroObject);
|
||||||
var e = astroObject.eccentricity;
|
|
||||||
var b = a * Mathf.Sqrt(1f - (e * e));
|
|
||||||
var l = astroObject.longitudeOfAscendingNode;
|
|
||||||
var p = astroObject.argumentOfPeriapsis;
|
|
||||||
var i = astroObject.inclination;
|
|
||||||
|
|
||||||
(orbitLine as NHOrbitLine).SemiMajorAxis = a * OrbitalParameters.Rotate(Vector3.left, l, i, p);
|
|
||||||
(orbitLine as NHOrbitLine).SemiMinorAxis = b * OrbitalParameters.Rotate(Vector3.forward, l, i, p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var color = Color.white;
|
var color = Color.white;
|
||||||
|
|||||||
@ -19,6 +19,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
private static GameObject _computerPrefab;
|
private static GameObject _computerPrefab;
|
||||||
private static GameObject _cairnPrefab;
|
private static GameObject _cairnPrefab;
|
||||||
private static GameObject _recorderPrefab;
|
private static GameObject _recorderPrefab;
|
||||||
|
private static GameObject _preCrashRecorderPrefab;
|
||||||
|
|
||||||
private static Dictionary<PropModule.NomaiTextArcInfo, GameObject> arcInfoToCorrespondingSpawnedGameObject = new Dictionary<PropModule.NomaiTextArcInfo, GameObject>();
|
private static Dictionary<PropModule.NomaiTextArcInfo, GameObject> arcInfoToCorrespondingSpawnedGameObject = new Dictionary<PropModule.NomaiTextArcInfo, GameObject>();
|
||||||
public static GameObject GetSpawnedGameObjectByNomaiTextArcInfo(PropModule.NomaiTextArcInfo arc)
|
public static GameObject GetSpawnedGameObjectByNomaiTextArcInfo(PropModule.NomaiTextArcInfo arc)
|
||||||
@ -81,6 +82,10 @@ namespace NewHorizons.Builder.Props
|
|||||||
_recorderPrefab = SearchUtilities.Find("Comet_Body/Prefab_NOM_Shuttle/Sector_NomaiShuttleInterior/Interactibles_NomaiShuttleInterior/Prefab_NOM_Recorder").InstantiateInactive();
|
_recorderPrefab = SearchUtilities.Find("Comet_Body/Prefab_NOM_Shuttle/Sector_NomaiShuttleInterior/Interactibles_NomaiShuttleInterior/Prefab_NOM_Recorder").InstantiateInactive();
|
||||||
_recorderPrefab.name = "Prefab_NOM_Recorder";
|
_recorderPrefab.name = "Prefab_NOM_Recorder";
|
||||||
_recorderPrefab.transform.rotation = Quaternion.identity;
|
_recorderPrefab.transform.rotation = Quaternion.identity;
|
||||||
|
|
||||||
|
_preCrashRecorderPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_EscapePodCrashSite/Sector_CrashFragment/Interactables_CrashFragment/Prefab_NOM_Recorder").InstantiateInactive();
|
||||||
|
_preCrashRecorderPrefab.name = "Prefab_NOM_Recorder_Vessel";
|
||||||
|
_preCrashRecorderPrefab.transform.rotation = Quaternion.identity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Make(GameObject planetGO, Sector sector, PropModule.NomaiTextInfo info, IModBehaviour mod)
|
public static void Make(GameObject planetGO, Sector sector, PropModule.NomaiTextInfo info, IModBehaviour mod)
|
||||||
@ -242,9 +247,10 @@ namespace NewHorizons.Builder.Props
|
|||||||
conversationInfoToCorrespondingSpawnedGameObject[info] = cairnObject;
|
conversationInfoToCorrespondingSpawnedGameObject[info] = cairnObject;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case PropModule.NomaiTextInfo.NomaiTextType.PreCrashRecorder:
|
||||||
case PropModule.NomaiTextInfo.NomaiTextType.Recorder:
|
case PropModule.NomaiTextInfo.NomaiTextType.Recorder:
|
||||||
{
|
{
|
||||||
var recorderObject = _recorderPrefab.InstantiateInactive();
|
var recorderObject = (info.type == PropModule.NomaiTextInfo.NomaiTextType.PreCrashRecorder? _preCrashRecorderPrefab : _recorderPrefab).InstantiateInactive();
|
||||||
|
|
||||||
recorderObject.transform.parent = sector?.transform ?? planetGO.transform;
|
recorderObject.transform.parent = sector?.transform ?? planetGO.transform;
|
||||||
recorderObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero);
|
recorderObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero);
|
||||||
|
|||||||
@ -96,7 +96,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
imageLoader.imageLoadedEvent.AddListener(
|
imageLoader.imageLoadedEvent.AddListener(
|
||||||
(Texture2D tex, int index) =>
|
(Texture2D tex, int index) =>
|
||||||
{
|
{
|
||||||
slideCollection.slides[index].textureOverride = ImageUtilities.Invert(tex);
|
slideCollection.slides[index]._image = ImageUtilities.Invert(tex);
|
||||||
|
|
||||||
// Track the first 15 to put on the slide reel object
|
// Track the first 15 to put on the slide reel object
|
||||||
if (index < 15)
|
if (index < 15)
|
||||||
@ -176,7 +176,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
|
|
||||||
slideCollection.slides[i] = slide;
|
slideCollection.slides[i] = slide;
|
||||||
}
|
}
|
||||||
imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index].textureOverride = ImageUtilities.Invert(tex); });
|
imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index]._image = ImageUtilities.Invert(tex); });
|
||||||
|
|
||||||
slideCollectionContainer.slideCollection = slideCollection;
|
slideCollectionContainer.slideCollection = slideCollection;
|
||||||
|
|
||||||
@ -185,8 +185,8 @@ namespace NewHorizons.Builder.Props
|
|||||||
|
|
||||||
// Change the picture on the lens
|
// Change the picture on the lens
|
||||||
var lens = projectorObj.transform.Find("Spotlight/Prop_IP_SingleSlideProjector/Projector_Lens").GetComponent<MeshRenderer>();
|
var lens = projectorObj.transform.Find("Spotlight/Prop_IP_SingleSlideProjector/Projector_Lens").GetComponent<MeshRenderer>();
|
||||||
lens.materials[1].mainTexture = slideCollection.slides[0]._textureOverride;
|
lens.materials[1].mainTexture = slideCollection.slides[0]._image;
|
||||||
lens.materials[1].SetTexture(EmissionMap, slideCollection.slides[0]._textureOverride);
|
lens.materials[1].SetTexture(EmissionMap, slideCollection.slides[0]._image);
|
||||||
|
|
||||||
projectorObj.SetActive(true);
|
projectorObj.SetActive(true);
|
||||||
}
|
}
|
||||||
@ -224,7 +224,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
|
|
||||||
slideCollection.slides[i] = slide;
|
slideCollection.slides[i] = slide;
|
||||||
}
|
}
|
||||||
imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index].textureOverride = tex; });
|
imageLoader.imageLoadedEvent.AddListener((Texture2D tex, int index) => { slideCollection.slides[index]._image = tex; });
|
||||||
|
|
||||||
|
|
||||||
// attatch a component to store all the data for the slides that play when a vision torch scans this target
|
// attatch a component to store all the data for the slides that play when a vision torch scans this target
|
||||||
@ -298,7 +298,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
imageLoader.imageLoadedEvent.AddListener(
|
imageLoader.imageLoadedEvent.AddListener(
|
||||||
(Texture2D tex, int index) =>
|
(Texture2D tex, int index) =>
|
||||||
{
|
{
|
||||||
slideCollection.slides[index].textureOverride = tex;
|
slideCollection.slides[index]._image = tex;
|
||||||
displaySlidesLoaded++; // threading moment
|
displaySlidesLoaded++; // threading moment
|
||||||
|
|
||||||
if (displaySlidesLoaded >= slides.Length)
|
if (displaySlidesLoaded >= slides.Length)
|
||||||
@ -380,7 +380,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
public class VisionTorchTarget : MonoBehaviour
|
public class VisionTorchTarget : MonoBehaviour
|
||||||
{
|
{
|
||||||
public MindSlideCollection slideCollection;
|
public MindSlideCollection slideCollection;
|
||||||
public SlideCollectionContainer slideCollectionContainer;
|
public SlideCollectionContainer slideCollectionContainer;
|
||||||
public OWEvent.OWCallback onSlidesComplete;
|
public OWEvent.OWCallback onSlidesComplete;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,7 +116,9 @@ namespace NewHorizons.Builder.Props
|
|||||||
tornadoGO.transform.localScale = Vector3.one * scale;
|
tornadoGO.transform.localScale = Vector3.one * scale;
|
||||||
|
|
||||||
// Resize the distance it can be heard from to match roughly with the size
|
// Resize the distance it can be heard from to match roughly with the size
|
||||||
audioSource.maxDistance = 100 * scale;
|
var maxDistance = info.audioDistance == 0 ? 10 * scale : info.audioDistance;
|
||||||
|
audioSource.maxDistance = maxDistance;
|
||||||
|
audioSource.minDistance = maxDistance / 10f;
|
||||||
|
|
||||||
var controller = tornadoGO.GetComponent<TornadoController>();
|
var controller = tornadoGO.GetComponent<TornadoController>();
|
||||||
controller.SetSector(sector);
|
controller.SetSector(sector);
|
||||||
|
|||||||
@ -12,9 +12,9 @@ namespace NewHorizons.Components
|
|||||||
|
|
||||||
private List<Renderer> _renderers = null;
|
private List<Renderer> _renderers = null;
|
||||||
|
|
||||||
internal static bool isPlayerInside = false;
|
public static bool isPlayerInside = false;
|
||||||
internal static bool isProbeInside = false;
|
public static bool isProbeInside = false;
|
||||||
internal static bool isShipInside = false;
|
public static bool isShipInside = false;
|
||||||
|
|
||||||
public void Init(CloakFieldController cloak, GameObject root)
|
public void Init(CloakFieldController cloak, GameObject root)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,20 +1,17 @@
|
|||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
namespace NewHorizons.Components.Orbital
|
namespace NewHorizons.Components.Orbital
|
||||||
{
|
{
|
||||||
public class NHOrbitLine : OrbitLine
|
public class NHOrbitLine : OrbitLine
|
||||||
{
|
{
|
||||||
public Vector3 SemiMajorAxis { get; set; }
|
private Vector3 _semiMajorAxis;
|
||||||
public Vector3 SemiMinorAxis { get; set; }
|
private Vector3 _semiMinorAxis;
|
||||||
|
|
||||||
private Vector3 _upAxis;
|
private Vector3 _upAxis;
|
||||||
private float _fociDistance;
|
private float _fociDistance;
|
||||||
private Vector3[] _verts;
|
private Vector3[] _verts;
|
||||||
|
|
||||||
private float semiMajorAxis;
|
|
||||||
private float semiMinorAxis;
|
|
||||||
|
|
||||||
public override void InitializeLineRenderer()
|
public override void InitializeLineRenderer()
|
||||||
{
|
{
|
||||||
base.GetComponent<LineRenderer>().positionCount = this._numVerts;
|
base.GetComponent<LineRenderer>().positionCount = this._numVerts;
|
||||||
@ -36,10 +33,10 @@ namespace NewHorizons.Components.Orbital
|
|||||||
{
|
{
|
||||||
base.Start();
|
base.Start();
|
||||||
|
|
||||||
var a = SemiMajorAxis.magnitude;
|
var a = _semiMajorAxis.magnitude;
|
||||||
var b = SemiMinorAxis.magnitude;
|
var b = _semiMinorAxis.magnitude;
|
||||||
|
|
||||||
_upAxis = Vector3.Cross(SemiMajorAxis.normalized, SemiMinorAxis.normalized);
|
_upAxis = Vector3.Cross(_semiMajorAxis.normalized, _semiMinorAxis.normalized);
|
||||||
|
|
||||||
_fociDistance = Mathf.Sqrt(a * a - b * b);
|
_fociDistance = Mathf.Sqrt(a * a - b * b);
|
||||||
if (float.IsNaN(_fociDistance)) _fociDistance = 0f;
|
if (float.IsNaN(_fociDistance)) _fociDistance = 0f;
|
||||||
@ -48,9 +45,6 @@ namespace NewHorizons.Components.Orbital
|
|||||||
|
|
||||||
transform.localRotation = Quaternion.Euler(270, 90, 0);
|
transform.localRotation = Quaternion.Euler(270, 90, 0);
|
||||||
|
|
||||||
semiMajorAxis = SemiMajorAxis.magnitude;
|
|
||||||
semiMinorAxis = SemiMinorAxis.magnitude;
|
|
||||||
|
|
||||||
base.enabled = false;
|
base.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,22 +61,22 @@ namespace NewHorizons.Components.Orbital
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 origin = primary.transform.position + SemiMajorAxis.normalized * _fociDistance;
|
Vector3 origin = primary.transform.position + _semiMajorAxis.normalized * _fociDistance;
|
||||||
|
|
||||||
float num = CalcProjectedAngleToCenter(origin, SemiMajorAxis, SemiMinorAxis, _astroObject.transform.position);
|
float num = CalcProjectedAngleToCenter(origin, _semiMajorAxis, _semiMinorAxis, _astroObject.transform.position);
|
||||||
|
|
||||||
for (int i = 0; i < _numVerts; i++)
|
for (int i = 0; i < _numVerts; i++)
|
||||||
{
|
{
|
||||||
var stepSize = 2f * Mathf.PI / (float)(_numVerts - 1);
|
var stepSize = 2f * Mathf.PI / (float)(_numVerts - 1);
|
||||||
float f = num + stepSize * i;
|
float f = num + stepSize * i;
|
||||||
_verts[i] = SemiMajorAxis * Mathf.Cos(f) + SemiMinorAxis * Mathf.Sin(f);
|
_verts[i] = _semiMajorAxis * Mathf.Cos(f) + _semiMinorAxis * Mathf.Sin(f);
|
||||||
}
|
}
|
||||||
_lineRenderer.SetPositions(_verts);
|
_lineRenderer.SetPositions(_verts);
|
||||||
|
|
||||||
transform.position = origin;
|
transform.position = origin;
|
||||||
transform.rotation = Quaternion.Euler(0, 0, 0); //Quaternion.LookRotation(-SemiMajorAxis, _upAxis);
|
transform.rotation = Quaternion.Euler(0, 0, 0); //Quaternion.LookRotation(-SemiMajorAxis, _upAxis);
|
||||||
|
|
||||||
float num2 = DistanceToEllipticalOrbitLine(origin, SemiMajorAxis, SemiMinorAxis, _upAxis, Locator.GetActiveCamera().transform.position);
|
float num2 = DistanceToEllipticalOrbitLine(origin, _semiMajorAxis, _semiMinorAxis, _upAxis, Locator.GetActiveCamera().transform.position);
|
||||||
float widthMultiplier = Mathf.Min(num2 * (_lineWidth / 1000f), _maxLineWidth);
|
float widthMultiplier = Mathf.Min(num2 * (_lineWidth / 1000f), _maxLineWidth);
|
||||||
float num3 = _fade ? (1f - Mathf.Clamp01((num2 - _fadeStartDist) / (_fadeEndDist - _fadeStartDist))) : 1f;
|
float num3 = _fade ? (1f - Mathf.Clamp01((num2 - _fadeStartDist) / (_fadeEndDist - _fadeStartDist))) : 1f;
|
||||||
|
|
||||||
@ -96,6 +90,19 @@ namespace NewHorizons.Components.Orbital
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetFromParameters(IOrbitalParameters parameters)
|
||||||
|
{
|
||||||
|
var a = parameters.semiMajorAxis;
|
||||||
|
var e = parameters.eccentricity;
|
||||||
|
var b = a * Mathf.Sqrt(1f - (e * e));
|
||||||
|
var l = parameters.longitudeOfAscendingNode;
|
||||||
|
var p = parameters.argumentOfPeriapsis;
|
||||||
|
var i = parameters.inclination;
|
||||||
|
|
||||||
|
_semiMajorAxis = a * OrbitalParameters.Rotate(Vector3.left, l, i, p);
|
||||||
|
_semiMinorAxis = b * OrbitalParameters.Rotate(Vector3.forward, l, i, p);
|
||||||
|
}
|
||||||
|
|
||||||
private float CalcProjectedAngleToCenter(Vector3 foci, Vector3 semiMajorAxis, Vector3 semiMinorAxis, Vector3 point)
|
private float CalcProjectedAngleToCenter(Vector3 foci, Vector3 semiMajorAxis, Vector3 semiMinorAxis, Vector3 point)
|
||||||
{
|
{
|
||||||
Vector3 lhs = point - foci;
|
Vector3 lhs = point - foci;
|
||||||
@ -107,7 +114,7 @@ namespace NewHorizons.Components.Orbital
|
|||||||
private float DistanceToEllipticalOrbitLine(Vector3 foci, Vector3 semiMajorAxis, Vector3 semiMinorAxis, Vector3 upAxis, Vector3 point)
|
private float DistanceToEllipticalOrbitLine(Vector3 foci, Vector3 semiMajorAxis, Vector3 semiMinorAxis, Vector3 upAxis, Vector3 point)
|
||||||
{
|
{
|
||||||
float f = CalcProjectedAngleToCenter(foci, semiMajorAxis, semiMinorAxis, point);
|
float f = CalcProjectedAngleToCenter(foci, semiMajorAxis, semiMinorAxis, point);
|
||||||
Vector3 b = foci + SemiMajorAxis * Mathf.Cos(f) + SemiMinorAxis * Mathf.Sin(f);
|
Vector3 b = foci + _semiMajorAxis * Mathf.Cos(f) + _semiMinorAxis * Mathf.Sin(f);
|
||||||
return Vector3.Distance(point, b);
|
return Vector3.Distance(point, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using NewHorizons.Builder.General;
|
using NewHorizons.Builder.General;
|
||||||
using NewHorizons.Builder.Orbital;
|
using NewHorizons.Builder.Orbital;
|
||||||
using NewHorizons.Components.Orbital;
|
using NewHorizons.Components.Orbital;
|
||||||
using NewHorizons.External.Modules;
|
using NewHorizons.External.Modules;
|
||||||
@ -20,6 +20,9 @@ namespace NewHorizons.Components
|
|||||||
private ConstantForceDetector _detector;
|
private ConstantForceDetector _detector;
|
||||||
private AlignWithTargetBody _alignment;
|
private AlignWithTargetBody _alignment;
|
||||||
private OWRigidbody _rb;
|
private OWRigidbody _rb;
|
||||||
|
private OrbitLine _orbitLine;
|
||||||
|
|
||||||
|
public int CurrentIndex { get { return _currentIndex; } }
|
||||||
|
|
||||||
public override void Awake()
|
public override void Awake()
|
||||||
{
|
{
|
||||||
@ -29,6 +32,7 @@ namespace NewHorizons.Components
|
|||||||
_detector = GetComponentInChildren<ConstantForceDetector>();
|
_detector = GetComponentInChildren<ConstantForceDetector>();
|
||||||
_alignment = GetComponent<AlignWithTargetBody>();
|
_alignment = GetComponent<AlignWithTargetBody>();
|
||||||
_rb = GetComponent<OWRigidbody>();
|
_rb = GetComponent<OWRigidbody>();
|
||||||
|
_orbitLine = GetComponent<OrbitLine>();
|
||||||
|
|
||||||
GlobalMessenger.AddListener("PlayerBlink", new Callback(OnPlayerBlink));
|
GlobalMessenger.AddListener("PlayerBlink", new Callback(OnPlayerBlink));
|
||||||
|
|
||||||
@ -141,6 +145,16 @@ namespace NewHorizons.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
_rb.SetVelocity(orbitalParameters.InitialVelocity + primaryBody.GetAttachedOWRigidbody().GetVelocity());
|
_rb.SetVelocity(orbitalParameters.InitialVelocity + primaryBody.GetAttachedOWRigidbody().GetVelocity());
|
||||||
|
|
||||||
|
if (_orbitLine is NHOrbitLine nhOrbitLine)
|
||||||
|
{
|
||||||
|
nhOrbitLine.SetFromParameters(orbitalParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_orbitLine is TrackingOrbitLine trackingOrbitLine)
|
||||||
|
{
|
||||||
|
trackingOrbitLine.Reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPlayerBlink()
|
private void OnPlayerBlink()
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
using Logger = NewHorizons.Utility.Logger;
|
using Logger = NewHorizons.Utility.Logger;
|
||||||
namespace NewHorizons.Components
|
namespace NewHorizons.Components
|
||||||
{
|
{
|
||||||
@ -105,12 +106,15 @@ namespace NewHorizons.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
var newCard = GameObject.Instantiate(_cardTemplate, parent);
|
var newCard = GameObject.Instantiate(_cardTemplate, parent);
|
||||||
var textComponent = newCard.transform.Find("EntryCardRoot/NameBackground/Name").GetComponent<UnityEngine.UI.Text>();
|
var textComponent = newCard.transform.Find("EntryCardRoot/NameBackground/Name").GetComponent<Text>();
|
||||||
|
|
||||||
var name = UniqueIDToName(uniqueID);
|
var name = UniqueIDToName(uniqueID);
|
||||||
|
|
||||||
textComponent.text = name;
|
textComponent.text = name;
|
||||||
if (name.Length > 17) textComponent.fontSize = 10;
|
if (name.Length > 17) textComponent.fontSize = 10;
|
||||||
|
// Do it next frame
|
||||||
|
var fontPath = "Ship_Body/Module_Cabin/Systems_Cabin/ShipLogPivot/ShipLog/ShipLogPivot/ShipLogCanvas/DetectiveMode/ScaleRoot/PanRoot/TH_VILLAGE/EntryCardRoot/NameBackground/Name";
|
||||||
|
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => textComponent.font = SearchUtilities.Find(fontPath).GetComponent<Text>().font);
|
||||||
|
|
||||||
newCard.SetActive(true);
|
newCard.SetActive(true);
|
||||||
newCard.transform.name = uniqueID;
|
newCard.transform.name = uniqueID;
|
||||||
@ -273,16 +277,20 @@ namespace NewHorizons.Components
|
|||||||
private void SetWarpTarget(ShipLogEntryCard shipLogEntryCard)
|
private void SetWarpTarget(ShipLogEntryCard shipLogEntryCard)
|
||||||
{
|
{
|
||||||
RemoveWarpTarget(false);
|
RemoveWarpTarget(false);
|
||||||
_oneShotSource.PlayOneShot(global::AudioType.ShipLogUnmarkLocation, 1f);
|
_oneShotSource.PlayOneShot(AudioType.ShipLogUnmarkLocation, 1f);
|
||||||
_target = shipLogEntryCard;
|
_target = shipLogEntryCard;
|
||||||
_target.SetMarkedOnHUD(true);
|
_target.SetMarkedOnHUD(true);
|
||||||
Locator._rfTracker.UntargetReferenceFrame();
|
Locator._rfTracker.UntargetReferenceFrame();
|
||||||
|
|
||||||
GlobalMessenger.FireEvent("UntargetReferenceFrame");
|
GlobalMessenger.FireEvent("UntargetReferenceFrame");
|
||||||
_warpNotificationData = new NotificationData($"AUTOPILOT LOCKED TO:\n{UniqueIDToName(shipLogEntryCard.name).ToUpper()}");
|
|
||||||
|
var name = UniqueIDToName(shipLogEntryCard.name);
|
||||||
|
|
||||||
|
var warpNotificationDataText = TranslationHandler.GetTranslation("WARP_LOCKED", TranslationHandler.TextType.UI).Replace("{0}", name.ToUpper());
|
||||||
|
_warpNotificationData = new NotificationData(warpNotificationDataText);
|
||||||
NotificationManager.SharedInstance.PostNotification(_warpNotificationData, true);
|
NotificationManager.SharedInstance.PostNotification(_warpNotificationData, true);
|
||||||
|
|
||||||
_warpPrompt.SetText($"<CMD> Engage Warp To {UniqueIDToName(shipLogEntryCard.name)}");
|
var warpPromptText = "<CMD> " + TranslationHandler.GetTranslation("ENGAGE_WARP_PROMPT", TranslationHandler.TextType.UI).Replace("{0}", name);
|
||||||
|
_warpPrompt.SetText(warpPromptText);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemoveWarpTarget(bool playSound = false)
|
private void RemoveWarpTarget(bool playSound = false)
|
||||||
|
|||||||
@ -14,11 +14,6 @@ namespace NewHorizons.External.Configs
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool canEnterViaWarpDrive = true;
|
public bool canEnterViaWarpDrive = true;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// [DEPRECATED] Not implemented
|
|
||||||
/// </summary>
|
|
||||||
public NomaiCoordinates coords;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Do you want a clean slate for this star system? Or will it be a modified version of the original.
|
/// Do you want a clean slate for this star system? Or will it be a modified version of the original.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
15
NewHorizons/External/Modules/PropModule.cs
vendored
15
NewHorizons/External/Modules/PropModule.cs
vendored
@ -5,6 +5,7 @@ using System.ComponentModel.DataAnnotations;
|
|||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Converters;
|
using Newtonsoft.Json.Converters;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace NewHorizons.External.Modules
|
namespace NewHorizons.External.Modules
|
||||||
{
|
{
|
||||||
@ -205,10 +206,7 @@ namespace NewHorizons.External.Modules
|
|||||||
[EnumMember(Value = @"hurricane")] Hurricane = 2
|
[EnumMember(Value = @"hurricane")] Hurricane = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
[Obsolete("Downwards is deprecated. Use Type instead.")] public bool downwards;
|
||||||
/// [DEPRECATED] Should this tornado shoot you down instead of up?
|
|
||||||
/// </summary>
|
|
||||||
public bool downwards;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Alternative to setting the position. Will choose a random place at this elevation.
|
/// Alternative to setting the position. Will choose a random place at this elevation.
|
||||||
@ -250,6 +248,11 @@ namespace NewHorizons.External.Modules
|
|||||||
/// 0.1.
|
/// 0.1.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float wanderRate;
|
public float wanderRate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The maximum distance at which you'll hear the sounds of the cyclone. If not set it will scale relative to the size of the cyclone.
|
||||||
|
/// </summary>
|
||||||
|
public float audioDistance;
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonObject]
|
[JsonObject]
|
||||||
@ -421,7 +424,9 @@ namespace NewHorizons.External.Modules
|
|||||||
|
|
||||||
[EnumMember(Value = @"cairn")] Cairn = 3,
|
[EnumMember(Value = @"cairn")] Cairn = 3,
|
||||||
|
|
||||||
[EnumMember(Value = @"recorder")] Recorder = 4
|
[EnumMember(Value = @"recorder")] Recorder = 4,
|
||||||
|
|
||||||
|
[EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using NewHorizons.External.Configs;
|
using NewHorizons.External.Configs;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -18,6 +18,11 @@ namespace NewHorizons.Handlers
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static string GetTranslation(string text, TextType type)
|
public static string GetTranslation(string text, TextType type)
|
||||||
|
{
|
||||||
|
return GetTranslation(text, type, out var _);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetTranslation(string text, TextType type, out TextTranslation.Language translatedLanguage)
|
||||||
{
|
{
|
||||||
Dictionary<TextTranslation.Language, Dictionary<string, string>> dictionary;
|
Dictionary<TextTranslation.Language, Dictionary<string, string>> dictionary;
|
||||||
var language = TextTranslation.Get().m_language;
|
var language = TextTranslation.Get().m_language;
|
||||||
@ -34,6 +39,7 @@ namespace NewHorizons.Handlers
|
|||||||
dictionary = _uiTranslationDictionary;
|
dictionary = _uiTranslationDictionary;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
translatedLanguage = TextTranslation.Language.UNKNOWN;
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +47,7 @@ namespace NewHorizons.Handlers
|
|||||||
{
|
{
|
||||||
if (table.TryGetValue(text, out var translatedText))
|
if (table.TryGetValue(text, out var translatedText))
|
||||||
{
|
{
|
||||||
|
translatedLanguage = language;
|
||||||
return translatedText;
|
return translatedText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,11 +58,13 @@ namespace NewHorizons.Handlers
|
|||||||
|
|
||||||
if (englishTable.TryGetValue(text, out var englishText))
|
if (englishTable.TryGetValue(text, out var englishText))
|
||||||
{
|
{
|
||||||
|
translatedLanguage = TextTranslation.Language.ENGLISH;
|
||||||
return englishText;
|
return englishText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default to the key
|
// Default to the key
|
||||||
|
translatedLanguage = TextTranslation.Language.UNKNOWN;
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -81,6 +81,9 @@ namespace NewHorizons
|
|||||||
|
|
||||||
_defaultSystemOverride = config.GetSettingsValue<string>("Default System Override");
|
_defaultSystemOverride = config.GetSettingsValue<string>("Default System Override");
|
||||||
|
|
||||||
|
// Else it doesn't get set idk
|
||||||
|
if (SceneManager.GetActiveScene().name == "TitleScreen") _currentStarSystem = _defaultSystemOverride;
|
||||||
|
|
||||||
var wasUsingCustomTitleScreen = _useCustomTitleScreen;
|
var wasUsingCustomTitleScreen = _useCustomTitleScreen;
|
||||||
_useCustomTitleScreen = config.GetSettingsValue<bool>("Custom title screen");
|
_useCustomTitleScreen = config.GetSettingsValue<bool>("Custom title screen");
|
||||||
// Reload the title screen if this was updated on it
|
// Reload the title screen if this was updated on it
|
||||||
|
|||||||
14
NewHorizons/Patches/AutoSlideProjectorPatches.cs
Normal file
14
NewHorizons/Patches/AutoSlideProjectorPatches.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using HarmonyLib;
|
||||||
|
|
||||||
|
namespace NewHorizons.Patches;
|
||||||
|
|
||||||
|
[HarmonyPatch]
|
||||||
|
public class AutoSlideProjectorPatches
|
||||||
|
{
|
||||||
|
[HarmonyPostfix]
|
||||||
|
[HarmonyPatch(typeof(AutoSlideProjector), nameof(AutoSlideProjector.Play))]
|
||||||
|
public static void AutoSlideProjector_Play(ref SlideCollectionContainer ____slideCollectionItem)
|
||||||
|
{
|
||||||
|
____slideCollectionItem.enabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
35
NewHorizons/Patches/DestructionVolumePatches.cs
Normal file
35
NewHorizons/Patches/DestructionVolumePatches.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using HarmonyLib;
|
||||||
|
using NewHorizons.Components;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace NewHorizons.Patches
|
||||||
|
{
|
||||||
|
[HarmonyPatch]
|
||||||
|
public static class DestructionVolumePatches
|
||||||
|
{
|
||||||
|
[HarmonyPrefix]
|
||||||
|
[HarmonyPatch(typeof(DestructionVolume), nameof(DestructionVolume.Vanish))]
|
||||||
|
public static bool DestructionVolume_Vanish(OWRigidbody __0)
|
||||||
|
{
|
||||||
|
var quantumPlanet = __0.gameObject.GetComponent<QuantumPlanet>();
|
||||||
|
|
||||||
|
if (quantumPlanet == null) return true;
|
||||||
|
|
||||||
|
// Allow it to vanish if this is the only state
|
||||||
|
if (quantumPlanet.states.Count <= 1) return true;
|
||||||
|
|
||||||
|
// Force it to change states but if it can't, remove it
|
||||||
|
var oldIndex = quantumPlanet.CurrentIndex;
|
||||||
|
quantumPlanet.ChangeQuantumState(true);
|
||||||
|
if (quantumPlanet.CurrentIndex == oldIndex) return true;
|
||||||
|
|
||||||
|
quantumPlanet.states.RemoveAt(oldIndex);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1018,14 +1018,16 @@
|
|||||||
"Scroll",
|
"Scroll",
|
||||||
"Computer",
|
"Computer",
|
||||||
"Cairn",
|
"Cairn",
|
||||||
"Recorder"
|
"Recorder",
|
||||||
|
"PreCrashRecorder"
|
||||||
],
|
],
|
||||||
"enum": [
|
"enum": [
|
||||||
"wall",
|
"wall",
|
||||||
"scroll",
|
"scroll",
|
||||||
"computer",
|
"computer",
|
||||||
"cairn",
|
"cairn",
|
||||||
"recorder"
|
"recorder",
|
||||||
|
"preCrashRecorder"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"RaftInfo": {
|
"RaftInfo": {
|
||||||
@ -1238,10 +1240,6 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
"downwards": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "[DEPRECATED] Should this tornado shoot you down instead of up?"
|
|
||||||
},
|
|
||||||
"elevation": {
|
"elevation": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"description": "Alternative to setting the position. Will choose a random place at this elevation.",
|
"description": "Alternative to setting the position. Will choose a random place at this elevation.",
|
||||||
@ -1281,6 +1279,11 @@
|
|||||||
"type": "number",
|
"type": "number",
|
||||||
"description": "The rate at which the tornado will wander around the planet. Set to 0 for it to be stationary. Should be around\n0.1.",
|
"description": "The rate at which the tornado will wander around the planet. Set to 0 for it to be stationary. Should be around\n0.1.",
|
||||||
"format": "float"
|
"format": "float"
|
||||||
|
},
|
||||||
|
"audioDistance": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "The maximum distance at which you'll hear the sounds of the cyclone. If not set it will scale relative to the size of the cyclone.",
|
||||||
|
"format": "float"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -9,10 +9,6 @@
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "Whether this system can be warped to via the warp drive"
|
"description": "Whether this system can be warped to via the warp drive"
|
||||||
},
|
},
|
||||||
"coords": {
|
|
||||||
"description": "[DEPRECATED] Not implemented",
|
|
||||||
"$ref": "#/definitions/NomaiCoordinates"
|
|
||||||
},
|
|
||||||
"destroyStockPlanets": {
|
"destroyStockPlanets": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "Do you want a clean slate for this star system? Or will it be a modified version of the original."
|
"description": "Do you want a clean slate for this star system? Or will it be a modified version of the original."
|
||||||
@ -52,33 +48,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"definitions": {
|
"definitions": {
|
||||||
"NomaiCoordinates": {
|
|
||||||
"type": "object",
|
|
||||||
"additionalProperties": false,
|
|
||||||
"properties": {
|
|
||||||
"x": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int32"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"y": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int32"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"z": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int32"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SkyboxConfig": {
|
"SkyboxConfig": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
|
|||||||
@ -42,9 +42,24 @@ namespace NewHorizons.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DeleteTexture(IModBehaviour mod, string filename, Texture2D texture)
|
||||||
|
{
|
||||||
|
var path = mod.ModHelper.Manifest.ModFolderPath + filename;
|
||||||
|
if (_loadedTextures.ContainsKey(path))
|
||||||
|
{
|
||||||
|
if (_loadedTextures[path] == texture)
|
||||||
|
{
|
||||||
|
_loadedTextures.Remove(path);
|
||||||
|
UnityEngine.Object.Destroy(texture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UnityEngine.Object.Destroy(texture);
|
||||||
|
}
|
||||||
|
|
||||||
public static void ClearCache()
|
public static void ClearCache()
|
||||||
{
|
{
|
||||||
Logger.Log("Cleaing image cache");
|
Logger.Log("Clearing image cache");
|
||||||
|
|
||||||
foreach (var texture in _loadedTextures.Values)
|
foreach (var texture in _loadedTextures.Values)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"author": "xen, Bwc9876, & Book",
|
"author": "xen, Bwc9876, & Book",
|
||||||
"name": "New Horizons",
|
"name": "New Horizons",
|
||||||
"uniqueName": "xen.NewHorizons",
|
"uniqueName": "xen.NewHorizons",
|
||||||
"version": "1.2.4",
|
"version": "1.2.5",
|
||||||
"owmlVersion": "2.3.3",
|
"owmlVersion": "2.3.3",
|
||||||
"conflicts": [ "Raicuparta.QuantumSpaceBuddies", "Vesper.AutoResume", "PacificEngine.OW_Randomizer" ],
|
"conflicts": [ "Raicuparta.QuantumSpaceBuddies", "Vesper.AutoResume", "PacificEngine.OW_Randomizer" ],
|
||||||
"pathsToPreserve": [ "planets", "systems", "translations" ]
|
"pathsToPreserve": [ "planets", "systems", "translations" ]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user