Partial refactor

This commit is contained in:
2026-03-16 18:35:19 -04:00
parent 14b1647c47
commit 95e374682b
93 changed files with 345 additions and 331 deletions

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -8,7 +8,7 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -35,17 +35,17 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Chain; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Chain;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshChainEventHandler; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshChainEventHandler;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshPartitionEventHandler; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshPartitionEventHandler;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Segment; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Segment;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Vector2d; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Vector2d;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -11,16 +11,16 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
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.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Vector3d; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Vector3d;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
/** /**
* Mesh speed test * Mesh speed test

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -19,12 +19,12 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -15,12 +15,12 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -34,17 +34,17 @@ import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Chain; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Chain;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshChainEventHandler; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshChainEventHandler;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh.MeshPartitionEventHandler; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh.MeshPartitionEventHandler;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Segment; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Segment;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Vector2d; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Vector2d;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Facet;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.MeshBuilder;
import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane; import com.aaaaahhhhhhh.bananapuncher714.mesh.base.Plane;

View File

@@ -13,13 +13,13 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>

View File

@@ -11,12 +11,12 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Mesh; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Mesh;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionRuleWinding; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.simple.RegionSimple.GluWindingRule;
/** /**
* Mesh speed test for polygons * Mesh speed test for polygons

2
core/algorithm/README.md Normal file
View File

@@ -0,0 +1,2 @@
# MC-Mesh Core Algorithm
The fundamental standalone tesselation library

25
core/algorithm/pom.xml Normal file
View 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>

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;

View File

@@ -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 * A half-edge class used to represent a DCEL(doubly connected edge list): https://en.wikipedia.org/wiki/Doubly_connected_edge_list

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.ArrayDeque; import java.util.ArrayDeque;
import java.util.ArrayList; import java.util.ArrayList;
@@ -22,8 +22,8 @@ import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.Region; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.Region;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.RegionRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.RegionRule;
/** /**
* A general mesh class containing polygons. Inspiration taken from: https://github.com/memononen/libtess2 * 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() ) ) { 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 * has already been removed, since it means that it is
* no longer relevant. * no longer relevant.
* *

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
/** /**
* A 2d Cartesian coordinate * A 2d Cartesian coordinate

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
/** /**
* A line segment * A line segment

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
/** /**
* A basic 2d vector implementation. * A basic 2d vector implementation.

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm;
import java.util.Iterator; import java.util.Iterator;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.mesh.region; package com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -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". * A continuous portion in space that can be clearly defined as "inside" or "outside".

View File

@@ -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 * A region rule describes how a region is modified, particularly when crossing a border

View File

@@ -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.algorithm.region.CompositeRegionRule;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.RegionRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.region.RegionRule;
/** /**
* A simple winding number rule. * A simple winding number rule.

View File

@@ -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 * A region with a winding number. The interior-ness of

2
core/base/README.md Normal file
View File

@@ -0,0 +1,2 @@
# MC-Mesh Core Base
Contains some classes for constructing meshes from 3d data

View File

@@ -4,18 +4,18 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-master</artifactId> <artifactId>mc-mesh-core</artifactId>
<version>1.0.0</version> <version>0.0.1</version>
</parent> </parent>
<artifactId>mc-mesh-base</artifactId> <artifactId>mc-mesh-core-base</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core-algorithm</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<scope>provided</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -5,8 +5,8 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Point; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Point;
import com.aaaaahhhhhhh.bananapuncher714.mesh.Polygon; import com.aaaaahhhhhhh.bananapuncher714.mesh.algorithm.Polygon;
public class Plane { public class Plane {
public Vector3d normal; public Vector3d normal;

View File

@@ -1,6 +1,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> 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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
@@ -9,17 +9,10 @@
</parent> </parent>
<artifactId>mc-mesh-core</artifactId> <artifactId>mc-mesh-core</artifactId>
<version>0.0.1</version> <version>0.0.1</version>
<packaging>pom</packaging>
<build> <modules>
<plugins> <module>algorithm</module>
<plugin> <module>base</module>
<groupId>org.apache.maven.plugins</groupId> </modules>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.14.1</version>
<configuration>
<release>8</release>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>

View 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.

View 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>

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;

View File

@@ -1,8 +1,8 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
import org.bukkit.command.CommandSender; 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 { public class CommandOption {
protected CommandExecutable exe; protected CommandExecutable exe;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
public class SplitCommand { public class SplitCommand {
protected String[] input; protected String[] input;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -13,10 +13,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.util.StringUtil; import org.bukkit.util.StringUtil;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor.CommandExecutable; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor.CommandExecutable;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidator; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidator;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorString; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorString;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender.SenderValidator; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender.SenderValidator;
/** /**
* A build and run command framework for automatic tab completions and easy branching. * A build and run command framework for automatic tab completions and easy branching.

View File

@@ -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 );
}

View File

@@ -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 org.bukkit.command.CommandSender;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.CommandParameters; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.CommandParameters;
public class CommandExecutableMessage implements CommandExecutable { public class CommandExecutableMessage implements CommandExecutable {
protected String message; protected String message;

View File

@@ -0,0 +1,8 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor;

View File

@@ -3,4 +3,4 @@
* *
* @author BananaPuncher714 * @author BananaPuncher714
*/ */
package com.aaaaahhhhhhh.bananapuncher714.minietest.command; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command;

