Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }