Fix most OWRigidobjects not following a planet when it's moved.

This commit is contained in:
Mister_Nebula 2022-12-31 21:42:46 +00:00
parent 7681b0d2f2
commit c02ca9da2b

View File

@ -793,8 +793,34 @@ namespace NewHorizons.Handlers
public static void SetPositionFromVector(GameObject go, Vector3 position) public static void SetPositionFromVector(GameObject go, Vector3 position)
{ {
go.transform.parent = Locator.GetRootTransform(); if (go.GetAttachedOWRigidbody() != null)
go.transform.position = position; {
var rb = go.GetAttachedOWRigidbody();
var allChildren = CenterOfTheUniverse.s_rigidbodies.Where(x => x.GetOrigParentBody() == rb).ToArray();
var localPositions = allChildren.Select(x => rb.transform.InverseTransformPoint(x.transform.position)).ToArray();
go.transform.parent = Locator.GetRootTransform();
go.transform.position = position;
for (var i = 0; i < allChildren.Count(); i++)
{
if (allChildren[i].GetComponent<NomaiInterfaceOrb>() != null)
{
var orb = allChildren[i].GetComponent<NomaiInterfaceOrb>();
orb.SetOrbPosition(go.transform.TransformPoint(localPositions[i]));
}
else
{
allChildren[i].transform.position = go.transform.TransformPoint(localPositions[i]);
}
}
}
else
{
go.transform.parent = Locator.GetRootTransform();
go.transform.position = position;
}
if (go.transform.position.magnitude > Main.FurthestOrbit) if (go.transform.position.magnitude > Main.FurthestOrbit)
{ {