Advertisement
drennen

Untitled

Sep 26th, 2023
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. private async Task<Node> Generate(int x, int y)
  2. {
  3. var mi = new MeshInstance3D();
  4. var planeMesh = new PlaneMesh();
  5. planeMesh.Size = chunkSize;
  6. planeMesh.SubdivideDepth = Mathf.FloorToInt(planeMesh.Size.X / 2f);
  7. planeMesh.SubdivideWidth = Mathf.FloorToInt(planeMesh.Size.Y / 2f);
  8.  
  9.  
  10. mi.Name = "GeneratedMesh";
  11. mi.Position = new Vector3(x * planeMesh.Size.X, 5, y * planeMesh.Size.Y);
  12. Material mat = ResourceLoader.Load<Material>("res://Floor.tres");
  13.  
  14.  
  15. var mesh = new ArrayMesh();
  16. mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, planeMesh.GetMeshArrays());
  17.  
  18. MeshDataTool mdt = new MeshDataTool();
  19. mdt.CreateFromSurface(mesh, 0);
  20.  
  21.  
  22.  
  23. for (int i = 0; i < mdt.GetVertexCount(); i++)
  24. {
  25. Vector3 vert = mdt.GetVertex(i);
  26. Vector3 absv = new Vector3(Math.Abs(vert.X), Math.Abs(vert.Y), Math.Abs(vert.Z));
  27.  
  28. // Vector3 globalVert = ToGlobal(vert);
  29.  
  30. if (i == 0 || i == mdt.GetVertexCount() - 1)
  31. {
  32. // GD.Print($"vert: {absv}");
  33. }
  34.  
  35. float r = noise.GetNoise3Dv(absv) * noise1Mag;
  36. float r2 = noise2.GetNoise3Dv(absv) * noise2Mag;
  37. float r3 = noise3.GetNoise3Dv(absv) * noise3Mag;
  38. float r4 = noise4.GetNoise3Dv(absv) * noise4Mag;
  39. float r5 = noise4.GetNoise3Dv(absv) * noise5Mag;
  40.  
  41. vert.Y = r + r2 + r3 + r4 + r5;
  42.  
  43. mdt.SetVertex(i, vert);
  44. }
  45.  
  46. mesh.ClearSurfaces();
  47. mdt.CommitToSurface(mesh);
  48. mi.Mesh = mesh;
  49. mi.Mesh.SurfaceSetMaterial(0, mat);
  50.  
  51. Node3D geometryNode = new Node3D();
  52. geometryNode.AddChild(mi);
  53. mi.CreateTrimeshCollision();
  54.  
  55.  
  56. GetNode("/root/Level").AddChild(geometryNode);
  57.  
  58.  
  59. // CollisionShape3D collisionShape3D = new CollisionShape3D();
  60. // StaticBody3D staticBody3D = new StaticBody3D();
  61. // Shape3D shape = planeMesh;
  62. // staticBody3D.ShapeOwnerAddShape(0, planeMesh);
  63.  
  64.  
  65. // geometryNode.AddChild(collisionShape3D);
  66.  
  67. await Task.Yield();
  68. // collisionShape3D.MakeConvexFromSiblings();
  69. meshes.Add(mesh);
  70.  
  71.  
  72. return mi;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement