Normand Briere
2019-10-06 ce660a4b6ba367bd162dd2cff26d02c80a34c912
Mocap.java
....@@ -261,9 +261,11 @@
261261
262262 // LA.matConcat(toParent, hip.get(0).toParent, toParent);
263263
264
- CameraPane.debugpoint.toParent[3][0] = poship.x;
265
- CameraPane.debugpoint.toParent[3][1] = poship.y;
266
- CameraPane.debugpoint.toParent[3][2] = poship.z;
264
+ CameraPane.CreateSelectedPoint();
265
+
266
+ CameraPane.debugpointG.toParent[3][0] = poship.x;
267
+ CameraPane.debugpointG.toParent[3][1] = poship.y;
268
+ CameraPane.debugpointG.toParent[3][2] = poship.z;
267269
268270 LA.matInvert(toParent, fromParent);
269271
....@@ -324,21 +326,21 @@
324326 // LA.matYRotate(toParent, angleY - angleYhip);
325327 // LA.matTranslate(toParent, pos.x - poship.x, pos.y - poship.y, pos.z - poship.z);
326328
327
- CameraPane.debugpoint2.toParent[3][0] = pos.x;
328
- CameraPane.debugpoint2.toParent[3][1] = pos.y;
329
- CameraPane.debugpoint2.toParent[3][2] = pos.z;
329
+ CameraPane.debugpointP.toParent[3][0] = pos.x;
330
+ CameraPane.debugpointP.toParent[3][1] = pos.y;
331
+ CameraPane.debugpointP.toParent[3][2] = pos.z;
330332
331
- CameraPane.debugpoint3.toParent[3][0] = poship.x;
332
- CameraPane.debugpoint3.toParent[3][1] = poship.y;
333
- CameraPane.debugpoint3.toParent[3][2] = poship.z;
333
+ CameraPane.debugpointC.toParent[3][0] = poship.x;
334
+ CameraPane.debugpointC.toParent[3][1] = poship.y;
335
+ CameraPane.debugpointC.toParent[3][2] = poship.z;
334336
335337 poship.x = toParent[3][0];
336338 poship.y = toParent[3][1];
337339 poship.z = toParent[3][2];
338340
339
- CameraPane.debugpoint4.toParent[3][0] = poship.x;
340
- CameraPane.debugpoint4.toParent[3][1] = poship.y;
341
- CameraPane.debugpoint4.toParent[3][2] = poship.z;
341
+ CameraPane.debugpointR.toParent[3][0] = poship.x;
342
+ CameraPane.debugpointR.toParent[3][1] = poship.y;
343
+ CameraPane.debugpointR.toParent[3][2] = poship.z;
342344
343345 LA.matInvert(toParent, fromParent);
344346 }
....@@ -477,29 +479,52 @@
477479 }
478480 }
479481
482
+ static cVector centroid = new cVector();
483
+ static cVector mocaporigin = new cVector();
484
+
480485 void SetHipOrientation()
481486 {
482487 Object3D hip = get(0);
483488
489
+ if (toParent == null)
490
+ {
491
+ toParent = LA.newMatrix();
492
+ fromParent = LA.newMatrix();
493
+ }
494
+
484495 LA.matConcat(toParent, hip.get(0).toParent, matrix);
485496
486
- cVector centroid = new cVector();
497
+ mocaporigin.x = matrix[3][0];
498
+ mocaporigin.y = matrix[3][1];
499
+ mocaporigin.z = matrix[3][2];
500
+
487501 centroid.x = matrix[3][0];
488502 centroid.y = matrix[3][1];
489503 centroid.z = matrix[3][2];
490
- this.getCentroid(centroid, true);
504
+// this.getCentroid(centroid, true);
505
+
506
+ CameraPane.CreateSelectedPoint();
507
+ CameraPane.debugpointG.name = "";
508
+ CameraPane.debugpointG.toParent[3][0] = mocaporigin.x;
509
+ CameraPane.debugpointG.toParent[3][1] = mocaporigin.y;
510
+ CameraPane.debugpointG.toParent[3][2] = mocaporigin.z;
511
+
512
+ CameraPane.debugpointP.name = "";
513
+ CameraPane.debugpointP.toParent[3][0] = centroid.x;
514
+ CameraPane.debugpointP.toParent[3][1] = centroid.y;
515
+ CameraPane.debugpointP.toParent[3][2] = centroid.z;
491516
492517 cVector goal = GetGoal(centroid);
493518 if (goal != null)
494519 {
495
- System.err.println("GOAL change (" + this + "): " + goal + " (was " + goalx + ", " + goalz + ")");
520
+ System.err.println("GOAL change (" + this + "): " + goal + " (was " + goalposx + ", " + goalposz + ")");
496521
497
- goalx = goal.x;
498
- goalz = goal.z;
499
- targetx = targetz = 0;
522
+ goalposx = goal.x;
523
+ goalposz = goal.z;
524
+ targetdirx = targetdirz = 0;
500525 }
501526
502
- if (goalx == 0 && goalz == 0)
527
+ if (goalposx == 0 && goalposz == 0)
503528 {
504529 // No target
505530 if (ScriptNode.speaker != null)
....@@ -533,8 +558,8 @@
533558 //sourcenode.parent.TransformToLocal(dst);
534559 this.parent.TransformToLocal(dst);
535560
536
- goalx = dst.x;
537
- goalz = dst.z;
561
+ goalposx = dst.x;
562
+ goalposz = dst.z;
538563 }
539564 else
540565 return;
....@@ -550,17 +575,25 @@
550575
551576 double angleYhip = Math.atan2(-temp.z, temp.x);
552577
553
- double angleYtarget = Math.atan2(goalx - centroid.x, goalz - centroid.z);
578
+ double angleYtarget = Math.atan2(goalposx - centroid.x, goalposz - centroid.z);
554579
555580 LA.matIdentity(matrix);
556581 LA.matTranslate(matrix, -centroid.x, -centroid.y, -centroid.z);
557
- double angle = CurveAngle(0, angleYtarget - angleYhip, 1); // 0.1f);
582
+ double angle = CurveAngle(0, angleYtarget - angleYhip, 0.1f);
558583 LA.matYRotate(matrix, angle);
559584 LA.matTranslate(matrix, centroid.x, centroid.y, centroid.z);
560585
561586 LA.matConcat(matrix, toParent, toParent);
562587
563588 LA.matInvert(toParent, fromParent);
589
+
590
+ LA.matConcat(toParent, hip.get(0).toParent, matrix);
591
+
592
+ centroid.x = matrix[3][0];
593
+ centroid.y = matrix[3][1];
594
+ centroid.z = matrix[3][2];
595
+
596
+ double dist = LA.distance(centroid, mocaporigin);
564597
565598 CheckForAction(centroid);
566599 }
....@@ -614,6 +647,24 @@
614647 // transient // aout 2013
615648 Object3D skeleton;
616649
650
+ void ExtractBigData(Object3D o)
651
+ {
652
+ super.ExtractBigData(o);
653
+
654
+ o.savebvh = this.bvh;
655
+ o.saveskeleton = this.skeleton;
656
+ this.bvh = null;
657
+ this.skeleton = null;
658
+ }
659
+
660
+ void RestoreBigData(Object3D o)
661
+ {
662
+ super.RestoreBigData(o);
663
+
664
+ this.bvh = o.savebvh;
665
+ this.skeleton = o.saveskeleton;
666
+ }
667
+
617668 boolean smoothed;
618669
619670 //boolean touched;
....@@ -637,11 +688,11 @@
637688 double pinx;
638689 double pinz;
639690
640
- double targetx;
641
- double targetz;
691
+ double targetdirx;
692
+ double targetdirz;
642693
643
- double goalx = -20;
644
- double goalz = -10;
694
+ double goalposx = 0; // -20;
695
+ double goalposz = 0; // -10;
645696
646697 boolean followpath;
647698
....@@ -712,7 +763,7 @@
712763 scriptactions.clear();
713764 }
714765
715
- static double EPSACTION = 0.1; // 0.075; // 0.1;
766
+ static double EPSACTION = 0.1; // 0.075; // 0.1;Came
716767
717768 void AddFromTo(cVector from, cVector to)
718769 {
....@@ -897,7 +948,7 @@
897948 // //GetFileRoot();
898949
899950 // sept 2014: //
900
- GrafreeD.RENDERME = 3; // patch for Merge objects
951
+ Grafreed.RENDERME = 3; // patch for Merge objects
901952 float[] thedata = bvh.animation.getBoneData(0);
902953
903954 os.x = (float) (path.get(i).toParent[3][0]); // - thedata[frame*6]);
....@@ -947,7 +998,7 @@
947998
948999 get(0).link2master = path.size() > 1; // hip orientation
9491000
950
- if (get(0).link2master)
1001
+ if (get(0).Link2Support())
9511002 {
9521003 rotateonce = 2;
9531004 }
....@@ -1278,6 +1329,7 @@
12781329
12791330 void SetPosition(Object3D sourcenode, cVector floor, long floorid, cVector centroid)
12801331 {
1332
+ assert(false);
12811333 //assert(CameraPane.drawMode == CameraPane.SHADOW);
12821334
12831335 Object3D transformnode = new Object3D();
....@@ -1375,7 +1427,7 @@
13751427 double w = 0.00015;
13761428
13771429 //if (!sourcenode.link2master) // strong pin on floor
1378
- if (parent.link2master) // strong pin on floor
1430
+ if (parent.Link2Support()) // strong pin on floor
13791431 {
13801432 w = 0.005; // .001;
13811433 }
....@@ -1481,9 +1533,9 @@
14811533 groundid = floorid;
14821534
14831535 // green
1484
- CameraPane.debugpoint.toParent[3][0] = groundx;
1485
- CameraPane.debugpoint.toParent[3][1] = floor.y;
1486
- CameraPane.debugpoint.toParent[3][2] = groundz;
1536
+ CameraPane.debugpointG.toParent[3][0] = groundx;
1537
+ CameraPane.debugpointG.toParent[3][1] = floor.y;
1538
+ CameraPane.debugpointG.toParent[3][2] = groundz;
14871539
14881540 if (true) // slow && stepout && onein)
14891541 {
....@@ -1494,7 +1546,7 @@
14941546 // mywave = currentwave++;
14951547 // }
14961548 // sound
1497
- cVector eye = CameraPane.theRenderer.eyeCamera.location;
1549
+ cVector eye = Globals.theRenderer.EyeCamera().location;
14981550
14991551 // if (sourcenode.parent.parent != null)
15001552 // sourcenode.parent.parent.TransformToWorld(floor, tmp);
....@@ -1539,9 +1591,9 @@
15391591 //GraphreeD.
15401592 wav.play(volume * usedvolume); //, mywave);
15411593
1542
- lastsoundtime = CameraPane.framecount;
1594
+ lastsoundtime = Globals.framecount;
15431595
1544
- GrafreeD.hassound = true;
1596
+ Grafreed.hassound = true;
15451597 }
15461598 // else
15471599 // System.out.println("skipped");
....@@ -1560,9 +1612,9 @@
15601612
15611613 // System.out.println("Allo " + sourcenode);
15621614 // purple
1563
- CameraPane.debugpoint2.toParent[3][0] = floor.x;// + posx;
1564
- CameraPane.debugpoint2.toParent[3][1] = ground; // floor.y;// + sourcenode.parent.toParent[3][1];
1565
- CameraPane.debugpoint2.toParent[3][2] = floor.z;// + posz;
1615
+ CameraPane.debugpointP.toParent[3][0] = floor.x;// + posx;
1616
+ CameraPane.debugpointP.toParent[3][1] = ground; // floor.y;// + sourcenode.parent.toParent[3][1];
1617
+ CameraPane.debugpointP.toParent[3][2] = floor.z;// + posz;
15661618
15671619
15681620 if (false) // dist2 > 0.1)
....@@ -1589,7 +1641,7 @@
15891641 // sourcenode.parent.toParent[3][1] = ground - floor.y;
15901642 // sourcenode.parent.toParent[3][2] += groundz - floor.z;
15911643 // sourcenode.parent.toParent[3][1] = K * (ground - floor.y) + (1 - K) * oldposy;
1592
- if (footcontact && (sourcenode.parent != null && !sourcenode.parent.link2master)) // strong pin on floor
1644
+ if (footcontact && (sourcenode.parent != null && !sourcenode.parent.Link2Support())) // strong pin on floor
15931645 {
15941646 v0.x = groundx - floor.x;
15951647 v0.y = 0; // groundx - floor.x;
....@@ -1628,9 +1680,9 @@
16281680 this.get(0).TransformToWorld(v0);
16291681
16301682 // cyan
1631
- CameraPane.debugpoint3.toParent[3][0] = v0.x;
1632
- CameraPane.debugpoint3.toParent[3][1] = ground;
1633
- CameraPane.debugpoint3.toParent[3][2] = v0.z;
1683
+ CameraPane.debugpointC.toParent[3][0] = v0.x;
1684
+ CameraPane.debugpointC.toParent[3][1] = ground;
1685
+ CameraPane.debugpointC.toParent[3][2] = v0.z;
16341686
16351687 LA.matConcat(sourcenode.toParent, transformnode.toParent, sourcenode.toParent);
16361688 LA.matInvert(sourcenode.toParent, sourcenode.fromParent);
....@@ -1640,9 +1692,9 @@
16401692 this.get(0).TransformToWorld(v0);
16411693
16421694 // red
1643
- CameraPane.debugpoint4.toParent[3][0] = v0.x;
1644
- CameraPane.debugpoint4.toParent[3][1] = ground;
1645
- CameraPane.debugpoint4.toParent[3][2] = v0.z;
1695
+ CameraPane.debugpointR.toParent[3][0] = v0.x;
1696
+ CameraPane.debugpointR.toParent[3][1] = ground;
1697
+ CameraPane.debugpointR.toParent[3][2] = v0.z;
16461698 }
16471699 }
16481700
....@@ -1682,11 +1734,11 @@
16821734
16831735 if (goal != null)
16841736 {
1685
- System.err.println("GOAL change (" + sourcenode + "): " + goal + " (was " + goalx + ", " + goalz + ")");
1737
+ System.err.println("GOAL change (" + sourcenode + "): " + goal + " (was " + goalposx + ", " + goalposz + ")");
16861738 //sourcenode.parent.parent.Dump();
1687
- goalx = goal.x;
1688
- goalz = goal.z;
1689
- targetx = targetz = 0;
1739
+ goalposx = goal.x;
1740
+ goalposz = goal.z;
1741
+ targetdirx = targetdirz = 0;
16901742
16911743 followpath = true;
16921744 }
....@@ -1737,16 +1789,16 @@
17371789 // }
17381790 if (false) // !uselast)
17391791 {
1740
- CameraPane.debugpoint.toParent[3][0] = dst.x;
1741
- CameraPane.debugpoint.toParent[3][1] = dst.y;
1742
- CameraPane.debugpoint.toParent[3][2] = dst.z;
1792
+ CameraPane.debugpointG.toParent[3][0] = dst.x;
1793
+ CameraPane.debugpointG.toParent[3][1] = dst.y;
1794
+ CameraPane.debugpointG.toParent[3][2] = dst.z;
17431795 }
17441796 }
17451797
1746
- if (goalx != 0 || goalz != 0) // TODO
1798
+ if (goalposx != 0 || goalposz != 0) // TODO
17471799 {
17481800 // overwrite speaker orientation
1749
- dst.set(goalx,0,goalz);
1801
+ dst.set(goalposx,0,goalposz);
17501802 if (sourcenode.parent != null) // july 2014
17511803 sourcenode.parent.
17521804 TransformToLocal(dst);
....@@ -1798,26 +1850,26 @@
17981850 // mars 2014
17991851 if (false) // goalx != 0 || goalz != 0)
18001852 {
1801
- targetx = dst.x - src.x;
1802
- targetz = dst.z - src.z;
1853
+ targetdirx = dst.x - src.x;
1854
+ targetdirz = dst.z - src.z;
18031855
1804
- if (Math.abs(targetx) > 0.1 || Math.abs(targetz) > 0.1)
1856
+ if (Math.abs(targetdirx) > 0.1 || Math.abs(targetdirz) > 0.1)
18051857 {
18061858 // far enough from goal. keep the goal position.
1807
- targetx = 0;
1808
- targetz = 0;
1859
+ targetdirx = 0;
1860
+ targetdirz = 0;
18091861 }
18101862 else
18111863 {
18121864 // too close to goal. switch to target direction instead.
1813
- goalx = 0;
1814
- goalz = 0;
1865
+ goalposx = 0;
1866
+ goalposz = 0;
18151867 }
18161868 }
18171869
18181870 //sourcenode.getCentroid(src, true);
18191871
1820
- if (speakernode == sourcenode && goalx == 0 && goalz == 0)
1872
+ if (speakernode == sourcenode && goalposx == 0 && goalposz == 0)
18211873 {
18221874 if (ScriptNode.lastspeaker != null)
18231875 new Exception().printStackTrace();
....@@ -1826,13 +1878,13 @@
18261878
18271879 // LA.xformPos(src, fromParent, src);
18281880
1829
- if ((ScriptNode.speaker != null && CameraPane.SPEAKERMOCAP || goalx != 0 || goalz != 0) && targetx == 0 && targetz == 0)
1881
+ if ((ScriptNode.speaker != null && CameraPane.SPEAKERMOCAP || goalposx != 0 || goalposz != 0) && targetdirx == 0 && targetdirz == 0)
18301882 dst.sub(src);
18311883 else
18321884 // vector mode
18331885 {
1834
- dst.x = targetx;
1835
- dst.z = targetz;
1886
+ dst.x = targetdirx;
1887
+ dst.z = targetdirz;
18361888
18371889 // TEST TARGET
18381890 // dst.x = CameraPane.selectedpoint.toParent[3][0];
....@@ -1954,7 +2006,7 @@
19542006 // if (sourcenode.link2master)
19552007 // if (goalx != 0 || goalz != 0)
19562008 // K = 0.02; // .0625;
1957
- if (parent.link2master) // strong pin on floor
2009
+ if (parent.Link2Support()) // strong pin on floor
19582010 {
19592011 K = 0.05; // 0.02;
19602012 }
....@@ -2242,7 +2294,7 @@
22422294 }
22432295
22442296 if (!smoothed)
2245
- for (int i=0; --i>=0;)
2297
+ for (int i=10; --i>=0;)
22462298 SmoothAnimData(); // much reduces shakiness
22472299
22482300 smoothed = true;
....@@ -2280,9 +2332,16 @@
22802332 toVector.x = LA.cos(to);
22812333 toVector.y = LA.sin(to);
22822334
2335
+ double fromA = Math.atan2(fromVector.y, fromVector.x);
2336
+ double toA = Math.atan2(toVector.y, toVector.x);
2337
+
22832338 Vector2d currentVector = Slerp(fromVector, toVector, step);
22842339
2285
- return Math.atan2(currentVector.y, currentVector.x);
2340
+ double angle = Math.atan2(currentVector.y, currentVector.x);
2341
+
2342
+ double angle2 = (1-step) * fromA + step * toA;
2343
+
2344
+ return angle;
22862345 }
22872346
22882347 public static Vector2d Slerp(Vector2d from, Vector2d to, double step)
....@@ -2364,9 +2423,9 @@
23642423 // SetBreakPoint(get(0).toParent[0], 0);
23652424 // }
23662425
2367
- boolean setrotation = get(0).link2master && !firsttimeafterload && frame > 0;
2426
+ boolean setrotation = get(0).Link2Support() && !firsttimeafterload && frame > 0;
23682427 boolean setposition = sourcenode != null && // sourcenode.parent != null && // july 2014
2369
- sourcenode./*parent.*/link2master && !firsttimeafterload && frame > 0;
2428
+ sourcenode./*parent.*/Link2Support() && !firsttimeafterload && frame > 0;
23702429
23712430 // cVector centroid = new cVector();
23722431 // cVector floor = new cVector();
....@@ -2765,7 +2824,8 @@
27652824 //if (bone._rotationEnabled)
27662825 if (//frame > 0 &&
27672826 !bone.skipmocap &&
2768
- !bone.name.contains("head") // &&
2827
+ !bone.name.contains("head") &&
2828
+ !bone.name.contains("Head") // &&
27692829 // !bone.name.contains("rFoot") &&
27702830 // !bone.name.contains("lFoot") &&
27712831 // !bone.name.contains("Pinky") &&
....@@ -2798,7 +2858,7 @@
27982858
27992859 // set translation
28002860 // (currently only possible for root bone! see mocapdata.com data)
2801
- if (bone._isRoot && link2master) // && !GetFileRoot().link2master)
2861
+ if (bone._isRoot && Link2Support()) // && !GetFileRoot().link2master)
28022862 {
28032863 if (hasTranslation) // && _translationEnabled)
28042864 {
....@@ -3191,7 +3251,7 @@
31913251
31923252 // july 2014
31933253 // goalx = goalz = 0;
3194
- targetx = targetz = 0;
3254
+ targetdirx = targetdirz = 0;
31953255
31963256 //SetPositionDelta(true, true, true, false);
31973257 // LoadData();
....@@ -3201,8 +3261,8 @@
32013261
32023262 // aout 2013 endframe = 0; // june 2013
32033263
3204
- //ResetZero();
3205
- setPose(frame);
3264
+ ResetZero();
3265
+ //setPose(frame);
32063266 }
32073267
32083268 static int mocapsupport = 0;
....@@ -3220,12 +3280,13 @@
32203280
32213281 int step = 1;
32223282
3283
+ // patch for running hare
32233284 if (speedup) // fev 2014
32243285 step *= 2; // 4;
32253286 if (rewind) // mars 2014
32263287 step *= 4;
32273288
3228
- if (CameraPane.FAST) // && !CameraPane.HOLD)
3289
+ //if (CameraPane.FAST) // && !CameraPane.HOLD)
32293290 step *= CameraPane.STEP;
32303291
32313292 //System.err.println("Step Mocap frame # " + frame);
....@@ -3257,7 +3318,7 @@
32573318 "; fullname = " + fullname);
32583319
32593320 //int delta = frame - baseframe;
3260
- if (CameraPane.CROWD)
3321
+ if (Globals.CROWD)
32613322 {
32623323 baseframe = GetFirstFrame(); // 0 initial point
32633324 }
....@@ -3266,23 +3327,40 @@
32663327 // SetPositionDelta(false, true, false); // ?? false);
32673328 {
32683329 if (support == null)
3269
- ObjEditor.LoadBVHFile(fullname, this, false, beginframe, lastframetest);
3330
+ {
3331
+ if (bvh == null && new File(fullname).exists())
3332
+ ObjEditor.LoadBVHFile(fullname, this, false, beginframe, lastframetest);
3333
+ else
3334
+ {
3335
+ SetGlobalTransform();
3336
+ Rewind();
3337
+ Fade();
3338
+ }
3339
+ }
32703340 else
32713341 {
3272
- try
3273
- {
3342
+// try
3343
+// {
32743344 bvh = ((Mocap)support.get(mocapsupport++ % support.Size())).bvh;
32753345
32763346 // SetPositionDelta(false, true, true, true);
32773347 LoadData();
32783348 Rewind();
32793349 Fade();
3280
- }
3281
- catch (Exception e)
3282
- {
3283
- e.printStackTrace();
3284
- ObjEditor.LoadBVHFile(fullname, this, false, beginframe, lastframetest);
3285
- }
3350
+// }
3351
+// catch (Exception e)
3352
+// {
3353
+// System.err.println("An error occured while loading data. Use fallback by loading the file.");
3354
+// //e.printStackTrace();
3355
+// try
3356
+// {
3357
+// ObjEditor.LoadBVHFile(fullname, this, false, beginframe, lastframetest);
3358
+// }
3359
+// catch (Exception e2)
3360
+// {
3361
+// System.err.println("Motion file not found: " + fullname);
3362
+// }
3363
+// }
32863364 }
32873365 }
32883366
....@@ -3464,6 +3542,7 @@
34643542 // filters out bad input data
34653543 void FilterAnimData()
34663544 {
3545
+ new Exception().printStackTrace();
34673546 System.exit(0);
34683547
34693548 float[] data; // = bvh.animation.getBoneData(0);
....@@ -3821,7 +3900,7 @@
38213900
38223901 transient boolean restarted; // CROWD issue?
38233902
3824
- void drawSelf(CameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked)
3903
+ void drawSelf(iCameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked)
38253904 {
38263905 //System.err.println("drawSelf Mocap frame # " + frame);
38273906 //System.err.println("drawSelf Mocap baseframe # " + baseframe);
....@@ -3838,17 +3917,24 @@
38383917 // if (firstframe)
38393918 // return;
38403919
3841
- if (!restarted && /*display.restartframe &&*/
3842
- display.isLIVE() && live && display.drawMode == display.SHADOW) // FUCK
3920
+ if (//!restarted && /*display.restartframe &&*/
3921
+ Globals.isLIVE() && live && (display.DrawMode() == iCameraPane.SHADOW || !Globals.RENDERSHADOW || !Globals.COMPUTESHADOWWHENLIVE))
38433922 {
38443923 //display.restartframe = false;
38453924 restarted = true;
3925
+ //System.err.println("restarted = true");
38463926 Step();
3927
+
3928
+ Globals.lighttouched = true;
38473929 }
38483930 else
38493931 {
3850
- if (display.isLIVE() && live && display.drawMode != display.SHADOW)
3932
+ //System.err.println("restarted");
3933
+ if (Globals.isLIVE() && live && display.DrawMode() != iCameraPane.SHADOW)
3934
+ {
38513935 restarted = false;
3936
+ //System.err.println("restarted = false");
3937
+ }
38523938 }
38533939
38543940 super.drawSelf(display, root, selected, blocked);
....@@ -3908,6 +3994,11 @@
39083994 // GetObject().release(i);
39093995 }
39103996
3997
+ boolean HasBigData()
3998
+ {
3999
+ return skeleton != null;
4000
+ }
4001
+
39114002 public Object3D get(int i)
39124003 {
39134004 if (i != 0)