Reverse Rotation on mesh collision

I have a set of scripts that control a few elements of gameplay: One that sends a ray, and detects if it hit a 'node'. another that handles the rotations that gets called by the first

The first script:

//Get the RotationHandler Script and call function to execute on ray trigger
var hit : RaycastHit;

function Update () {    
var ray : Ray = Camera.main.ScreenPointToRay(Vector3((Screen.width / 2),(Screen.height / 2)));

    if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) {
        if (Physics.Raycast (ray, hit, 10)) {
            Debug.DrawLine (ray.origin, hit.point);
            print("ray sent");
            var otherObj : GameObject = hit.collider.gameObject;   

/////////////////FIST NODE SET BLOCK/////////////////////////////////////////////////////////////////////////
            //This look at the object with the miniNode Tag and then does shit to it.
            if (otherObj.tag == "miniNode") {
                print("ray hit the miniONENode Tag");

                //Find the EXTERNAL mini and main node object and assign them to local variables
                        var miniNode = GameObject.FindWithTag("miniNode");
                        var mainNode = GameObject.FindWithTag("mainNode");

                //Generate Glow

                //appy the LEFT rotation to miniNode & mainNode rotationHandler when left click is pressed
                if (Input.GetMouseButtonDown(0)){

                    miniNode.GetComponent(theRotator).RotateObject(miniNode.transform, Vector3.up*-90, .5);
                    mainNode.GetComponent(theRotator).RotateObject(mainNode.transform, Vector3.up*-90, .5);

                }

                //appy the RIGHT rotation to miniNode & mainNode rotationHandler when RIGHT click is pressed
                if (Input.GetMouseButtonDown(1)){

                    miniNode.GetComponent(theRotator).RotateObject(miniNode.transform, Vector3.up*90, .5);
                    mainNode.GetComponent(theRotator).RotateObject(mainNode.transform, Vector3.up*90, .5);

                }

            }
                } //End of the Ray if statement
    }//End of the Mouse down (0,1) statement

}//End of the Update Function

Rotation Script:

private var rotating = false;

function RotateObject (thisTransform : Transform, degrees : Vector3, seconds : float) {
    if (rotating) return;
    rotating = true;

    rotateSound();

    var startRotation = thisTransform.rotation;
    var endRotation = thisTransform.rotation * Quaternion.Euler(degrees);
    var t = 0.0;
    var rate = 1.0/seconds;

    while (t < 1.0) {
        t += Time.deltaTime * rate;
        thisTransform.rotation = Quaternion.Slerp(startRotation, endRotation, Mathf.SmoothStep(0.0, 1.0, t));
        yield;
    }

    rotating = false;
}

Im really confused on how to implement a bumper script so that when a node's mesh hits another it will simply reverse the rotation and not allow for an overlap of the meshes.

Images of setup and overlap:

http://img406.imageshack.us/img406/4430/screenshot20100415at110.png

http://img686.imageshack.us/img686/8551/screenshot20100415at110u.png

http://img406.imageshack.us/img406/4430/screenshot20100415at110.png http://img686.imageshack.us/img686/8551/screenshot20100415at110u.png

You could use trigger colliders around your nodes and if a rotating node hits a trigger rotate it back to its original rotation.