From 655810d1c4e710e7c85772b8dde96772dbcf274b Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 01 Jul 2018 11:50:49 -0400
Subject: [PATCH] Major mocap changes.

---
 ObjEditor.java |  146 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 110 insertions(+), 36 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index 689f974..74fe7f1 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -522,18 +522,18 @@
                     maxima.y = sel.toParent[3][1];
                     maxima.z = sel.toParent[3][2];
                     si.SendInfo("    Orig: " + maxima, "regular");
-                    maxima.x = sel.globalTransform[3][0];
-                    maxima.y = sel.globalTransform[3][1];
-                    maxima.z = sel.globalTransform[3][2];
-        if (full)
-            si.SendInfo("    Global Orig: " + maxima, "regular");
                     maxima.x = sel.toParent[0][0];
                     maxima.y = sel.toParent[1][1];
                     maxima.z = sel.toParent[2][2];
                     si.SendInfo("    Scale: " + maxima, "regular");
-                    maxima.x = sel.globalTransform[0][0];
-                    maxima.y = sel.globalTransform[1][1];
-                    maxima.z = sel.globalTransform[2][2];
+        maxima.x = sel.globalTransform[3][0];
+        maxima.y = sel.globalTransform[3][1];
+        maxima.z = sel.globalTransform[3][2];
+        if (full)
+            si.SendInfo("    Global Orig: " + maxima, "regular");
+        maxima.x = sel.globalTransform[0][0];
+        maxima.y = sel.globalTransform[1][1];
+        maxima.z = sel.globalTransform[2][2];
         if (full)
             si.SendInfo("    Global Scale: " + maxima, "regular");
                 }
@@ -692,7 +692,7 @@
     protected static ImageIcon createImageIcon(String path,
             String description)
     {
-        java.net.URL imgURL = GraphreeD.class.getResource(path);
+        java.net.URL imgURL = GrafreeD.class.getResource(path);
         if (imgURL != null)
         {
             return new ImageIcon(imgURL, description);
@@ -1107,7 +1107,7 @@
         //frontScroll.setLabel("------------------------------ XZ (front) ---------------------------------------------------");
         //sideScroll.setLabel("------------------------------- YZ (side) ---------------------------------------------------");
 
-//            GridBagConstraints gbc = (GridBagConstraints) GraphreeD.clone(aConstraints);
+//            GridBagConstraints gbc = (GridBagConstraints) GrafreeD.clone(aConstraints);
         Camera cam = GetCamera(copy, 0);
 
         Composite cams = null;
@@ -1334,9 +1334,9 @@
         frame.getContentPane().add(/*"Center",*/framePanel);
         //frame.getContentPane().add(/*"Center",*/ worldPane);
 
-//            aConstraints = gbc; // (GridBagConstraints) GraphreeD.clone(gbc);
+//            aConstraints = gbc; // (GridBagConstraints) GrafreeD.clone(gbc);
 
-        frame.setSize(800, 600);
+        frame.setSize(1024, 768);
         frame.show();
 
         gridPanel.setDividerLocation(1.0);
@@ -1859,19 +1859,21 @@
             }
 
             // Images/textures
-            if (textures
-                    && (filename.toLowerCase().endsWith(".jpg")
-                    || filename.toLowerCase().endsWith(".jpeg")
-                    || filename.toLowerCase().endsWith(".gif")
-                    || filename.toLowerCase().endsWith(".png")
-                    || filename.toLowerCase().endsWith(".tre")
-                    || filename.toLowerCase().endsWith(".bmp")
-                    || filename.toLowerCase().endsWith(".tga")
-                    || filename.toLowerCase().endsWith(".sgi")
-                    || filename.toLowerCase().endsWith(".tif")
-                    || filename.toLowerCase().endsWith(".tiff")))
+            if (filename.toLowerCase().endsWith(".jpg")
+                || filename.toLowerCase().endsWith(".jpeg")
+                || filename.toLowerCase().endsWith(".gif")
+                || filename.toLowerCase().endsWith(".png")
+                || filename.toLowerCase().endsWith(".tre")
+                || filename.toLowerCase().endsWith(".bmp")
+                || filename.toLowerCase().endsWith(".tga")
+                || filename.toLowerCase().endsWith(".sgi")
+                || filename.toLowerCase().endsWith(".tif")
+                || filename.toLowerCase().endsWith(".tiff"))
             {
-                DropTexture(filename);
+                if (textures)
+                    DropTexture(filename);
+                else
+                    CreateBillboard(filename);
                 continue;
             }
 
@@ -1880,6 +1882,60 @@
         }
 
         ResetModel();
