1 package com.neuronrobotics.bowlerkernel.Bezier3d;
3 import java.util.ArrayList;
4 import javafx.scene.paint.Color;
5 import java.util.HashMap;
7 import com.neuronrobotics.bowlerstudio.physics.TransformFactory;
8 import com.neuronrobotics.sdk.addons.kinematics.math.*;
10 import eu.mihosoft.vrl.v3d.CSG;
11 import eu.mihosoft.vrl.v3d.Vector3d;
12 import javafx.event.EventHandler;
13 import javafx.event.EventType;
14 import javafx.scene.input.MouseEvent;
15 import javafx.scene.paint.Color;
16 import javafx.scene.transform.Affine;
17 import javafx.scene.paint.PhongMaterial;
20 HashMap<EventType<MouseEvent>, EventHandler<MouseEvent>> map =
new HashMap<>();
27 boolean dragging =
false;
34 private ArrayList<manipulation>
dependants =
new ArrayList<>();
41 private PhongMaterial
highlight =
new PhongMaterial(Color.GOLD);
75 R.performMove(trans, camFrame2);
91 this.manipulationMatrix = mm;
100 }
catch (Throwable t) {
105 map.put(MouseEvent.ANY,
new EventHandler<MouseEvent>() {
107 public void handle(MouseEvent event) {
108 String name = event.getEventType().getName();
110 case
"MOUSE_PRESSED":
113 case
"MOUSE_DRAGGED":
116 case
"MOUSE_RELEASED":
122 case
"MOUSE_ENTERED":
123 m.getMesh().setMaterial(highlight);
126 if (state == DragState.IDLE)
127 m.getMesh().setMaterial(color);
143 camFrame = getUi().getCamerFrame();
144 depth = -1600 / getUi().getCamerDepth();
148 R.camFrame = getUi().getCamerFrame();
149 R.depth = -1600 / getUi().getCamerDepth();
158 R.mouseRelease(event);
160 manip.
getMesh().setMaterial(color);
164 getUi().runLater(() -> {
166 double deltx = (startx -
event.getScreenX());
167 double delty = (starty -
event.getScreenY());
170 performMove(trans, camFrame);
182 globalPose.
setX(newx);
183 globalPose.
setY(newy);
184 globalPose.
setZ(newz);
191 if (dragging ==
false) {
192 startx =
event.getScreenX();
193 starty =
event.getScreenY();
197 R.setDragging(event);
207 newx = (global.
getX() * orintation.
x + globalPose.
getX());
208 newy = (global.
getY() * orintation.
y + globalPose.
getY());
209 newz = (global.
getZ() * orintation.
z + globalPose.
getZ());
218 fireMove(trans, camFrame2);
222 currentPose.
setX(newx);
223 currentPose.
setY(newy);
224 currentPose.
setZ(newz);
225 getUi().runLater(() -> {
238 public void set(
double newX,
double newY,
double newZ) {
242 globalPose.
setX(newX);
243 globalPose.
setY(newY);
244 globalPose.
setZ(newZ);
246 for (Runnable R : eventListeners) {
manipulation(Affine mm, Vector3d o, CSG m, TransformNR p)
ArrayList< Runnable > eventListeners
void performMove(TransformNR trans, TransformNR camFrame2)
void addDependant(manipulation r)
void release(MouseEvent event)
static void setUi(IInteractiveUIElementProvider ui)
void fireMove(TransformNR trans, TransformNR camFrame2)
void addSaveListener(Runnable r)
ArrayList< Runnable > saveListeners
static IInteractiveUIElementProvider ui
void pressed(MouseEvent event)
void setGlobal(TransformNR global)
Affine manipulationMatrix
static IInteractiveUIElementProvider getUi()
void setDragging(MouseEvent event)
void addEventListener(Runnable r)
void dragged(MouseEvent event)
void mouseRelease(MouseEvent event)
ArrayList< manipulation > dependants
CSG setManipulator(Affine manipulator)
PropertyStorage getStorage()
void set(String key, Object property)
static Vector3d y(double y)
static Vector3d z(double z)
static Vector3d x(double x)
default void runLater(Runnable r)