void WeldPiece(PieceScript floater) { if ((m_SelectMount == null) || (m_NearestMount == null)) { return; } print("Weld Piece " + m_SelectMount.Owner.name + " to " + m_NearestMount.Owner.name); // Ensure Rotation & Position floater.transform.rotation = Quaternion.FromToRotation( m_SelectMount.Mount.localRotation * Vector3.down, m_NearestMount.Mount.up); floater.transform.position = m_NearestMount.Mount.position - (m_SelectMount.Mount.position - floater.transform.position); // Check if its a valid piece if (m_SelectMount.Solution == m_NearestMount) { // Connect m_SelectMount.connectMount(m_NearestMount); } else { // Bounce Away floater.rigidbody.AddForce(m_NearestMount.Mount.up * 1000.0f); floater.rigidbody.AddForceAtPosition(m_SelectMount.Mount.right * 50.0f, m_SelectMount.Mount.position); } }