Example #1
0
    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);
        }
    }