@divinevoxel/vlox 0.0.71 → 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 (271) hide show
  1. package/Contexts/Base/Main/InitDataGenerator.js +0 -9
  2. package/Contexts/Base/Remote/DataSync.types.d.ts +0 -5
  3. package/Contexts/Base/Remote/InitDataSync.js +17 -31
  4. package/Contexts/Render/DivineVoxelEngineRender.d.ts +1 -1
  5. package/Contexts/World/DivineVoxelEngineWorld.d.ts +1 -1
  6. package/Init/StartConstructor.js +7 -7
  7. package/Init/StartWorld.d.ts +1 -1
  8. package/Init/StartWorld.js +0 -12
  9. package/Math/Indexing.d.ts +12 -3
  10. package/Math/Indexing.js +24 -15
  11. package/Mesher/Functions/CompactVoxelMesh.d.ts +2 -2
  12. package/Mesher/Functions/CompactVoxelMesh.js +4 -5
  13. package/Mesher/Functions/MeshSection.d.ts +1 -1
  14. package/Mesher/Functions/MeshSection.js +72 -66
  15. package/Mesher/Functions/MeshTexture.d.ts +1 -1
  16. package/Mesher/Functions/MeshTexture.js +3 -4
  17. package/Mesher/Functions/MeshVoxel.js +20 -26
  18. package/Mesher/Geomtry/Primitives/QuadVertexData.d.ts +12 -10
  19. package/Mesher/Geomtry/Primitives/QuadVertexData.js +49 -56
  20. package/Mesher/Geomtry/VoxelGeometryBuilder.d.ts +2 -2
  21. package/Mesher/Geomtry/VoxelGeometryBuilder.js +108 -125
  22. package/Mesher/Geomtry/VoxelMesh.d.ts +1 -1
  23. package/Mesher/Geomtry/VoxelMesh.js +2 -2
  24. package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.d.ts +2 -9
  25. package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.js +4 -16
  26. package/Mesher/Geomtry/{Buffers.d.ts → VoxelMeshBuffers.d.ts} +9 -8
  27. package/Mesher/Geomtry/VoxelMeshBuffers.js +49 -0
  28. package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.d.ts +10 -0
  29. package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.js +10 -0
  30. package/Mesher/Geomtry/index.d.ts +0 -1
  31. package/Mesher/Geomtry/index.js +0 -1
  32. package/Mesher/InitMesher.js +2 -11
  33. package/Mesher/InitTask.js +10 -22
  34. package/Mesher/Models/Common/BoundsFunctions.d.ts +1 -3
  35. package/Mesher/Models/Common/BoundsFunctions.js +0 -16
  36. package/Mesher/Models/Common/Calc/CalcConstants.js +14 -31
  37. package/Mesher/Models/Common/Calc/FaceDataCalc.d.ts +2 -8
  38. package/Mesher/Models/Common/Calc/FaceDataCalc.js +50 -52
  39. package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.d.ts +2 -2
  40. package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.js +1 -1
  41. package/Mesher/Models/Nodes/Custom/Liquid/LiquidGeomtryNode.d.ts +1 -5
  42. package/Mesher/Models/Nodes/Custom/Liquid/LiquidGeomtryNode.js +40 -42
  43. package/Mesher/Models/Nodes/GeometryNode.d.ts +3 -5
  44. package/Mesher/Models/Nodes/GeometryNode.js +1 -2
  45. package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.d.ts +3 -6
  46. package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.js +55 -40
  47. package/Mesher/Models/Nodes/Ruled/QuadVoxelGeometryNode.d.ts +2 -6
  48. package/Mesher/Models/Nodes/Ruled/QuadVoxelGeometryNode.js +52 -51
  49. package/Mesher/Models/Nodes/Ruleless/RulelessBoxVoxelGeometryNode.d.ts +2 -6
  50. package/Mesher/Models/Nodes/Ruleless/RulelessBoxVoxelGeometryNode.js +18 -19
  51. package/Mesher/Models/Nodes/Ruleless/RulelessQuadVoxelGeometryNode.d.ts +2 -6
  52. package/Mesher/Models/Nodes/Ruleless/RulelessQuadVoxelGeometryNode.js +37 -40
  53. package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.d.ts +1 -1
  54. package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.js +1 -1
  55. package/Mesher/Models/RenderedMaterials.d.ts +6 -0
  56. package/Mesher/{RenderedMaterials.js → Models/RenderedMaterials.js} +2 -2
  57. package/Mesher/Models/VoxelConstructor.d.ts +4 -5
  58. package/Mesher/Models/VoxelConstructor.js +23 -12
  59. package/Mesher/Models/{VoxelGeometryLookUp.d.ts → VoxelGeometryBuilderCacheSpace.d.ts} +6 -14
  60. package/Mesher/Models/{VoxelGeometryLookUp.js → VoxelGeometryBuilderCacheSpace.js} +26 -44
  61. package/Mesher/{Tools/VoxelMesherDataTool.d.ts → Models/VoxelModelBuilder.d.ts} +10 -8
  62. package/Mesher/{Tools/VoxelMesherDataTool.js → Models/VoxelModelBuilder.js} +44 -19
  63. package/Mesher/Models/VoxelModelConstructorRegister.js +3 -3
  64. package/Models/Defaults/CubeVoxelGeometry.js +4 -0
  65. package/Models/Defaults/CubeVoxelModels.js +344 -344
  66. package/Models/Defaults/LiquidVoxelModel.js +2 -2
  67. package/Models/Defaults/PanelVoxelModels.js +432 -432
  68. package/Models/Defaults/StairVoxelModel.js +576 -576
  69. package/Models/Examples.js +469 -456
  70. package/Models/Indexing/VoxelAOResultsIndex.d.ts +4 -4
  71. package/Models/Indexing/VoxelAOResultsIndex.js +15 -9
  72. package/Models/Indexing/VoxelFaceCullResultsIndex.d.ts +3 -3
  73. package/Models/Indexing/VoxelFaceCullResultsIndex.js +14 -9
  74. package/Models/Indexing/VoxelFaceTransparentResultsIndex.d.ts +1 -1
  75. package/Models/Indexing/VoxelFaceTransparentResultsIndex.js +1 -1
  76. package/Models/Rules/Functions/BuildFinalInputs.js +9 -7
  77. package/Models/Rules/Functions/BuildGeomtryInputs.js +8 -5
  78. package/Models/Rules/Functions/BuildRules.js +4 -4
  79. package/Models/Rules/{VoxelModelManager.d.ts → VoxelModelRuleBuilderRegister.d.ts} +1 -1
  80. package/Models/Rules/VoxelModelRuleBuilderRegister.js +178 -0
  81. package/Models/VoxelModel.types.d.ts +14 -5
  82. package/Renderer/Classes/SectorMesh.d.ts +3 -4
  83. package/Renderer/Classes/SectorMesh.js +6 -11
  84. package/Renderer/InitTasks.js +6 -7
  85. package/Renderer/MeshManager.js +2 -2
  86. package/Renderer/MeshRegister.js +2 -1
  87. package/Settings/EngineSettings.d.ts +1 -1
  88. package/Settings/EngineSettings.js +3 -5
  89. package/Settings/EngineSettings.types.d.ts +17 -18
  90. package/Settings/EngineSettings.types.js +16 -15
  91. package/Tasks/IWG/IWG.d.ts +2 -1
  92. package/Tasks/IWG/IWG.js +9 -3
  93. package/Tasks/IWG/Internal/Classes/BuildQueue.d.ts +11 -0
  94. package/Tasks/IWG/Internal/Classes/BuildQueue.js +49 -0
  95. package/Tasks/IWG/Internal/Classes/Generator.d.ts +6 -1
  96. package/Tasks/IWG/Internal/Classes/Generator.js +14 -2
  97. package/Tasks/IWG/Internal/Classes/IWGTaskBase.js +2 -2
  98. package/Tasks/IWG/Internal/Functions/getSectorState.js +4 -7
  99. package/Tasks/IWG/Internal/Functions/runBuildUpdate.js +21 -2
  100. package/Tasks/IWG/Internal/Functions/runWorldUpdate.js +5 -6
  101. package/Tasks/IWG/Internal/IWGTasks.d.ts +0 -4
  102. package/Tasks/IWG/Internal/IWGTasks.js +12 -31
  103. package/Tasks/IWG/Internal/IWGTools.d.ts +1 -1
  104. package/Tasks/IWG/Procedures/SaveAllSectors.js +2 -0
  105. package/Tasks/Propagation/Flow/FlowManager.d.ts +0 -2
  106. package/Tasks/Propagation/Flow/FlowManager.js +86 -87
  107. package/Tasks/Propagation/Flow/WorldFlow.js +2 -3
  108. package/Tasks/Propagation/Illumanation/WorldRGB.js +1 -2
  109. package/Tasks/Update/InitTasks.d.ts +2 -1
  110. package/Tasks/Update/InitTasks.js +6 -6
  111. package/Tasks/Update/UpdateTask.d.ts +3 -1
  112. package/Tasks/Update/UpdateTask.js +28 -2
  113. package/Tasks/Update/VoxelUpdate.js +21 -7
  114. package/Tasks/WorldGeneration/WorldGenBrush.js +2 -1
  115. package/Templates/Cursor/TemplateCursor.d.ts +2 -2
  116. package/Templates/Cursor/TemplateCursor.js +1 -2
  117. package/Templates/Functions/CreateTemplate.js +1 -1
  118. package/Templates/VoxelTemplate.js +6 -8
  119. package/Templates/VoxelTemplates.types.d.ts +1 -1
  120. package/Textures/Classes/CompiledTexture.d.ts +18 -0
  121. package/Textures/Classes/CompiledTexture.js +50 -0
  122. package/Textures/Classes/CompiledTextureAnimation.d.ts +12 -0
  123. package/Textures/Classes/CompiledTextureAnimation.js +27 -0
  124. package/Textures/Classes/TextureAnimationTexture.d.ts +10 -0
  125. package/Textures/Classes/TextureAnimationTexture.js +32 -0
  126. package/Textures/Functions/BuildTextureData.d.ts +10 -0
  127. package/Textures/Functions/BuildTextureData.js +205 -0
  128. package/Textures/Texture.types.d.ts +50 -64
  129. package/Textures/TextureManager.d.ts +8 -19
  130. package/Textures/TextureManager.js +28 -166
  131. package/Tools/Brush/Brush.d.ts +1 -3
  132. package/Tools/Brush/Brush.js +43 -12
  133. package/Util/Binary/BinaryArrays.d.ts +6 -0
  134. package/Util/Binary/BinaryArrays.js +25 -0
  135. package/Util/Binary/BinaryBuffer.d.ts +29 -0
  136. package/Util/Binary/BinaryBuffer.js +130 -0
  137. package/Util/Binary/BinaryFunctions.d.ts +3 -0
  138. package/Util/Binary/BinaryFunctions.js +11 -0
  139. package/Util/StringPalette.d.ts +1 -0
  140. package/Util/StringPalette.js +8 -0
  141. package/Voxels/Cursor/DataCursor.interface.d.ts +5 -0
  142. package/Voxels/Cursor/VoxelCursor.d.ts +6 -6
  143. package/Voxels/Cursor/VoxelCursor.interface.d.ts +11 -16
  144. package/Voxels/Cursor/VoxelCursor.interface.js +35 -58
  145. package/Voxels/Cursor/VoxelCursor.js +13 -12
  146. package/Voxels/Cursor/VoxelLightData.d.ts +3 -4
  147. package/Voxels/Cursor/VoxelLightData.js +8 -7
  148. package/Voxels/Data/VoxelPalettesRegister.d.ts +8 -0
  149. package/Voxels/Data/VoxelPalettesRegister.js +8 -0
  150. package/Voxels/Data/VoxelTag.types.d.ts +56 -0
  151. package/Voxels/Data/VoxelTag.types.js +23 -0
  152. package/Voxels/{State → Data}/VoxelTagStates.d.ts +2 -2
  153. package/Voxels/{State → Data}/VoxelTagStates.js +5 -5
  154. package/Voxels/Data/VoxelTagsRegister.d.ts +9 -0
  155. package/Voxels/Data/VoxelTagsRegister.js +32 -0
  156. package/Voxels/Functions/BuildStateData.js +12 -12
  157. package/Voxels/Functions/BuildTagAndPaletteData.d.ts +13 -0
  158. package/Voxels/Functions/BuildTagAndPaletteData.js +55 -0
  159. package/Voxels/Indexes/VoxelIndex.js +3 -3
  160. package/Voxels/InitVoxelData.js +31 -73
  161. package/Voxels/State/Schema/StateSchema.d.ts +1 -1
  162. package/Voxels/Types/Voxel.types.d.ts +20 -42
  163. package/Voxels/Types/Voxel.types.js +6 -17
  164. package/Voxels/Types/VoxelModelCompiledData.types.d.ts +11 -13
  165. package/Voxels/Types/VoxelSubstances.types.d.ts +2 -15
  166. package/Voxels/Types/VoxelSubstances.types.js +1 -9
  167. package/World/Archive/Archive.types.d.ts +38 -34
  168. package/World/Archive/Functions/ArchiveArea.js +18 -30
  169. package/World/Archive/Functions/ArchiveSector.js +484 -213
  170. package/World/Archive/Functions/ImportSector.d.ts +3 -3
  171. package/World/Archive/Functions/ImportSector.js +205 -151
  172. package/World/Archive/Functions/Shared.d.ts +6 -0
  173. package/World/Archive/Functions/Shared.js +75 -0
  174. package/World/Archive/InitTasks.js +30 -13
  175. package/World/Cursor/SectionCursor.d.ts +3 -2
  176. package/World/Cursor/SectionCursor.js +9 -4
  177. package/World/Cursor/SectorCursor.d.ts +3 -2
  178. package/World/Cursor/SectorCursor.js +5 -3
  179. package/World/Cursor/WorldCursor.d.ts +2 -2
  180. package/World/Cursor/WorldCursor.js +6 -3
  181. package/World/Cursor/WorldVoxelCursor.d.ts +7 -7
  182. package/World/Cursor/WorldVoxelCursor.js +21 -24
  183. package/World/InitTasks.d.ts +1 -1
  184. package/World/Lock/WorldLock.d.ts +1 -1
  185. package/World/Section/Section.d.ts +31 -23
  186. package/World/Section/Section.js +116 -18
  187. package/World/Section/SectionState.d.ts +10 -0
  188. package/World/Section/SectionState.js +11 -0
  189. package/World/Sector/Sector.d.ts +24 -9
  190. package/World/Sector/Sector.js +92 -21
  191. package/World/Sector/SectorHeightMap.js +3 -5
  192. package/World/Sector/SectorState.d.ts +21 -0
  193. package/World/Sector/SectorState.js +28 -0
  194. package/World/WorldRegister.d.ts +4 -0
  195. package/World/WorldRegister.js +15 -3
  196. package/World/WorldSpaces.d.ts +6 -0
  197. package/World/WorldSpaces.js +25 -6
  198. package/package.json +1 -1
  199. package/Data/Cursor/DataCursor.interface.d.ts +0 -5
  200. package/Data/Cursor/DataCursor.interface.js +0 -2
  201. package/Data/Register/MappedDataRegister.d.ts +0 -5
  202. package/Data/Register/MappedDataRegister.js +0 -9
  203. package/Data/Register/MappedRegisterBase.d.ts +0 -14
  204. package/Data/Register/MappedRegisterBase.js +0 -50
  205. package/Data/Structs/StructBuilder.d.ts +0 -34
  206. package/Data/Structs/StructBuilder.js +0 -157
  207. package/Data/Structs/StructBuilder.types.d.ts +0 -30
  208. package/Mesher/Functions/CompactMesh.d.ts +0 -2
  209. package/Mesher/Functions/CompactMesh.js +0 -42
  210. package/Mesher/Geomtry/Buffers.js +0 -81
  211. package/Mesher/Geomtry/GeometryNormals.d.ts +0 -10
  212. package/Mesher/Geomtry/GeometryNormals.js +0 -52
  213. package/Mesher/Geomtry/MeshData.types.d.ts +0 -13
  214. package/Mesher/Geomtry/MeshData.types.js +0 -6
  215. package/Mesher/Geomtry/Tools/MesherDataTools.d.ts +0 -7
  216. package/Mesher/Geomtry/Tools/MesherDataTools.js +0 -12
  217. package/Mesher/Geomtry/Tools/index.d.ts +0 -1
  218. package/Mesher/Geomtry/Tools/index.js +0 -1
  219. package/Mesher/RenderedMaterials.d.ts +0 -6
  220. package/Models/Rules/VoxelModelManager.js +0 -82
  221. package/Textures/TextureAnimations.d.ts +0 -4
  222. package/Textures/TextureAnimations.js +0 -35
  223. package/Textures/TextureArray.d.ts +0 -47
  224. package/Textures/TextureArray.js +0 -202
  225. package/Textures/TextureBuilder.d.ts +0 -13
  226. package/Textures/TextureBuilder.js +0 -120
  227. package/Textures/TextureRegister.d.ts +0 -9
  228. package/Textures/TextureRegister.js +0 -28
  229. package/Tools/Data/SubstanceDataTool.d.ts +0 -13
  230. package/Tools/Data/SubstanceDataTool.js +0 -51
  231. package/Voxels/Palettes/MaterialPalette.d.ts +0 -9
  232. package/Voxels/Palettes/MaterialPalette.js +0 -11
  233. package/Voxels/Palettes/SubstancePalette.d.ts +0 -9
  234. package/Voxels/Palettes/SubstancePalette.js +0 -11
  235. package/Voxels/Palettes/VoxelPalette.d.ts +0 -11
  236. package/Voxels/Palettes/VoxelPalette.js +0 -15
  237. package/Voxels/Segments/MaterialDataGenerator.d.ts +0 -6
  238. package/Voxels/Segments/MaterialDataGenerator.js +0 -12
  239. package/Voxels/Segments/SubstanceDataGenerator.d.ts +0 -6
  240. package/Voxels/Segments/SubstanceDataGenerator.js +0 -35
  241. package/Voxels/Segments/VoxelDataGenerator.d.ts +0 -10
  242. package/Voxels/Segments/VoxelDataGenerator.js +0 -56
  243. package/Voxels/Structs/Builder/SubstanceStructBuilder.d.ts +0 -2
  244. package/Voxels/Structs/Builder/SubstanceStructBuilder.js +0 -42
  245. package/Voxels/Structs/Builder/VoxelStructBuilder.d.ts +0 -2
  246. package/Voxels/Structs/Builder/VoxelStructBuilder.js +0 -68
  247. package/Voxels/Structs/SubstanceStruct.d.ts +0 -17
  248. package/Voxels/Structs/SubstanceStruct.js +0 -17
  249. package/Voxels/Structs/VoxelStruct.d.ts +0 -27
  250. package/Voxels/Structs/VoxelStruct.js +0 -29
  251. package/World/Section/SectionHeightMap.d.ts +0 -10
  252. package/World/Section/SectionHeightMap.js +0 -39
  253. package/World/Section/SectionStruct.d.ts +0 -8
  254. package/World/Section/SectionStruct.js +0 -29
  255. package/World/Section/SectionStructProperties.d.ts +0 -10
  256. package/World/Section/SectionStructProperties.js +0 -11
  257. package/World/Sector/SectorStruct.d.ts +0 -1
  258. package/World/Sector/SectorStruct.js +0 -46
  259. package/World/Sector/SectorStructIds.d.ts +0 -13
  260. package/World/Sector/SectorStructIds.js +0 -14
  261. package/World/Structs/WorldDataStructProperties.d.ts +0 -8
  262. package/World/Structs/WorldDataStructProperties.js +0 -9
  263. /package/Mesher/{VoxelShaderData.d.ts → Geomtry/VoxelShaderData.d.ts} +0 -0
  264. /package/Mesher/{VoxelShaderData.js → Geomtry/VoxelShaderData.js} +0 -0
  265. /package/{Data/Functions → Util/Binary}/Palettes.d.ts +0 -0
  266. /package/{Data/Functions → Util/Binary}/Palettes.js +0 -0
  267. /package/{Data/Structs/StructBuilder.types.js → Voxels/Cursor/DataCursor.interface.js} +0 -0
  268. /package/Voxels/{VoxelLevelReader.d.ts → Cursor/VoxelLevelReader.d.ts} +0 -0
  269. /package/Voxels/{VoxelLevelReader.js → Cursor/VoxelLevelReader.js} +0 -0
  270. /package/World/{Storage → Types}/WorldStorage.interface.d.ts +0 -0
  271. /package/World/{Storage → Types}/WorldStorage.interface.js +0 -0
