public static void setEnabled(boolean enabled) {
PipingRules.enabled = enabled;
- if(!enabled)
- currentUpdates.clear();
+ if(!enabled) {
+ synchronized (ruleMutex) {
+ currentUpdates.clear();
+ }
+ }
}
public static boolean isEnabled() {
scp.insert(pcp1, pcp2);
scp.setWorldPosition(pos);
+ Vector3d dir = new Vector3d();
+ dir.sub(pcp2.getWorldPosition(), pcp1.getWorldPosition());
+ updateControlPointOrientation(scp, dir);
scp.setLength(length);
validate(scp.getPipeRun());
return scp;
}
- private static boolean calculateDirectedOffset(Vector3d startPoint, Vector3d endPoint, PipeControlPoint start, ArrayList<PipeControlPoint> list, PipeControlPoint end, Vector3d dir, Vector3d offset) {
+ public static boolean calculateDirectedOffset(Vector3d startPoint, Vector3d endPoint, PipeControlPoint start, ArrayList<PipeControlPoint> list, PipeControlPoint end, Vector3d dir, Vector3d offset) {
return calculateOffset(startPoint, endPoint, start, list, end, dir, offset, true);
}
- private static boolean calculateOffset(Vector3d startPoint, Vector3d endPoint, PipeControlPoint start, ArrayList<PipeControlPoint> list, PipeControlPoint end, Vector3d dir, Vector3d offset) {
+ public static boolean calculateOffset(Vector3d startPoint, Vector3d endPoint, PipeControlPoint start, ArrayList<PipeControlPoint> list, PipeControlPoint end, Vector3d dir, Vector3d offset) {
return calculateOffset(startPoint, endPoint, start, list, end, dir, offset, false);
}
Vector3d dir = new Vector3d();
dir.sub(currentPos, prevPos);
- boolean simple = currentUpdates.contains(icp);
+ boolean simple;
+ synchronized (ruleMutex) {
+ simple = currentUpdates.contains(icp);
+ }
+
if (simple) {
// Update based on position -> adjust length
double currentLength = (dir.length() - prev.getInlineLength()) * 2.0;