@divinevoxel/vlox 0.0.72 → 0.0.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/Contexts/Render/DivineVoxelEngineRender.d.ts +1 -1
  2. package/Contexts/World/DivineVoxelEngineWorld.d.ts +1 -1
  3. package/Init/StartConstructor.js +6 -4
  4. package/Init/StartWorld.d.ts +1 -1
  5. package/Mesher/Functions/CompactVoxelMesh.d.ts +2 -2
  6. package/Mesher/Functions/CompactVoxelMesh.js +1 -1
  7. package/Mesher/Functions/MeshSection.js +20 -8
  8. package/Mesher/Functions/MeshTexture.d.ts +1 -1
  9. package/Mesher/Functions/MeshTexture.js +3 -4
  10. package/Mesher/Geomtry/Primitives/QuadVertexData.d.ts +12 -10
  11. package/Mesher/Geomtry/Primitives/QuadVertexData.js +49 -56
  12. package/Mesher/Geomtry/VoxelGeometryBuilder.d.ts +2 -2
  13. package/Mesher/Geomtry/VoxelGeometryBuilder.js +2 -2
  14. package/Mesher/Geomtry/VoxelMesh.d.ts +1 -1
  15. package/Mesher/Geomtry/VoxelMesh.js +2 -2
  16. package/Mesher/Geomtry/index.d.ts +0 -1
  17. package/Mesher/Geomtry/index.js +0 -1
  18. package/Mesher/InitMesher.js +1 -1
  19. package/Mesher/InitTask.js +4 -22
  20. package/Mesher/Models/Common/Calc/FaceDataCalc.d.ts +2 -2
  21. package/Mesher/Models/Common/Calc/FaceDataCalc.js +37 -30
  22. package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.d.ts +2 -2
  23. package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.js +1 -1
  24. package/Mesher/Models/Nodes/Custom/Liquid/LiquidGeomtryNode.js +11 -17
  25. package/Mesher/Models/Nodes/GeometryNode.d.ts +2 -2
  26. package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.d.ts +1 -0
  27. package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.js +24 -12
  28. package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.d.ts +1 -1
  29. package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.js +1 -1
  30. package/Mesher/Models/RenderedMaterials.d.ts +6 -0
  31. package/Mesher/{RenderedMaterials.js → Models/RenderedMaterials.js} +2 -2
  32. package/Mesher/Models/VoxelConstructor.d.ts +3 -3
  33. package/Mesher/Models/VoxelGeometryBuilderCacheSpace.d.ts +1 -3
  34. package/Mesher/Models/VoxelGeometryBuilderCacheSpace.js +0 -23
  35. package/Mesher/{Tools/VoxelMesherDataTool.d.ts → Models/VoxelModelBuilder.d.ts} +4 -5
  36. package/Mesher/{Tools/VoxelMesherDataTool.js → Models/VoxelModelBuilder.js} +11 -7
  37. package/Models/Defaults/CubeVoxelGeometry.js +4 -0
  38. package/Models/Defaults/CubeVoxelModels.js +344 -344
  39. package/Models/Defaults/LiquidVoxelModel.js +2 -2
  40. package/Models/Defaults/PanelVoxelModels.js +432 -432
  41. package/Models/Defaults/StairVoxelModel.js +576 -576
  42. package/Models/Examples.js +469 -456
  43. package/Models/Rules/Functions/BuildFinalInputs.js +9 -7
  44. package/Models/Rules/Functions/BuildGeomtryInputs.js +8 -5
  45. package/Models/Rules/Functions/BuildRules.js +2 -2
  46. package/Models/Rules/{VoxelModelManager.d.ts → VoxelModelRuleBuilderRegister.d.ts} +1 -1
  47. package/Models/Rules/VoxelModelRuleBuilderRegister.js +178 -0
  48. package/Models/VoxelModel.types.d.ts +14 -5
  49. package/Renderer/Classes/SectorMesh.d.ts +3 -4
  50. package/Renderer/Classes/SectorMesh.js +6 -11
  51. package/Renderer/InitTasks.js +6 -7
  52. package/Renderer/MeshManager.js +2 -2
  53. package/Renderer/MeshRegister.js +2 -1
  54. package/Settings/EngineSettings.d.ts +1 -1
  55. package/Settings/EngineSettings.js +3 -5
  56. package/Settings/EngineSettings.types.d.ts +17 -18
  57. package/Settings/EngineSettings.types.js +16 -15
  58. package/Tasks/IWG/IWG.d.ts +2 -1
  59. package/Tasks/IWG/IWG.js +9 -3
  60. package/Tasks/IWG/Internal/Classes/BuildQueue.d.ts +11 -0
  61. package/Tasks/IWG/Internal/Classes/BuildQueue.js +49 -0
  62. package/Tasks/IWG/Internal/Classes/Generator.d.ts +6 -1
  63. package/Tasks/IWG/Internal/Classes/Generator.js +13 -1
  64. package/Tasks/IWG/Internal/Classes/IWGTaskBase.js +2 -2
  65. package/Tasks/IWG/Internal/Functions/runBuildUpdate.js +21 -2
  66. package/Tasks/IWG/Internal/IWGTasks.d.ts +0 -4
  67. package/Tasks/IWG/Internal/IWGTasks.js +0 -10
  68. package/Tasks/IWG/Internal/IWGTools.d.ts +1 -1
  69. package/Tasks/IWG/Procedures/SaveAllSectors.js +2 -0
  70. package/Tasks/Update/UpdateTask.d.ts +3 -1
  71. package/Tasks/Update/UpdateTask.js +28 -2
  72. package/Tasks/Update/VoxelUpdate.js +6 -0
  73. package/Tasks/WorldGeneration/WorldGenBrush.js +1 -1
  74. package/Templates/Cursor/TemplateCursor.d.ts +2 -2
  75. package/Templates/Cursor/TemplateCursor.js +1 -2
  76. package/Templates/VoxelTemplates.types.d.ts +1 -1
  77. package/Textures/Classes/CompiledTexture.d.ts +18 -0
  78. package/Textures/Classes/CompiledTexture.js +50 -0
  79. package/Textures/Classes/CompiledTextureAnimation.d.ts +12 -0
  80. package/Textures/Classes/CompiledTextureAnimation.js +27 -0
  81. package/Textures/Classes/TextureAnimationTexture.d.ts +10 -0
  82. package/Textures/Classes/TextureAnimationTexture.js +32 -0
  83. package/Textures/Functions/BuildTextureData.d.ts +10 -0
  84. package/Textures/Functions/BuildTextureData.js +205 -0
  85. package/Textures/Texture.types.d.ts +50 -64
  86. package/Textures/TextureManager.d.ts +8 -19
  87. package/Textures/TextureManager.js +28 -166
  88. package/Tools/Brush/Brush.d.ts +1 -1
  89. package/Tools/Brush/Brush.js +39 -7
  90. package/Util/Binary/BinaryArrays.d.ts +6 -0
  91. package/Util/Binary/BinaryArrays.js +25 -0
  92. package/Util/Binary/BinaryBuffer.d.ts +29 -0
  93. package/Util/Binary/BinaryBuffer.js +130 -0
  94. package/Util/Binary/{BitArray.d.ts → BinaryFunctions.d.ts} +1 -2
  95. package/Util/Binary/BinaryFunctions.js +11 -0
  96. package/Voxels/Cursor/DataCursor.interface.d.ts +5 -0
  97. package/Voxels/Cursor/VoxelCursor.interface.d.ts +1 -1
  98. package/Voxels/Cursor/VoxelCursor.interface.js +8 -11
  99. package/Voxels/Data/VoxelPalettesRegister.d.ts +0 -5
  100. package/Voxels/Data/VoxelPalettesRegister.js +0 -9
  101. package/Voxels/Data/VoxelTagsRegister.js +7 -7
  102. package/Voxels/Functions/BuildStateData.js +9 -9
  103. package/Voxels/Functions/BuildTagAndPaletteData.js +2 -4
  104. package/Voxels/InitVoxelData.js +12 -13
  105. package/Voxels/State/Schema/StateSchema.d.ts +1 -1
  106. package/Voxels/Types/Voxel.types.d.ts +18 -0
  107. package/Voxels/Types/Voxel.types.js +6 -2
  108. package/World/Archive/Archive.types.d.ts +38 -34
  109. package/World/Archive/Functions/ArchiveArea.js +16 -24
  110. package/World/Archive/Functions/ArchiveSector.js +477 -192
  111. package/World/Archive/Functions/ImportSector.d.ts +3 -3
  112. package/World/Archive/Functions/ImportSector.js +202 -141
  113. package/World/Archive/Functions/Shared.d.ts +6 -0
  114. package/World/Archive/Functions/Shared.js +75 -0
  115. package/World/Archive/InitTasks.js +30 -13
  116. package/World/Cursor/SectionCursor.d.ts +2 -2
  117. package/World/Cursor/SectionCursor.js +2 -3
  118. package/World/Cursor/SectorCursor.d.ts +2 -2
  119. package/World/Cursor/SectorCursor.js +1 -2
  120. package/World/Cursor/WorldCursor.d.ts +2 -2
  121. package/World/Cursor/WorldCursor.js +1 -2
  122. package/World/Cursor/WorldVoxelCursor.js +1 -0
  123. package/World/InitTasks.d.ts +1 -1
  124. package/World/Lock/WorldLock.d.ts +1 -1
  125. package/World/Section/Section.d.ts +12 -16
  126. package/World/Section/Section.js +62 -20
  127. package/World/Section/SectionState.d.ts +10 -0
  128. package/World/Section/SectionState.js +11 -0
  129. package/World/Sector/Sector.d.ts +14 -6
  130. package/World/Sector/Sector.js +67 -17
  131. package/World/Sector/SectorHeightMap.js +2 -2
  132. package/World/Sector/SectorState.d.ts +14 -6
  133. package/World/Sector/SectorState.js +28 -15
  134. package/World/Types/WorldStorage.interface.js +1 -0
  135. package/World/WorldRegister.d.ts +4 -0
  136. package/World/WorldRegister.js +15 -3
  137. package/World/WorldSpaces.d.ts +4 -0
  138. package/World/WorldSpaces.js +19 -6
  139. package/package.json +1 -1
  140. package/Mesher/Functions/CompactMesh.d.ts +0 -2
  141. package/Mesher/Functions/CompactMesh.js +0 -42
  142. package/Mesher/Geomtry/GeometryNormals.d.ts +0 -10
  143. package/Mesher/Geomtry/GeometryNormals.js +0 -52
  144. package/Mesher/Geomtry/MeshData.types.d.ts +0 -13
  145. package/Mesher/Geomtry/MeshData.types.js +0 -6
  146. package/Mesher/Geomtry/Tools/MesherDataTools.d.ts +0 -7
  147. package/Mesher/Geomtry/Tools/MesherDataTools.js +0 -12
  148. package/Mesher/Geomtry/Tools/index.d.ts +0 -1
  149. package/Mesher/Geomtry/Tools/index.js +0 -1
  150. package/Mesher/RenderedMaterials.d.ts +0 -6
  151. package/Models/Rules/VoxelModelManager.js +0 -82
  152. package/Textures/TextureAnimations.d.ts +0 -4
  153. package/Textures/TextureAnimations.js +0 -35
  154. package/Textures/TextureArray.d.ts +0 -47
  155. package/Textures/TextureArray.js +0 -202
  156. package/Textures/TextureBuilder.d.ts +0 -13
  157. package/Textures/TextureBuilder.js +0 -120
  158. package/Textures/TextureRegister.d.ts +0 -9
  159. package/Textures/TextureRegister.js +0 -28
  160. package/Tools/DataCursor.interface.d.ts +0 -5
  161. package/Tools/DataCursor.interface.js +0 -2
  162. package/Util/Binary/BitArray.js +0 -16
  163. package/World/Structs/WorldDataStructProperties.d.ts +0 -8
  164. package/World/Structs/WorldDataStructProperties.js +0 -9
  165. /package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.d.ts +0 -0
  166. /package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.js +0 -0
  167. /package/Mesher/Geomtry/{Buffers.d.ts → VoxelMeshBuffers.d.ts} +0 -0
  168. /package/Mesher/Geomtry/{Buffers.js → VoxelMeshBuffers.js} +0 -0
  169. /package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.d.ts +0 -0
  170. /package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.js +0 -0
  171. /package/Mesher/{VoxelShaderData.d.ts → Geomtry/VoxelShaderData.d.ts} +0 -0
  172. /package/Mesher/{VoxelShaderData.js → Geomtry/VoxelShaderData.js} +0 -0
  173. /package/{World/Storage/WorldStorage.interface.js → Voxels/Cursor/DataCursor.interface.js} +0 -0
  174. /package/World/{Storage → Types}/WorldStorage.interface.d.ts +0 -0
