From 3e61fb3eb8a7022d0272a30904f0e5774b4a8d9a Mon Sep 17 00:00:00 2001 From: uc-hoba Date: Tue, 11 Feb 2025 11:05:36 +0800 Subject: [PATCH] fix: build error --- Assets/Scripts/{ => Editor}/GeodesicMesh.cs | 44 +++++++----- .../Scripts/{ => Editor}/GeodesicMesh.cs.meta | 0 .../Scripts/{ => Editor}/GoldbergBuilder.cs | 67 +------------------ .../{ => Editor}/GoldbergBuilder.cs.meta | 0 Assets/Scripts/{ => Editor}/IsoVector.cs | 0 Assets/Scripts/{ => Editor}/IsoVector.cs.meta | 0 6 files changed, 31 insertions(+), 80 deletions(-) rename Assets/Scripts/{ => Editor}/GeodesicMesh.cs (96%) rename Assets/Scripts/{ => Editor}/GeodesicMesh.cs.meta (100%) rename Assets/Scripts/{ => Editor}/GoldbergBuilder.cs (57%) rename Assets/Scripts/{ => Editor}/GoldbergBuilder.cs.meta (100%) rename Assets/Scripts/{ => Editor}/IsoVector.cs (100%) rename Assets/Scripts/{ => Editor}/IsoVector.cs.meta (100%) diff --git a/Assets/Scripts/GeodesicMesh.cs b/Assets/Scripts/Editor/GeodesicMesh.cs similarity index 96% rename from Assets/Scripts/GeodesicMesh.cs rename to Assets/Scripts/Editor/GeodesicMesh.cs index afe1ce4..773b2f0 100644 --- a/Assets/Scripts/GeodesicMesh.cs +++ b/Assets/Scripts/Editor/GeodesicMesh.cs @@ -15,7 +15,7 @@ namespace Metamesh public List min = new List(); public Dictionary vecToidx = new Dictionary(); public Dictionary> vertByDist = new Dictionary>(); - public List> closestTo = new List>(); + public Dictionary> closestTo = new Dictionary>(); public List> innerFacets = new List>(); public List> isoVecsABOB = new List>(); @@ -116,7 +116,7 @@ namespace Metamesh string isoId; string isoIdR; - var closestTo = new List>(); + var closestTo = new Dictionary>(); var vDist = this.vertByDist; System.Action matchIdx = (f, fr, isoId, isoIdR) => @@ -429,7 +429,7 @@ namespace Metamesh var x = OA * this.coau + OB * this.cobu; var y = OA * this.coav + OB * this.cobv; - var mapped = new List>(); + var mapped = new Dictionary>(); string idx; for (var i = 0; i < this.cartesian.Count; i++) @@ -501,13 +501,8 @@ namespace Metamesh return a.y - b.y; }); - var min = new List { m + n + 1 }; - var max = new List { m + n + 1 }; - for (var i = 0; i < min.Count; i++) - { - min[i] = int.MaxValue; - max[i] = int.MinValue; - } + var min = Enumerable.Repeat(int.MaxValue, m + n + 1).ToList(); + var max = Enumerable.Repeat(int.MinValue, m + n + 1).ToList(); var y = 0; var x = 0; @@ -540,10 +535,10 @@ namespace Metamesh return v.x + v.y; }; - var cartesian = new List(); - var distFromO = new List(); - var distFromA = new List(); - var distFromB = new List(); + var cartesian = Enumerable.Repeat(Vector3.zero, len).ToList(); + var distFromO = Enumerable.Repeat(0, len).ToArray(); + var distFromA = Enumerable.Repeat(0, len).ToArray(); + var distFromB = Enumerable.Repeat(0, len).ToArray(); var vertByDist = new Dictionary>(); ; var vertData = new List>(); @@ -897,7 +892,15 @@ namespace Metamesh this.adjacentFaces = new List>(); for (var m = 0; m < map.Length; m++) { - goldbergPolyhedronData.face[m] = this.SetOrder(m, new List(map[m])); + var tempFace = this.SetOrder(m, new List(map[m])); + if (goldbergPolyhedronData.face.Count <= m) + { + goldbergPolyhedronData.face.Add(tempFace); + } + else + { + goldbergPolyhedronData.face[m] = tempFace; + } foreach (var el in map[m]) { cx = 0; @@ -911,7 +914,16 @@ namespace Metamesh cy += vertex[1]; cz += vertex[2]; } - goldbergPolyhedronData.vertex[el] = new Vector3(cx / 3, cy / 3, cz / 3); + + var tempVertex = new Vector3(cx / 3, cy / 3, cz / 3); + if (goldbergPolyhedronData.vertex.Count <= el) + { + goldbergPolyhedronData.vertex.Add(tempVertex); + } + else + { + goldbergPolyhedronData.vertex[el] = tempVertex; + } } ; } diff --git a/Assets/Scripts/GeodesicMesh.cs.meta b/Assets/Scripts/Editor/GeodesicMesh.cs.meta similarity index 100% rename from Assets/Scripts/GeodesicMesh.cs.meta rename to Assets/Scripts/Editor/GeodesicMesh.cs.meta diff --git a/Assets/Scripts/GoldbergBuilder.cs b/Assets/Scripts/Editor/GoldbergBuilder.cs similarity index 57% rename from Assets/Scripts/GoldbergBuilder.cs rename to Assets/Scripts/Editor/GoldbergBuilder.cs index 587df97..ed1430b 100644 --- a/Assets/Scripts/GoldbergBuilder.cs +++ b/Assets/Scripts/Editor/GoldbergBuilder.cs @@ -73,20 +73,11 @@ namespace Metamesh } for (var v = 0; v < verts.Count - 2; v++) { - indices.AddRange(new int[] { index, index + v + 2, index + v + 1 }); + indices.AddRange(new int[] { index, index + v + 1, index + v + 2 }); } index += verts.Count; } - /* - VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs); - - const vertexData = new VertexData(); - vertexData.positions = positions; - vertexData.indices = indices; - vertexData.normals = normals; - vertexData.uvs = uvs; - return vertexData; - */ + return new VertexData() { vertices = positions, @@ -96,15 +87,6 @@ namespace Metamesh }; } - /** - * Creates the Mesh for a Goldberg Polyhedron which is made from 12 pentagonal and the rest hexagonal faces - * @see https://en.wikipedia.org/wiki/Goldberg_polyhedron - * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/polyhedra/goldberg_poly - * @param name defines the name of the mesh - * @param options an object used to set the following optional parameters for the polyhedron, required but can be empty - * @param scene defines the hosting scene - * @returns Goldberg mesh - */ public VertexData CreateGoldberg(GoldbergCreationOption options) { var size = options.size; @@ -115,9 +97,7 @@ namespace Metamesh var n = options.n;// || 0; if (n > m) { - var temp = n; - n = m; - m = temp; + (n, m) = (m, n); Debug.LogWarning("n > m therefore m and n swapped"); } var primTri = new PrimaryIsoTriangle(); @@ -125,49 +105,8 @@ namespace Metamesh var geodesicData = GeodesicData.BuildGeodesicData(primTri); var goldbergData = geodesicData.ToGoldbergPolyhedronData(); - //var goldberg = new Mesh(); - //goldberg.name = name; - var vertexData = CreateGoldbergVertexData(options, goldbergData); return vertexData; - - /* - vertexData.applyToMesh(goldberg, options.updatable); - - goldberg.goldbergData.nbSharedFaces = geodesicData.sharedNodes; - goldberg.goldbergData.nbUnsharedFaces = geodesicData.poleNodes; - goldberg.goldbergData.adjacentFaces = geodesicData.adjacentFaces; - goldberg.goldbergData.nbFaces = goldberg.goldbergData.nbSharedFaces + goldberg.goldbergData.nbUnsharedFaces; - goldberg.goldbergData.nbFacesAtPole = (goldberg.goldbergData.nbUnsharedFaces - 12) / 12; - - for (var f = 0; f < geodesicData.vertex.Count; f++) - { - - goldberg.goldbergData.faceCenters.push(Vector3.FromArray(geodesicData.vertex[f])); - goldberg.goldbergData.faceCenters[f].x *= sizeX; - goldberg.goldbergData.faceCenters[f].y *= sizeY; - goldberg.goldbergData.faceCenters[f].z *= sizeZ; - goldberg.goldbergData.faceColors.push(new Color4(1, 1, 1, 1)); - - } - - for (var f = 0; f < goldbergData.face.Count; f++) - { - var verts = goldbergData.face[f]; - var a = goldbergData.vertex[verts[0]]; - var b = goldbergData.vertex[verts[2]]; - var c = goldbergData.vertex[verts[1]]; - var ba = b - a; - var ca = c - a; - var norm = Vector3.Cross(ca, ba).normalized; - var z = Vector3.Cross(ca, norm).normalized; - //goldberg.goldbergData.faceXaxis.push(ca.normalize()); - //goldberg.goldbergData.faceYaxis.push(norm); - //goldberg.goldbergData.faceZaxis.push(z); - } - - return goldberg; - */ } } diff --git a/Assets/Scripts/GoldbergBuilder.cs.meta b/Assets/Scripts/Editor/GoldbergBuilder.cs.meta similarity index 100% rename from Assets/Scripts/GoldbergBuilder.cs.meta rename to Assets/Scripts/Editor/GoldbergBuilder.cs.meta diff --git a/Assets/Scripts/IsoVector.cs b/Assets/Scripts/Editor/IsoVector.cs similarity index 100% rename from Assets/Scripts/IsoVector.cs rename to Assets/Scripts/Editor/IsoVector.cs diff --git a/Assets/Scripts/IsoVector.cs.meta b/Assets/Scripts/Editor/IsoVector.cs.meta similarity index 100% rename from Assets/Scripts/IsoVector.cs.meta rename to Assets/Scripts/Editor/IsoVector.cs.meta