Пример #1
0
        private static Voxel UpgradeVoxel(LegacyVoxelV1 legacyVoxelV1)
        {
            var voxel = new Voxel {
                Value = legacyVoxelV1.Value
            };

            var absAltered = Math.Abs(legacyVoxelV1.Altered);

            if (absAltered == 0)
            {
                voxel.Alteration = Voxel.Unaltered;
            }
            else if (absAltered == 1)
            {
                voxel.Alteration = Voxel.OnSurface;
            }
            else if (absAltered >= LegacyVoxelV1.TextureNearSurfaceOffset && absAltered < LegacyVoxelV1.TextureOffset)
            {
                voxel.Alteration        = absAltered == legacyVoxelV1.Altered ? Voxel.NearAboveSurface : Voxel.NearBelowSurface;
                voxel.FirstTextureIndex = (uint)(absAltered - LegacyVoxelV1.TextureNearSurfaceOffset);
            }
            else if (absAltered >= LegacyVoxelV1.TextureOffset)
            {
                voxel.Alteration        = absAltered == legacyVoxelV1.Altered ? Voxel.FarAboveSurface : Voxel.FarBelowSurface;
                voxel.FirstTextureIndex = (uint)(absAltered - LegacyVoxelV1.TextureOffset);
            }

            return(voxel);
        }
Пример #2
0
        private static void ReadLegacyVoxelBytes(int sizeVox, byte[] rawBytes, ref LegacyVoxelV1[] voxelArray)
        {
            if (voxelArray == null)
            {
                voxelArray = new LegacyVoxelV1[sizeVox * sizeVox * sizeVox];
            }

            var voxelBytes = new NativeArray <byte>(rawBytes, Allocator.Temp);
            var bytes      = new NativeSlice <byte>(voxelBytes);
            var voxelSlice = bytes.SliceConvert <LegacyVoxelV1>();

            DirectNativeCollectionsAccess.CopyTo(voxelSlice, voxelArray);
            voxelBytes.Dispose();
        }