|
@@ -113,6 +113,11 @@ class MovablePoint {
|
|
|
|
|
|
class PolygonEditor {
|
|
class PolygonEditor {
|
|
|
|
|
|
|
|
+ public var editContext : EditContext;
|
|
|
|
+ public var showDebug : Bool;
|
|
|
|
+ public var gridSize = 1;
|
|
|
|
+ public var showTriangles : Bool = false;
|
|
|
|
+
|
|
var polygonPrefab : hide.prefab.l3d.Polygon;
|
|
var polygonPrefab : hide.prefab.l3d.Polygon;
|
|
var undo : hide.ui.UndoHistory;
|
|
var undo : hide.ui.UndoHistory;
|
|
var interactive : h2d.Interactive;
|
|
var interactive : h2d.Interactive;
|
|
@@ -124,12 +129,10 @@ class PolygonEditor {
|
|
var lastPos : h3d.Vector;
|
|
var lastPos : h3d.Vector;
|
|
var selectedEdge : Edge;
|
|
var selectedEdge : Edge;
|
|
var selectedEdgeGraphic : h3d.scene.Graphics;
|
|
var selectedEdgeGraphic : h3d.scene.Graphics;
|
|
- public var editContext : EditContext;
|
|
|
|
- public var showDebug : Bool;
|
|
|
|
- public var gridSize = 1;
|
|
|
|
- public var showTriangles : Bool = false;
|
|
|
|
var lastClickStamp = 0.0;
|
|
var lastClickStamp = 0.0;
|
|
|
|
+ var editMode = false;
|
|
|
|
|
|
|
|
+ // Temp container for Undo
|
|
var beforeMoveList : Array<h2d.col.Point> = [];
|
|
var beforeMoveList : Array<h2d.col.Point> = [];
|
|
var afterMoveList : Array<h2d.col.Point> = [];
|
|
var afterMoveList : Array<h2d.col.Point> = [];
|
|
|
|
|
|
@@ -173,6 +176,9 @@ class PolygonEditor {
|
|
else if(propName == "showTriangles") {
|
|
else if(propName == "showTriangles") {
|
|
drawTriangles(showTriangles);
|
|
drawTriangles(showTriangles);
|
|
}
|
|
}
|
|
|
|
+ else if(propName == "editMode") {
|
|
|
|
+ setSelected(getContext(), true);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
function copyArray(array : Array<h2d.col.Point>){
|
|
function copyArray(array : Array<h2d.col.Point>){
|
|
@@ -314,6 +320,7 @@ class PolygonEditor {
|
|
|
|
|
|
public function setSelected( ctx : Context, b : Bool ) {
|
|
public function setSelected( ctx : Context, b : Bool ) {
|
|
reset();
|
|
reset();
|
|
|
|
+ if(!editMode) return;
|
|
if(b){
|
|
if(b){
|
|
var s2d = @:privateAccess ctx.local2d.getScene();
|
|
var s2d = @:privateAccess ctx.local2d.getScene();
|
|
interactive = new h2d.Interactive(10000, 10000, s2d);
|
|
interactive = new h2d.Interactive(10000, 10000, s2d);
|
|
@@ -439,6 +446,8 @@ class PolygonEditor {
|
|
refreshDebugDisplay();
|
|
refreshDebugDisplay();
|
|
};
|
|
};
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ editMode = false;
|
|
}
|
|
}
|
|
|
|
|
|
function refreshSelectedEdge( pos : h2d.col.Point ){
|
|
function refreshSelectedEdge( pos : h2d.col.Point ){
|
|
@@ -518,6 +527,9 @@ class PolygonEditor {
|
|
var props = new hide.Element('
|
|
var props = new hide.Element('
|
|
<div class="poly-editor">
|
|
<div class="poly-editor">
|
|
<div class="group" name="Tool">
|
|
<div class="group" name="Tool">
|
|
|
|
+ <div align="center">
|
|
|
|
+ <input type="button" value="Edit Mode : Disabled" class="editModeButton" />
|
|
|
|
+ </div>
|
|
<div class="description">
|
|
<div class="description">
|
|
<i>Double Left Click</i> : Add point on edge <br>
|
|
<i>Double Left Click</i> : Add point on edge <br>
|
|
<i>Shift + Left Click</i> : Delete selected point <br>
|
|
<i>Shift + Left Click</i> : Delete selected point <br>
|
|
@@ -537,6 +549,14 @@ class PolygonEditor {
|
|
</div>
|
|
</div>
|
|
</div>');
|
|
</div>');
|
|
|
|
|
|
|
|
+ var editModeButton = props.find(".editModeButton");
|
|
|
|
+ editModeButton.click(function(_) {
|
|
|
|
+ editMode = !editMode;
|
|
|
|
+ editModeButton.val(editMode ? "Edit Mode : Enabled" : "Edit Mode : Disabled");
|
|
|
|
+ editModeButton.toggleClass("editModeEnabled", editMode);
|
|
|
|
+ setSelected(getContext(), true);
|
|
|
|
+ });
|
|
|
|
+
|
|
props.find(".reset").click(function(_) {
|
|
props.find(".reset").click(function(_) {
|
|
var prevList = copyArray(polygonPrefab.points.points);
|
|
var prevList = copyArray(polygonPrefab.points.points);
|
|
polygonPrefab.points.points.splice(0, polygonPrefab.points.points.length);
|
|
polygonPrefab.points.points.splice(0, polygonPrefab.points.points.length);
|
|
@@ -603,7 +623,7 @@ class PolygonEditor {
|
|
v.append('</div>');
|
|
v.append('</div>');
|
|
container.append(v);
|
|
container.append(v);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
if(polygonPrefab.points != null) {
|
|
if(polygonPrefab.points != null) {
|
|
for(p in polygonPrefab.points){
|
|
for(p in polygonPrefab.points){
|
|
createVector(p);
|
|
createVector(p);
|