private void UpdateNeighbourData(SgtTerrainFace face, ref SgtTerrainNeighbour neighbour) { if (face.Split == true) { var childC = face.GetChild(neighbour.C); var childD = face.GetChild(neighbour.D); childC.BuildIndices(); childD.BuildIndices(); UpdateNeighbourData(childC, ref neighbour); UpdateNeighbourData(childD, ref neighbour); } }
private void UnlinkNeighbours(ref SgtTerrainNeighbour childNeighbour) { if (childNeighbour.Face.Split == true) { var childC = childNeighbour.Face.GetChild(childNeighbour.C); var childD = childNeighbour.Face.GetChild(childNeighbour.D); childC.SetNeighbour(childNeighbour.O, this); childD.SetNeighbour(childNeighbour.O, this); childC.BuildIndices(); childD.BuildIndices(); } }
private void LinkNeighbours(SgtTerrainFace childA, SgtTerrainFace childB, ref SgtTerrainNeighbour childNeighbourA, ref SgtTerrainNeighbour childNeighbourB, ref SgtTerrainNeighbour neighbour) { if (neighbour.Face.Split == true) { var neighbourChildC = neighbour.Face.GetChild(neighbour.C); var neighbourChildD = neighbour.Face.GetChild(neighbour.D); neighbourChildC.SetNeighbour(neighbour.O, childA); neighbourChildD.SetNeighbour(neighbour.O, childB); childNeighbourA.Set(neighbourChildC, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z); childNeighbourB.Set(neighbourChildD, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z); } else { childNeighbourA.Set(neighbour.Face, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z); childNeighbourB.Set(neighbour.Face, neighbour.I, neighbour.A, neighbour.B, neighbour.O, neighbour.C, neighbour.D, neighbour.Z); } }