mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Fix most OWRigidobjects not following a planet when it's moved.
This commit is contained in:
parent
7681b0d2f2
commit
c02ca9da2b
@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user