private bool IsFaceVisible(ECubeFace face) { float noise; if (NeighborNoiseValues.TryGetValue(face, out noise)) { string a = GetAlpha(noise).ToString(); string tabs = a.Length > 8 ? "\t" : a.Length > 4 ? "\t\t" : "\t\t\t"; //Debug.WriteLine($"{GetAlpha(noise)}{tabs}< 1 ? {(GetAlpha(noise) < 1)}"); return(GetAlpha(noise) < 1); } return(true); }
private void GenerateCubeFaces() { Faces = new Dictionary <ECubeFace, CubeFace>(); for (int i = 0; i < 6; i++) { ECubeFace face = (ECubeFace)i; Vector3 normal = new Vector3(0, 0, 0); Vector3 up = new Vector3(0, 0, 1); double distance = Bounds.X; switch (face) { case ECubeFace.Front: normal = new Vector3(0, 0, 1); up = new Vector3(0, 1, 0); distance = Bounds.Z; break; case ECubeFace.Back: normal = new Vector3(0, 0, -1); up = new Vector3(0, 1, 0); distance = Bounds.Z; break; case ECubeFace.Left: normal = new Vector3(-1, 0, 0); up = new Vector3(0, 1, 0); distance = Bounds.X; break; case ECubeFace.Right: normal = new Vector3(1, 0, 0); up = new Vector3(0, 1, 0); distance = Bounds.X; break; case ECubeFace.Top: normal = new Vector3(0, 1, 0); distance = Bounds.Y; break; case ECubeFace.Bottom: normal = new Vector3(0, -1, 0); distance = Bounds.Y; break; default: break; } CubeFace cubeFace = new CubeFace { CubeCenter = Coordinates, Normal = normal, Up = up, Distance = distance, Width = Bounds.X, Height = Bounds.Y, Visible = IsFaceVisible(face) }; Faces.Add(face, cubeFace); } }