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 |  110 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 87 insertions(+), 23 deletions(-)

diff --git a/ObjEditor.java b/ObjEditor.java
index 228f57c..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");
                 }
@@ -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);

--
Gitblit v1.6.2