@@ -1,12 +1,12 @@
1
1
  export type VoxelAOResultsIndexData = {
2
- buffer: SharedArrayBuffer;
2
+ buffer: ArrayBufferLike;
3
3
  vertexByteCount: number;
4
4
  };
5
5
  export declare class VoxelAOResultsIndex {
6
- data: VoxelAOResultsIndexData;
7
- view: DataView;
6
+ view: Uint8Array;
7
+ readonly vertexByteCount: number;
8
8
  constructor(data: VoxelAOResultsIndexData);
9
- getByteIndex(otherId: number, directionIndex: number): number;
10
9
  getValue(otherId: number, directionIndex: number, vertexIndex: number): number;
11
10
  setValue(otherId: number, directionIndex: number, vertexIndex: number, value?: number): void;
11
+ getData(): VoxelAOResultsIndexData;
12
12
  }
@@ -1,20 +1,26 @@
1
1
  import { BinaryArrays } from "@amodx/binary/Util/BinaryArrays";
2
2
  import { VoxelRelativeCubeIndex } from "./VoxelRelativeCubeIndex";
3
+ const flatIndexSize = VoxelRelativeCubeIndex.flatIndex.size;
4
+ function getByteIndex(otherId, directionIndex, vertexByteCount) {
5
+ return (otherId * vertexByteCount * flatIndexSize + directionIndex * vertexByteCount);
6
+ }
3
7
  export class VoxelAOResultsIndex {
4
- data;
5
8
  view;
9
+ vertexByteCount;
6
10
  constructor(data) {
7
- this.data = data;
8
- this.view = new DataView(data.buffer);
9
- }
10
- getByteIndex(otherId, directionIndex) {
11
- return (otherId * this.data.vertexByteCount * VoxelRelativeCubeIndex.flatIndex.size +
12
- directionIndex * this.data.vertexByteCount);
11
+ this.vertexByteCount = data.vertexByteCount;
12
+ this.view = new Uint8Array(data.buffer);
13
13
  }
14
14
  getValue(otherId, directionIndex, vertexIndex) {
15
- return BinaryArrays.getBitArrayIndex(this.view, this.getByteIndex(otherId, directionIndex), vertexIndex);
15
+ return BinaryArrays.getBitArrayIndex(this.view, getByteIndex(otherId, directionIndex, this.vertexByteCount), vertexIndex);
16
16
  }
17
17
  setValue(otherId, directionIndex, vertexIndex, value = 1) {
18
- BinaryArrays.setBitArrayIndex(this.view, this.getByteIndex(otherId, directionIndex), vertexIndex, value);
18
+ BinaryArrays.setBitArrayIndex(this.view, getByteIndex(otherId, directionIndex, this.vertexByteCount), vertexIndex, value);
19
+ }
20
+ getData() {
21
+ return {
22
+ buffer: this.view.buffer,
23
+ vertexByteCount: this.vertexByteCount,
24
+ };
19
25
  }
20
26
  }
