diff options
author | Pierre Frisch | 2011-12-22 07:25:50 -0800 |
---|---|---|
committer | Valerio Virgillito | 2012-01-27 11:18:17 -0800 |
commit | b89a7ee8b956c96a1dcee995ea840feddc5d4b27 (patch) | |
tree | 0f3136ab0ecdbbbed6a83576581af0a53124d6f1 /js/tools/RotateStage3DTool.js | |
parent | 2401f05d1f4b94d45e4568b81fc73e67b969d980 (diff) | |
download | ninja-b89a7ee8b956c96a1dcee995ea840feddc5d4b27.tar.gz |
First commit of Ninja to ninja-internal
Signed-off-by: Valerio Virgillito <rmwh84@motorola.com>
Diffstat (limited to 'js/tools/RotateStage3DTool.js')
-rw-r--r-- | js/tools/RotateStage3DTool.js | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/js/tools/RotateStage3DTool.js b/js/tools/RotateStage3DTool.js new file mode 100644 index 00000000..6f07adae --- /dev/null +++ b/js/tools/RotateStage3DTool.js | |||
@@ -0,0 +1,148 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | var Montage = require("montage/core/core").Montage, | ||
8 | Rotate3DToolBase = require("js/tools/Rotate3DToolBase").Rotate3DToolBase, | ||
9 | toolHandleModule = require("js/stage/tool-handle"), | ||
10 | snapManager = require("js/helper-classes/3D/snap-manager").SnapManager, | ||
11 | viewUtils = require("js/helper-classes/3D/view-utils").ViewUtils, | ||
12 | vecUtils = require("js/helper-classes/3D/vec-utils").VecUtils, | ||
13 | drawUtils = require("js/helper-classes/3D/draw-utils").DrawUtils, | ||
14 | ElementsMediator = require("js/mediators/element-mediator").ElementMediator; | ||
15 | |||
16 | exports.RotateStage3DTool = Montage.create(Rotate3DToolBase, { | ||
17 | _toolID: { value: "rotateStage3DTool" }, | ||
18 | _imageID: { value: "rotateStage3DToolImg" }, | ||
19 | _toolImageClass: { value: "rotateStage3DToolUp" }, | ||
20 | _selectedToolImageClass: { value: "rotateStage3DToolDown" }, | ||
21 | _toolTipText : { value : "3D Rotate Stage Tool" }, | ||
22 | _canOperateOnStage:{value:false,writable:true}, | ||
23 | |||
24 | _initializeToolHandles: { | ||
25 | value: function() { | ||
26 | if(!this._handles) | ||
27 | { | ||
28 | this._handles = []; | ||
29 | |||
30 | // TODO - Using dummy cursors for now | ||
31 | |||
32 | // rotateX | ||
33 | var rX = toolHandleModule.RotateHandle.create(); | ||
34 | rX.init("url('images/cursors/Translate_X.png') 0 0, default", 'rgba(255,0,0,1)', "x"); | ||
35 | this._handles.push(rX); | ||
36 | |||
37 | // rotateY | ||
38 | var rY = toolHandleModule.RotateHandle.create(); | ||
39 | rY.init("url('images/cursors/Translate_Y.png') 0 0, default", 'rgba(0,255,0,1)', "y"); | ||
40 | this._handles.push(rY); | ||
41 | |||
42 | // rotateZ | ||
43 | var rZ = toolHandleModule.RotateHandle.create(); | ||
44 | rZ.init("url('images/cursors/Translate_Z.png') 0 0, default", 'rgba(0,0,255,1)', "z"); | ||
45 | this._handles.push(rZ); | ||
46 | } | ||
47 | |||
48 | var len = this._handles.length; | ||
49 | var i = 0, | ||
50 | toolHandle; | ||
51 | for (i=0; i<len; i++) | ||
52 | { | ||
53 | toolHandle = this._handles[i]; | ||
54 | toolHandle._lineWidth = 3; | ||
55 | toolHandle._radius = 100; | ||
56 | toolHandle._nTriangles = 60; | ||
57 | var angle = 2.0*Math.PI/Number(toolHandle._nTriangles); | ||
58 | toolHandle._rotMat = Matrix.RotationZ( angle ); | ||
59 | } | ||
60 | } | ||
61 | }, | ||
62 | |||
63 | _updateTargets: { | ||
64 | value: function(addToUndoStack) { | ||
65 | this._targets = []; | ||
66 | var elt = this._target; | ||
67 | |||
68 | var curMat = viewUtils.getMatrixFromElement(elt); | ||
69 | var curMatInv = glmat4.inverse(curMat, []); | ||
70 | |||
71 | viewUtils.pushViewportObj( elt ); | ||
72 | var eltCtr = viewUtils.getCenterOfProjection(); | ||
73 | viewUtils.popViewportObj(); | ||
74 | |||
75 | eltCtr = viewUtils.localToGlobal(eltCtr, elt); | ||
76 | |||
77 | this._targets.push({elt:elt, mat:curMat, matInv:curMatInv, ctr:eltCtr}); | ||
78 | |||
79 | viewUtils.setMatrixForElement( elt, curMat, false ); | ||
80 | } | ||
81 | }, | ||
82 | |||
83 | captureSelectionDrawn: { | ||
84 | value: function(event){ | ||
85 | this._origin = null; | ||
86 | this._targets = null; | ||
87 | this._startOriginArray = null; | ||
88 | |||
89 | var stage = this.application.ninja.currentDocument.documentRoot; | ||
90 | this.target = stage; | ||
91 | |||
92 | viewUtils.pushViewportObj( stage ); | ||
93 | var eltCtr = viewUtils.getCenterOfProjection(); | ||
94 | viewUtils.popViewportObj(); | ||
95 | |||
96 | this._targets = []; | ||
97 | |||
98 | var curMat = viewUtils.getMatrixFromElement(stage); | ||
99 | var curMatInv = glmat4.inverse(curMat, []); | ||
100 | |||
101 | this._targets.push({elt:stage, mat:curMat, matInv:curMatInv, ctr:eltCtr}); | ||
102 | |||
103 | var ctrOffset = stage.elementModel.props3D.m_transformCtr; | ||
104 | if(ctrOffset) | ||
105 | { | ||
106 | eltCtr[2] = 0; | ||
107 | eltCtr = vecUtils.vecAdd(3, eltCtr, ctrOffset); | ||
108 | } | ||
109 | |||
110 | this._origin = viewUtils.localToGlobal(eltCtr, stage); | ||
111 | |||
112 | this._setTransformOrigin(false); | ||
113 | |||
114 | this.DrawHandles(); | ||
115 | } | ||
116 | }, | ||
117 | |||
118 | captureElementChange: { | ||
119 | value: function(event) { | ||
120 | if(event._event.item === this.application.ninja.currentDocument.documentRoot) | ||
121 | { | ||
122 | this.captureSelectionDrawn(null); | ||
123 | } | ||
124 | } | ||
125 | }, | ||
126 | |||
127 | Reset : { | ||
128 | value : function() | ||
129 | { | ||
130 | // Reset stage to identity matrix | ||
131 | var iMat = Matrix.I(4); | ||
132 | |||
133 | ElementsMediator.setMatrix(this.application.ninja.currentDocument.documentRoot, iMat, false); | ||
134 | |||
135 | this.application.ninja.currentDocument.documentRoot.elementModel.props3D.m_transformCtr = null; | ||
136 | |||
137 | // TODO - Any updates to the stage should redraw stage's children. Move this to mediator? | ||
138 | this.application.ninja.stage.updatedStage = true; | ||
139 | |||
140 | this.isDrawing = false; | ||
141 | this.endDraw(event); | ||
142 | |||
143 | // this.UpdateSelection(true); | ||
144 | this.Configure(true); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | }); | ||