// Path: app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java
// public class NodesGroup extends Group {
// 
//     private final double width, height;
// 
//     public NodesGroup(double width, double height) {
//         this.width = width;
//         this.height = height;
//         setAutoSizeChildren(false);
//         setManaged(false);
//     }
// 
//     @Override
//     public ObservableList<Node> getChildren() {
//         return super.getChildren();
//     }
// 
//     @Override
//     public double prefWidth(double unused) {
//         return width;
//     }
// 
//     @Override
//     public double prefHeight(double unused) {
//         return height;
//     }
// 
//     @Override
//     protected double computePrefWidth(double unused) {
//         return width;
//     }
// 
//     @Override
//     protected double computePrefHeight(double unused) {
//         return height;
//     }
// 
//     @Override
//     public boolean isResizable() {
//         return false;
//     }
// }


import com.annimon.hotarufx.ui.control.NodesGroup;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;

    public int getVirtualHeight() {
        return virtualHeight;
    }

    public int getSceneWidth() {
        return sceneWidth;
    }

    public int getSceneHeight() {
        return sceneHeight;
    }

    public double getFactor() {
        return factor;
    }

    public TimeLine getTimeline() {
        return timeline;
    }

    public VirtualScene getScene() {
        return scene;
    }

    public Paint getBackground() {
        return background;
    }

    private VirtualScene newScene() {
// Path: app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java
// public class NodesGroup extends Group {
// 
//     private final double width, height;
// 
//     public NodesGroup(double width, double height) {
//         this.width = width;
//         this.height = height;
//         setAutoSizeChildren(false);
//         setManaged(false);
//     }
// 
//     @Override
//     public ObservableList<Node> getChildren() {
//         return super.getChildren();
//     }
// 
//     @Override
//     public double prefWidth(double unused) {
//         return width;
//     }
// 
//     @Override
//     public double prefHeight(double unused) {
//         return height;
//     }
// 
//     @Override
//     protected double computePrefWidth(double unused) {
//         return width;
//     }
// 
//     @Override
//     protected double computePrefHeight(double unused) {
//         return height;
//     }
// 
//     @Override
//     public boolean isResizable() {
//         return false;
//     }
// }


// Path: app/src/main/java/com/annimon/hotarufx/visual/Composition.java
import com.annimon.hotarufx.ui.control.NodesGroup;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;


    public int getVirtualHeight() {
        return virtualHeight;
    }

    public int getSceneWidth() {
        return sceneWidth;
    }

    public int getSceneHeight() {
        return sceneHeight;
    }

    public double getFactor() {
        return factor;
    }

    public TimeLine getTimeline() {
        return timeline;
    }

    public VirtualScene getScene() {
        return scene;
    }

    public Paint getBackground() {
        return background;
    }

    private VirtualScene newScene() {
        final var group = new NodesGroup(sceneWidth, sceneHeight);