/// <summary>
        ///
        /// </summary>
        /// <param name="up">this module is on top of caller</param>
        /// <param name="comb"></param>
        public void Combined(bool up, CombineAction comb)
        {
            if (up)
            {
                Lower = comb;
                LowerJoint.enabled       = true;
                LowerJoint.connectedBody = comb.GetComponent <Rigidbody2D>();
            }
            else
            {
                Upper = comb;
                UpperJoint.enabled       = true;
                UpperJoint.connectedBody = comb.GetComponent <Rigidbody2D>();
                if (comb.GetMass() > SupportableMass)
                {
                    Break();
                }
            }

            if (Selecting)
            {
                if (part == Part.Upper)
                {
                    //if(Upper!=null && Lower&&null)
                }
            }
            UpdateMovement();
        }
 private void Update()
 {
     if (GameInput.GetKeyDown(player, ActionKey))
     {
         MovementAction movement = GetComponent <MovementAction>();
         Selecting = true;
         if (movement != null)
         {
             movement.enabled = false;
         }
         ((CombineSelection)selection).StartSelecting(this, player, "Combinable", Range);
     }
     if (GameInput.GetKeyUp(player, ActionKey))
     {
         Selecting = false;
         GameObject g = selection.StopSelecting();
         if (g != null)
         {
             if (Upper != null && g == Upper.gameObject)
             {
                 UpperJoint.connectedBody = null;
                 UpperJoint.enabled       = false;
                 Upper.Separated(true);
                 Upper = null;
             }
             else if (Lower != null && g == Lower.gameObject)
             {
                 LowerJoint.connectedBody = null;
                 LowerJoint.enabled       = false;
                 Lower.Separated(false);
                 Lower = null;
             }
             else
             {
                 CombineAction comb = g.GetComponent <CombineAction>();
                 if (comb.part > part)
                 {
                     comb.transform.position  = comb.transform.position + (UpperAttachPoint.position - comb.LowerAttachPoint.position);
                     UpperJoint.enabled       = true;
                     UpperJoint.connectedBody = comb.GetComponent <Rigidbody2D>();
                     Upper = comb;
                     comb.Combined(true, this);
                     if (comb.GetMass() > SupportableMass)
                     {
                         Break();
                     }
                 }
                 else
                 {
                     transform.position       = transform.position + (comb.UpperAttachPoint.position - LowerAttachPoint.position);
                     LowerJoint.enabled       = true;
                     LowerJoint.connectedBody = comb.GetComponent <Rigidbody2D>();
                     Lower = comb;
                     comb.Combined(false, this);
                 }
             }
             UpdateMovement();
         }
         if (Movement)
         {
             MovementAction movement = GetComponent <MovementAction>();
             if (movement != null)
             {
                 movement.enabled = true;
             }
         }
     }
 }