public void endDrag()
 {
     if (dragMode == DragMode.none)
         return;
     dragedRigidbody = null;
     nowDrag.connectedBody = null;
     dragMode = DragMode.none;
     editableObject.draged = false;
     editableObject = null;
 }
    public void OnDragEnd()
    {
        if (enabled)
        {
            if (jointDrag.connectedBody)
            {
                jointDrag.connectedBody.detectCollisions = true;
                jointDrag.connectedBody = null;
            }
            editableObject.draged = false;
            editableObject = null;
            enabled = false;

        }
    }
    public void OnDragStart(GameObject pObject)
    {
        var lEditableObject = zzEditableObjectContainer.findRoot(pObject);
        if (!lEditableObject)
            return;
        enabled = true;

        editableObject = lEditableObject;
        lEditableObject.draged = true;
        if (freezeDragedRotation)
            lEditableObject.rigidbody.constraints = RigidbodyConstraints.FreezeRotation;

        jointDrag.transform.position = getXYWantPos();
        jointDrag.connectedBody = lEditableObject.rigidbody;
        jointDrag.connectedBody.detectCollisions = detectCollisions;
    }
    void OnDragObject(GameObject pObject,DragMode pMode)
    {
        if (dragMode != DragMode.none)
            return;

        var lNowDrag = pMode == DragMode.XY ? jointXyDrag : jointXzDrag;
        if (!lNowDrag)
            return;

        var lEditableObject = zzEditableObjectContainer.findRoot(pObject);
        if (!lEditableObject)
            return;

        editableObject = lEditableObject;
        lEditableObject.draged = true;
        dragMode = pMode;
        nowDrag = lNowDrag;
        dragedRigidbody = lEditableObject.rigidbody;
        var lDragedTransform = lEditableObject.transform;
        var lDragWorldPos =
            zzRigidbodyDrag.getZFlatCrossPoint(lDragedTransform.position,
                zzObjectPicker.getMainCameraRay());
        //getFlatCrossPoint(lDragedTransform.position, getCameraRay(), dragMode);
        originalPosition = lDragWorldPos;
        nowDrag.transform.position = lDragWorldPos;
        nowDrag.connectedBody = dragedRigidbody;
    }
 void OnDragObject(GameObject pObject, ScaleMode pMode)
 {
     if (scaleMode != ScaleMode.none)
         return;
     var lEditableObject = zzEditableObjectContainer.findRoot(pObject);
     if (!lEditableObject)
         return;
     zzUndo.registerUndo(lEditableObject.transform);
     editableObject = lEditableObject;
     lEditableObject.draged = true;
     scaleMode = pMode;
     //放缩的尺寸基于原始的放缩值
     var lObjectScale = lEditableObject.transform.localScale;
     scaleValue = Mathf.Sqrt(lObjectScale.x * lObjectScale.x + lObjectScale.y * lObjectScale.y) * 0.01f;
     lastMousePosition = getMousePosition();
     this.enabled = true;
     if (editableObject.rigidbody)
         editableObject.rigidbody.detectCollisions = false;
 }
 void OnDragObject(GameObject pObject, DragMode pMode)
 {
     if (dragMode != DragMode.none)
         return;
     var lEditableObject = zzEditableObjectContainer.findRoot(pObject);
     if (!lEditableObject)
         return;
     editableObject = lEditableObject;
     lEditableObject.draged = true;
     dragMode = pMode;
     //放缩的尺寸基于原始的放缩值
     var lObjectScale = lEditableObject.transform.localScale;
     switch (dragMode)
     {
         case DragMode.XY:
             scaleValue = Mathf.Sqrt(lObjectScale.x * lObjectScale.x + lObjectScale.y * lObjectScale.y) * 0.01f;
             break;
         case DragMode.XZ:
             scaleValue = Mathf.Sqrt(lObjectScale.x * lObjectScale.x + lObjectScale.z * lObjectScale.z) * 0.01f;
             break;
     }
     lastMousePosition = getMousePosition();
 }