|
@@ -112,14 +112,15 @@ export default class LineService {
|
|
|
vectorId
|
|
|
);
|
|
|
|
|
|
- startPoint.setPointParent(curveLine.vectorId, "start");
|
|
|
+ startPoint.setPointParent(curveLine.vectorId);
|
|
|
startPoint.setIndex(0);
|
|
|
- endPoint.setPointParent(curveLine.vectorId, "end");
|
|
|
+ endPoint.setPointParent(curveLine.vectorId);
|
|
|
endPoint.setIndex(2);
|
|
|
let midPoint = curvePointService.create({
|
|
|
x: (startPoint.x + endPoint.x) / 2,
|
|
|
y: (startPoint.y + endPoint.y) / 2,
|
|
|
});
|
|
|
+ midPoint.setPointParent(curveLine.vectorId);
|
|
|
midPoint.setIndex(1);
|
|
|
curveLine.points = [];
|
|
|
curveLine.points.push(startPoint);
|
|
@@ -134,6 +135,7 @@ export default class LineService {
|
|
|
let curvePoints = [];
|
|
|
for (let i = 0; i < points.length; ++i) {
|
|
|
let curvePoint = curvePointService.create(points[i]);
|
|
|
+ curvePoint.setIndex(i);
|
|
|
curvePoints.push(curvePoint);
|
|
|
}
|
|
|
let curveLine = new CurveLine(
|
|
@@ -141,12 +143,11 @@ export default class LineService {
|
|
|
curvePoints[curvePoints.length - 1].vectorId,
|
|
|
vectorId
|
|
|
);
|
|
|
- curvePoints[0].setPointParent(curveLine.vectorId, "start");
|
|
|
- curvePoints[curvePoints.length - 1].setPointParent(
|
|
|
- curveLine.vectorId,
|
|
|
- "end"
|
|
|
- );
|
|
|
curveLine.points = JSON.parse(JSON.stringify(curvePoints));
|
|
|
+ for (let i = 0; i < curveLine.points.length; ++i) {
|
|
|
+ curveLine.points[i].setIndex(i);
|
|
|
+ curveLine.points[i].setPointParent(curveLine.vectorId);
|
|
|
+ }
|
|
|
curveLine.curves = mathUtil.getCurvesByPoints(curveLine.points);
|
|
|
dataService.addCurveLine(curveLine);
|
|
|
return curveLine;
|
|
@@ -156,9 +157,37 @@ export default class LineService {
|
|
|
let curveLine = dataService.getCurveLine(vectorId);
|
|
|
let newPoint = curvePointService.create(position);
|
|
|
newPoint.setIndex(index);
|
|
|
+ newPoint.setPointParent(vectorId);
|
|
|
curveLine.points.splice(index + 1, 0, newPoint);
|
|
|
curveLine.curves = mathUtil.getCurvesByPoints(curveLine.points);
|
|
|
}
|
|
|
+
|
|
|
+ copyCurveLine(vectorId) {
|
|
|
+ let curveLine = dataService.getCurveLine(vectorId);
|
|
|
+ let startPoint = dataService.getCurvePoint(curveLine.startId);
|
|
|
+ let endPoint = dataService.getCurvePoint(curveLine.endId);
|
|
|
+ startPoint = uiService.getNewPositionForPop(startPoint);
|
|
|
+ endPoint = uiService.getNewPositionForPop(endPoint);
|
|
|
+
|
|
|
+ let newCurveLine = this.createCurveLine(startPoint, endPoint);
|
|
|
+ newCurveLine.setColor(curveLine.color);
|
|
|
+ if (curveLine.weight) {
|
|
|
+ newCurveLine.setWeight(curveLine.weight);
|
|
|
+ }
|
|
|
+ if (curveLine.style) {
|
|
|
+ newCurveLine.setStyle(curveLine.style);
|
|
|
+ }
|
|
|
+ mathUtil.clonePoint(newCurveLine.points[1], curveLine.points[1]);
|
|
|
+ for (let i = 2; i < curveLine.points.length - 1; ++i) {
|
|
|
+ let newPoint = uiService.getNewPositionForPop(curveLine.points[i]);
|
|
|
+ newPoint = curvePointService.create(newPoint);
|
|
|
+ newPoint.setPointParent(vectorId);
|
|
|
+ newPoint.setIndex(i);
|
|
|
+ newCurveLine.points.splice(i + 1, 0, newPoint);
|
|
|
+ }
|
|
|
+ newCurveLine.curves = mathUtil.getCurvesByPoints(newCurveLine.points);
|
|
|
+ return newCurveLine;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const lineService = new LineService();
|