Extract mesh and occluder generation to methods
This commit is contained in:
parent
91bddd5c12
commit
5dceedeaf1
|
@ -191,15 +191,36 @@ public partial class Mission : Node3D
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
var cellNode = new Node3D();
|
||||
|
||||
var material = new StandardMaterial3D
|
||||
{
|
||||
AlbedoTexture = ImageTexture.CreateFromImage(image),
|
||||
TextureFilter = BaseMaterial3D.TextureFilterEnum.Nearest,
|
||||
};
|
||||
|
||||
MeshInstance3D mesh = GenerateMesh(vertices, normals, indices, lightmapUvs, material);
|
||||
OccluderInstance3D occluderInstance = GenerateOccluder(vertices, indices);
|
||||
|
||||
var cellNode = new Node3D();
|
||||
cellNode.AddChild(mesh);
|
||||
cellNode.AddChild(occluderInstance);
|
||||
|
||||
AddChild(cellNode);
|
||||
}
|
||||
|
||||
private static OccluderInstance3D GenerateOccluder(List<Vector3> vertices, List<int> indices)
|
||||
{
|
||||
var occluder = new ArrayOccluder3D();
|
||||
occluder.SetArrays(vertices.ToArray(), indices.ToArray());
|
||||
var occluderInstance = new OccluderInstance3D
|
||||
{
|
||||
Occluder = occluder,
|
||||
BakeSimplificationDistance = 0.0f
|
||||
};
|
||||
return occluderInstance;
|
||||
}
|
||||
|
||||
private static MeshInstance3D GenerateMesh(List<Vector3> vertices, List<Vector3> normals, List<int> indices, List<Vector2> lightmapUvs, StandardMaterial3D material)
|
||||
{
|
||||
var arrMesh = new ArrayMesh();
|
||||
var arrays = new Godot.Collections.Array();
|
||||
arrays.Resize((int)Mesh.ArrayType.Max);
|
||||
|
@ -216,18 +237,7 @@ public partial class Mission : Node3D
|
|||
Mesh = arrMesh,
|
||||
CastShadow = GeometryInstance3D.ShadowCastingSetting.On
|
||||
};
|
||||
cellNode.AddChild(meshInstance);
|
||||
|
||||
var occluder = new ArrayOccluder3D();
|
||||
occluder.SetArrays(vertices.ToArray(), indices.ToArray());
|
||||
var occluderInstance = new OccluderInstance3D
|
||||
{
|
||||
Occluder = occluder,
|
||||
BakeSimplificationDistance = 0.0f
|
||||
};
|
||||
cellNode.AddChild(occluderInstance);
|
||||
|
||||
AddChild(cellNode);
|
||||
return meshInstance;
|
||||
}
|
||||
|
||||
private static int[] CalcBaseUV(
|
||||
|
|
Loading…
Reference in New Issue