@@ -1,12 +1,12 @@
1
1
  export type VoxelFaceCullResultsIndexData = {
2
- buffer: SharedArrayBuffer;
2
+ buffer: ArrayBufferLike;
3
3
  faceByteCount: number;
4
4
  };
5
5
  export declare class VoxelFaceCullResultsIndex {
6
- data: VoxelFaceCullResultsIndexData;
7
6
  view: Uint16Array;
7
+ readonly faceByteCount: number;
8
8
  constructor(data: VoxelFaceCullResultsIndexData);
9
- getByteIndex(otherId: number, directionIndex: number): number;
10
9
  getValue(otherId: number, directionIndex: number, faceIndex: number): number;
11
10
  setValue(otherId: number, directionIndex: number, faceIndex: number, value?: number): number;
11
+ getData(): VoxelFaceCullResultsIndexData;
12
12
  }
@@ -1,21 +1,26 @@
1
1
  import { VoxelRelativeCubeIndex } from "./VoxelRelativeCubeIndex";
2
+ const flatIndexSize = VoxelRelativeCubeIndex.flatIndex.size;
3
+ function getByteIndex(otherId, directionIndex, faceByteCount) {
4
+ return (otherId * faceByteCount * flatIndexSize + directionIndex * faceByteCount);
5
+ }
2
6
  export class VoxelFaceCullResultsIndex {
3
- data;
4
7
  view;
8
+ faceByteCount;
5
9
  constructor(data) {
6
- this.data = data;
7
10
  this.view = new Uint16Array(data.buffer);
8
- }
9
- getByteIndex(otherId, directionIndex) {
10
- return (otherId * this.data.faceByteCount * VoxelRelativeCubeIndex.flatIndex.size +
11
- directionIndex * this.data.faceByteCount);
11
+ this.faceByteCount = data.faceByteCount;
12
12
  }
13
13
  getValue(otherId, directionIndex, faceIndex) {
14
- const v = this.view[this.getByteIndex(otherId, directionIndex) + faceIndex];
14
+ const v = this.view[getByteIndex(otherId, directionIndex, this.faceByteCount) + faceIndex];
15
15
  return v == 65535 ? -1 : v;
16
16
  }
17
17
  setValue(otherId, directionIndex, faceIndex, value = -1) {
18
- return (this.view[this.getByteIndex(otherId, directionIndex) + faceIndex] =
19
- value);
18
+ return (this.view[getByteIndex(otherId, directionIndex, this.faceByteCount) + faceIndex] = value);
19
+ }
20
+ getData() {
21
+ return {
22
+ buffer: this.view.buffer,
23
+ faceByteCount: this.faceByteCount,
24
+ };
20
25
  }
21
26
  }
