Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using MarchingCubes;
- using Utility;
- namespace LevelEditor {
- public class LevelGeometryData {
- #region Properties
- public Region3 CubeRegion { get; }
- public Region3 VertRegion { get; }
- public CubeVolume Cubes { get; }
- public VertVolume Verts { get; }
- public FaceVolume Faces { get; }
- #endregion
- #region Constructors
- public LevelGeometryData(Coord3 cubeRegionSize) {
- CubeRegion = new Region3(cubeRegionSize);
- VertRegion = new Region3(cubeRegionSize + Coord3.Ones);
- Cubes = new CubeVolume(CubeRegion.Size);
- Verts = new VertVolume(VertRegion.Size);
- Faces = new FaceVolume(CubeRegion.Size);
- }
- #endregion
- #region Classes & Interfaces
- public class CubeVolume {
- #region Instance Fields
- private int[,,] cubes;
- #endregion
- #region Indexers
- public int this[int cubeX, int cubeY, int cubeZ] {
- get => cubes[cubeX, cubeY, cubeZ];
- set => cubes[cubeX, cubeY, cubeZ] = value;
- }
- public int this[Coord3 cube] {
- get => cubes[cube.X, cube.Y, cube.Z];
- set => cubes[cube.X, cube.Y, cube.Z] = value;
- }
- #endregion
- #region Constructors
- public CubeVolume(Coord3 size) {
- cubes = new int[size.X, size.Y, size.Z];
- }
- #endregion
- }
- public class VertVolume {
- #region Instance Fields
- private int[,,] verts;
- #endregion
- #region Indexers
- public int this[int vertX, int vertY, int vertZ] {
- get => verts[vertX, vertY, vertZ];
- set => verts[vertX, vertY, vertZ] = value;
- }
- public int this[Coord3 vert] {
- get => verts[vert.X, vert.Y, vert.Z];
- set => verts[vert.X, vert.Y, vert.Z] = value;
- }
- #endregion
- #region Constructors
- public VertVolume(Coord3 size) {
- verts = new int[size.X, size.Y, size.Z];
- }
- #endregion
- }
- public class FaceVolume {
- #region Instance Fields
- private int[,,,] faces;
- #endregion
- #region Indexers
- public int this[int cubeX, int cubeY, int cubeZ, int faceIndex] {
- get => faces[cubeX, cubeY, cubeZ, faceIndex];
- set => faces[cubeX, cubeY, cubeZ, faceIndex] = value;
- }
- public int this[Coord3 cube, int faceIndex] {
- get => faces[cube.X, cube.Y, cube.Z, faceIndex];
- set => faces[cube.X, cube.Y, cube.Z, faceIndex] = value;
- }
- #endregion
- #region Constructors
- public FaceVolume(Coord3 size) {
- faces = new int[size.X, size.Y, size.Z, Cube.FACES.Length];
- }
- #endregion
- }
- #endregion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement