ThreeJs_Drag.js 3.3 KB
Newer Older
X
xiao149 已提交
1 2 3 4 5 6 7 8 9 10
/*
 * @author xiening
 * Running this will allow you to drag three.js objects around the screen.
 */
/*
  * 需要在jsp中导入的包
  <script src="./ThreeJs/DragControls.js"></script>
  <script src="./ThreeJs/TransformControls.js"></script>
  */

X
xiao149 已提交
11
THREE.ThreeJs_Drag = function ( _camera, _domElement, _scene, _controls, _isPaused) {
X
xiao149 已提交
12 13 14 15 16 17 18 19 20 21 22 23
        // 过滤不是 Mesh 的物体,例如辅助网格
        var objects = [];
        for (var i = 0; i < _scene.children.length; i++) {
            var Msg =  _scene.children[i].name.split("$");
            if (_scene.children[i].isMesh && Msg[0] == "货物") {
                objects.push(_scene.children[i]);
            }
        }

        var dragControls = new THREE.DragControls( objects, _camera, _domElement );
				dragControls.addEventListener( 'dragstart', function ( event ) {
            _controls.enabled = false;
X
xiao149 已提交
24
            _isPaused = true;
X
xiao149 已提交
25 26 27
				} );
				dragControls.addEventListener( 'dragend', function ( event ) {
            _controls.enabled = true;
X
xiao149 已提交
28
            _isPaused = false;
X
xiao149 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
				} );
    // // 添加平移控件
    // var transformControls = new THREE.TransformControls(_camera, _domElement);
    // transformControls.addEventListener( 'change', function () {
    //     cancelHideTransform();
    // } );
    // transformControls.addEventListener( 'mouseDown', function () {
    //     cancelHideTransform();
    // } );
    // transformControls.addEventListener( 'mouseUp', function () {
    //     delayHideTransform();
    // } );
    // _scene.add(transformControls);
    //
    // // 过滤不是 Mesh 的物体,例如辅助网格
    // var objects = [];
    // for (var i = 0; i < _scene.children.length; i++) {
    //     var Msg =  _scene.children[i].name.split("$");
    //     if (_scene.children[i].isMesh && Msg[0] == "货物") {
    //         objects.push(_scene.children[i]);
    //     }
    // }
    //
    // // 初始化拖拽控件
    // var dragControls = new THREE.DragControls(objects, _camera, _domElement);
    //
    // // 鼠标划入过事件
    // dragControls.addEventListener('hoveron', function (event) {
    //     // 让变换控件对象和选中的对象绑定
    //     transformControls.attach(event.object);
    //     cancelHideTransform();
    // });
    //
    // // 鼠标划出事件
    // dragControls.addEventListener('hoveroff', function (event) {
    //     delayHideTransform();
    // });
    //
    // // 开始拖拽
    // dragControls.addEventListener('dragstart', function (event) {
    //     controls.enabled = false;
    // });
    //
    // // 拖拽结束
    // dragControls.addEventListener('dragend', function (event) {
    //     controls.enabled = true;
    // });
    //
    // controls.addEventListener( 'start', function () {
    //     cancelHideTransform();
    // } );
    //
    // controls.addEventListener( 'end', function () {
    //     delayHideTransform();
    // } );
    //
    // var hiding;
    // function delayHideTransform() {
    //     cancelHideTransform();
    //     hideTransform();
    // }
    //
    // function hideTransform() {
    //     hiding = setTimeout( function () {
    //         transformControls.detach( transformControls.object );
    //     }, 1000 );
    // }
    //
    // function cancelHideTransform() {
    //     if ( hiding ) clearTimeout( hiding );
    // }
    //
    // return transformControls;
}