Added icosphere generator
This commit is contained in:
@@ -9,6 +9,8 @@ import arc.util.*;
|
|||||||
import mindustry.graphics.PlanetGrid.*;
|
import mindustry.graphics.PlanetGrid.*;
|
||||||
|
|
||||||
public class PlanetMesh{
|
public class PlanetMesh{
|
||||||
|
private static final Vec3 v1 = new Vec3(), v2 = new Vec3(), v3 = new Vec3(), v4 = new Vec3();
|
||||||
|
|
||||||
private float[] floats = new float[3 + 3 + 1];
|
private float[] floats = new float[3 + 3 + 1];
|
||||||
private Vec3 vec = new Vec3();
|
private Vec3 vec = new Vec3();
|
||||||
private Mesh mesh;
|
private Mesh mesh;
|
||||||
@@ -68,11 +70,11 @@ public class PlanetMesh{
|
|||||||
shader.end();
|
shader.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void generateMesh(){
|
|
||||||
|
|
||||||
|
private void generateMesh(){
|
||||||
for(Ptile tile : grid.tiles){
|
for(Ptile tile : grid.tiles){
|
||||||
|
|
||||||
Vec3 nor = Tmp.v31.setZero();
|
Vec3 nor = v1.setZero();
|
||||||
Corner[] c = tile.corners;
|
Corner[] c = tile.corners;
|
||||||
|
|
||||||
for(Corner corner : c){
|
for(Corner corner : c){
|
||||||
@@ -117,6 +119,21 @@ public class PlanetMesh{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//unused, but functional
|
||||||
|
private void createIcosphere(){
|
||||||
|
MeshResult result = Icosphere.create(5);
|
||||||
|
for(int i = 0; i < result.indices.size; i+= 3){
|
||||||
|
v1.set(result.vertices.items, result.indices.items[i] * 3).setLength(radius).setLength(radius + elevation(v1)*intensity);
|
||||||
|
v2.set(result.vertices.items, result.indices.items[i + 1] * 3).setLength(radius).setLength(radius + elevation(v2)*intensity);
|
||||||
|
v3.set(result.vertices.items, result.indices.items[i + 2] * 3).setLength(radius).setLength(radius + elevation(v3)*intensity);
|
||||||
|
|
||||||
|
verts(v1, v3, v2,
|
||||||
|
normal(v1, v2, v3).scl(-1f),
|
||||||
|
color(v4.set(v1).add(v2).add(v3).scl(1f / 3f))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Vec3 normal(Vec3 v1, Vec3 v2, Vec3 v3){
|
private Vec3 normal(Vec3 v1, Vec3 v2, Vec3 v3){
|
||||||
return Tmp.v32.set(v2).sub(v1).crs(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z).nor();
|
return Tmp.v32.set(v2).sub(v1).crs(v3.x - v1.x, v3.y - v1.y, v3.z - v1.z).nor();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user