View File

@@ -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.Collection;

View File

@@ -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.Collection;

View File

@@ -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.Collection;
import java.util.HashSet; import java.util.HashSet;

View File

@@ -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.ArrayList;
import java.util.Collection; import java.util.Collection;

View File

@@ -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.Collection;

View File

@@ -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.Collection;

View File

@@ -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.Collection;

View File

@@ -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.Collection;
import java.util.HashSet; import java.util.HashSet;

View File

@@ -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.Collection;
import java.util.HashSet; import java.util.HashSet;

View File

@@ -0,0 +1,8 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator;

View File

@@ -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.command.CommandSender;

View File

@@ -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.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@@ -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.HashSet;
import java.util.Set; import java.util.Set;

View File

@@ -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.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@@ -0,0 +1,8 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender;

View File

@@ -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;
}
}

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.util; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;

View File

@@ -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.Constructor;
import java.lang.reflect.Field; 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.JavaPlugin;
import org.bukkit.plugin.java.JavaPluginLoader; import org.bukkit.plugin.java.JavaPluginLoader;
import com.aaaaahhhhhhh.bananapuncher714.minietest.MiniePlugin; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.McMeshEnvironment;
public class BukkitUtil { public class BukkitUtil {
private static Constructor< PluginCommand > PLUGINCOMMAND_CONSTRUCTOR; private static Constructor< PluginCommand > PLUGINCOMMAND_CONSTRUCTOR;
@@ -69,7 +69,7 @@ public class BukkitUtil {
public static PluginCommand constructCommand( String id ) { public static PluginCommand constructCommand( String id ) {
PluginCommand command = null; PluginCommand command = null;
try { 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) { } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
@@ -84,7 +84,7 @@ public class BukkitUtil {
if ( Bukkit.getServer().isPrimaryThread() ) { if ( Bukkit.getServer().isPrimaryThread() ) {
Bukkit.getPluginManager().callEvent( event ); Bukkit.getPluginManager().callEvent( event );
} else { } else {
Bukkit.getScheduler().scheduleSyncDelayedTask( JavaPlugin.getPlugin( MiniePlugin.class ), () -> { callEventSync( event ); } ); Bukkit.getScheduler().scheduleSyncDelayedTask( JavaPlugin.getPlugin( McMeshEnvironment.class ), () -> { callEventSync( event ); } );
} }
} }

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.util; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;

View File

@@ -1,4 +1,4 @@
package com.aaaaahhhhhhh.bananapuncher714.minietest.util; package com.aaaaahhhhhhh.bananapuncher714.mesh.environment.util;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;

View File

@@ -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.RegionRuleWinding;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple; import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple;
import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule; import com.aaaaahhhhhhh.bananapuncher714.mesh.region.simple.RegionSimple.GluWindingRule;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.CommandParameters; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.CommandParameters;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.SubCommand; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.SubCommand;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor.CommandExecutableMessage; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.executor.CommandExecutableMessage;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorDouble; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorDouble;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.InputValidatorInt; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.InputValidatorInt;
import com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender.SenderValidatorPlayer; import com.aaaaahhhhhhh.bananapuncher714.mesh.environment.command.validator.sender.SenderValidatorPlayer;
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.BlockDataType; import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.BlockDataType;
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkLocation; import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkLocation;
import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkMesh; import com.aaaaahhhhhhh.bananapuncher714.minietest.objects.ChunkMesh;

View File

@@ -1,7 +1,7 @@
name: MinieTest name: MC-Mesh-Environment
main: com.aaaaahhhhhhh.bananapuncher714.minietest.MiniePlugin main: com.aaaaahhhhhhh.bananapuncher714.minietest.MiniePlugin
version: 0.0.1 version: 0.0.1
description: Minecraft with Minie description: BulletJME and MC-Mesh integration
author: BananaPuncher714 author: BananaPuncher714
api-version: 1.13 api-version: 1.13
#libraries: #libraries:

View File

@@ -1,6 +1,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> 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> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>com.aaaaahhhhhhh.bananapuncher714</groupId> <groupId>com.aaaaahhhhhhh.bananapuncher714</groupId>
@@ -8,71 +8,10 @@
<version>1.0.0</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>mc-mesh-plugin</artifactId> <artifactId>mc-mesh-plugin</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.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> <version>0.0.1</version>
<scope>compile</scope> <packaging>pom</packaging>
</dependency>
</dependencies>
<build> <modules>
<plugins> <!-- <module>environment</module> -->
<plugin> </modules>
<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> </project>

View File

@@ -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 );
}

View File

@@ -1,8 +0,0 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.executor;

View File

@@ -1,8 +0,0 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator;

View File

@@ -1,8 +0,0 @@
/**
*
*/
/**
* @author BananaPuncher714
*
*/
package com.aaaaahhhhhhh.bananapuncher714.minietest.command.validator.sender;

View File

@@ -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.

View File

@@ -9,9 +9,8 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<modules> <modules>
<!-- <module>plugin</module> --> <module>plugin</module>
<module>core</module> <module>core</module>
<module>base</module>
<module>application</module> <module>application</module>
</modules> </modules>