This commit is contained in:
Troispoils 2024-03-03 20:07:40 +01:00
parent 443b3a319d
commit af9c782c1e
3 changed files with 19 additions and 39 deletions

View file

@ -41,18 +41,18 @@ namespace LandblockExtraction.LandBlockExtractor {
var indice = y * BlockSize + x;
blockStruct.verticesStruct.position[indice] = GenerateVertexPosition(landX, landY, x, y, blockData.heights[indice]);
blockStruct.indices = indiceBase;
//blockStruct.verticesStruct.color[indice] = GenerateVertexColor(blockData.cellInfos[indice]);
//blockStruct.verticesStruct.farcolor[indice] = GenerateVertexFarColor(blockData.cellInfos[indice]);
blockStruct.verticesStruct.color[indice] = GenerateVertexColor(blockData.cellInfos[indice]);
blockStruct.verticesStruct.farcolor[indice] = GenerateVertexFarColor(blockData.cellInfos[indice]);
blockStruct.verticesStruct.terraintype[indice] = GenerateVertexTerrainType(blockData.cellInfos[indice]);
}
}
GenerateBasicNormalandRighTexture(blockStruct);
GenerateBasicNormal(blockStruct);
DoubleEdgeVertices(blockStruct);
return blockStruct;
}
private void GenerateBasicNormalandRighTexture(BlockStruct blockStruct) {
private void GenerateBasicNormal(BlockStruct blockStruct) {
for (int i = 0; i < blockStruct.indices.Length; i += 6) {
int index1 = blockStruct.indices[i];
int index2 = blockStruct.indices[i + 1];
@ -66,25 +66,12 @@ namespace LandblockExtraction.LandBlockExtractor {
var normal = MathOperations.CalculateQuadNormal(vertex1, vertex2, vertex3, vertex4);
var sub1 = terrainAtlasManager.terrains[(int)blockStruct.verticesStruct.terraintype[index1].X].DetermineSubTerrain(1 - normal.Y);
var sub2 = terrainAtlasManager.terrains[(int)blockStruct.verticesStruct.terraintype[index2].X].DetermineSubTerrain(1 - normal.Y);
var sub3 = terrainAtlasManager.terrains[(int)blockStruct.verticesStruct.terraintype[index3].X].DetermineSubTerrain(1 - normal.Y);
var sub4 = terrainAtlasManager.terrains[(int)blockStruct.verticesStruct.terraintype[index4].X].DetermineSubTerrain(1 - normal.Y);
InitColorFarColorTerrain(index1, sub1, blockStruct);
InitColorFarColorTerrain(index2, sub2, blockStruct);
InitColorFarColorTerrain(index3, sub3, blockStruct);
InitColorFarColorTerrain(index4, sub4, blockStruct);
blockStruct.verticesStruct.normal[index1] = normal;
blockStruct.verticesStruct.normal[index2] = normal;
blockStruct.verticesStruct.normal[index3] = normal;
blockStruct.verticesStruct.normal[index4] = normal;
}
}
private void InitColorFarColorTerrain(int index, SubTerrain terrain, BlockStruct blockStruct) {
blockStruct.verticesStruct.terraintype[index].X = terrain.terrainIndex;
blockStruct.verticesStruct.color[index] = terrain.Color;
blockStruct.verticesStruct.farcolor[index] = terrain.farColor;
}
private int[] GenerateBasicIndices() {
List<int> indices = new List<int>();
@ -170,48 +157,42 @@ namespace LandblockExtraction.LandBlockExtractor {
var one = blockStruct.indices[i + 0];
var two = blockStruct.indices[i + 1];
var three = blockStruct.indices[i + 2];
var foor = blockStruct.indices[i + 5];
var four = blockStruct.indices[i + 5];
Vector4 terrainType = new Vector4(blockStruct.verticesStruct.terraintype[one].X,
blockStruct.verticesStruct.terraintype[two].X,
blockStruct.verticesStruct.terraintype[three].X,
blockStruct.verticesStruct.terraintype[foor].X);
blockStruct.verticesStruct.terraintype[four].X);
newPositions.Add(blockStruct.verticesStruct.position[one]);
newColors.Add(blockStruct.verticesStruct.color[one]);
newFarColors.Add(blockStruct.verticesStruct.farcolor[one]);
newNormals.Add(blockStruct.verticesStruct.normal[one]);
newTerrainTypes.Add(terrainType);
newPositions.Add(blockStruct.verticesStruct.position[two]);
newColors.Add(blockStruct.verticesStruct.color[two]);
newFarColors.Add(blockStruct.verticesStruct.farcolor[two]);
newNormals.Add(blockStruct.verticesStruct.normal[two]);
newTerrainTypes.Add(terrainType);
newPositions.Add(blockStruct.verticesStruct.position[three]);
newColors.Add(blockStruct.verticesStruct.color[three]);
newFarColors.Add(blockStruct.verticesStruct.farcolor[three]);
newNormals.Add(blockStruct.verticesStruct.normal[three]);
newTerrainTypes.Add(terrainType);
newPositions.Add(blockStruct.verticesStruct.position[foor]);
newColors.Add(blockStruct.verticesStruct.color[foor]);
newFarColors.Add(blockStruct.verticesStruct.farcolor[foor]);
newPositions.Add(blockStruct.verticesStruct.position[four]);
newColors.Add(blockStruct.verticesStruct.color[four]);
newFarColors.Add(blockStruct.verticesStruct.farcolor[four]);
newNormals.Add(blockStruct.verticesStruct.normal[four]);
newTerrainTypes.Add(terrainType);
newTexCoord.Add(new(0, 0));
newTexCoord.Add(new(0, 1));
newTexCoord.Add(new(1, 0));
newTexCoord.Add(new(1, 1));
var normal = MathOperations.CalculateQuadNormal(blockStruct.verticesStruct.position[one],
blockStruct.verticesStruct.position[two],
blockStruct.verticesStruct.position[three],
blockStruct.verticesStruct.position[foor]);
newNormals.Add(normal);
newNormals.Add(normal);
newNormals.Add(normal);
newNormals.Add(normal);
}
// Ajouter les nouveaux sommets à la structure BlockStruct (étape 2)