Make MeshSurfaceData more generic

This commit is contained in:
Jarrod Doyle 2024-08-18 11:13:18 +01:00
parent 2db83a827e
commit 30db43eac8
Signed by: Jayrude
GPG Key ID: 38B57B16E7C0ADF7
2 changed files with 13 additions and 13 deletions

View File

@ -12,19 +12,19 @@ public class MeshSurfaceData
private readonly List<Vector3> _vertices = new();
private readonly List<Vector3> _normals = new();
private readonly List<int> _indices = new();
private readonly List<Vector2> _textureUvs = new();
private readonly List<Vector2> _lightmapUvs = new();
private readonly List<Vector2> _uv1s = new();
private readonly List<Vector2> _uv2s = new();
public MeshSurfaceData()
{
Empty = true;
}
public void TransformLightmapUvs(int start, int end, Func<Vector2, Vector2> f)
public void TransformUv2s(int start, int end, Func<Vector2, Vector2> f)
{
for (var i = start; i < end; i++)
{
_lightmapUvs[i] = f(_lightmapUvs[i]);
_uv2s[i] = f(_uv2s[i]);
}
}
@ -32,8 +32,8 @@ public class MeshSurfaceData
public (int, int) AddPolygon(
List<Vector3> vertices,
Vector3 normal,
List<Vector2> textureUvs,
List<Vector2> lightmapUvs)
List<Vector2> uv1s,
List<Vector2> uv2s)
{
Empty = false;
@ -54,11 +54,11 @@ public class MeshSurfaceData
_indices.Add(indexOffset + j + 1);
}
_textureUvs.AddRange(textureUvs);
_lightmapUvs.AddRange(lightmapUvs);
_uv1s.AddRange(uv1s);
_uv2s.AddRange(uv2s);
var end = _lightmapUvs.Count;
var start = end - lightmapUvs.Count;
var end = _uv2s.Count;
var start = end - uv2s.Count;
return (start, end);
}
@ -69,8 +69,8 @@ public class MeshSurfaceData
array[(int)Mesh.ArrayType.Vertex] = _vertices.ToArray();
array[(int)Mesh.ArrayType.Normal] = _normals.ToArray();
array[(int)Mesh.ArrayType.Index] = _indices.ToArray();
array[(int)Mesh.ArrayType.TexUV] = _textureUvs.ToArray();
array[(int)Mesh.ArrayType.TexUV2] = _lightmapUvs.ToArray();
array[(int)Mesh.ArrayType.TexUV] = _uv1s.ToArray();
array[(int)Mesh.ArrayType.TexUV2] = _uv2s.ToArray();
return array;
}

View File

@ -229,7 +229,7 @@ public partial class Mission : Node3D
}
if (!surfaceDataMap.ContainsKey(info.textureId)) GD.Print("Invalid SurfaceDataMap key");
surfaceDataMap[info.textureId].TransformLightmapUvs(info.uvStart, info.uvEnd, (uv) =>
surfaceDataMap[info.textureId].TransformUv2s(info.uvStart, info.uvEnd, (uv) =>
{
var u = uv.X;
var v = uv.Y;