From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- js/tools/TranslateObject3DTool.js | 132 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 js/tools/TranslateObject3DTool.js (limited to 'js/tools/TranslateObject3DTool.js') diff --git a/js/tools/TranslateObject3DTool.js b/js/tools/TranslateObject3DTool.js new file mode 100644 index 00000000..bbbbc871 --- /dev/null +++ b/js/tools/TranslateObject3DTool.js @@ -0,0 +1,132 @@ +/* +This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. +
*/ + +var Translate3DToolBase = require("js/tools/Translate3DToolBase").Translate3DToolBase, + drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils, + viewUtils = require("js/helper-classes/3D/view-utils").ViewUtils, + snapManager = require("js/helper-classes/3D/snap-manager").SnapManager; + +exports.TranslateObject3DTool = Object.create(Translate3DToolBase, { + _toolID: { value: "translateObject3DTool" }, + _canOperateOnStage: { value: true }, + + initializeSnapping : { + value : function(event) + { + this._mouseDownHitRec = null; + this._mouseUpHitRec = null; + + snapManager.clearAvoidList(); + snapManager.clearDragPlane(); + + // the translate tool does snap align to the bounds of the object only. + // turn off snap align to the cursor. This needs to be re-enabled in the mouse up method + snapManager.enableSnapAlign( false ); + + // snap to element and snap to grid are conditionally enabled based + // on the snap results of the mouse down. enable everything for the first snap + this._snapToElements = snapManager.elementSnapEnabledAppLevel(); + this._snapToGrid = snapManager.gridSnapEnabledAppLevel(); + + this._dragPlane = null; + var do3DSnap = true; + + if(this._handleMode === null) + { +// this.doSelection(event); + + snapManager.enableElementSnap ( true ); + snapManager.enableGridSnap ( true ); + } + else + { + this._delta = 0; + // special case for z-translation + if( this._handleMode && (this._handleMode === 2) ) + { + this._dragPlane = viewUtils.getNormalToUnprojectedElementPlane(this._target); + snapManager.setupDragPlaneFromPlane(this._dragPlane); + do3DSnap = false; + + snapManager.enableElementSnap ( false ); + snapManager.enableGridSnap ( false ); + } + } + + if(this._targets) + { + var point = webkitConvertPointFromPageToNode(this.application.ninja.stage.canvas, + new WebKitPoint(event.pageX, event.pageY)); + + // do the snap before setting up the avoid list to allow + // a snap on the mouse down + var hitRec = snapManager.snap(point.x, point.y, do3DSnap); + + // we don't want to snap to selected objects during the drag + var len = this._targets.length; + for(var i=0; i