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)
|
||||
{
|
||||
go.transform.parent = Locator.GetRootTransform();
|
||||
go.transform.position = position;
|
||||
if (go.GetAttachedOWRigidbody() != null)
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user