diff --git a/src/alternativa/engine3d/core/View.as b/src/alternativa/engine3d/core/View.as index 96748ad..bf35f39 100644 --- a/src/alternativa/engine3d/core/View.as +++ b/src/alternativa/engine3d/core/View.as @@ -295,6 +295,10 @@ package alternativa.engine3d.core { // Listeners addEventListener(MouseEvent.MOUSE_DOWN, onMouse); addEventListener(MouseEvent.CLICK, onMouse); + addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onMouse); + addEventListener(MouseEvent.RIGHT_CLICK, onMouse); + addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, onMouse); + addEventListener(MouseEvent.MIDDLE_CLICK, onMouse); addEventListener(MouseEvent.DOUBLE_CLICK, onMouse); addEventListener(MouseEvent.MOUSE_MOVE, onMouse); addEventListener(MouseEvent.MOUSE_OVER, onMouse); @@ -595,6 +599,42 @@ package alternativa.engine3d.core { } pressedTarget = null; break; + case "middleMouseDown": + defineTarget(index); + if (target != null) { + propagateEvent(MouseEvent3D.MIDDLE_MOUSE_DOWN, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + } + pressedTarget = target; + break; + case "middleClick": + defineTarget(index); + if (target != null) { + propagateEvent(MouseEvent3D.MIDDLE_MOUSE_UP, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + if (pressedTarget == target) { + clickedTarget = target; + propagateEvent(MouseEvent3D.MIDDLE_CLICK, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + } + } + pressedTarget = null; + break; + case "rightMouseDown": + defineTarget(index); + if (target != null) { + propagateEvent(MouseEvent3D.RIGHT_MOUSE_DOWN, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + } + pressedTarget = target; + break; + case "rightClick": + defineTarget(index); + if (target != null) { + propagateEvent(MouseEvent3D.RIGHT_MOUSE_UP, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + if (pressedTarget == target) { + clickedTarget = target; + propagateEvent(MouseEvent3D.RIGHT_CLICK, mouseEvent, camera, target, targetSurface, branchToVector(target, branch)); + } + } + pressedTarget = null; + break; case "doubleClick": defineTarget(index); if (target != null) {