Exemple #1
0
        public VoxelAddress[] GetAllNeighbors(VoxelAddress This)
        {
            int num = 0;

            VoxelAddress[] voxelAddressArray = new VoxelAddress[26];
            int            num1 = -1;

            do
            {
                int num2 = -1;
                do
                {
                    int num3 = -1;
                    do
                    {
                        if (num1 == 0 & num2 == 0 & num3 == 0)
                        {
                            VoxelAddress @this = This + VoxelAddress.Create(num3, num2, num1);
                            voxelAddressArray[num] = @this;
                            num = checked (num + 1);
                        }
                        num3 = checked (num3 + 1);
                    }while (num3 <= 1);
                    num2 = checked (num2 + 1);
                }while (num2 <= 1);
                num1 = checked (num1 + 1);
            }while (num1 <= 1);
            return(voxelAddressArray);
        }
Exemple #2
0
 public T this[int X, int Y, int Z] {
     get {
         T t;
         T t1 = default(T);
         t = (!this._dict.TryGetValue(VoxelAddress.Create(X, Y, Z), out t1) ? default(T) : t1);
         return(t);
     }
 }
Exemple #3
0
 public T this[VoxelAddress This] {
     get {
         T t;
         T t1 = default(T);
         t = (!this._dict.TryGetValue(This, out t1) ? default(T) : t1);
         return(t);
     }
     set {
         this._dict[This] = value;
     }
 }
Exemple #4
0
        public Mesh CreateMesh()
        {
            Mesh polyMesh  = new Mesh();
            Mesh polyMesh1 = new Mesh();

            polyMesh1.Vertices.Add(new Point3d(0, 0, 0));
            polyMesh1.Vertices.Add(new Point3d(1, 0, 0));
            polyMesh1.Vertices.Add(new Point3d(1, 1, 0));
            polyMesh1.Vertices.Add(new Point3d(0, 1, 0));
            polyMesh1.Vertices.Add(new Point3d(0, 0, 1));
            polyMesh1.Vertices.Add(new Point3d(1, 0, 1));
            polyMesh1.Vertices.Add(new Point3d(1, 1, 1));
            polyMesh1.Vertices.Add(new Point3d(0, 1, 1));

            MeshFace[] polyFace = new MeshFace[] {
                new MeshFace(0, 3, 2, 1),
                new MeshFace(4, 0, 1, 5),
                new MeshFace(7, 3, 0, 4),
                new MeshFace(1, 2, 6, 5),
                new MeshFace(2, 3, 7, 6),
                new MeshFace(6, 7, 4, 5)
            };


            for (int i = 0; i < this.Count; i++)
            {
                VoxelAddress item      = this._dict.Keys[i];
                Mesh         polyMesh2 = polyMesh1.DuplicateMesh();
                polyMesh2.Transform(Transform.Translation(new Vector3d((double)item.X, (double)item.Y, (double)item.Z)));

                VoxelAddress[] faceNeighbors = this.GetFaceNeighbors(item);
                bool[]         flagArray     = new bool[faceNeighbors.Length];
                this.CollectValues(faceNeighbors, ref flagArray);


                for (int j = 0; j < faceNeighbors.Length; j++)
                {
                    if (!flagArray[j])
                    {
                        polyMesh2.Faces.AddFace(polyFace[j]);
                    }
                }

                polyMesh.Append(polyMesh2);
            }//for i


            return(polyMesh);
        }
Exemple #5
0
        public VoxelAddress[] GetFaceNeighbors(VoxelAddress This)
        {
            int num = 2;

            VoxelAddress[] voxelAddressArray = new VoxelAddress[6];
            int            num1 = -1;

            do
            {
                VoxelAddress @this = This + VoxelAddress.Create(num1, 0, 0);
                voxelAddressArray[num] = @this;
                num  = checked (num + 1);
                num1 = checked (num1 + 2);
            }while (num1 <= 1);
            num = 1;
            int num2 = -1;

            do
            {
                VoxelAddress voxelAddress = This + VoxelAddress.Create(0, num2, 0);
                voxelAddressArray[num] = voxelAddress;
                num  = checked (num + 3);
                num2 = checked (num2 + 2);
            }while (num2 <= 1);
            num = 0;
            int num3 = -1;

            do
            {
                VoxelAddress this1 = This + VoxelAddress.Create(0, 0, num3);
                voxelAddressArray[num] = this1;
                num  = checked (num + 5);
                num3 = checked (num3 + 2);
            }while (num3 <= 1);
            return(voxelAddressArray);
        }
Exemple #6
0
 public void Add(T Value, VoxelAddress At)
 {
     this[At] = Value;
 }
Exemple #7
0
 public void RemoveAt(VoxelAddress This)
 {
     this._dict.Remove(This);
 }
Exemple #8
0
 public bool Contains(VoxelAddress This)
 {
     return(this._dict.ContainsKey(This));
 }