1010import java .util .List ;
1111import java .util .Map ;
1212
13- import javafx .application .Platform ;
14- import javafx .event .Event ;
1513import javafx .geometry .Point3D ;
1614import javafx .scene .Node ;
1715import javafx .scene .paint .Color ;
1816import javafx .scene .paint .PhongMaterial ;
1917import javafx .scene .shape .*;
2018import javafx .scene .transform .Rotate ;
19+ import javafx .scene .transform .Scale ;
20+ import javafx .scene .transform .Translate ;
2121
2222public record UpdateGeometryCommand (
2323 NameMatcher sceneMatcher ,
@@ -43,30 +43,21 @@ public void interpret(GeometryManager geoManager, SceneController sceneControlle
4343 // part of this list.
4444 for (Geometry geometry : geoManager .findGeometries (sceneMatcher , geometryMatcher )) {
4545 if (position != null ) {
46- geometry .modifyGroups (
47- node -> {
48- node .setTranslateX (position .get (0 ));
49- node .setTranslateY (position .get (1 ));
50- node .setTranslateZ (position .get (2 ));
51- });
46+ geometry .setTranslation (new Translate (position .get (0 ), position .get (1 ), position .get (2 )));
5247 rerenderedScenes .put (geometry .getParent ().name (), geometry .getParent ());
5348 }
54- if (rotation != null ) {
55- rotateWithQuaternion ( rotation , geometry );
49+ if (scale != null ) {
50+ geometry . setScale ( new Scale ( scale . get ( 0 ), scale . get ( 1 ), scale . get ( 2 )) );
5651 rerenderedScenes .put (geometry .getParent ().name (), geometry .getParent ());
5752 }
58- if (scale != null ) {
59- geometry .modifyGroups (
60- node -> {
61- node .setScaleX (scale .get (0 ));
62- node .setScaleY (scale .get (1 ));
63- node .setScaleZ (scale .get (2 ));
64- });
53+ if (rotation != null ) {
54+ Rotate r = quaternionToRotation (rotation );
55+ geometry .setRotation (r );
6556 rerenderedScenes .put (geometry .getParent ().name (), geometry .getParent ());
6657 }
6758
6859 if (vertices != null ) {
69- geometry .clearChildren ();
60+ geometry .clear ();
7061 TriangleMesh mesh = verticesToTriangleMesh (vertices );
7162 MeshView meshView = new MeshView (mesh );
7263 meshView .setCullFace (CullFace .NONE );
@@ -88,7 +79,7 @@ public void interpret(GeometryManager geoManager, SceneController sceneControlle
8879 rerenderedScenes .put (geometry .getParent ().name (), geometry .getParent ());
8980 }
9081 if (radius != null ) {
91- geometry .clearChildren ();
82+ geometry .clear ();
9283 Sphere s = new Sphere (radius );
9384 geometry .getGroup ().getChildren ().add (s );
9485
@@ -99,7 +90,7 @@ public void interpret(GeometryManager geoManager, SceneController sceneControlle
9990 rerenderedScenes .put (geometry .getParent ().name (), geometry .getParent ());
10091 }
10192 if (text != null ) {
102- geometry .clearChildren ();
93+ geometry .clear ();
10394 // svs_viewer calls draw_text(g->text, 0, 0), which would draw at the origin no matter where
10495 // the geometry is;
10596 // that seems wrong. I think maybe it was never implemented properly because it's not
0 commit comments