Level2.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. namespace SparseVoxelTreePerformanceTest
  3. {
  4. inline int EncodeIndex(int x, int y, int z);
  5. public class Level4
  6. {
  7. unsigned char X;
  8. unsigned char Y;
  9. unsigned char Z;
  10. unsigned int* Children;
  11. void Subdivide();
  12. int EncodeIndex(unsigned char x, unsigned char y, unsigned char z);
  13. public:
  14. unsigned int Voxel;
  15. Level4(unsigned char x, unsigned char y, unsigned char z, int voxel);
  16. ~Level4();
  17. int GetVoxel(unsigned char x, unsigned char y, unsigned char z);
  18. void SetVoxel(unsigned char x, unsigned char y, unsigned char z, int voxel);
  19. int GetMemoryUsage();
  20. bool Compact();
  21. };
  22. public class Level8
  23. {
  24. unsigned char X;
  25. unsigned char Y;
  26. unsigned char Z;
  27. Level4* Children;
  28. void Subdivide();
  29. int EncodeIndex(unsigned char x, unsigned char y, unsigned char z);
  30. public:
  31. unsigned int Voxel;
  32. Level8(unsigned char x, unsigned char y, unsigned char z, int voxel);
  33. ~Level8();
  34. int GetVoxel(unsigned char x, unsigned char y, unsigned char z);
  35. void SetVoxel(unsigned char x, unsigned char y, unsigned char z, int voxel);
  36. int GetMemoryUsage();
  37. bool Compact();
  38. };
  39. public class Level16
  40. {
  41. unsigned char X;
  42. unsigned char Y;
  43. unsigned char Z;
  44. Level8* Children;
  45. void Subdivide();
  46. int EncodeIndex(unsigned char x, unsigned char y, unsigned char z);
  47. public:
  48. unsigned int Voxel;
  49. Level16(unsigned char x, unsigned char y, unsigned char z, int voxel);
  50. ~Level16();
  51. int GetVoxel(unsigned char x, unsigned char y, unsigned char z);
  52. void SetVoxel(unsigned char x, unsigned char y, unsigned char z, int voxel);
  53. int GetMemoryUsage();
  54. bool Compact();
  55. };
  56. public ref class Chunk
  57. {
  58. unsigned int Voxel;
  59. Level16* Children;
  60. void Subdivide();
  61. int EncodeIndex(unsigned char x, unsigned char y, unsigned char z);
  62. public:
  63. Chunk(int voxel);
  64. ~Chunk();
  65. int GetVoxel(unsigned char x, unsigned char y, unsigned char z);
  66. void SetVoxel(unsigned char x, unsigned char y, unsigned char z, int voxel);
  67. int GetMemoryUsage();
  68. void Compact();
  69. };
  70. }