@@ -4,7 +4,7 @@ export type VoxelFaceTransparentResultsIndexData = {
4
4
  };
5
5
  export declare class VoxelFaceTransparentResultsIndex {
6
6
  data: VoxelFaceTransparentResultsIndexData;
7
- view: DataView;
7
+ view: Uint8Array;
8
8
  constructor(data: VoxelFaceTransparentResultsIndexData);
9
9
  getValue(modState: number, faceByteIndex: number, faceIndex: number): number;
10
10
  setValue(modState: number, faceByteIndex: number, faceIndex: number, value?: number): void;
@@ -4,7 +4,7 @@ export class VoxelFaceTransparentResultsIndex {
4
4
  view;
5
5
  constructor(data) {
6
6
  this.data = data;
7
- this.view = new DataView(data.buffer);
7
+ this.view = new Uint8Array(data.buffer);
8
8
  }
9
9
  getValue(modState, faceByteIndex, faceIndex) {
10
10
  return BinaryArrays.getBitArrayIndex(this.view, this.data.resultsSize * modState + faceByteIndex, faceIndex);
@@ -1,5 +1,5 @@
1
1
  import { VoxelFaceTransparentResultsIndex } from "../../Indexing/VoxelFaceTransparentResultsIndex";
2
- import { VoxelModelManager } from "../VoxelModelManager";
2
+ import { VoxelModelRuleBuilderRegister } from "../VoxelModelRuleBuilderRegister";
3
3
  const isArgString = (data) => {
4
4
  if (typeof data !== "string")
5
5
  return;
@@ -24,21 +24,22 @@ export function BuildFinalInputs(model) {
24
24
  const geoNodes = [];
25
25
  const shapeStateNodes = model.data.shapeStatesNodes[state];
26
26
  for (const node of shapeStateNodes) {
27
- const geo = VoxelModelManager.getGeomtryFromLink(node);
27
+ const geo = VoxelModelRuleBuilderRegister.getGeomtryFromLink(node);
28
28
  if (!geo)
29
29
  throw new Error(`Geometry does not exist`);
30
30
  geo.inputs.resetDefaults();
31
31
  for (const geoArg in node.inputs) {
32
32
  const constructorArg = node.inputs[geoArg];
33
33
  if (isArgString(constructorArg)) {
34
- geo.inputs[geoArg] = modVoxelInput[constructorArg];
34
+ geo.inputs[geoArg] =
35
+ modVoxelInput[constructorArg.replace("@", "")];
35
36
  continue;
36
37
  }
37
38
  geo.inputs[geoArg] = constructorArg;
38
39
  }
39
40
  geoNodes[model.stateData.geometryLinkPalette[node.id]] =
40
41
  geo.inputs.cloneArgs();
41
- const byteIndex = model.stateData.relativeGeometryByteIndexMap[model.stateData.shapeStateRelativeGeometryMap[model.stateData.shapeStateRecord[state]][VoxelModelManager.geometryPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node))]];
42
+ const byteIndex = model.stateData.relativeGeometryByteIndexMap[model.stateData.shapeStateRelativeGeometryMap[model.stateData.shapeStateRecord[state]][VoxelModelRuleBuilderRegister.geometryPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node))]];
42
43
  if (geo.data.ogData.doNotBuildRules !== true) {
43
44
  for (let i = 0; i < geo.inputs.faceTransparentIndex.length; i++) {
44
45
  transparentIndex.setValue(modIndex, byteIndex, i, geo.inputs.faceTransparentIndex[i] ? 1 : 0);
@@ -56,20 +57,21 @@ export function BuildFinalInputs(model) {
56
57
  const shapeStateNodes = model.data.shapeStatesConditonalNodes[state];
57
58
  for (let i = 0; i < shapeStateNodes.length; i++) {
58
59
  const node = shapeStateNodes[i];
59
- const geo = VoxelModelManager.getGeomtryFromLink(node);
60
+ const geo = VoxelModelRuleBuilderRegister.getGeomtryFromLink(node);
60
61
  if (!geo)
61
62
  throw new Error(`Geometry does not exist`);
62
63
  // geo.inputs.resetDefaults();
63
64
  for (const geoArg in node.inputs) {
64
65
  const constructorArg = node.inputs[geoArg];
65
66
  if (isArgString(constructorArg)) {
66
- geo.inputs[geoArg] = modVoxelInput[constructorArg];
67
+ geo.inputs[geoArg] =
68
+ modVoxelInput[constructorArg.replace("@", "")];
67
69
  continue;
68
70
  }
69
71
  geo.inputs[geoArg] = constructorArg;
70
72
  }
71
73
  geoNodes[i] = geo.inputs.cloneArgs();
72
- const byteIndex = model.stateData.relativeGeometryByteIndexMap[model.stateData.condiotnalShapeStateRelativeGeometryMap[model.stateData.condiotnalShapeStateRecord[state]][VoxelModelManager.geometryPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node))]];
74
+ const byteIndex = model.stateData.relativeGeometryByteIndexMap[model.stateData.condiotnalShapeStateRelativeGeometryMap[model.stateData.condiotnalShapeStateRecord[state]][VoxelModelRuleBuilderRegister.geometryPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node))]];
73
75
  if (geo.data.ogData.doNotBuildRules !== true) {
74
76
  for (let i = 0; i < geo.inputs.faceTransparentIndex.length; i++) {
75
77
  transparentIndex.setValue(modIndex, byteIndex, i, geo.inputs.faceTransparentIndex[i] ? 1 : 0);
@@ -63,6 +63,7 @@ const mapQuadUvs = (uvs, rotation = 0, transform) => {
63
63
  export function BuildGeomtryInputs(geomtry) {
64
64
  const inputObservers = new Map();
65
65
  const onInput = (id, subscribe) => {
66
+ id = id.replace("@", "");
66
67
  let obs = inputObservers.get(id);
67
68
  if (!obs) {
68
69
  obs = [];
@@ -109,6 +110,7 @@ export function BuildGeomtryInputs(geomtry) {
109
110
  value));
110
111
  }
111
112
  if (isArgString(faceData.transparent)) {
113
+ faceTransparentIndex[relativeFaceCount + face] = false;
112
114
  onInput(String(faceData.transparent), (value) => {
113
115
  args[argsIndex][face][BoxVoxelGometryInputs.ArgIndexes.Transparent] = value;
114
116
  faceTransparentIndex[relativeFaceCount + face] = Boolean(value);
@@ -228,15 +230,16 @@ export function BuildGeomtryInputs(geomtry) {
228
230
  },
229
231
  };
230
232
  for (const arg in geomtry.data.ogData.arguments) {
231
- const argKey = `@${arg}`;
232
- if (!inputObservers.has(argKey))
233
+ if (!inputObservers.has(arg))
233
234
  continue;
234
- const obs = inputObservers.get(argKey);
235
+ const obs = inputObservers.get(arg);
235
236
  const data = geomtry.data.ogData.arguments[arg];
236
- Object.defineProperty(finalGeoInputs, argKey, {
237
+ Object.defineProperty(finalGeoInputs, arg, {
237
238
  set(value) {
238
239
  if (data.type == "texture") {
239
- value = TextureManager.getTextureIndex(value);
240
+ const textureId = value;
241
+ value =
242
+ TextureManager.getTexture("dve_voxel")?.getTextureIndex(textureId);
240
243
  }
241
244
  for (const func of obs) {
242
245
  func(value);
@@ -1,7 +1,7 @@
1
1
  import { VoxelRelativeCubeIndex } from "../../Indexing/VoxelRelativeCubeIndex";
2
2
  import { Vector3Like } from "@amodx/math";
3
3
  import { VoxelAOResultsIndex } from "../../Indexing/VoxelAOResultsIndex";
4
- import { VoxelModelManager } from "../VoxelModelManager";
4
+ import { VoxelModelRuleBuilderRegister } from "../VoxelModelRuleBuilderRegister";
5
5
  import { VoxelFaceCullResultsIndex } from "../../Indexing/VoxelFaceCullResultsIndex";
6
6
  class OcculsionBox {
7
7
  p1;
@@ -132,7 +132,7 @@ export function BuildRules(main, geoPalette) {
132
132
  faceByteCount: main.faceCount,
133
133
  });
134
134
  for (let otherNumberId = 0; otherNumberId < geoPalette.size; otherNumberId++) {
135
- let other = VoxelModelManager.geometry.get(geoPalette._palette[otherNumberId]);
135
+ let other = VoxelModelRuleBuilderRegister.geometry.get(geoPalette._palette[otherNumberId]);
136
136
  if (other.data.ogData.doNotBuildRules !== undefined)
137
137
  continue;
138
138
  if (other.id == main.id)
@@ -179,8 +179,8 @@ export function BuildRules(main, geoPalette) {
179
179
  }
180
180
  }
181
181
  return {
182
- aoIndex: aoIndex.data,
183
- cullIndex: cullIndex.data,
182
+ aoIndex: aoIndex.getData(),
183
+ cullIndex: cullIndex.getData(),
184
184
  faceCullMap,
185
185
  vertexHitMap,
186
186
  };
@@ -2,7 +2,7 @@ import { StringPalette } from "../../Util/StringPalette";
2
2
  import { VoxelGeometryData, VoxelGeometryLinkData, VoxelModelConstructorData, VoxelModelData } from "../VoxelModel.types";
3
3
  import { VoxelRuleGeometry } from "./Classes/VoxelRulesGeometry";
4
4
  import { VoxelRulesModoel } from "./Classes/VoxelRulesModel";
5
- export declare class VoxelModelManager {
5
+ export declare class VoxelModelRuleBuilderRegister {
6
6
  static geometryPalette: StringPalette;
7
7
  static getGeometryLinkId: (node: VoxelGeometryLinkData) => string;
8
8
  static voxels: Map<string, {
@@ -0,0 +1,178 @@
1
+ import { VoxelFaceNameArray } from "../../Math";
2
+ import { StringPalette } from "../../Util/StringPalette";
3
+ import { VoxelRuleGeometry } from "./Classes/VoxelRulesGeometry";
4
+ import { VoxelRulesModoel } from "./Classes/VoxelRulesModel";
5
+ const addGeo = (model, stateId, nodes) => {
6
+ const registred = [];
7
+ for (const geoLinkNode of nodes) {
8
+ const geo = VoxelModelRuleBuilderRegister.geometry.get(geoLinkNode.geometryId);
9
+ if (!geo)
10
+ throw new Error(`Geometry ${geoLinkNode.geometryId} is not registered.`);
11
+ const newId = getGeometryLinkId(geoLinkNode);
12
+ if (VoxelModelRuleBuilderRegister.geometry.has(newId))
13
+ continue;
14
+ registred.push([stateId, newId]);
15
+ if (!VoxelModelRuleBuilderRegister.geometryPalette.isRegistered(newId))
16
+ VoxelModelRuleBuilderRegister.geometryPalette.register(newId);
17
+ const newData = structuredClone(geo.data);
18
+ for (const node of newData.nodes) {
19
+ node.tranform = {
20
+ ...(geoLinkNode.position ? { position: geoLinkNode.position } : {}),
21
+ ...(geoLinkNode.scale ? { scale: geoLinkNode.scale } : {}),
22
+ ...(geoLinkNode.rotation ? { rotation: geoLinkNode.rotation } : {}),
23
+ ...(geoLinkNode.rotationPivot
24
+ ? { rotationPivot: geoLinkNode.rotationPivot }
25
+ : {}),
26
+ ...(geoLinkNode.flip ? { flip: geoLinkNode.flip } : {}),
27
+ };
28
+ }
29
+ VoxelModelRuleBuilderRegister.geometry.set(newId, new VoxelRuleGeometry(newId, newData));
30
+ continue;
31
+ }
32
+ return registred;
33
+ };
34
+ const getGeometryLinkId = (node) => {
35
+ return `${node.geometryId}${node.position ? `-p${node.position.toString()}` : ""}${node.rotation ? `-r${node.rotation.toString()}` : ""}${node.scale ? `-s${node.scale.toString()}` : ""}`.trim();
36
+ };
37
+ export class VoxelModelRuleBuilderRegister {
38
+ static geometryPalette = new StringPalette();
39
+ static getGeometryLinkId = getGeometryLinkId;
40
+ static voxels = new Map();
41
+ static geometry = new Map();
42
+ static models = new Map();
43
+ static registerGeometry(...geometry) {
44
+ for (const geo of geometry) {
45
+ if (!this.geometryPalette.isRegistered(geo.id))
46
+ this.geometryPalette.register(geo.id);
47
+ const divisor = geo.divisor ? geo.divisor : false;
48
+ if (divisor) {
49
+ for (const node of geo.nodes) {
50
+ if (node.type == "box") {
51
+ let d = node.divisor ? node.divisor : divisor;
52
+ node.points[0][0] /= d[0];
53
+ node.points[0][1] /= d[1];
54
+ node.points[0][2] /= d[2];
55
+ node.points[1][0] /= d[0];
56
+ node.points[1][1] /= d[1];
57
+ node.points[1][2] /= d[2];
58
+ for (const faceName of VoxelFaceNameArray) {
59
+ const data = node.faces[faceName];
60
+ if (Array.isArray(data.uv)) {
61
+ data.uv[0] /= d[0];
62
+ data.uv[1] /= d[1];
63
+ data.uv[2] /= d[0];
64
+ data.uv[3] /= d[1];
65
+ }
66
+ }
67
+ }
68
+ if (node.type == "quad") {
69
+ let d = node.divisor ? node.divisor : divisor;
70
+ for (let i = 0; i < 4; i++) {
71
+ const point = node.points[i];
72
+ point[0] /= d[0];
73
+ point[1] /= d[1];
74
+ point[2] /= d[2];
75
+ }
76
+ if (Array.isArray(node.uv)) {
77
+ if (Array.isArray(node.uv[0])) {
78
+ let uvs = node.uv;
79
+ for (let i = 0; i < node.uv.length; i++) {
80
+ uvs[i][0] /= d[0];
81
+ uvs[i][1] /= d[1];
82
+ }
83
+ }
84
+ else {
85
+ let uvs = node.uv;
86
+ uvs[0] /= d[0];
87
+ uvs[1] /= d[1];
88
+ uvs[2] /= d[0];
89
+ uvs[3] /= d[1];
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ this.geometry.set(geo.id, new VoxelRuleGeometry(geo.id, {
96
+ ogData: geo,
97
+ id: geo.id,
98
+ nodes: geo.nodes.map((node) => ({
99
+ node,
100
+ tranform: {},
101
+ })),
102
+ }));
103
+ }
104
+ }
105
+ static getGeomtryFromLink(link) {
106
+ return this.geometry.get(getGeometryLinkId(link));
107
+ }
108
+ static registerModels(...models) {
109
+ for (const model of models) {
110
+ const rulesModel = new VoxelRulesModoel(model);
111
+ this.models.set(model.id, rulesModel);
112
+ const divisor = model.divisor ? model.divisor : null;
113
+ if (divisor) {
114
+ for (const stateId in model.shapeStatesNodes) {
115
+ const nodes = model.shapeStatesNodes[stateId];
116
+ for (const node of nodes) {
117
+ const d = "divisor" in node ? node.divisor : divisor;
118
+ if (node.position) {
119
+ node.position[0] /= d[0];
120
+ node.position[1] /= d[1];
121
+ node.position[2] /= d[2];
122
+ }
123
+ if (node.rotationPivot) {
124
+ node.rotationPivot[0] /= d[0];
125
+ node.rotationPivot[1] /= d[1];
126
+ node.rotationPivot[2] /= d[2];
127
+ }
128
+ }
129
+ }
130
+ for (const stateId in model.shapeStatesConditonalNodes) {
131
+ const nodes = model.shapeStatesConditonalNodes[stateId];
132
+ for (const node of nodes) {
133
+ const d = "divisor" in node ? node.divisor : divisor;
134
+ if (node.position) {
135
+ node.position[0] /= d[0];
136
+ node.position[1] /= d[1];
137
+ node.position[2] /= d[2];
138
+ }
139
+ if (node.rotationPivot) {
140
+ node.rotationPivot[0] /= d[0];
141
+ node.rotationPivot[1] /= d[1];
142
+ node.rotationPivot[2] /= d[2];
143
+ }
144
+ }
145
+ }
146
+ if (model.effects) {
147
+ for (const effect of model.effects) {
148
+ if (effect.type == "fx-points") {
149
+ for (const state in effect.values) {
150
+ for (const point of effect.values[state]) {
151
+ point[0] /= divisor[0];
152
+ point[1] /= divisor[1];
153
+ point[2] /= divisor[2];
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+ for (const stateId in model.shapeStatesNodes) {
161
+ const nodes = model.shapeStatesNodes[stateId];
162
+ addGeo(model, stateId, nodes).forEach((_) => rulesModel.registerShapeState(..._));
163
+ }
164
+ for (const stateId in model.shapeStatesConditonalNodes) {
165
+ const nodes = model.shapeStatesConditonalNodes[stateId];
166
+ addGeo(model, stateId, nodes).forEach((_) => rulesModel.registerCondiotnalNode(..._));
167
+ }
168
+ }
169
+ }
170
+ static registerVoxel(id, data) {
171
+ let voxelModels = this.voxels.get(data.id);
172
+ if (!voxelModels) {
173
+ voxelModels = [];
174
+ this.voxels.set(data.id, voxelModels);
175
+ }
176
+ voxelModels.push({ id, data });
177
+ }
178
+ }
@@ -22,6 +22,8 @@ export interface VoxelCustomGeomtryNode {
22
22
  }
23
23
  export interface VoxelBoxGeometryNode {
24
24
  type: "box";
25
+ /**Divisor used for transform of this specific node.*/
26
+ divisor?: Vec3Array;
25
27
  noShade?: boolean;
26
28
  points: [start: Vec3Array, end: Vec3Array];
27
29
  rotation?: Vec3Array;
@@ -37,6 +39,8 @@ export interface VoxelBoxFaceData {
37
39
  }
38
40
  export interface VoxelQuadGeometryNode {
39
41
  type: "quad";
42
+ /**Divisor used for transform of this specific node.*/
43
+ divisor?: Vec3Array;
40
44
  doubleSided?: boolean | string;
41
45
  points: [p1: Vec3Array, p2: Vec3Array, p3: Vec3Array, p4: Vec3Array];
42
46
  transparent?: boolean | string;
@@ -46,6 +50,8 @@ export interface VoxelQuadGeometryNode {
46
50
  }
47
51
  export interface VoxelTriangleGeometryNode {
48
52
  type: "triangle";
53
+ /**Divisor used for transform of this specific node.*/
54
+ divisor?: Vec3Array;
49
55
  orientation?: 0 | 1;
50
56
  doubleSided?: boolean;
51
57
  points: [p1: Vec3Array, p2: Vec3Array, p3: Vec3Array];
@@ -91,6 +97,7 @@ export type VoxelGeometryNodes = VoxelCustomGeomtryNode | VoxelBoxGeometryNode |
91
97
  export interface VoxelGeometryData {
92
98
  id: string;
93
99
  nodes: VoxelGeometryNodes[];
100
+ divisor?: Vec3Array;
94
101
  /**
95
102
  * If this is set the voxel geometry will not be included in the
96
103
  * geometry rules and will be fall back to custom inputs.
@@ -99,7 +106,11 @@ export interface VoxelGeometryData {
99
106
  doNotBuildRules?: true;
100
107
  arguments: Record<string, VoxelGeometryTextureArgument | VoxelGeometryBoxUVArgument | VoxelGeometryVector3Argument | VoxelGeometryIntArgument | VoxelGeometryBooleanArgument | VoxelGeometryFloatArgument>;
101
108
  }
102
- export interface VoxelGeometryBaseLinkData {
109
+ export interface VoxelGeometryLinkData {
110
+ id: string;
111
+ geometryId: string;
112
+ /**Divisor used for transform of this specific node.*/
113
+ divisor?: Vec3Array;
103
114
  inputs: Record<string, any>;
104
115
  scale?: Vec3Array;
105
116
  position?: Vec3Array;
@@ -107,12 +118,10 @@ export interface VoxelGeometryBaseLinkData {
107
118
  rotationPivot?: Vec3Array;
108
119
  flip?: [flipX: 0 | 1, flipY: 0 | 1, flipZ: 0 | 1];
109
120
  }
110
- export interface VoxelGeometryLinkData extends VoxelGeometryBaseLinkData {
111
- id: string;
112
- geometryId: string;
113
- }
114
121
  export interface VoxelModelData {
115
122
  id: string;
123
+ /**Divisor used all transforms of geometry nodes. */
124
+ divisor?: Vec3Array;
116
125
  arguments: Record<string, VoxelGeometryTextureArgument | VoxelGeometryBoxUVArgument | VoxelGeometryVector3Argument | VoxelGeometryIntArgument | VoxelGeometryBooleanArgument | VoxelGeometryFloatArgument>;
117
126
  shapeStateSchema: (VoxelStateStringSchemaData | VoxelStateNumberSchemaData)[];
118
127
  effects?: VoxelEffectData[];
@@ -4,8 +4,7 @@ export declare class SectorMesh {
4
4
  location: LocationData;
5
5
  sections: SectionMesh[];
6
6
  constructor(location: LocationData);
7
- getIndex(y: number): number;
8
- getSection(y: number): SectionMesh;
9
- addSection(y: number): SectionMesh;
10
- removeSection(y: number): false | SectionMesh;
7
+ getSection(x: number, y: number, z: number): SectionMesh;
8
+ addSection(x: number, y: number, z: number): SectionMesh;
9
+ removeSection(x: number, y: number, z: number): false | SectionMesh;
11
10
  }
@@ -6,24 +6,19 @@ export class SectorMesh {
6
6
  constructor(location) {
7
7
  this.location = location;
8
8
  }
9
- getIndex(y) {
10
- const ry = y - this.location[2];
11
- const index = ry / WorldSpaces.section.bounds.y;
12
- return index;
9
+ getSection(x, y, z) {
10
+ return this.sections[WorldSpaces.section.getIndex(x, y, z)];
13
11
  }
14
- getSection(y) {
15
- return this.sections[this.getIndex(y)];
16
- }
17
- addSection(y) {
18
- const index = this.getIndex(y);
12
+ addSection(x, y, z) {
13
+ const index = WorldSpaces.section.getIndex(x, y, z);
19
14
  if (this.sections[index])
20
15
  return this.sections[index];
21
16
  const section = new SectionMesh(this, index);
22
17
  this.sections[index] = section;
23
18
  return section;
24
19
  }
25
- removeSection(y) {
26
- const index = this.getIndex(y);
20
+ removeSection(x, y, z) {
21
+ const index = WorldSpaces.section.getIndex(x, y, z);
27
22
  if (!this.sections[index])
28
23
  return false;
29
24
  const section = this.sections[index];
@@ -8,16 +8,15 @@ export default function RendererTasks(threads) {
8
8
  Threads.registerTask("set-section", (data, origin) => {
9
9
  MeshManager.updateSection(data);
10
10
  const tranfers = [];
11
- for (const comp of data[1]) {
12
- if (comp[0] !== 0)
13
- continue;
14
- for (const mesh of comp[1]) {
15
- tranfers.push(mesh[1]);
16
- tranfers.push(mesh[2]);
11
+ if (data[1][0] == 0) {
12
+ const comp = data[1][1];
13
+ for (const mesh of comp) {
14
+ tranfers.push(mesh[1].buffer);
15
+ tranfers.push(mesh[2].buffer);
17
16
  }
18
17
  }
19
18
  if (!EngineSettings.settings.rendererSettings.cpuBound) {
20
- origin.sendMessage(data, tranfers);
19
+ origin.sendMessage([], tranfers);
21
20
  }
22
21
  });
23
22
  Threads.registerTask("remove-sector", (data) => {
@@ -12,9 +12,9 @@ export class MeshManager {
12
12
  if (!sector) {
13
13
  sector = MeshRegister.sectors.add(location);
14
14
  }
15
- let section = sector.getSection(location[2]);
15
+ let section = sector.getSection(location[1], location[2], location[3]);
16
16
  if (!section) {
17
- section = sector.addSection(location[2]);
17
+ section = sector.addSection(location[1], location[2], location[3]);
18
18
  }
19
19
  added.clear();
20
20
  for (const [id, points] of effects) {
@@ -9,7 +9,7 @@ class Sectors {
9
9
  location[0],
10
10
  ...WorldSpaces.sector.getPositionVec3Array(location[1], location[2], location[3]),
11
11
  ]);
12
- dimension.set(WorldSpaces.hash.hashXYZ(location[1], location[2], location[3]), sector);
12
+ dimension.set(WorldSpaces.hash.hashVec3(WorldSpaces.sector.getPosition(location[1], location[2], location[3])), sector);
13
13
  return sector;
14
14
  }
15
15
  static remove(location) {
@@ -90,3 +90,4 @@ export class MeshRegister {
90
90
  this._dimensions.set("main", new Map());
91
91
  }
92
92
  }
93
+ window.MeshRegister = MeshRegister;
@@ -12,11 +12,11 @@ type EngineSettingsEvents = {
12
12
  declare class EngineSettingsClass extends TypedEventTarget<EngineSettingsEvents> {
13
13
  enviorment: "node" | "browser";
14
14
  settings: EngineSettingsData;
15
+ version: string;
15
16
  get doSunPropagation(): boolean;
16
17
  get doRGBPropagation(): boolean;
17
18
  get doLight(): boolean;
18
19
  get doFlow(): boolean;
19
- get isClient(): boolean;
20
20
  getSettings(): EngineSettingsData;
21
21
  syncSettings(data: EngineSettingsData): void;
22
22
  getSettingsCopy(): any;
@@ -8,11 +8,12 @@ import { TypedEventTarget } from "../Util/TypedEventTarget.js";
8
8
  class EngineSettingsClass extends TypedEventTarget {
9
9
  enviorment = Environment.isNode() ? "node" : "browser";
10
10
  settings = new EngineSettingsData();
11
+ version = "0.0.72";
11
12
  get doSunPropagation() {
12
- return this.settings.lighting.autoSunLight == true;
13
+ return this.settings.lighting.sunLightEnabled == true;
13
14
  }
14
15
  get doRGBPropagation() {
15
- return this.settings.lighting.autoRGBLight == true;
16
+ return this.settings.lighting.rgbLightEnabled == true;
16
17
  }
17
18
  get doLight() {
18
19
  return this.doRGBPropagation || this.doSunPropagation;
@@ -20,9 +21,6 @@ class EngineSettingsClass extends TypedEventTarget {
20
21
  get doFlow() {
21
22
  return this.settings.flow.enable;
22
23
  }
23
- get isClient() {
24
- return this.enviorment != "browser";
25
- }
26
24
  getSettings() {
27
25
  return this.settings;
28
26
  }