Partial refactor
This commit is contained in:
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -35,17 +35,17 @@ import javax.swing.JPanel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Chain;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshChainEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshPartitionEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Segment;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Vector2d;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Chain;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshChainEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshPartitionEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Segment;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Vector2d;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -11,16 +11,16 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Vector3d;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
|
||||
/**
|
||||
* Mesh speed test
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -19,12 +19,12 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -15,12 +15,12 @@ import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -34,17 +34,17 @@ import javax.swing.JPanel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Chain;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshChainEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshPartitionEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Segment;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Vector2d;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Chain;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshChainEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshPartitionEventHandler;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Segment;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Vector2d;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -11,12 +11,12 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
|
||||
|
||||
/**
|
||||
* Mesh speed test for polygons
|
||||
|
||||
2
core/algorithm/README.md
Normal file
2
core/algorithm/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# MC-Mesh Core Algorithm
|
||||
The fundamental standalone tesselation library
|
||||
25
core/algorithm/pom.xml
Normal file
25
core/algorithm/pom.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.14.1</version>
|
||||
<configuration>
|
||||
<release>8</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
/**
|
||||
* A half-edge class used to represent a DCEL(doubly connected edge list): https://en.wikipedia.org/wiki/Doubly_connected_edge_list
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
@@ -22,8 +22,8 @@ import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.Region;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.RegionRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.Region;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.RegionRule;
|
||||
|
||||
/**
|
||||
* A general mesh class containing polygons. Inspiration taken from: https://github.com/memononen/libtess2
|
||||
@@ -500,7 +500,7 @@ public class Mesh< T extends Region > {
|
||||
|
||||
if ( scannedVertices.contains( edge.getDest() ) ) {
|
||||
/*
|
||||
* Remove the half edge and it's sym if the destination
|
||||
* Remove the half edge and its sym if the destination
|
||||
* has already been removed, since it means that it is
|
||||
* no longer relevant.
|
||||
*
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
/**
|
||||
* A 2d Cartesian coordinate
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
/**
|
||||
* A line segment
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
/**
|
||||
* A basic 2d vector implementation.
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.region;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.region;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region;
|
||||
|
||||
/**
|
||||
* A continuous portion in space that can be clearly defined as "inside" or "outside".
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.region;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region;
|
||||
|
||||
/**
|
||||
* A region rule describes how a region is modified, particularly when crossing a border
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.CompositeRegionRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.RegionRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.CompositeRegionRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.RegionRule;
|
||||
|
||||
/**
|
||||
* A simple winding number rule.
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.Region;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.Region;
|
||||
|
||||
/**
|
||||
* A region with a winding number. The interior-ness of
|
||||
2
core/base/README.md
Normal file
2
core/base/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# MC-Mesh Core Base
|
||||
Contains some classes for constructing meshes from 3d data
|
||||
@@ -4,18 +4,18 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-master</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-base</artifactId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>provided</scope>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
|
||||
|
||||
public class Plane {
|
||||
public Vector3d normal;
|
||||
35
core/pom.xml
35
core/pom.xml
@@ -1,25 +1,18 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-master</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<version>0.0.1</version>
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-master</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.14.1</version>
|
||||
<configuration>
|
||||
<release>8</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<modules>
|
||||
<module>algorithm</module>
|
||||
<module>base</module>
|
||||
</modules>
|
||||
</project>
|
||||
3
plugin/environment/README.md
Normal file
3
plugin/environment/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# MC-Mesh Environment Plugin
|
||||
This plugin aims to provide a comprehensive physics enabled environment
|
||||
in Minecraft using BulletJME and the MC-Mesh core algorithm.
|
||||
84
plugin/environment/pom.xml
Normal file
84
plugin/environment/pom.xml
Normal file
@@ -0,0 +1,84 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-plugin</artifactId>
|
||||
<version>0.0.1</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-plugin-environment</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.21.10-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.stephengold</groupId>
|
||||
<artifactId>Minie</artifactId>
|
||||
<version>9.0.3+mt</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scijava</groupId>
|
||||
<artifactId>native-lib-loader</artifactId>
|
||||
<version>2.4.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core-algorithm</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core-base</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.14.1</version>
|
||||
<configuration>
|
||||
<release>21</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.5.0</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>com.aaaaahhhhhhh.bananapuncher714.minietest.MeshingTest6</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor.CommandExecutable;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor.CommandExecutable;
|
||||
|
||||
public class CommandOption {
|
||||
protected CommandExecutable exe;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
public class SplitCommand {
|
||||
protected String[] input;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -13,10 +13,10 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
import org.bukkit.util.StringUtil;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor.CommandExecutable;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidator;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorString;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender.SenderValidator;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor.CommandExecutable;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidator;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorString;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender.SenderValidator;
|
||||
|
||||
/**
|
||||
* A build and run command framework for automatic tab completions and easy branching.
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.CommandParameters;
|
||||
|
||||
public interface CommandExecutable {
|
||||
void execute( CommandSender sender, String[] args, CommandParameters params );
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.CommandParameters;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.CommandParameters;
|
||||
|
||||
public class CommandExecutableMessage implements CommandExecutable {
|
||||
protected String message;
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor;
|
||||
@@ -3,4 +3,4 @@
|
||||
*
|
||||
* @author BananaPuncher714
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util.FileUtil;
|
||||
|
||||
public class McMeshEnvironment extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
FileUtil.saveToFile( getResource( "native/windows/x86_64/bulletjme.dll" ), new File( getDataFolder() + "/lib", "bulletjme.dll" ), false );
|
||||
FileUtil.saveToFile( getResource( "native/osx/x86_64/libbulletjme.dylib" ), new File( getDataFolder() + "/lib", "libbulletjme.dylib" ), false );
|
||||
FileUtil.saveToFile( getResource( "native/linux/x86_64/libbulletjme.so" ), new File( getDataFolder() + "/lib", "libbulletjme.so" ), false );
|
||||
if ( !loadNativeLibraries() ) {
|
||||
getLogger().severe( "Unable to load Bullet JME native libraries! Disabling plugin" );
|
||||
Bukkit.getPluginManager().disablePlugin( this );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private final boolean loadNativeLibraries() {
|
||||
if ( SystemUtils.IS_OS_MAC ) {
|
||||
System.load( new File( getDataFolder() + "/lib", "libbulletjme.dylib" ).getAbsolutePath() );
|
||||
} else if ( SystemUtils.IS_OS_LINUX ) {
|
||||
System.load( new File( getDataFolder() + "/lib", "libbulletjme.so" ).getAbsolutePath() );
|
||||
} else if ( SystemUtils.IS_OS_WINDOWS ) {
|
||||
System.load( new File( getDataFolder() + "/lib", "bulletjme.dll" ).getAbsolutePath() );
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.util;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.util;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
@@ -18,7 +18,7 @@ import org.bukkit.plugin.SimplePluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.plugin.java.JavaPluginLoader;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.MiniePlugin;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.McMeshEnvironment;
|
||||
|
||||
public class BukkitUtil {
|
||||
private static Constructor< PluginCommand > PLUGINCOMMAND_CONSTRUCTOR;
|
||||
@@ -69,7 +69,7 @@ public class BukkitUtil {
|
||||
public static PluginCommand constructCommand( String id ) {
|
||||
PluginCommand command = null;
|
||||
try {
|
||||
command = PLUGINCOMMAND_CONSTRUCTOR.newInstance( id, JavaPlugin.getPlugin( MiniePlugin.class ) );
|
||||
command = PLUGINCOMMAND_CONSTRUCTOR.newInstance( id, JavaPlugin.getPlugin( McMeshEnvironment.class ) );
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
@@ -84,7 +84,7 @@ public class BukkitUtil {
|
||||
if ( Bukkit.getServer().isPrimaryThread() ) {
|
||||
Bukkit.getPluginManager().callEvent( event );
|
||||
} else {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask( JavaPlugin.getPlugin( MiniePlugin.class ), () -> { callEventSync( event ); } );
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask( JavaPlugin.getPlugin( McMeshEnvironment.class ), () -> { callEventSync( event ); } );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.util;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.util;
|
||||
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -63,12 +63,12 @@ import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.CommandParameters;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.SubCommand;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor.CommandExecutableMessage;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorDouble;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorInt;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender.SenderValidatorPlayer;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.CommandParameters;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.SubCommand;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor.CommandExecutableMessage;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorDouble;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorInt;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender.SenderValidatorPlayer;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.BlockDataType;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkLocation;
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkMesh;
|
||||
@@ -1,7 +1,7 @@
|
||||
name: MinieTest
|
||||
name: MC-Mesh-Environment
|
||||
main: com.aaaaahhhhhhh.bananapuncher714.minietest.MiniePlugin
|
||||
version: 0.0.1
|
||||
description: Minecraft with Minie
|
||||
description: BulletJME and MC-Mesh integration
|
||||
author: BananaPuncher714
|
||||
api-version: 1.13
|
||||
#libraries:
|
||||
@@ -1,78 +1,17 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-master</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-plugin</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-master</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</parent>
|
||||
<artifactId>mc-mesh-plugin</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.21.10-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.stephengold</groupId>
|
||||
<artifactId>Minie</artifactId>
|
||||
<version>9.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scijava</groupId>
|
||||
<artifactId>native-lib-loader</artifactId>
|
||||
<version>2.4.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
|
||||
<artifactId>mc-mesh-core</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.14.1</version>
|
||||
<configuration>
|
||||
<release>21</release>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.5.0</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<mainClass>com.aaaaahhhhhhh.bananapuncher714.minietest.MeshingTest6</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<modules>
|
||||
<!-- <module>environment</module> -->
|
||||
</modules>
|
||||
</project>
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.CommandParameters;
|
||||
|
||||
public interface CommandExecutable {
|
||||
void execute( CommandSender sender, String[] args, CommandParameters params );
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor;
|
||||
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;
|
||||
@@ -1,8 +0,0 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author BananaPuncher714
|
||||
*
|
||||
*/
|
||||
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;
|
||||
@@ -1,67 +0,0 @@
|
||||
# Tess4j(name subject to change)
|
||||
## About
|
||||
Tess4j(name subject to change) is an all purpose 2d polygon tessellator inspired by the GLUTesselator and libtess2. This tessellator focuses around
|
||||
user defined rules for interior/exterior regions, and aims to be a robust algorithm with a focus on reducing triangle
|
||||
count while preserving the original shapes.
|
||||
|
||||
Since it _is_ written in java, speed is not the main priority. Rather, this aims to serve as an easy to understand
|
||||
and easy to modify library for anyone interested in adding improvements.
|
||||
|
||||
## Restrictions
|
||||
Tess4j(name subject to change) accepts one or more polygons. Polygons are defined as a collection of one or more 2d points
|
||||
that form a loop. Steiner points are not (currently)supported. There may be some rounding errors for especially for very large
|
||||
and small points, but this library aims for consistency, with a small tolerance for adjustments.
|
||||
|
||||
## Algorithm
|
||||
This library utilizes a very basic single sweep monotone partitioning algorithm, then greedily creates triangle fans and strips.
|
||||
Additional monotone regions may be broken down into smaller regions if doing so would decrease the overall amount of triangles.
|
||||
|
||||
### Invariants
|
||||
Tess4j(name subject to change) assumes no responsibility or liability for any errors or omissions in the execution of this program.
|
||||
The output returned by this program is provided on an "as is" basis with no guarantees of completeness, accuracy, usefulness or timeliness.
|
||||
That said, here are a list of invariants that _should_ be upheld:
|
||||
- Any vertex created during the tessellation will be greater than the current event vertex
|
||||
|
||||
### The actual algorithm
|
||||
Tess4j(name subject to change) begins by accepting a list of one or more polygons. The polygons are split into collections of connected
|
||||
half-edges and vertices. The vertices are then added to a priority queue where they are sorted from left to right(-x to x),
|
||||
bottom to top(-y to y) order.
|
||||
|
||||
Once all polygons have been inserted and processed, sweeping of the vertices begins. The lowest unique vertex is extracted from
|
||||
the priority queue. Any subsequent vertices with the same coordinates are merged together, and any new vertices created during the
|
||||
sweep event are guaranteed to be greater than the current vertex.
|
||||
|
||||
Sweep over each vertex and mark which ones are an interior non-monotone vertex. Process all left going edges, and mark the faces attached
|
||||
as interior/exterior. Register all right going edges. Split any intersections into new vertices and edges, and add the vertices to the
|
||||
event queue.
|
||||
|
||||
**TODO**
|
||||
Now that each face has been fully completed... reduce the amount of vertices before adding in additional edges for monotone regions.
|
||||
To do this, get all colinear edges that share the same face, and does not intersect with any other edges???
|
||||
Loop through each edge and keep it in the list until it would intersect with another edge, and mark which edges/vertices it is
|
||||
colinear with, as well as any potential new edges it might collide with. Solve which combination of edges would reduce
|
||||
vertex count by the greatest amount. 2 vertices if connecting to an edge, 1 vertex if connecting to a vertex. Traveling salesman problem?
|
||||
When checking for intersections with other support edges, only need to check all active potential aux edges... Consolidate colinears
|
||||
|
||||
For each edge of a face, advance around the face until it intersects with an edge or vertex. Advance backwards as well, checking ONLY vertex intersections.
|
||||
This will capture all possible conlinear reductions as new edges.
|
||||
|
||||
How to determine which combination can reduce the total amount of vertices? Build clusters of intersecting vertices,
|
||||
|
||||
After all vertex reduction edges have been added, get all faces and calculate the upper and lower sweep edge of
|
||||
each vertex of each face for monotone partitioning.
|
||||
|
||||
When processing the marked vertices to form monotone regions, some data must be stored for each point so
|
||||
that a valid point with which to connect can be located afterwards:
|
||||
- The immediate upper and lower edge of the vertex when it is being swept.
|
||||
This allows the forward/backward monotone connecting to consistently find a valid point. When checking for valid points:
|
||||
- The point must be less/greater than the current point if iterating forwards/backwards, respectively.
|
||||
- The point must fulfill at least one of the following conditions:
|
||||
- It shares the same upper edge
|
||||
- It is part of the upper edge
|
||||
- It shares the same lower edge
|
||||
- It is part of the lower edge
|
||||
Once a marked vertex has been connected, either by finding another valid vertex, or by being connected to from a marked
|
||||
vertex, it can be unmarked and removed from the queue of marked vertices.
|
||||
|
||||
Now that each face is a monotone region, split it into triangle fans and strips.
|
||||
Reference in New Issue
Block a user