diff --git a/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java b/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java index 97c214c..6951e19 100644 --- a/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java +++ b/app/src/main/java/com/annimon/hotarufx/visual/objects/ObjectNode.java @@ -12,15 +12,21 @@ import static com.annimon.hotarufx.visual.objects.PropertyConsumers.*; public abstract class ObjectNode { private final Node node; + private PropertyTimelineHolder rotate; private PropertyTimelineHolder translateX, translateY, translateZ; public ObjectNode(Node node) { this.node = node; + rotate = PropertyTimelineHolder.empty(); translateX = PropertyTimelineHolder.empty(); translateY = PropertyTimelineHolder.empty(); translateZ = PropertyTimelineHolder.empty(); } + public PropertyTimeline rotateProperty() { + return rotate.setIfEmptyThenGet(node::rotateProperty); + } + public PropertyTimeline translateXProperty() { return translateX.setIfEmptyThenGet(node::translateXProperty); } @@ -34,6 +40,7 @@ public abstract class ObjectNode { } public void buildTimeline(TimeLine timeline) { + rotate.ifPresent(numberConsumer(timeline)); translateX.ifPresent(numberConsumer(timeline)); translateY.ifPresent(numberConsumer(timeline)); translateZ.ifPresent(numberConsumer(timeline)); @@ -45,6 +52,7 @@ public abstract class ObjectNode { protected PropertyBindings propertyBindings(PropertyBindings bindings) { return bindings + .add("rotate", NUMBER, this::rotateProperty) .add("translateX", NUMBER, this::translateXProperty) .add("translateY", NUMBER, this::translateYProperty) .add("translateZ", NUMBER, this::translateZProperty); diff --git a/app/src/main/resources/main.hfx b/app/src/main/resources/main.hfx index 9457fd1..3a512a0 100644 --- a/app/src/main/resources/main.hfx +++ b/app/src/main/resources/main.hfx @@ -35,5 +35,10 @@ C = text({ stroke: "black", font: 100 }) +C@rotate + .add(50, 0) + .add(60, 45) + .add(80, -45) + .add(90, 0) render(B, A, C) \ No newline at end of file