+    }
+    
+    void CreateBillboard(String filename)
+    {
+        Object3D source = null;
+        Object3D group = copy;
+
+        if (group.selection.size() > 0)
+        {
+            source = group.selection.get(0);
+        }
+
+        Grid grid = new Grid(1,1);
+        grid.material = null;
+        
+        grid.toParent = LA.newMatrix();
+        grid.fromParent = LA.newMatrix();
+        LA.matYRotate(grid.toParent, Math.PI/2);
+        LA.matXRotate(grid.toParent, -Math.PI/2);
+        LA.matXRotate(grid.fromParent, Math.PI/2);
+        LA.matYRotate(grid.fromParent, -Math.PI/2);
+        
+        BillboardNode bb = new BillboardNode();
+        bb.addChild(grid);
+        
+        Object3D newgroup = new Object3D();
+        newgroup.CreateMaterial();
+        
+        File file = new File(filename);
+        newgroup.name = file.getName();
+        newgroup.addChild(bb);
+        
+        Object3D main = newgroup;
+        
+        main.SetPigmentTexture(filename);
+        
+        if (source != null)
+        {
+            main.material = new cMaterial(source.material);
+            if (main.projectedVertices.length < source.projectedVertices.length)
+            {
+                main.projectedVertices = new Object3D.cVector2[source.projectedVertices.length];
+            }
+            
+            for (int i=0; i<source.projectedVertices.length; i++)
+            {
+                main.projectedVertices[i].x = source.projectedVertices[i].x;
+                main.projectedVertices[i].y = source.projectedVertices[i].y;
+            }
+            
+            main.texres = source.texres;
+        }
+        
+        makeSomething(newgroup, false);
     }
     
     Point location;
@@ -2151,14 +2207,18 @@
                 sel.smoothed = false;
 
                 //    if (!changename)
-                sel.SetPositionDelta(false, true, true, true/*?*/); // false
+                //sel.SetPositionDelta(false, true, true, true/*?*/); // false
+                sel.SetGlobalTransform();
+                sel.LoadData();
+                sel.Rewind();
+                sel.Fade();
                 //                sel.setPose(0);
                 refreshContents();
             } else
             {
                 mocap.Reset();
                 // new skeleton
-                makeSomething(mocap, false); // true);
+                makeSomething(mocap, true); // true);
             }
         } catch (Exception e)
         {
@@ -2251,7 +2311,11 @@
 
             if (!changename)
             {
-                sel.SetPositionDelta(false, true, true, true/*?*/);
+                //sel.SetPositionDelta(false, true, true, true/*?*/);
+                sel.SetGlobalTransform();
+                sel.LoadData();
+                sel.Rewind();
+                sel.Fade();
             }
 
             //          sel.setPose(0);
@@ -2345,7 +2409,7 @@
 
     void ImportJME(com.jmex.model.converters.FormatConverter converter, String ext, String dialogName)
     {
-        if (GraphreeD.standAlone)
+        if (GrafreeD.standAlone)
         {
             /**/
             FileDialog browser = new FileDialog(frame, dialogName, FileDialog.LOAD);
@@ -3183,8 +3247,8 @@
 
                 CameraPane.ANIMATION ^= true;
 
-                GraphreeD.wav.cursor = 0;
-                GraphreeD.wav.loop = 0;
+                GrafreeD.wav.cursor = 0;
+                GrafreeD.wav.loop = 0;
             }
         } else
         {
@@ -4085,7 +4149,7 @@
 
     void load() // throws ClassNotFoundException
     {
-        if (GraphreeD.standAlone)
+        if (GrafreeD.standAlone)
         {
             FileDialog browser = new FileDialog(frame, "Load", FileDialog.LOAD);
             browser.show();
@@ -4190,7 +4254,7 @@
 
     void saveAs()
     {
-        if (GraphreeD.standAlone)
+        if (GrafreeD.standAlone)
         {
             FileDialog browser = new FileDialog(frame, "Save As", FileDialog.SAVE);
             browser.setVisible(true);
@@ -4213,10 +4277,20 @@
 
         Object3D object = copy.selection.get(0);
         
+        FileObject fileobj = null;
+        
+        if (object instanceof FileObject)
+            fileobj = (FileObject)object;
+        
         if (object.fileparent != null)
         {
-            FileObject fileobj = (FileObject) object.fileparent;
+            assert(fileobj == null);
             
+            fileobj = (FileObject) object.fileparent;
+        }
+            
+        if (fileobj != null)
+        {
             System.out.println("WriteObject " + object + " : " + fileobj.name);
             WriteObject(object, fileobj.name);
         }
@@ -4259,7 +4333,7 @@
             }
         }
         else
-        //if (GraphreeD.standAlone)
+        //if (GrafreeD.standAlone)
         {
             FileDialog browser = new FileDialog(frame, "Export", FileDialog.SAVE);
             browser.setVisible(true);
@@ -4291,7 +4365,7 @@
             Object3D objectparent = obj.parent;
             obj.parent = null;
 
-            Object3D object = (Object3D) GraphreeD.clone(obj);
+            Object3D object = (Object3D) GrafreeD.clone(obj);
 
             obj.parent = objectparent;
 
@@ -4325,7 +4399,7 @@
         buffer.append("background { color rgb <0.8,0.8,0.8> }\n\n");
         cameraView.renderCamera.generatePOV(buffer, bnds.width, bnds.height);
         copy.generatePOV(buffer);
-        if (GraphreeD.standAlone)
+        if (GrafreeD.standAlone)
         {
             FileDialog browser = new FileDialog(frame, "Export POV", 1);
             browser.show();

--
Gitblit v1.6.2