@@ -19,11 +19,11 @@ export declare class DivineVoxelEngineRender {
19
19
  settings: {
20
20
  enviorment: "node" | "browser";
21
21
  settings: EngineSettingsData;
22
+ version: string;
22
23
  readonly doSunPropagation: boolean;
23
24
  readonly doRGBPropagation: boolean;
24
25
  readonly doLight: boolean;
25
26
  readonly doFlow: boolean;
26
- readonly isClient: boolean;
27
27
  getSettings(): EngineSettingsData;
28
28
  syncSettings(data: EngineSettingsData): void;
29
29
  getSettingsCopy(): any;
@@ -11,11 +11,11 @@ export declare class DivineVoxelEngineWorld {
11
11
  settings: {
12
12
  enviorment: "node" | "browser";
13
13
  settings: import("../../Settings/EngineSettings.types.js").EngineSettingsData;
14
+ version: string;
14
15
  readonly doSunPropagation: boolean;
15
16
  readonly doRGBPropagation: boolean;
16
17
  readonly doLight: boolean;
17
18
  readonly doFlow: boolean;
18
- readonly isClient: boolean;
19
19
  getSettings(): import("../../Settings/EngineSettings.types.js").EngineSettingsData;
20
20
  syncSettings(data: import("../../Settings/EngineSettings.types.js").EngineSettingsData): void;
21
21
  getSettingsCopy(): any;
@@ -44,10 +44,12 @@ export async function StartContrusctor(data = {}) {
44
44
  InitMesherTasks(DVEC.threads.parent);
45
45
  InitUpdateTasks({
46
46
  onDone(tasks, origin) {
47
- origin.runTask("build-queue", [
48
- tasks.origin[0],
49
- tasks.bounds.getSections(),
50
- ]);
47
+ tasks.bounds.markSectionsAsDirty();
48
+ /*
49
+ origin.runTask("build-queue", [
50
+ tasks.origin[0],
51
+ tasks.bounds.getSections(),
52
+ ]); */
51
53
  },
52
54
  });
53
55
  InitWorldGenerationTasks();
@@ -1,5 +1,5 @@
1
1
  import { DivineVoxelEngineWorld } from "../Contexts/World/DivineVoxelEngineWorld";
2
- import { WorldStorageInterface } from "World/Storage/WorldStorage.interface";
2
+ import { WorldStorageInterface } from "World/Types/WorldStorage.interface";
3
3
  type StartWorldProps = {
4
4
  worldStorage?: WorldStorageInterface;
5
5
  };
@@ -1,3 +1,3 @@
1
1
  import { CompactMeshData } from "../Types/Mesher.types";
2
- import { VoxelMesherDataTool } from "Mesher/Tools/VoxelMesherDataTool";
3
- export declare function CompactVoxelMesh(tools: VoxelMesherDataTool[], transfers?: any[]): CompactMeshData;
2
+ import { VoxelModelBuilder } from "Mesher/Models/VoxelModelBuilder";
3
+ export declare function CompactVoxelMesh(tools: VoxelModelBuilder[], transfers?: any[]): CompactMeshData;
@@ -1,4 +1,4 @@
1
- import { VoxelMeshVertexStructCursor } from "../Tools/VoxelMeshVertexStructCursor";
1
+ import { VoxelMeshVertexStructCursor } from "../Geomtry/VoxelMeshVertexStructCursor";
2
2
  const structCursor = new VoxelMeshVertexStructCursor();
3
3
  /*
4
4
  function MakeWebGPUMesh(tool: VoxelMesherDataTool): CompactMeshData {
@@ -7,9 +7,9 @@ import { WorldCursor } from "../../World/Cursor/WorldCursor.js";
7
7
  import { SectionCursor } from "../../World/Cursor/SectionCursor.js";
8
8
  import { VoxelModelConstructorRegister } from "../Models/VoxelModelConstructorRegister.js";
9
9
  import { WorldRegister } from "../../World/WorldRegister.js";
10
- import { VoxelMeshBVHBuilder } from "../Tools/VoxelMeshBVHBuilder";
10
+ import { VoxelMeshBVHBuilder } from "../Geomtry/VoxelMeshBVHBuilder";
11
11
  import { Vector3Like } from "@amodx/math";
12
- import { RenderedMaterials } from "../../Mesher/RenderedMaterials";
12
+ import { RenderedMaterials } from "../Models/RenderedMaterials";
13
13
  const sectionCursor = new SectionCursor();
14
14
  const worldCursor = new WorldCursor();
15
15
  let space;
@@ -39,16 +39,19 @@ export function MeshSection(location, transfers = []) {
39
39
  y: WorldSpaces.section.bounds.y + padding.y,
40
40
  z: WorldSpaces.section.bounds.z + padding.z,
41
41
  });
42
- const [dimension, cx, cy, cz] = location;
43
- const sector = WorldRegister.sectors.get(dimension, cx, cy, cz);
42
+ const sector = WorldRegister.sectors.getAt(location);
44
43
  if (!sector)
45
44
  return null;
46
- const section = sector.getSection(cy);
45
+ const section = sector.getSection(location[1], location[2], location[3]);
46
+ const [cx, cy, cz] = section.getPosition();
47
47
  worldCursor.setFocalPoint(...location);
48
48
  sectionCursor.setSection(...location);
49
49
  let [minY, maxY] = section.getMinMax();
50
- if (Math.abs(minY) == Infinity && Math.abs(maxY) == Infinity)
50
+ if (minY == Infinity && maxY == -Infinity) {
51
+ section.setDirty(false);
52
+ section.setInProgress(false);
51
53
  return null;
54
+ }
52
55
  space.start(cx - (padding.x - 1), cy - (padding.y - 1), cz - (padding.z - 1));
53
56
  bvhTool.reset();
54
57
  const effects = {};
@@ -65,10 +68,12 @@ export function MeshSection(location, transfers = []) {
65
68
  if (!(i % slice)) {
66
69
  const y = i / slice;
67
70
  if (!section.getHasVoxel(y) && !section.getHasVoxelDirty(y)) {
68
- i += slice;
71
+ i += slice - 1;
69
72
  continue;
70
73
  }
71
74
  }
75
+ if (!section.ids[i])
76
+ continue;
72
77
  if (!section.ids[i] || section.getBuried(i))
73
78
  continue;
74
79
  const voxel = sectionCursor.getVoxelAtIndex(i);
@@ -88,7 +93,12 @@ export function MeshSection(location, transfers = []) {
88
93
  }
89
94
  // console.log(performance.now() - t);
90
95
  const sectionEffects = [];
91
- const sections = [location, [], sectionEffects, 0];
96
+ const sections = [
97
+ [location[0], ...section.getPosition()],
98
+ [],
99
+ sectionEffects,
100
+ 0,
101
+ ];
92
102
  const meshed = [];
93
103
  for (let i = 0; i < RenderedMaterials.meshers.length; i++) {
94
104
  const mesher = RenderedMaterials.meshers[i];
@@ -110,5 +120,7 @@ export function MeshSection(location, transfers = []) {
110
120
  meshed[i].clear();
111
121
  meshed[i].bvhTool = null;
112
122
  }
123
+ section.setDirty(false);
124
+ section.setInProgress(false);
113
125
  return sections;
114
126
  }
@@ -1 +1 @@
1
- export declare function MeshTexture(textureId: number, textureData: number[]): import("../Geomtry/VoxelMesh").VoxelMesh | null;
1
+ export declare function MeshTexture(textureId: number, textureData: number[]): void;
@@ -1,4 +1,3 @@
1
- import { MesherDataTool } from "../Geomtry/Tools/MesherDataTools";
2
1
  import { Quad } from "../Geomtry/Primitives/Quad";
3
2
  const Quads = {
4
3
  north: Quad.Create([
@@ -10,8 +9,8 @@ const Quads = {
10
9
  [1, 1, 0],
11
10
  ], Quad.FullUVs, false, 0),
12
11
  };
13
- const tool = new MesherDataTool();
14
- tool.startNewMesh();
12
+ //const tool = new MesherDataTool();
13
+ //tool.startNewMesh();
15
14
  //tool.mesh!.attributes.set("uv", [[], 2, BinaryNumberTypes.Float32]);
16
15
  //tool.mesh!.attributes.set("textureIndex", [[], 3, BinaryNumberTypes.Float32]);
17
16
  export function MeshTexture(textureId, textureData) {
@@ -271,5 +270,5 @@ export function MeshTexture(textureId, textureData) {
271
270
 
272
271
  const compacted = CompactMesh("dve_node", tool);
273
272
  */
274
- return tool.mesh;
273
+ // return tool.mesh;
275
274
  }
@@ -1,8 +1,9 @@
1
1
  import { QuadVerticies } from "../Geometry.types.js";
2
2
  import { Vector3Like, Vector2Like, Vec3Array } from "@amodx/math";
3
+ type QuadDataType<Data> = [Data, Data, Data, Data];
3
4
  export declare class QuadVertexData<Data> {
4
- vertices: Record<QuadVerticies, Data>;
5
- constructor(vertices: Record<QuadVerticies, Data>);
5
+ vertices: QuadDataType<Data>;
6
+ constructor(vertices: QuadDataType<Data>);
6
7
  getAsArray(): Data[];
7
8
  setVertex(vertex: QuadVerticies, value: Data): void;
8
9
  getVertex(vertex: QuadVerticies): Data;
@@ -14,8 +15,8 @@ export declare class QuadVertexData<Data> {
14
15
  clone(): QuadVertexData<Data>;
15
16
  }
16
17
  export declare class QuadVec3ArrayVertexData extends QuadVertexData<Vec3Array> {
17
- vertices: Record<QuadVerticies, Vec3Array>;
18
- constructor(vertices?: Record<QuadVerticies, Vec3Array>);
18
+ vertices: QuadDataType<Vec3Array>;
19
+ constructor(vertices?: QuadDataType<Vec3Array>);
19
20
  setFromQuadData(vertexData: QuadVertexData<Vec3Array>): void;
20
21
  addToVertex(vertex: QuadVerticies, value: Vec3Array): void;
21
22
  subtractFromVertex(vertex: QuadVerticies, value: Vec3Array): void;
@@ -26,8 +27,8 @@ export declare class QuadVec3ArrayVertexData extends QuadVertexData<Vec3Array> {
26
27
  clone(): QuadVec3ArrayVertexData;
27
28
  }
28
29
  export declare class QuadVector3VertexData extends QuadVertexData<Vector3Like> {
29
- vertices: Record<QuadVerticies, Vector3Like>;
30
- constructor(vertices?: Record<QuadVerticies, Vector3Like>);
30
+ vertices: QuadDataType<Vector3Like>;
31
+ constructor(vertices?: QuadDataType<Vector3Like>);
31
32
  setFromQuadData(vertexData: QuadVertexData<Vector3Like>): void;
32
33
  addToVertex(vertex: QuadVerticies, value: Vector3Like): void;
33
34
  subtractFromVertex(vertex: QuadVerticies, value: Vector3Like): void;
@@ -38,8 +39,8 @@ export declare class QuadVector3VertexData extends QuadVertexData<Vector3Like> {
38
39
  clone(): QuadVector3VertexData;
39
40
  }
40
41
  export declare class QuadVector2VertexData extends QuadVertexData<Vector2Like> {
41
- vertices: Record<QuadVerticies, Vector2Like>;
42
- constructor(vertices?: Record<QuadVerticies, Vector2Like>);
42
+ vertices: QuadDataType<Vector2Like>;
43
+ constructor(vertices?: QuadDataType<Vector2Like>);
43
44
  setFromQuadData(vertexData: QuadVertexData<Vector3Like>): void;
44
45
  addToVertex(vertex: QuadVerticies, value: Vector2Like): void;
45
46
  subtractFromVertex(vertex: QuadVerticies, value: Vector2Like): void;
@@ -50,8 +51,8 @@ export declare class QuadVector2VertexData extends QuadVertexData<Vector2Like> {
50
51
  clone(): QuadVector2VertexData;
51
52
  }
52
53
  export declare class QuadScalarVertexData extends QuadVertexData<number> {
53
- vertices: Record<QuadVerticies, number>;
54
- constructor(vertices?: Record<QuadVerticies, number>);
54
+ vertices: QuadDataType<number>;
55
+ constructor(vertices?: QuadDataType<number>);
55
56
  setFromQuadData(vertexData: QuadVertexData<number>): void;
56
57
  subtractFromVertex(vertex: QuadVerticies, value: number): void;
57
58
  addAll(value: number): void;
@@ -64,3 +65,4 @@ export declare class QuadScalarVertexData extends QuadVertexData<number> {
64
65
  isAllLessThan(value: number): boolean;
65
66
  clone(): QuadScalarVertexData;
66
67
  }
68
+ export {};
@@ -68,22 +68,22 @@ export class QuadVertexData {
68
68
  };
69
69
  }
70
70
  clone() {
71
- return new QuadVertexData({
72
- [QuadVerticies.TopRight]: structuredClone(this.vertices[QuadVerticies.TopRight]),
73
- [QuadVerticies.TopLeft]: structuredClone(this.vertices[QuadVerticies.TopLeft]),
74
- [QuadVerticies.BottomLeft]: structuredClone(this.vertices[QuadVerticies.BottomLeft]),
75
- [QuadVerticies.BottomRight]: structuredClone(this.vertices[QuadVerticies.BottomRight]),
76
- });
71
+ return new QuadVertexData([
72
+ structuredClone(this.vertices[QuadVerticies.TopRight]),
73
+ structuredClone(this.vertices[QuadVerticies.TopLeft]),
74
+ structuredClone(this.vertices[QuadVerticies.BottomLeft]),
75
+ structuredClone(this.vertices[QuadVerticies.BottomRight]),
76
+ ]);
77
77
  }
78
78
  }
79
79
  export class QuadVec3ArrayVertexData extends QuadVertexData {
80
80
  vertices;
81
- constructor(vertices = {
82
- [QuadVerticies.TopRight]: [0, 0, 0],
83
- [QuadVerticies.TopLeft]: [0, 0, 0],
84
- [QuadVerticies.BottomLeft]: [0, 0, 0],
85
- [QuadVerticies.BottomRight]: [0, 0, 0],
86
- }) {
81
+ constructor(vertices = [
82
+ [0, 0, 0],
83
+ [0, 0, 0],
84
+ [0, 0, 0],
85
+ [0, 0, 0],
86
+ ]) {
87
87
  super(vertices);
88
88
  this.vertices = vertices;
89
89
  }
@@ -124,24 +124,22 @@ export class QuadVec3ArrayVertexData extends QuadVertexData {
124
124
  Vector3Like.EqualsArray(this.vertices[QuadVerticies.BottomRight], v1));
125
125
  }
126
126
  clone() {
127
- return new QuadVec3ArrayVertexData({
128
- [QuadVerticies.TopRight]: [...this.vertices[QuadVerticies.TopRight]],
129
- [QuadVerticies.TopLeft]: [...this.vertices[QuadVerticies.TopLeft]],
130
- [QuadVerticies.BottomLeft]: [...this.vertices[QuadVerticies.BottomLeft]],
131
- [QuadVerticies.BottomRight]: [
132
- ...this.vertices[QuadVerticies.BottomRight],
133
- ],
134
- });
127
+ return new QuadVec3ArrayVertexData([
128
+ [...this.vertices[QuadVerticies.TopRight]],
129
+ [...this.vertices[QuadVerticies.TopLeft]],
130
+ [...this.vertices[QuadVerticies.BottomLeft]],
131
+ [...this.vertices[QuadVerticies.BottomRight]],
132
+ ]);
135
133
  }
136
134
  }
137
135
  export class QuadVector3VertexData extends QuadVertexData {
138
136
  vertices;
139
- constructor(vertices = {
140
- [QuadVerticies.TopRight]: Vector3Like.Create(),
141
- [QuadVerticies.TopLeft]: Vector3Like.Create(),
142
- [QuadVerticies.BottomLeft]: Vector3Like.Create(),
143
- [QuadVerticies.BottomRight]: Vector3Like.Create(),
144
- }) {
137
+ constructor(vertices = [
138
+ Vector3Like.Create(),
139
+ Vector3Like.Create(),
140
+ Vector3Like.Create(),
141
+ Vector3Like.Create(),
142
+ ]) {
145
143
  super(vertices);
146
144
  this.vertices = vertices;
147
145
  }
@@ -182,22 +180,22 @@ export class QuadVector3VertexData extends QuadVertexData {
182
180
  Vector3Like.Equals(this.vertices[QuadVerticies.BottomRight], v1));
183
181
  }
184
182
  clone() {
185
- return new QuadVector3VertexData({
186
- [QuadVerticies.TopRight]: Vector3Like.Clone(this.vertices[QuadVerticies.TopRight]),
187
- [QuadVerticies.TopLeft]: Vector3Like.Clone(this.vertices[QuadVerticies.TopLeft]),
188
- [QuadVerticies.BottomLeft]: Vector3Like.Clone(this.vertices[QuadVerticies.BottomLeft]),
189
- [QuadVerticies.BottomRight]: Vector3Like.Clone(this.vertices[QuadVerticies.BottomRight]),
190
- });
183
+ return new QuadVector3VertexData([
184
+ Vector3Like.Clone(this.vertices[QuadVerticies.TopRight]),
185
+ Vector3Like.Clone(this.vertices[QuadVerticies.TopLeft]),
186
+ Vector3Like.Clone(this.vertices[QuadVerticies.BottomLeft]),
187
+ Vector3Like.Clone(this.vertices[QuadVerticies.BottomRight]),
188
+ ]);
191
189
  }
192
190
  }
193
191
  export class QuadVector2VertexData extends QuadVertexData {
194
192
  vertices;
195
- constructor(vertices = {
196
- [QuadVerticies.TopRight]: Vector2Like.Create(),
197
- [QuadVerticies.TopLeft]: Vector2Like.Create(),
198
- [QuadVerticies.BottomLeft]: Vector2Like.Create(),
199
- [QuadVerticies.BottomRight]: Vector2Like.Create(),
200
- }) {
193
+ constructor(vertices = [
194
+ Vector2Like.Create(),
195
+ Vector2Like.Create(),
196
+ Vector2Like.Create(),
197
+ Vector2Like.Create(),
198
+ ]) {
201
199
  super(vertices);
202
200
  this.vertices = vertices;
203
201
  }
@@ -238,22 +236,17 @@ export class QuadVector2VertexData extends QuadVertexData {
238
236
  Vector2Like.Equals(this.vertices[QuadVerticies.BottomRight], v1));
239
237
  }
240
238
  clone() {
241
- return new QuadVector2VertexData({
242
- [QuadVerticies.TopRight]: Vector2Like.Clone(this.vertices[QuadVerticies.TopRight]),
243
- [QuadVerticies.TopLeft]: Vector2Like.Clone(this.vertices[QuadVerticies.TopLeft]),
244
- [QuadVerticies.BottomLeft]: Vector2Like.Clone(this.vertices[QuadVerticies.BottomLeft]),
245
- [QuadVerticies.BottomRight]: Vector2Like.Clone(this.vertices[QuadVerticies.BottomRight]),
246
- });
239
+ return new QuadVector2VertexData([
240
+ Vector2Like.Clone(this.vertices[QuadVerticies.TopRight]),
241
+ Vector2Like.Clone(this.vertices[QuadVerticies.TopLeft]),
242
+ Vector2Like.Clone(this.vertices[QuadVerticies.BottomLeft]),
243
+ Vector2Like.Clone(this.vertices[QuadVerticies.BottomRight]),
244
+ ]);
247
245
  }
248
246
  }
249
247
  export class QuadScalarVertexData extends QuadVertexData {
250
248
  vertices;
251
- constructor(vertices = {
252
- [QuadVerticies.TopRight]: 0,
253
- [QuadVerticies.TopLeft]: 0,
254
- [QuadVerticies.BottomLeft]: 0,
255
- [QuadVerticies.BottomRight]: 0,
256
- }) {
249
+ constructor(vertices = [0, 0, 0, 0]) {
257
250
  super(vertices);
258
251
  this.vertices = vertices;
259
252
  }
@@ -339,11 +332,11 @@ export class QuadScalarVertexData extends QuadVertexData {
339
332
  return true;
340
333
  }
341
334
  clone() {
342
- return new QuadScalarVertexData({
343
- [QuadVerticies.TopRight]: this.vertices[QuadVerticies.TopRight],
344
- [QuadVerticies.TopLeft]: this.vertices[QuadVerticies.TopLeft],
345
- [QuadVerticies.BottomLeft]: this.vertices[QuadVerticies.BottomLeft],
346
- [QuadVerticies.BottomRight]: this.vertices[QuadVerticies.BottomRight],
347
- });
335
+ return new QuadScalarVertexData([
336
+ this.vertices[QuadVerticies.TopRight],
337
+ this.vertices[QuadVerticies.TopLeft],
338
+ this.vertices[QuadVerticies.BottomLeft],
339
+ this.vertices[QuadVerticies.BottomRight],
340
+ ]);
348
341
  }
349
342
  }
@@ -1,6 +1,6 @@
1
1
  import { Vector3Like } from "@amodx/math";
2
- import { VoxelMesherDataTool } from "../Tools/VoxelMesherDataTool";
2
+ import { VoxelModelBuilder } from "../Models/VoxelModelBuilder";
3
3
  import { Quad } from "./Primitives/Quad";
4
4
  export declare class VoxelGeometryBuilder {
5
- static addQuad(tool: VoxelMesherDataTool, origin: Vector3Like, quad: Quad): void;
5
+ static addQuad(tool: VoxelModelBuilder, origin: Vector3Like, quad: Quad): void;
6
6
  }
@@ -1,6 +1,6 @@
1
- import { VoxelShaderData } from "../VoxelShaderData";
1
+ import { VoxelShaderData } from "./VoxelShaderData";
2
2
  import { QuadVerticies } from "./Geometry.types";
3
- import { VoxelMeshVertexConstants, VoxelMeshVertexStructCursor, } from "../../Mesher/Tools/VoxelMeshVertexStructCursor";
3
+ import { VoxelMeshVertexConstants, VoxelMeshVertexStructCursor, } from "./VoxelMeshVertexStructCursor";
4
4
  const empty = [];
5
5
  const structCursor = new VoxelMeshVertexStructCursor();
6
6
  export class VoxelGeometryBuilder {
@@ -1,5 +1,5 @@
1
1
  import { Vector3Like } from "@amodx/math";
2
- import { VoxelVertexBuffer, VoxelIndiceBuffer } from "./Buffers";
2
+ import { VoxelVertexBuffer, VoxelIndiceBuffer } from "./VoxelMeshBuffers";
3
3
  export declare class VoxelMesh {
4
4
  indicieCount: number;
5
5
  vertexCount: number;
@@ -1,6 +1,6 @@
1
1
  import { Vector3Like } from "@amodx/math";
2
- import { VoxelVertexBuffer, VoxelIndiceBuffer } from "./Buffers";
3
- import { VoxelMeshVertexStructCursor } from "../Tools/VoxelMeshVertexStructCursor";
2
+ import { VoxelVertexBuffer, VoxelIndiceBuffer } from "./VoxelMeshBuffers";
3
+ import { VoxelMeshVertexStructCursor } from "./VoxelMeshVertexStructCursor";
4
4
  export class VoxelMesh {
5
5
  indicieCount = 0;
6
6
  vertexCount = 0;
@@ -1,2 +1 @@
1
1
  export * from "./Primitives/index";
2
- export * from "./Tools/index.js";
@@ -1,2 +1 @@
1
1
  export * from "./Primitives/index";
2
- export * from "./Tools/index.js";
@@ -1,4 +1,4 @@
1
- import { RenderedMaterials } from "./RenderedMaterials";
1
+ import { RenderedMaterials } from "./Models/RenderedMaterials";
2
2
  import { VoxelModelConstructorRegister } from "./Models/VoxelModelConstructorRegister.js";
3
3
  import { LiquidGeometryNode } from "./Models/Nodes/Custom/Liquid/LiquidGeomtryNode.js";
4
4
  import { VoxelConstructor } from "./Models/VoxelConstructor.js";
@@ -1,6 +1,5 @@
1
1
  import { Threads } from "@amodx/threads";
2
2
  import { WorldRegister } from "../World/WorldRegister";
3
- import { WorldSpaces } from "../World/WorldSpaces";
4
3
  import { MeshSection } from "./Functions/MeshSection";
5
4
  import { TasksIds } from "../Tasks/TasksIds";
6
5
  export default function (rendererThread) {
@@ -12,35 +11,18 @@ export default function (rendererThread) {
12
11
  rendererThread.runTask("set-section", section, transfers);
13
12
  });
14
13
  Threads.registerTask(TasksIds.BuildSector, (location) => {
15
- const sectorPosition = WorldSpaces.sector.getPosition(location[1], location[2], location[3]);
16
- const sector = WorldRegister.sectors.get(location[0], sectorPosition.x, sectorPosition.y, sectorPosition.z);
14
+ const sector = WorldRegister.sectors.getAt(location);
17
15
  if (!sector) {
18
- console.warn("Tried building a sector that does not exists.", [
19
- sectorPosition.x,
20
- sectorPosition.y,
21
- sectorPosition.z,
22
- ]);
16
+ console.warn("Tried building a sector that does not exists.", location);
23
17
  return;
24
18
  }
25
- if (sector.sections.length == 0) {
26
- console.warn("Tried building a sector with no sections.", sector.position);
27
- return;
28
- }
29
- const transfers = [];
30
19
  for (let i = 0; i < sector.sections.length; i++) {
31
20
  const section = sector.sections[i];
32
- if (!section)
33
- continue;
34
21
  let [minY, maxY] = section.getMinMax();
35
22
  if (Math.abs(minY) == Infinity && Math.abs(maxY) == Infinity)
36
23
  continue;
37
- transfers.length = 0;
38
- const sectionMesh = MeshSection([
39
- location[0],
40
- sector.position[0],
41
- sector.position[1] + i * WorldSpaces.section.bounds.y,
42
- sector.position[2],
43
- ], transfers);
24
+ const transfers = [];
25
+ const sectionMesh = MeshSection([location[0], ...section.getPosition()], transfers);
44
26
  if (!sectionMesh)
45
27
  continue;
46
28
  rendererThread.runTask("set-section", sectionMesh, transfers);
@@ -1,3 +1,3 @@
1
- import type { VoxelMesherDataTool } from "../../../../Mesher/Tools/VoxelMesherDataTool.js";
1
+ import type { VoxelModelBuilder } from "../../VoxelModelBuilder.js";
2
2
  import { VoxelFaces } from "../../../../Math/index.js";
3
- export default function calculateFaceData(face: VoxelFaces, builder: VoxelMesherDataTool): void;
3
+ export default function calculateFaceData(face: VoxelFaces, builder: VoxelModelBuilder): void;
@@ -2,47 +2,54 @@ import { VoxelFaceDirections } from "../../../../Math/index.js";
2
2
  import { GradientCheckSets } from "./CalcConstants.js";
3
3
  import { VoxelLightData } from "../../../../Voxels/Cursor/VoxelLightData.js";
4
4
  const lightData = new VoxelLightData();
5
- const currentLightValues = new Uint16Array([0, 0, 0, 0]);
6
- const loadedLightValues = new Uint16Array([0, 0, 0, 0]);
7
5
  export default function calculateFaceData(face, builder) {
8
- let light = builder.voxel.getLight();
9
- const faceNormal = VoxelFaceDirections[face];
10
6
  const x = builder.position.x;
11
7
  const y = builder.position.y;
12
8
  const z = builder.position.z;
13
9
  const vertexData = builder.lightData[face];
14
10
  const nVoxel = builder.nVoxel;
15
11
  const checkSet = GradientCheckSets[face];
16
- const otherLight = builder.space.getLight(builder.nVoxel, x + faceNormal[0], y + faceNormal[1], z + faceNormal[2]) || 0;
17
- light = otherLight >= 0 ? otherLight : light >= 0 ? light : 0;
12
+ let startLight = 0;
13
+ if (builder.voxel.isLightSource()) {
14
+ startLight = builder.voxel.getLightSourceValue();
15
+ }
16
+ else {
17
+ startLight =
18
+ nVoxel
19
+ .getVoxel(x + VoxelFaceDirections[face][0], y + VoxelFaceDirections[face][1], z + VoxelFaceDirections[face][2])
20
+ ?.getLight() || 0;
21
+ }
22
+ if (startLight < 0)
23
+ startLight = 0;
24
+ const startS = lightData.getS(startLight);
25
+ const startR = lightData.getR(startLight);
26
+ const startG = lightData.getG(startLight);
27
+ const startB = lightData.getB(startLight);
18
28
  for (let vertex = 0; vertex < 4; vertex++) {
19
- vertexData[vertex] = light;
20
- lightData.getLightValuesArrayToRef(light, currentLightValues);
29
+ vertexData[vertex] = startLight;
30
+ let s = startS;
31
+ let r = startR;
32
+ let g = startG;
33
+ let b = startB;
21
34
  for (let i = 0; i < 9; i += 3) {
22
- const nl = builder.space.getLight(nVoxel, checkSet[vertex][i] + x, checkSet[vertex][i + 1] + y, checkSet[vertex][i + 2] + z);
35
+ const nl = nVoxel
36
+ .getVoxel(checkSet[vertex][i] + x, checkSet[vertex][i + 1] + y, checkSet[vertex][i + 2] + z)
37
+ ?.getLight() || -1;
23
38
  if (nl <= 0)
24
39
  continue;
25
- /*
26
- Do Light
27
- */
28
- lightData.getLightValuesArrayToRef(nl, loadedLightValues);
29
- currentLightValues[0] =
30
- currentLightValues[0] < loadedLightValues[0]
31
- ? loadedLightValues[0]
32
- : currentLightValues[0];
33
- currentLightValues[1] =
34
- currentLightValues[1] < loadedLightValues[1]
35
- ? loadedLightValues[1]
36
- : currentLightValues[1];
37
- currentLightValues[2] =
38
- currentLightValues[2] < loadedLightValues[2]
39
- ? loadedLightValues[2]
40
- : currentLightValues[2];
41
- currentLightValues[3] =
42
- currentLightValues[3] < loadedLightValues[3]
43
- ? loadedLightValues[3]
44
- : currentLightValues[3];
40
+ let ns = lightData.getS(nl);
41
+ let nr = lightData.getR(nl);
42
+ let ng = lightData.getG(nl);
43
+ let nb = lightData.getB(nl);
44
+ if (s < ns)
45
+ s = ns;
46
+ if (r < nr)
47
+ r = nr;
48
+ if (g < ng)
49
+ g = ng;
50
+ if (b < nb)
51
+ b = nb;
45
52
  }
46
- vertexData[vertex] = lightData.setLightValues(currentLightValues);
53
+ vertexData[vertex] = lightData.createLightValue(s, r, g, b);
47
54
  }
48
55
  }
@@ -1,4 +1,4 @@
1
- import type { VoxelMesherDataTool } from "../../../../../Mesher/Tools/VoxelMesherDataTool";
1
+ import type { VoxelModelBuilder } from "../../../VoxelModelBuilder";
2
2
  import { QuadScalarVertexData } from "../../../../Geomtry/Primitives/QuadVertexData";
3
3
  import { CompassAngles } from "@amodx/math";
4
4
  export declare enum FlowVerticies {
@@ -8,4 +8,4 @@ export declare enum FlowVerticies {
8
8
  SouthEsat = 3
9
9
  }
10
10
  export declare function getFlowAngle(vertexLevel: QuadScalarVertexData): [angle: CompassAngles, flow: number];
11
- export declare function getFlowGradient(tool: VoxelMesherDataTool, flowStates: QuadScalarVertexData): QuadScalarVertexData;
11
+ export declare function getFlowGradient(tool: VoxelModelBuilder, flowStates: QuadScalarVertexData): QuadScalarVertexData;
@@ -66,7 +66,7 @@ const returnData = [
66
66
  export function getFlowAngle(vertexLevel) {
67
67
  if (vertexLevel.isAllEqualTo(7)) {
68
68
  returnData[0] = 0;
69
- returnData[1] = FlowStates.None;
69
+ returnData[1] = FlowStates.Up;
70
70
  return returnData;
71
71
  }
72
72
  const upRight = vertexLevel.vertices[QuadVerticies.TopRight];