From 6266c8a4b2485b29a7d5bcb217460d7aad3e1c4a Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 25 Aug 2019 20:58:10 -0400 Subject: [PATCH] Proto version slider. --- ObjEditor.java | 115 +++++++++------ CameraPane.java | 30 ++- Camera.java | 1 GroupEditor.java | 96 +++++++------ cFileSystemModel.java | 5 cTree.java | 2 RandomNode.java | 11 + Object3D.java | 118 ++++++++++++++++ 8 files changed, 264 insertions(+), 114 deletions(-) diff --git a/Camera.java b/Camera.java index ecdc609..0195701 100644 --- a/Camera.java +++ b/Camera.java @@ -112,6 +112,7 @@ material.shift = 90; material.cameralight = 0.2f; + material.shadowbias = 10; } void setAspect(int width, int height) diff --git a/CameraPane.java b/CameraPane.java index 4956fe0..b983dd6 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -12952,12 +12952,7 @@ "ADD temp.x, temp.x, one.x;" + "MUL normal, normal, temp.xxxx;":"" ) + - /**/ -//// Normalize("normal") + -//// "MAX normal.z, eps.x, normal.z;" + -// Normalize("normal") + - "MOV normald, normal;" + - "MOV normals, normal;" + + /**/ "MOV temp, fragment.texcoord[4];" + @@ -12975,6 +12970,17 @@ "XPD U, V, normal;" + Normalize("U") + + "MOV temp, fragment.texcoord[0];" + + +// "MAD normal, -temp.x, U, normal;" + +// "MAD normal, -temp.y, V, normal;" + +// Normalize("normal") + + +//// "MAX normal.z, eps.x, normal.z;" + +// Normalize("normal") + + "MOV normald, normal;" + + "MOV normals, normal;" + + // parallax mapping "DP3 temp2.x, V, eye;" + @@ -12987,17 +12993,15 @@ "RCP temp2.w, temp2.w;" + "SUB temp2.w, temp2.w, half;" + -// "SGE temp.x, temp2.w, eps.x;" + -// "MUL temp2.w, temp2.w, temp.x;" + + // "SGE temp.x, temp2.w, eps.x;" + + // "MUL temp2.w, temp2.w, temp.x;" + - //"MOV texSamp, U;" + + // "MOV texSamp, U;" + "MUL temp2.z, temp2.z, temp2.w;" + "MUL temp2.z, temp2.z, params7.z;" + // parallax "MUL temp2, temp2, temp2.z;" + - - "MOV temp, fragment.texcoord[0];" + "SUB temp, temp, temp2;" + @@ -14732,8 +14736,8 @@ } } PingThread pingthread = new PingThread(); - int delta = 5; - int speed = 5; + int delta = 2; + int speed = 10; boolean autorepeat = false; void GoDown(int mod) diff --git a/GroupEditor.java b/GroupEditor.java index 83301a6..c1f3bea 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -765,11 +765,11 @@ shadowYItem.addActionListener(this); shadowZItem = menu.add(new MenuItem("Shadow Blue")); shadowZItem.addActionListener(this); - attributeItem = menu.add(new MenuItem("Attribute")); - attributeItem.addActionListener(this); if (Globals.ADVANCED) { + attributeItem = menu.add(new MenuItem("Attribute")); + attributeItem.addActionListener(this); menu.add("-"); linkerItem = menu.add(new MenuItem("Linker")); linkerItem.addActionListener(this); @@ -779,11 +779,18 @@ pointflowItem.addActionListener(this); } menu.add("-"); + textureRatioRItem = menu.add(new MenuItem("Texture Ratio Red")); + textureRatioRItem.addActionListener(this); + textureRatioGItem = menu.add(new MenuItem("Texture Ratio Green")); + textureRatioGItem.addActionListener(this); + textureRatioBItem = menu.add(new MenuItem("Texture Ratio Blue")); + textureRatioBItem.addActionListener(this); + menu.add("-"); resetTransformItem = menu.add(new MenuItem("Reset Transform")); resetTransformItem.addActionListener(this); resetCentroidItem = menu.add(new MenuItem("Reset Centroid")); resetCentroidItem.addActionListener(this); - resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XY")); + resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XZ")); resetCentroidXZItem.addActionListener(this); transformGeometryItem = menu.add(new MenuItem("Transform Geometry")); transformGeometryItem.addActionListener(this); @@ -1217,7 +1224,7 @@ torusButton.setToolTipText("Create torus"); torusButton.addActionListener(this); - if (Globals.ADVANCED) + if (false) //Globals.ADVANCED) { oe.toolboxPanel.add(kleinButton = GetButton("icons/klein.png", !Globals.NIMBUSLAF)); //, oe.aConstraints); kleinButton.setToolTipText("Create Klein bottle"); @@ -1493,7 +1500,7 @@ void EditObject(Object3D obj) { - assert(obj instanceof Composite); + //assert(obj instanceof Composite); // if (obj.versionlist == null) // { @@ -3612,6 +3619,18 @@ { TransformChildren(); } else + if (source == textureRatioRItem) + { + TextureRatio(0); + } else + if (source == textureRatioGItem) + { + TextureRatio(1); + } else + if (source == textureRatioBItem) + { + TextureRatio(2); + } else if (source == resetTransformItem) { ResetTransform(); @@ -3984,7 +4003,8 @@ if (source == closeButton) { //System.out.println("CLOSE: " + buttonGroup.getSelection()); - Replace(); + if (copy.versionlist != null) + Replace(); cRadio ab; for (Enumeration e = buttonGroup.getElements(); e.hasMoreElements();) @@ -4084,7 +4104,8 @@ } else if(source instanceof cRadio) { - Replace(); + if (copy.versionlist != null) + Replace(); group.parent = keepparent; group.attributes = 0; @@ -4137,7 +4158,7 @@ */ radio.layout.doClick(); - assert(copy instanceof Composite); + //assert(copy instanceof Composite); if (copy.versionlist == null) { @@ -4148,7 +4169,7 @@ // and check if any of these nodes are reachable below the root. Grafreed.grafreed.universe.TagObjects(copy, true); - if (copy.versionlist == null && !copy.HasTags()) + if (copy instanceof Composite && copy.versionlist == null && !copy.HasTags()) { copy.versionlist = new Object3D[100]; @@ -4275,6 +4296,18 @@ refreshContents(); } + void TextureRatio(int axis) + { + Object3D obj; + for (Enumeration e = group.selection.elements(); e.hasMoreElements();) + { + obj = (Object3D)e.nextElement(); + obj.TextureRatio(axis); + } + + refreshContents(); + } + void ResetTransform() { ResetTransform(-1); @@ -4290,38 +4323,8 @@ if (obj.toParent == null) continue; - if (mask == -1) - { - if (obj instanceof Camera) // jan 2014 - { - LA.matIdentity(obj.toParent); - LA.matIdentity(obj.fromParent); - } - else - { - obj.toParent = null; // jan 2014 LA.matIdentity(obj.toParent); - obj.fromParent = null; // LA.matIdentity(obj.fromParent); - } - TouchTransform(obj); - continue; - } - if ((mask&2) != 0) // Scale/rotation - { - obj.toParent[0][0] = obj.toParent[1][1] = obj.toParent[2][2] = 1; - obj.toParent[0][1] = obj.toParent[1][0] = obj.toParent[2][0] = 0; - obj.toParent[0][2] = obj.toParent[1][2] = obj.toParent[2][1] = 0; - obj.fromParent[0][0] = obj.fromParent[1][1] = obj.fromParent[2][2] = 1; - obj.fromParent[0][1] = obj.fromParent[1][0] = obj.fromParent[2][0] = 0; - obj.fromParent[0][2] = obj.fromParent[1][2] = obj.fromParent[2][1] = 0; - } - if ((mask&1) != 0) // Translation - { - if (obj.toParent != null) - { - obj.toParent[3][0] = obj.toParent[3][1] = obj.toParent[3][2] = 0; - obj.fromParent[3][0] = obj.fromParent[3][1] = obj.fromParent[3][2] = 0; - } - } + obj.ResetTransform(mask); + if (obj.parent == null) { System.out.println("NULL PARENT!"); @@ -4829,6 +4832,12 @@ for (int i=0; i<group.selection.size(); i++) { Object3D obj = group.selection.get(i); + + if (obj.toParent == null) + { + obj.toParent = LA.newMatrix(); + obj.fromParent = LA.newMatrix(); + } LA.matTranslate(obj.toParent, i * scale, 0, 0); LA.matTranslateInv(obj.fromParent, -i * scale, 0, 0); @@ -5412,7 +5421,7 @@ } } - rootButton.setEnabled(allComposites); + rootButton.setEnabled(true); // allComposites); } void refreshContents(boolean cp) @@ -6392,6 +6401,9 @@ private MenuItem maxTexturesItem; private MenuItem panoTexturesItem; + private MenuItem textureRatioRItem; + private MenuItem textureRatioGItem; + private MenuItem textureRatioBItem; private MenuItem resetCentroidItem; private MenuItem resetCentroidXZItem; private MenuItem resetTransformItem; diff --git a/ObjEditor.java b/ObjEditor.java index 63acad8..fd5504d 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -316,6 +316,8 @@ objEditor.ctrlPanel.remove(setupPanel2); objEditor.ctrlPanel.remove(objectCommandsPanel); objEditor.ctrlPanel.remove(pushPanel); + if (versionPanel != null) + objEditor.ctrlPanel.remove(versionPanel); //objEditor.ctrlPanel.remove(fillPanel); //Remove(normalpushField); @@ -1163,6 +1165,7 @@ cGridBag setupPanel2; cGridBag objectCommandsPanel; cGridBag pushPanel; + cGridBag versionPanel; cGridBag fillPanel; JCheckBox AddCheckBox(cGridBag panel, String label, boolean on) @@ -1409,9 +1412,14 @@ oe.ctrlPanel.add(objectCommandsPanel); oe.ctrlPanel.Return(); - pushPanel = AddSlider(oe.ctrlPanel, "Push", -1, 1, copy.NORMALPUSH, 1.1); // To have the buttons + pushPanel = AddSlider(oe.ctrlPanel, "Push", -1, 1, copy.NORMALPUSH * 100, 1.1); // To have the buttons normalpushField = (cNumberSlider)pushPanel.getComponent(1); - //Return(); + if (false && copy.versionlist != null && copy.versionindex != -1) + { + oe.ctrlPanel.Return(); + versionPanel = AddSlider(oe.ctrlPanel, "Version", 0, copy.VersionCount() - 1, copy.versionindex); + versionField = (cNumberSlider)versionPanel.getComponent(1); + } oe.ctrlPanel.Return(); @@ -2421,7 +2429,7 @@ cameraField.setFloat(0.001); specularField.setFloat(0.001); fakedepthField.setFloat(0.001); - opacityField.setFloat(0.6); + opacityField.setFloat(0.4); materialtouched = true; applySelf(); @@ -4067,6 +4075,7 @@ } else if (event.getSource() == link2masterCB) { copy.link2master ^= true; + objEditor.refreshContents(); return; } if (event.getSource() == randomCB) @@ -4457,7 +4466,7 @@ copy.versionindex -= 1; if (copy.versionindex != -1) - CopyChanged(); + CopyChanged(copy); SetVersionStates(); } @@ -4539,20 +4548,20 @@ { Object3D selection = new Object3D(); - for (int i = 0; i < copy.selection.size(); i++) + for (int i = 0; i < objEditor.copy.selection.size(); i++) { - Object3D elem = copy.selection.elementAt(i); + Object3D elem = objEditor.copy.selection.elementAt(i); - Object3D obj = copy.GetObject(elem.GetUUID()); + Object3D obj = objEditor.copy.GetObject(elem.GetUUID()); if (obj == null) { - copy.selection.remove(i--); + objEditor.copy.selection.remove(i--); } else { selection.add(obj); - copy.selection.setElementAt(obj, i); + objEditor.copy.selection.setElementAt(obj, i); } } @@ -4565,44 +4574,43 @@ //refreshContents(false); } - void CopyChanged() + void CopyChanged(Object3D changed) { - Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]); - - SetVersionStates(); + Object3D obj = (Object3D)Grafreed.clone(changed.versionlist[copy.versionindex]); boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; - copy.ExtractBigData(Grafreed.grafreed.universe.versiontable); + changed.ExtractBigData(Grafreed.grafreed.universe.versiontable); - copy.clear(); + changed.clear(); - copy.skyboxname = obj.skyboxname; - copy.skyboxext = obj.skyboxext; + changed.skyboxname = obj.skyboxname; + changed.skyboxext = obj.skyboxext; for (int i=0; i<obj.Size(); i++) { - copy.add(obj.get(i)); + changed.add(obj.get(i)); } - copy.RestoreBigData(Grafreed.grafreed.universe.versiontable); + changed.RestoreBigData(Grafreed.grafreed.universe.versiontable); CameraPane.SWITCH = temp; - RefreshSelection(); + if (objEditor == this) + RefreshSelection(); //assert(hashtable.isEmpty()); - copy.Touch(); + objEditor.copy.Touch(); ResetModel(); - copy.HardTouch(); // recompile? + objEditor.copy.HardTouch(); // recompile? cRadio ab; - for (java.util.Enumeration e = buttonGroup.getElements(); e.hasMoreElements();) + for (java.util.Enumeration e = objEditor.buttonGroup.getElements(); e.hasMoreElements();) { ab = (cRadio)e.nextElement(); - Object3D test = copy.GetObject(ab.object.GetUUID()); + Object3D test = objEditor.copy.GetObject(ab.object.GetUUID()); //ab.camera = (Camera)copy.GetObject(ab.camera.GetUUID()); if (test != null) { @@ -4611,7 +4619,7 @@ } } - refreshContents(true); + objEditor.refreshContents(true); } cButton previousVersionButton; @@ -4625,15 +4633,7 @@ int VersionCount() { - int count = 0; - - for (int i = copy.versionlist.length; --i >= 0;) - { - if (copy.versionlist[i] != null) - count++; - } - - return count; + return copy.VersionCount(); } public cGridBag versionSliderPane; @@ -4707,7 +4707,9 @@ copy.versionindex -= 1; - CopyChanged(); + CopyChanged(copy); + + SetVersionStates(); return true; } @@ -4725,7 +4727,9 @@ } //CopyChanged((Object3D)Uncompress(copy.versions[copy.versionindex])); - CopyChanged(); + CopyChanged(copy); + + SetVersionStates(); return true; } @@ -4762,10 +4766,12 @@ copy.versionindex += 1; - CopyChanged(); + CopyChanged(copy); //if (!tab.user[tab.versionindex]) // tab.graphs[tab.versionindex] = null; + + SetVersionStates(); } void ImportGFD() @@ -5094,6 +5100,7 @@ } cNumberSlider versionSlider; + cNumberSlider versionField; public void stateChanged(ChangeEvent e) { @@ -5110,12 +5117,26 @@ if (version != -1 && copy.versionlist[version] != null) { copy.versionindex = version; - CopyChanged(); + CopyChanged(copy); + SetVersionStates(); } return; } + if (e.getSource() == versionField) + { + int version = versionField.getInteger(); + + if (version != -1 && copy.versionindex != version && copy.versionlist[version] != null) + { + copy.versionindex = version; + CopyChanged(copy); + } + + return; + } + if (freezematerial) { return; @@ -5205,7 +5226,7 @@ } if (normalpushField != null) - copy.NORMALPUSH = (float)normalpushField.getFloat()/100; + copy.NORMALPUSH = (float)normalpushField.getFloat() / 100; } void SnapObject() @@ -5579,7 +5600,7 @@ void ResetModel() { //assert(copy instanceof Composite); - Object3D /*Composite*/ group = (Object3D /*Composite*/) copy; + Object3D /*Composite*/ group = (Object3D /*Composite*/) objEditor.copy; // necessary? group.selection = new Object3D(); // java.util.Vector(); @@ -5590,14 +5611,14 @@ //group.refreshEditWindow(); //refreshContents(); - if (copy.selection == null) + if (objEditor.copy.selection == null) { - copy.selection = new Object3D(); + objEditor.copy.selection = new Object3D(); } - for (int j = 0; j < copy.selection.size(); j++) + for (int j = 0; j < objEditor.copy.selection.size(); j++) { - Object3D item = copy.selection.get(j); + Object3D item = objEditor.copy.selection.get(j); if (item instanceof cGroup && ((cGroup) item).transientlink) { @@ -5606,15 +5627,15 @@ if (item.count <= 1) // ??? == 0) { - copy.selection.remove(item); + objEditor.copy.selection.remove(item); } } boolean first = true; - for (int i = copy.selection.size(); --i >= 0;) + for (int i = objEditor.copy.selection.size(); --i >= 0;) { - Object3D item = copy.selection.get(i); + Object3D item = objEditor.copy.selection.get(i); if (item instanceof cGroup && ((cGroup) item).transientlink) { diff --git a/Object3D.java b/Object3D.java index 3c575b0..9d52cb0 100644 --- a/Object3D.java +++ b/Object3D.java @@ -40,6 +40,19 @@ ScriptNode scriptnode; + int VersionCount() + { + int count = 0; + + for (int i = versionlist.length; --i >= 0;) + { + if (versionlist[i] != null) + count++; + } + + return count; + } + void InitOthers() { if (projectedVertices == null || projectedVertices.length <= 2) @@ -568,11 +581,11 @@ } } - int memorysize; + transient int memorysize; // needs to be transient, dunno why int MemorySize() { - if (true) // memorysize == 0) + if (memorysize == 0) { try { @@ -3264,6 +3277,93 @@ blockloop = false; } + public void ResetTransform(int mask) + { + Object3D obj = this; + + if (mask == -1) + { + if (obj instanceof Camera) // jan 2014 + { + LA.matIdentity(obj.toParent); + LA.matIdentity(obj.fromParent); + } + else + { + obj.toParent = null; // jan 2014 LA.matIdentity(obj.toParent); + obj.fromParent = null; // LA.matIdentity(obj.fromParent); + } + return; + } + + if ((mask&2) != 0) // Scale/rotation + { + obj.toParent[0][0] = obj.toParent[1][1] = obj.toParent[2][2] = 1; + obj.toParent[0][1] = obj.toParent[1][0] = obj.toParent[2][0] = 0; + obj.toParent[0][2] = obj.toParent[1][2] = obj.toParent[2][1] = 0; + obj.fromParent[0][0] = obj.fromParent[1][1] = obj.fromParent[2][2] = 1; + obj.fromParent[0][1] = obj.fromParent[1][0] = obj.fromParent[2][0] = 0; + obj.fromParent[0][2] = obj.fromParent[1][2] = obj.fromParent[2][1] = 0; + } + if ((mask&1) != 0) // Translation + { + if (obj.toParent != null) + { + obj.toParent[3][0] = obj.toParent[3][1] = obj.toParent[3][2] = 0; + obj.fromParent[3][0] = obj.fromParent[3][1] = obj.fromParent[3][2] = 0; + } + } + } + + public void TextureRatioTransform(int axis) + { + cTexture tex = GetTextures(); + + com.sun.opengl.util.texture.TextureData texturedata = null; + + try + { + texturedata = Globals.theRenderer.GetTextureData(tex, false, texres); + } + catch (Exception e) + { + System.err.println("FAIL TextureRatio: " + this); + } + + LA.matIdentity(Object3D.mat); + Object3D.mat[axis][axis] = (double)texturedata.getWidth() / texturedata.getHeight(); + + if (toParent == null) + { + toParent = LA.newMatrix(); + fromParent = LA.newMatrix(); + } + + ResetTransform(2); + + LA.matConcat(Object3D.mat, fromParent, fromParent); + LA.matInvert(fromParent, toParent); + } + + void TextureRatio(int axis) + { + if (blockloop) + return; + + blockloop = true; + + TextureRatioTransform(axis); + + for (int i=Size(); --i>=0;) + { + Object3D v = get(i); + + v.TextureRatio(axis); + } + + blockloop = false; + } + void TransformChildren() { if (toParent != null) @@ -5969,6 +6069,11 @@ return parent.IsLive(); } + boolean IsDynamic() + { + return live && bRep != null; + } + void Draw(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) { Invariants(); // june 2013 @@ -6029,7 +6134,8 @@ if (support != null) support = support; - boolean usecalllists = !IsLive() && IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); + boolean usecalllists = !IsDynamic() && + IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null || !link2master); // !(this instanceof cSpring) && !(this instanceof BezierPatch); //boolean usecalllists = false; //!IsLive(); // IsStatic() && GetBRep() != null && (!CameraPane.SUPPORT || support == null) && !link2master; // !(this instanceof cSpring) && !(this instanceof BezierPatch); //usecalllists &= display.DrawMode() == display.DEFAULT; // Don't compute list in shadow pass. @@ -8075,10 +8181,10 @@ } // + super.toString(); //return name + " (" + (SizeOf.deepSizeOf(this)/1024) + "K) " + this.getClass().getName(); - if (!Globals.ADVANCED) - return objname; +// if (!Globals.ADVANCED) +// return objname; - return objname + " " + System.identityHashCode(this); + return objname + " " + System.identityHashCode(this); // + GetUUID() } public int hashCode() diff --git a/RandomNode.java b/RandomNode.java index 81b7d4e..daf6231 100644 --- a/RandomNode.java +++ b/RandomNode.java @@ -25,9 +25,14 @@ // return 1; // } + boolean IsSwitch() + { + return CameraPane.SWITCH && !this.link2master; + } + public int size() { - if (CameraPane.SWITCH) + if (IsSwitch()) { if (super.size() > 0) return 1; @@ -88,7 +93,7 @@ public Object3D reserve(int i) { - if (!CameraPane.SWITCH) + if (!IsSwitch()) return super.reserve(i); //assert(rnd == -1); @@ -160,7 +165,7 @@ public void release(int i) { - if (!CameraPane.SWITCH) + if (!IsSwitch()) { super.release(i); return; diff --git a/cFileSystemModel.java b/cFileSystemModel.java index df86db6..acb8318 100644 --- a/cFileSystemModel.java +++ b/cFileSystemModel.java @@ -110,8 +110,9 @@ hasFocus); String valueString = value.toString(); + String lcString = valueString.toLowerCase(); - if (valueString.toLowerCase().endsWith(".gfd") || valueString.toLowerCase().endsWith(".obj") || valueString.toLowerCase().endsWith(".3ds")) + if (lcString.endsWith(".gfd") || lcString.endsWith(".obj") || lcString.endsWith(".3ds")) { if (true) { @@ -138,7 +139,7 @@ if (rendererIcon == null) { - rendererIcon = new javax.swing.ImageIcon(); + rendererIcon = ObjEditor.GetIcon("icons/primitives.png"); } icons.put(valueTruncated, rendererIcon); diff --git a/cTree.java b/cTree.java index ec05793..f545248 100644 --- a/cTree.java +++ b/cTree.java @@ -21,7 +21,7 @@ public void mousePressed(MouseEvent e) { //if (e.isPopupTrigger()) // Works only on mouse released on Windows. - if ((e.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) + if (e.getModifiers() == InputEvent.BUTTON3_MASK) { int row = getClosestRowForLocation(e.getX(), e.getY()); if (!isRowSelected(row)) -- Gitblit v1.6.2