.. | .. |
---|
210 | 210 | oe.menuBar.add(menu = new Menu("Setting")); |
---|
211 | 211 | if (Globals.ADVANCED) |
---|
212 | 212 | { |
---|
213 | | - resetMeshItem = menu.add(new MenuItem("Reset All")); |
---|
214 | | - resetMeshItem.addActionListener(this); |
---|
215 | | - stepAllItem = menu.add(new MenuItem("Step All")); |
---|
216 | | - stepAllItem.addActionListener(this); |
---|
217 | 213 | revertMeshItem = menu.add(new MenuItem("Revert Meshes")); |
---|
218 | 214 | revertMeshItem.addActionListener(this); |
---|
219 | 215 | resetreferencesItem = menu.add(new MenuItem("Reset Mesh References")); |
---|
.. | .. |
---|
318 | 314 | resetTransformItem.addActionListener(this); |
---|
319 | 315 | resetCentroidItem = menu.add(new MenuItem("Reset Centroid")); |
---|
320 | 316 | resetCentroidItem.addActionListener(this); |
---|
321 | | - transformgeometryItem = menu.add(new MenuItem("Transform Geometry")); |
---|
322 | | - transformgeometryItem.addActionListener(this); |
---|
| 317 | + resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XY")); |
---|
| 318 | + resetCentroidXZItem.addActionListener(this); |
---|
| 319 | + transformGeometryItem = menu.add(new MenuItem("Transform Geometry")); |
---|
| 320 | + transformGeometryItem.addActionListener(this); |
---|
| 321 | + transformChildrenItem = menu.add(new MenuItem("Transform Children")); |
---|
| 322 | + transformChildrenItem.addActionListener(this); |
---|
323 | 323 | |
---|
324 | 324 | oe.menuBar.add(menu = new Menu("Geometry")); |
---|
325 | 325 | genUVItem = menu.add(new MenuItem("Generate UV")); |
---|
.. | .. |
---|
368 | 368 | oe.menuBar.add(menu = new Menu("Attributes")); |
---|
369 | 369 | clearMaterialsItem = menu.add(new MenuItem("Clear Materials")); |
---|
370 | 370 | clearMaterialsItem.addActionListener(this); |
---|
| 371 | + resetAllItem = menu.add(new MenuItem("Reset All")); |
---|
| 372 | + resetAllItem.addActionListener(this); |
---|
| 373 | + stepAllItem = menu.add(new MenuItem("Step All")); |
---|
| 374 | + stepAllItem.addActionListener(this); |
---|
371 | 375 | menu.add("-"); |
---|
372 | 376 | liveleavesItem = menu.add(new MenuItem("Live Leaves")); |
---|
373 | 377 | liveleavesItem.addActionListener(this); |
---|
.. | .. |
---|
422 | 426 | sortbysizeItem.addActionListener(this); |
---|
423 | 427 | sortbynameItem = menu.add(new MenuItem("Sort by name")); |
---|
424 | 428 | sortbynameItem.addActionListener(this); |
---|
| 429 | + menu.add("-"); |
---|
| 430 | + shareGeometriesItem = menu.add(new MenuItem("Share Geometries")); |
---|
| 431 | + shareGeometriesItem.addActionListener(this); |
---|
| 432 | + mergeGeometriesItem = menu.add(new MenuItem("Merge Geometries")); |
---|
| 433 | + mergeGeometriesItem.addActionListener(this); |
---|
425 | 434 | if (Globals.ADVANCED) |
---|
426 | 435 | { |
---|
427 | | - menu.add("-"); |
---|
| 436 | + // Pretty much the same as duplicate and clone. |
---|
428 | 437 | extractGeometriesItem = menu.add(new MenuItem("Link Geometry")); |
---|
429 | 438 | extractGeometriesItem.addActionListener(this); |
---|
430 | 439 | cloneGeometriesItem = menu.add(new MenuItem("Clone Geometry")); |
---|
431 | 440 | cloneGeometriesItem.addActionListener(this); |
---|
432 | | - shareGeometriesItem = menu.add(new MenuItem("Share Geometry")); |
---|
433 | | - shareGeometriesItem.addActionListener(this); |
---|
434 | | - mergeGeometriesItem = menu.add(new MenuItem("Merge Geometry")); |
---|
435 | | - mergeGeometriesItem.addActionListener(this); |
---|
436 | 441 | } |
---|
437 | 442 | |
---|
438 | 443 | oe.menuBar.add(menu = new Menu("Insert")); |
---|
.. | .. |
---|
488 | 493 | //this.AddOptions(oe.toolbarPanel, oe.aConstraints); |
---|
489 | 494 | |
---|
490 | 495 | oe.toolbarPanel.add(liveCB = new cCheckBox("Live", Globals.isLIVE())); //, oe.aConstraints); |
---|
491 | | - liveCB.setToolTipText("Enabled animation"); |
---|
| 496 | + liveCB.setToolTipText("Enable animation"); |
---|
492 | 497 | liveCB.addItemListener(this); |
---|
493 | 498 | |
---|
494 | 499 | oe.toolbarPanel.add(oneStepButton = new cButton("Step", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); |
---|
.. | .. |
---|
651 | 656 | zoomBoxCB.setToolTipText("Display bounding boxes when moving the wheel"); |
---|
652 | 657 | zoomBoxCB.addItemListener(this); |
---|
653 | 658 | |
---|
654 | | - if (Globals.ADVANCED) |
---|
| 659 | + if (true) // Globals.ADVANCED) |
---|
655 | 660 | { |
---|
656 | 661 | panel.add(supportCB = new cCheckBox("Support", CameraPane.SUPPORT)); //, constraints); |
---|
657 | 662 | supportCB.setToolTipText("Enable rigging"); |
---|
.. | .. |
---|
2276 | 2281 | { |
---|
2277 | 2282 | RevertMeshes(); |
---|
2278 | 2283 | } else |
---|
2279 | | - if (source == resetMeshItem) |
---|
| 2284 | + if (source == resetAllItem) |
---|
2280 | 2285 | { |
---|
2281 | 2286 | ResetAll(); |
---|
2282 | 2287 | } else |
---|
.. | .. |
---|
2614 | 2619 | { |
---|
2615 | 2620 | SmoothMesh(); |
---|
2616 | 2621 | } else |
---|
2617 | | - if (source == transformgeometryItem) |
---|
| 2622 | + if (source == transformGeometryItem) |
---|
2618 | 2623 | { |
---|
2619 | 2624 | TransformGeometry(); |
---|
| 2625 | + } else |
---|
| 2626 | + if (source == transformChildrenItem) |
---|
| 2627 | + { |
---|
| 2628 | + TransformChildren(); |
---|
2620 | 2629 | } else |
---|
2621 | 2630 | if (source == resetTransformItem) |
---|
2622 | 2631 | { |
---|
.. | .. |
---|
2624 | 2633 | } else |
---|
2625 | 2634 | if (source == resetCentroidItem) |
---|
2626 | 2635 | { |
---|
2627 | | - ResetCentroid(); |
---|
| 2636 | + ResetCentroid(true); |
---|
| 2637 | + } else |
---|
| 2638 | + if (source == resetCentroidXZItem) |
---|
| 2639 | + { |
---|
| 2640 | + ResetCentroid(false); |
---|
2628 | 2641 | } else |
---|
2629 | 2642 | if (source == resetParentItem) |
---|
2630 | 2643 | { |
---|
.. | .. |
---|
3140 | 3153 | refreshContents(); |
---|
3141 | 3154 | } |
---|
3142 | 3155 | |
---|
| 3156 | + void TransformChildren() |
---|
| 3157 | + { |
---|
| 3158 | + Object3D obj; |
---|
| 3159 | + for (Enumeration e = group.selection.elements(); e.hasMoreElements();) |
---|
| 3160 | + { |
---|
| 3161 | + obj = (Object3D)e.nextElement(); |
---|
| 3162 | + obj.KeepTextureMatrices(); |
---|
| 3163 | + obj.TransformChildren(); |
---|
| 3164 | + obj.RestoreTextureMatrices(); |
---|
| 3165 | + |
---|
| 3166 | +// if (obj.parent == null) |
---|
| 3167 | +// { |
---|
| 3168 | +// System.out.println("NULL PARENT!"); |
---|
| 3169 | +// new Exception().printStackTrace(); |
---|
| 3170 | +// } |
---|
| 3171 | +// else |
---|
| 3172 | +// TouchTransform(obj); |
---|
| 3173 | +// //obj.parent.Touch(); |
---|
| 3174 | + } |
---|
| 3175 | + |
---|
| 3176 | + refreshContents(); |
---|
| 3177 | + } |
---|
3143 | 3178 | |
---|
3144 | 3179 | void ResetTransform() |
---|
3145 | 3180 | { |
---|
.. | .. |
---|
3252 | 3287 | refreshContents(); |
---|
3253 | 3288 | } |
---|
3254 | 3289 | |
---|
3255 | | - void ResetCentroid() |
---|
| 3290 | + void ResetCentroid(boolean full) |
---|
3256 | 3291 | { |
---|
3257 | 3292 | Object3D obj; |
---|
3258 | 3293 | for (Enumeration e = group.selection.elements(); e.hasMoreElements();) |
---|
.. | .. |
---|
3267 | 3302 | LA.matIdentity(Object3D.mat); |
---|
3268 | 3303 | obj.getBounds(minima, maxima, false); |
---|
3269 | 3304 | Object3D.mat[3][0] = -(minima.x + maxima.x)/2; |
---|
3270 | | - Object3D.mat[3][1] = -(minima.y + maxima.y)/2; |
---|
| 3305 | + if (full) |
---|
| 3306 | + Object3D.mat[3][1] = -(minima.y + maxima.y)/2; |
---|
3271 | 3307 | Object3D.mat[3][2] = -(minima.z + maxima.z)/2; |
---|
3272 | 3308 | obj.TransformMesh(Object3D.mat); |
---|
| 3309 | + |
---|
3273 | 3310 | Object3D.mat[3][0] = (minima.x + maxima.x)/2; |
---|
3274 | | - Object3D.mat[3][1] = (minima.y + maxima.y)/2; |
---|
| 3311 | + if (full) |
---|
| 3312 | + Object3D.mat[3][1] = (minima.y + maxima.y)/2; |
---|
3275 | 3313 | Object3D.mat[3][2] = (minima.z + maxima.z)/2; |
---|
| 3314 | + |
---|
3276 | 3315 | LA.matConcat(Object3D.mat, obj.toParent, obj.toParent); |
---|
3277 | 3316 | //Object3D.mat[3][0] = -Object3D.mat[3][0]; |
---|
3278 | 3317 | //Object3D.mat[3][1] = -Object3D.mat[3][1]; |
---|
.. | .. |
---|
3613 | 3652 | String pigment = Object3D.GetPigment(tex); |
---|
3614 | 3653 | //String bump = Object3D.GetBump(tex); |
---|
3615 | 3654 | |
---|
3616 | | - com.sun.opengl.util.texture.TextureData texturedata = Globals.theRenderer.GetTextureData(pigment, false, node.texres); |
---|
| 3655 | + com.sun.opengl.util.texture.TextureData texturedata = null; |
---|
| 3656 | + |
---|
| 3657 | + try |
---|
| 3658 | + { |
---|
| 3659 | + texturedata = Globals.theRenderer.GetTextureData(pigment, false, node.texres); |
---|
| 3660 | + } |
---|
| 3661 | + catch (Exception e) |
---|
| 3662 | + { |
---|
| 3663 | + System.err.println("FAIL: " + node); |
---|
| 3664 | + } |
---|
3617 | 3665 | |
---|
3618 | 3666 | double s = v.s; |
---|
3619 | 3667 | |
---|
.. | .. |
---|
5092 | 5140 | private MenuItem linkverticesItem; |
---|
5093 | 5141 | private MenuItem relinkverticesItem; |
---|
5094 | 5142 | private MenuItem setMasterItem; |
---|
5095 | | - private MenuItem resetMeshItem; |
---|
| 5143 | + private MenuItem resetAllItem; |
---|
5096 | 5144 | private MenuItem stepAllItem; |
---|
5097 | 5145 | private MenuItem revertMeshItem; |
---|
5098 | 5146 | private MenuItem poseMeshItem; |
---|
.. | .. |
---|
5153 | 5201 | private MenuItem panoTexturesItem; |
---|
5154 | 5202 | |
---|
5155 | 5203 | private MenuItem resetCentroidItem; |
---|
5156 | | - private MenuItem transformgeometryItem; |
---|
| 5204 | + private MenuItem resetCentroidXZItem; |
---|
5157 | 5205 | private MenuItem resetTransformItem; |
---|
| 5206 | + private MenuItem transformGeometryItem; |
---|
| 5207 | + private MenuItem transformChildrenItem; |
---|
5158 | 5208 | private MenuItem hideItem; |
---|
5159 | 5209 | private MenuItem grabItem; |
---|
5160 | 5210 | private MenuItem backItem; |
---|