From c5b599b48b333b34e554b464aefbca0b9bc66275 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 09 Jun 2019 02:04:44 -0400
Subject: [PATCH] Menu cleanup + transform feedback.
---
ObjEditor.java | 260 ++++++++++++++--------------
CameraPane.java | 17 +
GroupEditor.java | 200 +++++++++++----------
Object3D.java | 59 +++--
4 files changed, 289 insertions(+), 247 deletions(-)
diff --git a/CameraPane.java b/CameraPane.java
index 0d3d46b..9794f67 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -14374,6 +14374,7 @@
public void mouseReleased(MouseEvent e)
{
movingcamera = false;
+ X = Y = 0;
//System.out.println("mouseReleased: " + e);
clickEnd(e.getX(), e.getY(), e.getModifiersEx());
}
@@ -15382,7 +15383,9 @@
info.bounds.setBounds(0, 0, (int) (width * zoom), (int) (height * zoom));
//Image img = CreateImage(width, height);
//System.out.println("width = " + width + "; height = " + height + "\n");
+
Graphics gr = g; // img.getGraphics();
+
if (!hasMarquee)
{
if (Xmin < Xmax) // !locked)
@@ -15480,14 +15483,28 @@
if (!isRenderer)
{
object.drawEditHandles(info, 0);
+
+ if (drag && (X != 0 || Y != 0) && object.selection.Size() > 0)
+ {
+ switch (object.selection.get(0).hitSomething)
+ {
+ case Object3D.hitCenter: gr.setColor(Color.pink); break;
+ case Object3D.hitRotate: gr.setColor(Color.green); break;
+ case Object3D.hitScale: gr.setColor(Color.cyan); break;
+ }
+
+ gr.drawLine(X, Y, info.bounds.width/2, info.bounds.height/2);
+ }
}
}
+
if (isRenderer)
{
//gr.setColor(Color.black);
//gr.drawRect(info.bounds.x - 1, info.bounds.y - 1, info.bounds.width + 1, info.bounds.height + 1);
//gr.drawRect(info.bounds.x - 2, info.bounds.y - 2, info.bounds.width + 3, info.bounds.height + 3);
}
+
if (hasMarquee)
{
gr.setXORMode(Color.white);
diff --git a/GroupEditor.java b/GroupEditor.java
index 7f0fb6a..acdf1fc 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -74,7 +74,7 @@
this.copy = this.group = copy;
//selectees = this.group.selectees;
- SetupMenu2(objEditor);
+ SetupMenu2(this); //objEditor);
SetupUI2(objEditor);
objEditor.SetupUI(true);
SetupViews(objEditor);
@@ -148,23 +148,8 @@
//JTextField nameField;
- void SetupMenu2(ObjEditor oe)
+ void SetupMenu2(GroupEditor oe)
{
- if (Globals.ADVANCED)
- {
- oe.cameraMenu.add(lookAtItem = new MenuItem("Set Interest"));
- //cameraMenu.add(lookFromItem = new MenuItem("Look From Selection"));
- //cameraMenu.add(switchItem = new MenuItem("Reverse View"));
- editLeafItem = oe.cameraMenu.add(new MenuItem("Edit Leaf"));
- oe.cameraMenu.add("-");
- openWindowItem = oe.cameraMenu.add(new MenuItem("Edit copy..."));
- openWindowItem.addActionListener(this);
- editLeafItem.addActionListener(this);
- lookAtItem.addActionListener(this);
- //lookFromItem.addActinoListener(this);
- //switchItem.addActionListener(this);
- }
-
Menu menu;
oe.menuBar.add(menu = new Menu("Edit"));
//editItem = menu.add(new MenuItem("Edit"));
@@ -206,7 +191,94 @@
clearAllItem = menu.add(new MenuItem("Clear All"));
clearAllItem.addActionListener(this);
}
+
+ menuBar.add(cameraMenu = new Menu("View"));
+ //cameraMenu.add(zBufferItem = new CheckboxMenuItem("Z Buffer"));
+ //zBufferItem.addActionListener(this);
+ //cameraMenu.add(normalLensItem = new MenuItem("Normal Lens"));
+ //normalLensItem.addActionListener(this);
+ cameraMenu.add(revertCameraItem = new MenuItem("Revert Camera"));
+ revertCameraItem.addActionListener(this);
+
+ cameraMenu.add(toggleFullScreenItem = new CheckboxMenuItem("Full Screen"));
+ toggleFullScreenItem.addItemListener(this);
+ toggleFullScreenItem.setState(CameraPane.FULLSCREEN);
+ cameraMenu.add("-");
+
+ cameraMenu.add(toggleTextureItem = new CheckboxMenuItem("Texture"));
+ toggleTextureItem.addItemListener(this);
+ toggleTextureItem.setState(CameraPane.textureon);
+
+ cameraMenu.add(toggleSwitchItem = new CheckboxMenuItem("Switch"));
+ toggleSwitchItem.addItemListener(this);
+ toggleSwitchItem.setState(CameraPane.SWITCH);
+
+ cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Handles"));
+ toggleHandleItem.addItemListener(this);
+ toggleHandleItem.setState(CameraPane.HANDLES);
+
+ cameraMenu.add(togglePaintItem = new CheckboxMenuItem("Paint mode"));
+ togglePaintItem.addItemListener(this);
+ togglePaintItem.setState(CameraPane.PAINTMODE);
+
+ if (Globals.ADVANCED)
+ {
+ cameraMenu.add("-");
+ cameraMenu.add(toggleLiveItem = new CheckboxMenuItem("Live"));
+ toggleLiveItem.addItemListener(this);
+ toggleLiveItem.setState(Globals.isLIVE());
+ cameraMenu.add(stepItem = new MenuItem("Step"));
+ stepItem.addActionListener(this);
+ // cameraMenu.add(toggleDLItem = new CheckboxMenuItem("Display List"));
+ // toggleDLItem.addItemListener(this);
+ // toggleDLItem.setState(false);
+
+ cameraMenu.add(toggleRenderItem = new CheckboxMenuItem("Render"));
+ toggleRenderItem.addItemListener(this);
+ toggleRenderItem.setState(!CameraPane.frozen);
+
+ cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug"));
+ toggleDebugItem.addItemListener(this);
+ toggleDebugItem.setState(CameraPane.DEBUG);
+
+ cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum"));
+ toggleFrustumItem.addItemListener(this);
+ toggleFrustumItem.setState(CameraPane.FRUSTUM);
+
+ cameraMenu.add(toggleFootContactItem = new CheckboxMenuItem("Foot contact"));
+ toggleFootContactItem.addItemListener(this);
+ toggleFootContactItem.setState(CameraPane.FOOTCONTACT);
+
+ cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline"));
+ toggleTimelineItem.addItemListener(this);
+ }
+
+// cameraMenu.add(toggleRootItem = new CheckboxMenuItem("Alternate Root"));
+// toggleRootItem.addItemListener(this);
+// toggleRootItem.setState(false);
+// cameraMenu.add(animationItem = new CheckboxMenuItem("Animation"));
+// animationItem.addItemListener(this);
+// animationItem.setState(CameraPane.ANIMATION);
+ cameraMenu.add("-");
+ cameraMenu.add(editCameraItem = new MenuItem("Freeze Camera"));
+ editCameraItem.addActionListener(this);
+
+ if (Globals.ADVANCED)
+ {
+ oe.cameraMenu.add(lookAtItem = new MenuItem("Set Interest"));
+ //cameraMenu.add(lookFromItem = new MenuItem("Look From Selection"));
+ //cameraMenu.add(switchItem = new MenuItem("Reverse View"));
+ editLeafItem = oe.cameraMenu.add(new MenuItem("Edit Leaf"));
+ oe.cameraMenu.add("-");
+ openWindowItem = oe.cameraMenu.add(new MenuItem("Edit copy..."));
+ openWindowItem.addActionListener(this);
+ editLeafItem.addActionListener(this);
+ lookAtItem.addActionListener(this);
+ //lookFromItem.addActinoListener(this);
+ //switchItem.addActionListener(this);
+ }
+
oe.menuBar.add(menu = new Menu("Setting"));
if (Globals.ADVANCED)
{
@@ -443,19 +515,6 @@
oe.menuBar.add(menu = new Menu("Insert"));
buildCreateMenu(menu);
- oe.menuBar.add(menu = new Menu("Include"));
- importOBJItem = menu.add(new MenuItem("OBJ file..."));
- importOBJItem.addActionListener(this);
- menu.add("-");
- import3DSItem = menu.add(new MenuItem("3DS file..."));
- import3DSItem.addActionListener(this);
- menu.add("-");
- importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file..."));
- importVRMLX3DItem.addActionListener(this);
- menu.add("-");
- importGFDItem = menu.add(new MenuItem("GrafreeD file..."));
- importGFDItem.addActionListener(this);
-
oe.menuBar.add(menu = new Menu("Tools"));
buildToolsMenu(menu);
}
@@ -1855,31 +1914,6 @@
csg.addChild(child);
child.addChild(csg);
} else
-
- if (source == importGFDItem)
- {
- ImportGFD();
- } else
- if (source == importVRMLX3DItem)
- {
- ImportVRMLX3D();
- } else
- if (source == import3DSItem)
- {
- objEditor.ImportJME(new com.jmex.model.converters.MaxToJme(), "3ds", "Import 3DS");
- } else
- if (source == importOBJItem)
- {
- //objEditor.ImportJME(new com.jmex.model.converters.ObjToJme(), "obj", "Import OBJ");
- FileDialog browser = new FileDialog(frame, "Import OBJ", FileDialog.LOAD);
- browser.setVisible(true);
- String filename = browser.getFile();
- if (filename != null && filename.length() > 0)
- {
- String fullname = browser.getDirectory() + filename;
- makeSomething(ReadOBJ(fullname), true);
- }
- } else
if (source == computeAOItem)
{
Globals.drawMode = CameraPane.OCCLUSION;
@@ -3095,7 +3129,20 @@
//group.attributes = -1;
ResetModel();
refreshContents(true);
- }
+ } else if (event.getSource() == editCameraItem)
+ {
+ cameraView.ProtectCamera();
+ cameraView.repaint();
+ return;
+ } else if (event.getSource() == revertCameraItem)
+ {
+ cameraView.RevertCamera();
+ cameraView.repaint();
+ return;
+ // } else if (event.getSource() == textureButton)
+ // {
+ // return; // true;
+ }
else
{
//return super.action(event, arg);
@@ -4973,21 +5020,6 @@
}
*/
- void ImportGFD()
- {
- FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD);
- browser.show();
- String filename = browser.getFile();
- if (filename != null && filename.length() > 0)
- {
- String fullname = browser.getDirectory() + filename;
-
- //Object3D readobj =
- objEditor.ReadGFD(fullname, objEditor);
- //makeSomething(readobj);
- }
- }
-
/*
public void Callback(Object obj)
{
@@ -5011,23 +5043,6 @@
}
*/
- void ImportVRMLX3D()
- {
- if (Grafreed.standAlone)
- {
- /**/
- FileDialog browser = new FileDialog(objEditor.frame, "Import VRML/X3D", FileDialog.LOAD);
- browser.show();
- String filename = browser.getFile();
- if (filename != null && filename.length() > 0)
- {
- String fullname = browser.getDirectory() + filename;
- LoadVRMLX3D(fullname);
- }
- /**/
- }
- }
-
String GetFile(String dialogName)
{
if (Grafreed.standAlone)
@@ -5276,11 +5291,6 @@
private MenuItem doubleItem;
private MenuItem tripleItem;
- private MenuItem importGFDItem;
- private MenuItem importVRMLX3DItem;
- private MenuItem import3DSItem;
- private MenuItem importOBJItem;
-
private MenuItem computeAOItem;
private MenuItem recompileItem;
private MenuItem editScriptItem;
@@ -5290,4 +5300,8 @@
private MenuItem analyzeItem;
private MenuItem dumpItem;
//boolean freezemodel = false;
+
+ Menu cameraMenu;
+ MenuItem editCameraItem;
+ MenuItem revertCameraItem;
}
diff --git a/ObjEditor.java b/ObjEditor.java
index 00cc42b..1edfe37 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -276,24 +276,40 @@
void SetupMenu()
{
frame.setMenuBar(menuBar = new MenuBar());
- menuBar.add(windowMenu = new Menu("File"));
- windowMenu.add(loadItem = new MenuItem("Load..."));
- windowMenu.add("-");
- windowMenu.add(saveItem = new MenuItem("Save"));
- windowMenu.add(saveAsItem = new MenuItem("Save As..."));
+ menuBar.add(fileMenu = new Menu("File"));
+ fileMenu.add(newItem = new MenuItem("New"));
+ fileMenu.add(loadItem = new MenuItem("Load..."));
+
+ //oe.menuBar.add(menu = new Menu("Include"));
+ Menu menu = new Menu("Import");
+ importOBJItem = menu.add(new MenuItem("OBJ file..."));
+ importOBJItem.addActionListener(this);
+ import3DSItem = menu.add(new MenuItem("3DS file..."));
+ import3DSItem.addActionListener(this);
+ importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file..."));
+ importVRMLX3DItem.addActionListener(this);
+ menu.add("-");
+ importGFDItem = menu.add(new MenuItem("Grafreed file..."));
+ importGFDItem.addActionListener(this);
+ fileMenu.add(menu);
+ fileMenu.add("-");
+
+ fileMenu.add(saveItem = new MenuItem("Save"));
+ fileMenu.add(saveAsItem = new MenuItem("Save As..."));
//windowMenu.add(povItem = new MenuItem("Emit POV-Ray..."));
- windowMenu.add("-");
- windowMenu.add(exportAsItem = new MenuItem("Export Selection..."));
- windowMenu.add(reexportItem = new MenuItem("Re-export"));
- windowMenu.add("-");
+ fileMenu.add("-");
+ fileMenu.add(exportAsItem = new MenuItem("Export Selection..."));
+ fileMenu.add(reexportItem = new MenuItem("Re-export"));
+ fileMenu.add("-");
if (client.parent != null)
{
- windowMenu.add(closeItem = new MenuItem("Close"));
+ fileMenu.add(closeItem = new MenuItem("Close"));
} else
{
- windowMenu.add(closeItem = new MenuItem("Exit"));
+ fileMenu.add(closeItem = new MenuItem("Exit"));
}
+ newItem.addActionListener(this);
loadItem.addActionListener(this);
saveItem.addActionListener(this);
saveAsItem.addActionListener(this);
@@ -301,78 +317,6 @@
reexportItem.addActionListener(this);
//povItem.addActionListener(this);
closeItem.addActionListener(this);
-
- menuBar.add(cameraMenu = new Menu("View"));
- //cameraMenu.add(zBufferItem = new CheckboxMenuItem("Z Buffer"));
- //zBufferItem.addActionListener(this);
- //cameraMenu.add(normalLensItem = new MenuItem("Normal Lens"));
- //normalLensItem.addActionListener(this);
- cameraMenu.add(revertCameraItem = new MenuItem("Revert Camera"));
- revertCameraItem.addActionListener(this);
-
- cameraMenu.add(toggleFullScreenItem = new CheckboxMenuItem("Full Screen"));
- toggleFullScreenItem.addItemListener(this);
- toggleFullScreenItem.setState(CameraPane.FULLSCREEN);
- cameraMenu.add("-");
-
- cameraMenu.add(toggleTextureItem = new CheckboxMenuItem("Texture"));
- toggleTextureItem.addItemListener(this);
- toggleTextureItem.setState(CameraPane.textureon);
-
- cameraMenu.add(toggleSwitchItem = new CheckboxMenuItem("Switch"));
- toggleSwitchItem.addItemListener(this);
- toggleSwitchItem.setState(CameraPane.SWITCH);
-
- cameraMenu.add(toggleHandleItem = new CheckboxMenuItem("Handles"));
- toggleHandleItem.addItemListener(this);
- toggleHandleItem.setState(CameraPane.HANDLES);
-
- cameraMenu.add(togglePaintItem = new CheckboxMenuItem("Paint mode"));
- togglePaintItem.addItemListener(this);
- togglePaintItem.setState(CameraPane.PAINTMODE);
-
- if (Globals.ADVANCED)
- {
- cameraMenu.add("-");
- cameraMenu.add(toggleLiveItem = new CheckboxMenuItem("Live"));
- toggleLiveItem.addItemListener(this);
- toggleLiveItem.setState(Globals.isLIVE());
-
- cameraMenu.add(stepItem = new MenuItem("Step"));
- stepItem.addActionListener(this);
- // cameraMenu.add(toggleDLItem = new CheckboxMenuItem("Display List"));
- // toggleDLItem.addItemListener(this);
- // toggleDLItem.setState(false);
-
- cameraMenu.add(toggleRenderItem = new CheckboxMenuItem("Render"));
- toggleRenderItem.addItemListener(this);
- toggleRenderItem.setState(!CameraPane.frozen);
-
- cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug"));
- toggleDebugItem.addItemListener(this);
- toggleDebugItem.setState(CameraPane.DEBUG);
-
- cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum"));
- toggleFrustumItem.addItemListener(this);
- toggleFrustumItem.setState(CameraPane.FRUSTUM);
-
- cameraMenu.add(toggleFootContactItem = new CheckboxMenuItem("Foot contact"));
- toggleFootContactItem.addItemListener(this);
- toggleFootContactItem.setState(CameraPane.FOOTCONTACT);
-
- cameraMenu.add(toggleTimelineItem = new CheckboxMenuItem("Timeline"));
- toggleTimelineItem.addItemListener(this);
- }
-
-// cameraMenu.add(toggleRootItem = new CheckboxMenuItem("Alternate Root"));
-// toggleRootItem.addItemListener(this);
-// toggleRootItem.setState(false);
-// cameraMenu.add(animationItem = new CheckboxMenuItem("Animation"));
-// animationItem.addItemListener(this);
-// animationItem.setState(CameraPane.ANIMATION);
- cameraMenu.add("-");
- cameraMenu.add(editCameraItem = new MenuItem("Freeze Camera"));
- editCameraItem.addActionListener(this);
objectPanel = new JTabbedPane();
toolbarPanel = new JPanel();
@@ -3052,8 +2996,9 @@
public void actionPerformed(ActionEvent event)
{
+ Object source = event.getSource();
// SCRIPT DIALOG
- if (event.getSource() == okbutton)
+ if (source == okbutton)
{
textpanel.setVisible(false);
textpanel.remove(textarea);
@@ -3065,7 +3010,7 @@
textarea = null;
textpanel = null;
}
- if (event.getSource() == cancelbutton)
+ if (source == cancelbutton)
{
textpanel.setVisible(false);
textpanel.remove(textarea);
@@ -3077,50 +3022,50 @@
//applySelf();
//client.refreshEditWindow();
//refreshContents();
- if (event.getSource() == nameField)
+ if (source == nameField)
{
//System.out.println("ObjEditor " + event);
applySelf0(true);
//parent.applySelf();
objEditor.refreshContents();
- } else if (event.getSource() == resetButton)
+ } else if (source == resetButton)
{
CameraPane.fullreset = true;
copy.Reset(); // ResetMeshes();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == stepItem)
+ } else if (source == stepItem)
{
//cameraView.ONESTEP = true;
Globals.ONESTEP = true;
cameraView.repaint();
return;
- } else if (event.getSource() == stepButton)
+ } else if (source == stepButton)
{
copy.Step();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == slowerButton)
+ } else if (source == slowerButton)
{
copy.Slower();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == fasterButton)
+ } else if (source == fasterButton)
{
copy.Faster();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == remarkButton)
+ } else if (source == remarkButton)
{
copy.Remark();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == stepAllButton)
+ } else if (source == stepAllButton)
{
copy.StepAll();
copy.Touch();
objEditor.refreshContents();
- } else if (event.getSource() == resetAllButton)
+ } else if (source == resetAllButton)
{
//CameraPane.fullreset = true;
copy.ResetAll(); // ResetMeshes();
@@ -3153,53 +3098,75 @@
// Close();
// }
// else
- if (event.getSource() == resetSlidersButton)
+ if (source == resetSlidersButton)
{
ResetSliders();
- } else if (event.getSource() == clearMaterialButton)
+ } else if (source == clearMaterialButton)
{
ClearMaterial();
- } else if (event.getSource() == createMaterialButton)
+ } else if (source == createMaterialButton)
{
CreateMaterial();
- } else if (event.getSource() == clearPanelButton)
+ } else if (source == clearPanelButton)
{
copy.ClearUI();
refreshContents(true);
- } /*
- }
-
- public boolean action(Event event, Object arg)
- {
- */ else if (event.getSource() == closeItem)
+ } else if (source == importGFDItem)
+ {
+ ImportGFD();
+ } else
+ if (source == importVRMLX3DItem)
+ {
+ ImportVRMLX3D();
+ } else
+ if (source == import3DSItem)
+ {
+ objEditor.ImportJME(new com.jmex.model.converters.MaxToJme(), "3ds", "Import 3DS");
+ } else
+ if (source == importOBJItem)
+ {
+ //objEditor.ImportJME(new com.jmex.model.converters.ObjToJme(), "obj", "Import OBJ");
+ FileDialog browser = new FileDialog(frame, "Import OBJ", FileDialog.LOAD);
+ browser.setVisible(true);
+ String filename = browser.getFile();
+ if (filename != null && filename.length() > 0)
+ {
+ String fullname = browser.getDirectory() + filename;
+ makeSomething(ReadOBJ(fullname), true);
+ }
+ } else
+ if (source == closeItem)
{
Close();
//return true;
- } else if (event.getSource() == loadItem)
+ } else if (source == loadItem)
{
load();
//return true;
- } else if (event.getSource() == saveItem)
+ } else if (source == newItem)
+ {
+ New();
+ } else if (source == saveItem)
{
save();
//return true;
- } else if (event.getSource() == saveAsItem)
+ } else if (source == saveAsItem)
{
saveAs();
//return true;
- } else if (event.getSource() == reexportItem)
+ } else if (source == reexportItem)
{
reexport();
//return true;
- } else if (event.getSource() == exportAsItem)
+ } else if (source == exportAsItem)
{
export();
//return true;
- } else if (event.getSource() == povItem)
+ } else if (source == povItem)
{
generatePOV();
//return true;
- } else if (event.getSource() == zBufferItem)
+ } else if (source == zBufferItem)
{
try
{
@@ -3221,21 +3188,8 @@
cameraView.repaint();
//return true;
}
- */ else if (event.getSource() == editCameraItem)
- {
- cameraView.ProtectCamera();
- cameraView.repaint();
- return;
- } else if (event.getSource() == revertCameraItem)
- {
- cameraView.RevertCamera();
- cameraView.repaint();
- return;
-// } else if (event.getSource() == textureButton)
-// {
-// return; // true;
- } else // combos...
- if (event.getSource() == texresMenu)
+ */ else // combos...
+ if (source == texresMenu)
{
System.err.println("Object = " + copy + "; change value " + copy.texres + " to " + texresMenu.getSelectedIndex());
copy.texres = texresMenu.getSelectedIndex();
@@ -3247,6 +3201,48 @@
}
}
+ void New()
+ {
+ while (copy.Size() > 1)
+ {
+ copy.remove(1);
+ }
+ ResetModel();
+ objEditor.refreshContents();
+ }
+
+ void ImportGFD()
+ {
+ FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD);
+ browser.show();
+ String filename = browser.getFile();
+ if (filename != null && filename.length() > 0)
+ {
+ String fullname = browser.getDirectory() + filename;
+
+ //Object3D readobj =
+ objEditor.ReadGFD(fullname, objEditor);
+ //makeSomething(readobj);
+ }
+ }
+
+ void ImportVRMLX3D()
+ {
+ if (Grafreed.standAlone)
+ {
+ /**/
+ FileDialog browser = new FileDialog(objEditor.frame, "Import VRML/X3D", FileDialog.LOAD);
+ browser.show();
+ String filename = browser.getFile();
+ if (filename != null && filename.length() > 0)
+ {
+ String fullname = browser.getDirectory() + filename;
+ LoadVRMLX3D(fullname);
+ }
+ /**/
+ }
+ }
+
void ToggleAnimation()
{
if (!Globals.ANIMATION)
@@ -4501,7 +4497,8 @@
Object3D client;
Object3D copy;
MenuBar menuBar;
- Menu windowMenu;
+ Menu fileMenu;
+ MenuItem newItem;
MenuItem loadItem;
MenuItem saveItem;
MenuItem saveAsItem;
@@ -4509,11 +4506,9 @@
MenuItem reexportItem;
MenuItem povItem;
MenuItem closeItem;
- Menu cameraMenu;
+
CheckboxMenuItem zBufferItem;
//MenuItem normalLensItem;
- MenuItem editCameraItem;
- MenuItem revertCameraItem;
MenuItem stepItem;
CheckboxMenuItem toggleLiveItem;
CheckboxMenuItem toggleFullScreenItem;
@@ -4661,4 +4656,9 @@
//ObjectUI parent;
cNumberSlider normalpushField;
+
+ private MenuItem importGFDItem;
+ private MenuItem importVRMLX3DItem;
+ private MenuItem import3DSItem;
+ private MenuItem importOBJItem;
}
diff --git a/Object3D.java b/Object3D.java
index 56b46d5..8205153 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -775,7 +775,7 @@
if (step == 0)
step = 1;
if (maxcount == 0)
- maxcount = 2048; // 4;
+ maxcount = 128; // 2048; // 4;
// if (acceleration == 0)
// acceleration = 10;
if (delay == 0) // serial
@@ -6950,8 +6950,8 @@
// {
// CameraPane.Ymax = spoth;
// }
- info.g.drawLine(spotw, spoth, spotw, spoth - 15);
- info.g.drawLine(spotw, spoth, spotw - 15, spoth);
+ // bonhommes info.g.drawLine(spotw, spoth, spotw, spoth - 15);
+ //info.g.drawLine(spotw, spoth, spotw - 15, spoth);
spot.translate(0, -32);
info.g.setColor(Color.green);
info.g.fillRect(spot.x, spot.y, spot.width, spot.height);
@@ -7006,7 +7006,7 @@
startX = info.x;
startY = info.y;
- hitSomething = 0;
+ hitSomething = -1;
cVector origin = new cVector();
//LA.xformPos(origin, toParent, origin);
Rectangle spot = new Rectangle();
@@ -7082,6 +7082,7 @@
//System.out.println("hitSomething = " + hitSomething);
double scale = 0.005f * info.camera.Distance();
+
cVector xlate = new cVector();
//cVector xlate2 = new cVector();
switch (hitSomething)
@@ -7230,24 +7231,27 @@
case hitScale: // scale
double hScale = (double) (info.x - centerPt.x) / 32;
+ double sign = 1;
+ if (hScale < 0)
+ {
+ sign = -1;
+ }
+ hScale = sign*Math.pow(sign*hScale, scale * 50);
if (hScale < 0.01)
{
- hScale = 0.01;
+ //hScale = 0.01;
}
- hScale = Math.pow(hScale, scale * 50);
- if (hScale < 0.01)
- {
- hScale = 0.01;
- }
+
double vScale = (double) (info.y - centerPt.y) / 32;
- if (vScale < 0.01)
+ sign = 1;
+ if (vScale < 0)
{
- vScale = 0.01;
+ sign = -1;
}
- vScale = Math.pow(vScale, scale * 50);
+ vScale = sign*Math.pow(sign*vScale, scale * 50);
if (vScale < 0.01)
{
- vScale = 0.01;
+ //vScale = 0.01;
}
LA.matCopy(startMat, toParent);
/**/
@@ -7258,17 +7262,24 @@
}
/**/
+ double totalScale = Math.sqrt(hScale*hScale + vScale*vScale) / Math.sqrt(2);
+
+ if (totalScale < 0.01)
+ {
+ totalScale = 0.01;
+ }
+
switch (info.pane.RenderCamera().viewCode)
{
case 3: // '\001'
if (modified)
{
//LA.matScale(toParent, 1, hScale, vScale);
- LA.matScale(toParent, vScale, 1, 1);
+ LA.matScale(toParent, totalScale, 1, 1);
} // vScale, 1);
else
{
- LA.matScale(toParent, vScale, vScale, vScale);
+ LA.matScale(toParent, totalScale, totalScale, totalScale);
} // vScale, 1);
break;
@@ -7276,10 +7287,10 @@
if (modified)
{
//LA.matScale(toParent, hScale, 1, vScale);
- LA.matScale(toParent, 1, vScale, 1);
+ LA.matScale(toParent, 1, totalScale, 1);
} else
{
- LA.matScale(toParent, vScale, 1, vScale);
+ LA.matScale(toParent, totalScale, 1, totalScale);
}
break;
@@ -7287,10 +7298,10 @@
if (modified)
{
//LA.matScale(toParent, hScale, vScale, 1);
- LA.matScale(toParent, 1, 1, vScale);
+ LA.matScale(toParent, 1, 1, totalScale);
} else
{
- LA.matScale(toParent, vScale, vScale, 1);
+ LA.matScale(toParent, totalScale, totalScale, 1);
}
break;
}
@@ -7431,7 +7442,7 @@
objname = name + " " + System.identityHashCode(this) + " (" + parent.name + " " + System.identityHashCode(parent) + ")";
} else
{
- objname = GetName() + (Math.abs(count) == 1000 ? (count == 1000 ? " " : " * ") : (" (" + (count /*- 1*/) + ")")) + /*(IsSelected()?"(selected) ":"") + (touched?"(touched) ":"") */ "";
+ objname = GetName() + (Math.abs(count) == 1000 ? (count == 1000 ? " " : " * ") : (" (" + (count - 1) + ")")) + /*(IsSelected()?"(selected) ":"") + (touched?"(touched) ":"") */ "";
} // + super.toString();
//return name + " (" + (SizeOf.deepSizeOf(this)/1024) + "K) " + this.getClass().getName();
@@ -7679,9 +7690,9 @@
private static cVector edge2 = new cVector();
//private static cVector norm = new cVector();
/*transient private*/ int hitSomething;
- private static final int hitCenter = 1;
- private static final int hitScale = 2;
- private static final int hitRotate = 3;
+ static final int hitCenter = 1;
+ static final int hitScale = 2;
+ static final int hitRotate = 3;
/*transient*/ /*private*/ int viewCode; // Now used for transparency cache flag
/*transient*/ private Point centerPt;
/*transient*/ private int startX;
--
Gitblit v1.6.2