private string SetPosition(int vectorIndex, string value) { Vector3 newPosition = GetWorldPositionToBeSet(vectorIndex, value); Vector3 oldPosition = PartUtil.GetPosition(part, Space.World, compoundTargetSelected); Bounds partBounds; if (PartUtil.IsTargetActive(part, compoundTargetSelected)) { partBounds = FindChildGameObjectByName(part.gameObject, "obj_targetCollider").GetComponent <Collider>().bounds; } else { partBounds = part.collider.bounds; } if (!AreBoundsOutOfHangarBounds(partBounds)) { Vector3 boundsOffset = partBounds.center - oldPosition; partBounds.center = newPosition + boundsOffset; if (AreBoundsOutOfHangarBounds(partBounds)) { return(value); } } if (newPosition == oldPosition) { return(value); } if (part.isCompund) { CompoundPartTransform.SetWorldPosition((CompoundPart)part, newPosition, compoundTargetSelected); } else { PartTransform.SetWorldPosition(part, newPosition); } return(value); }