@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,11 +1,13 @@
1
1
  import { VoxelCursorInterface } from "./VoxelCursor.interface";
2
- import { VoxelPalette } from "../../Voxels/Palettes/VoxelPalette";
3
- import { VoxelLevelReader } from "../VoxelLevelReader";
2
+ import { VoxelPalettesRegister } from "../../Voxels/Data/VoxelPalettesRegister";
3
+ import { VoxelLevelReader } from "./VoxelLevelReader";
4
4
  export class VoxelCursor extends VoxelCursorInterface {
5
5
  static VoxelDataToRaw(data, light = 0) {
6
- const id = (data.id !== undefined && VoxelPalette.ids.getNumberId(data.id)) || 0;
6
+ const id = (data.id !== undefined &&
7
+ VoxelPalettesRegister.voxels.getNumberId(data.id)) ||
8
+ 0;
7
9
  const secondaryId = (data.secondaryVoxelId !== undefined &&
8
- VoxelPalette.ids.getNumberId(data.secondaryVoxelId)) ||
10
+ VoxelPalettesRegister.voxels.getNumberId(data.secondaryVoxelId)) ||
9
11
  0;
10
12
  let levleData = 0;
11
13
  if (data.level !== undefined)
@@ -14,13 +16,12 @@ export class VoxelCursor extends VoxelCursorInterface {
14
16
  levleData = VoxelLevelReader.setLevelState(levleData, data.levelState);
15
17
  return [id, light, levleData, data.state || 0, data.mod || 0, secondaryId];
16
18
  }
17
- ids = [0];
18
- light = [0];
19
- level = [0];
20
- state = [0];
21
- secondary = [0];
22
- mod = [0];
19
+ ids = new Uint16Array(1);
20
+ light = new Uint16Array(1);
21
+ level = new Uint8Array(1);
22
+ state = new Uint16Array(1);
23
+ mod = new Uint16Array(1);
24
+ secondary = new Uint16Array(1);
23
25
  loadIn() { }
24
- updateVoxel(mode) {
25
- }
26
+ updateVoxel(mode) { }
26
27
  }
@@ -20,8 +20,7 @@ export declare class VoxelLightData {
20
20
  mixLight(l1: number, l2: number): number;
21
21
  getRGB(sl: number): number;
22
22
  setRGB(value: number, sl: number): number;
23
- decodeLightFromVoxelData(voxelData: number): number;
24
- encodeLightIntoVoxelData(voxelData: number, encodedLight: number): number;
23
+ createLightValue(s: number, r: number, g: number, b: number): number;
25
24
  /**# Set Light Values
26
25
  * ---
27
26
  * Give an array of light values it will return an encoded light number.
@@ -37,8 +36,8 @@ export declare class VoxelLightData {
37
36
  * - 3: Blue Light
38
37
  * @param value
39
38
  */
40
- getLightValues(value: number): AllLight;
41
- getLightValuesToRef(value: number, values: AllLight): AllLight;
39
+ getLightValuesArray(value: number): AllLight;
40
+ getLightValuesArrayToRef(value: number, values: AllLight): AllLight;
42
41
  addLightValues(sl: number, sl2: number): number;
43
42
  divideLightValue(sl: number, divisor: number): number;
44
43
  }
@@ -81,11 +81,12 @@ export class VoxelLightData {
81
81
  return 0;
82
82
  return (sl & ~0xfff0) | (value << 4);
83
83
  }
84
- decodeLightFromVoxelData(voxelData) {
85
- return (voxelData & (0xffff << 0)) >> 0;
86
- }
87
- encodeLightIntoVoxelData(voxelData, encodedLight) {
88
- return (voxelData & ~(0xffff << 0)) | (encodedLight << 0);
84
+ createLightValue(s, r, g, b) {
85
+ let v = 0;
86
+ v = this.setS(s, v);
87
+ v = this.setR(r, v);
88
+ v = this.setG(r, v);
89
+ return this.setB(r, v);
89
90
  }
90
91
  /**# Set Light Values
91
92
  * ---
@@ -107,14 +108,14 @@ export class VoxelLightData {
107
108
  * - 3: Blue Light
108
109
  * @param value
109
110
  */
110
- getLightValues(value) {
111
+ getLightValuesArray(value) {
111
112
  this._lightValues[0] = this.getS(value);
112
113
  this._lightValues[1] = this.getR(value);
113
114
  this._lightValues[2] = this.getG(value);
114
115
  this._lightValues[3] = this.getB(value);
115
116
  return this._lightValues;
116
117
  }
117
- getLightValuesToRef(value, values) {
118
+ getLightValuesArrayToRef(value, values) {
118
119
  values[0] = this.getS(value);
119
120
  values[1] = this.getR(value);
120
121
  values[2] = this.getG(value);
@@ -0,0 +1,8 @@
1
+ import { StringPalette } from "../../Util/StringPalette";
2
+ export declare class VoxelPalettesRegister {
3
+ static material: StringPalette;
4
+ static substance: StringPalette;
5
+ static voxels: StringPalette;
6
+ static voxelNametoIdMap: Map<string, string>;
7
+ static voxelIdToNameMap: Map<string, string>;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { StringPalette } from "../../Util/StringPalette";
2
+ export class VoxelPalettesRegister {
3
+ static material = new StringPalette();
4
+ static substance = new StringPalette();
5
+ static voxels = new StringPalette();
6
+ static voxelNametoIdMap = new Map();
7
+ static voxelIdToNameMap = new Map();
8
+ }
@@ -0,0 +1,56 @@
1
+ export declare enum VoxelTagIds {
2
+ substance = "dve_substance",
3
+ renderedMaterial = "dve_rendered_material",
4
+ voxelMaterial = "dve_voxel_material",
5
+ hardness = "dve_hardness",
6
+ colliderID = "dve_collider_id",
7
+ checkCollisions = "dve_check_collisions",
8
+ isLightSource = "dve_is_light_source",
9
+ noAO = "dve_no_ao",
10
+ isTransparent = "dve_is_transparent",
11
+ lightValue = "dve_light_value",
12
+ canHaveSecondary = "dve_can_have_secondary"
13
+ }
14
+ export interface VoxelTags {
15
+ /** The material used to render the voxel. Used by the engine to assign meshes to the proper material. */
16
+ [VoxelTagIds.renderedMaterial]: string;
17
+ /** A description of the material used for the voxel. Not used by the engine directly. */
18
+ [VoxelTagIds.voxelMaterial]: string;
19
+ /** Specifies the substance of the voxel.
20
+ * The voxel will inherit properties from the substance and change how it acts in the world.
21
+ * Properties include being solid or liquid.
22
+ * */
23
+ [VoxelTagIds.substance]: string;
24
+ /** Indicates whether the voxel is a light source. */
25
+ [VoxelTagIds.isLightSource]: boolean;
26
+ /** Indicates if the voxel lets light through */
27
+ [VoxelTagIds.isTransparent]: boolean;
28
+ /** Disables ambient occlusion for this voxel if set to true. */
29
+ [VoxelTagIds.noAO]: boolean;
30
+ /** Defines the light value emitted by the voxel (r, g, z). */
31
+ [VoxelTagIds.lightValue]: [r: number, g: number, z: number] | number;
32
+ /** The collider ID for the voxel, used for collision detection. */
33
+ [VoxelTagIds.colliderID]: string;
34
+ /** Specifies if the voxel participates in collision checks. */
35
+ [VoxelTagIds.checkCollisions]: boolean;
36
+ /** Indicates if the voxel can have a secondary voxel. */
37
+ [VoxelTagIds.canHaveSecondary]: boolean;
38
+ /** The hardness level of the voxel, affecting how it is broken or interacted with. */
39
+ [VoxelTagIds.hardness]: number;
40
+ }
41
+ export declare enum VoxelSubstanceTagIdds {
42
+ parent = "dve_parent_substance",
43
+ isSolid = "dve_is_solid",
44
+ isTransparent = "dve_is_transparent",
45
+ isLiquid = "dve_is_liquid",
46
+ flowRate = "dve_flow_rate",
47
+ isWindAffected = "dve_is_wind_affected"
48
+ }
49
+ export interface VoxelSubstanceTags {
50
+ [VoxelSubstanceTagIdds.parent]: string;
51
+ [VoxelSubstanceTagIdds.isTransparent]: boolean;
52
+ [VoxelSubstanceTagIdds.isSolid]: boolean;
53
+ [VoxelSubstanceTagIdds.isLiquid]: boolean;
54
+ [VoxelSubstanceTagIdds.flowRate]: number;
55
+ [VoxelSubstanceTagIdds.isWindAffected]: boolean;
56
+ }
@@ -0,0 +1,23 @@
1
+ export var VoxelTagIds;
2
+ (function (VoxelTagIds) {
3
+ VoxelTagIds["substance"] = "dve_substance";
4
+ VoxelTagIds["renderedMaterial"] = "dve_rendered_material";
5
+ VoxelTagIds["voxelMaterial"] = "dve_voxel_material";
6
+ VoxelTagIds["hardness"] = "dve_hardness";
7
+ VoxelTagIds["colliderID"] = "dve_collider_id";
8
+ VoxelTagIds["checkCollisions"] = "dve_check_collisions";
9
+ VoxelTagIds["isLightSource"] = "dve_is_light_source";
10
+ VoxelTagIds["noAO"] = "dve_no_ao";
11
+ VoxelTagIds["isTransparent"] = "dve_is_transparent";
12
+ VoxelTagIds["lightValue"] = "dve_light_value";
13
+ VoxelTagIds["canHaveSecondary"] = "dve_can_have_secondary";
14
+ })(VoxelTagIds || (VoxelTagIds = {}));
15
+ export var VoxelSubstanceTagIdds;
16
+ (function (VoxelSubstanceTagIdds) {
17
+ VoxelSubstanceTagIdds["parent"] = "dve_parent_substance";
18
+ VoxelSubstanceTagIdds["isSolid"] = "dve_is_solid";
19
+ VoxelSubstanceTagIdds["isTransparent"] = "dve_is_transparent";
20
+ VoxelSubstanceTagIdds["isLiquid"] = "dve_is_liquid";
21
+ VoxelSubstanceTagIdds["flowRate"] = "dve_flow_rate";
22
+ VoxelSubstanceTagIdds["isWindAffected"] = "dve_is_wind_affected";
23
+ })(VoxelSubstanceTagIdds || (VoxelSubstanceTagIdds = {}));
@@ -1,5 +1,5 @@
1
- import { StateSchema } from "./Schema/StateSchema";
2
- import { StateTreeReader } from "./StateTreeReader";
1
+ import { StateSchema } from "../State/Schema/StateSchema";
2
+ import { StateTreeReader } from "../State/StateTreeReader";
3
3
  export type VoxelTagStatesData = Record<string, {
4
4
  tree: any;
5
5
  treePalette: any;
@@ -1,7 +1,7 @@
1
- import { VoxelPalette } from "../Palettes/VoxelPalette";
2
- import { StateSchema } from "./Schema/StateSchema";
3
- import { StateTreeReader } from "./StateTreeReader";
4
- import { SchemaRegister } from "./SchemaRegister";
1
+ import { VoxelPalettesRegister } from "./VoxelPalettesRegister";
2
+ import { StateSchema } from "../State/Schema/StateSchema";
3
+ import { StateTreeReader } from "../State/StateTreeReader";
4
+ import { SchemaRegister } from "../State/SchemaRegister";
5
5
  export class VoxelTagStates {
6
6
  static voxelTags = [];
7
7
  static toJSON() {
@@ -18,7 +18,7 @@ export class VoxelTagStates {
18
18
  data.forEach((v, index) => {
19
19
  if (!v)
20
20
  return;
21
- const stateSceham = new StateSchema(SchemaRegister.modelStaeBaseSchemaData.get(SchemaRegister.voxelModelMap.get(VoxelPalette.ids.getStringId(index))));
21
+ const stateSceham = new StateSchema(SchemaRegister.modelStaeBaseSchemaData.get(SchemaRegister.voxelModelMap.get(VoxelPalettesRegister.voxels.getStringId(index))));
22
22
  for (const tag in v) {
23
23
  this.register(index, tag, stateSceham, v[tag].tree, v[tag].treePalette);
24
24
  }
@@ -0,0 +1,9 @@
1
+ import { VoxelSubstanceTags, VoxelTags } from "./VoxelTag.types";
2
+ export declare class VoxelTagsRegister {
3
+ static IncludedVoxelTags: string[];
4
+ static IncludedSubstnacesTags: string[];
5
+ static VoxelTagDefaults: Record<string, any>;
6
+ static VoxelTags: VoxelTags[];
7
+ static SubstanceStagDefaults: Record<string, any>;
8
+ static SubstanceStags: VoxelSubstanceTags[];
9
+ }
@@ -0,0 +1,32 @@
1
+ import { VoxelSubstanceTagIdds as VoxelSubstanceTagIds, VoxelTagIds, } from "./VoxelTag.types";
2
+ export class VoxelTagsRegister {
3
+ static IncludedVoxelTags = [
4
+ VoxelTagIds.substance,
5
+ VoxelTagIds.renderedMaterial,
6
+ VoxelTagIds.voxelMaterial,
7
+ VoxelTagIds.hardness,
8
+ VoxelTagIds.colliderID,
9
+ VoxelTagIds.checkCollisions,
10
+ VoxelTagIds.isLightSource,
11
+ VoxelTagIds.lightValue,
12
+ VoxelTagIds.noAO,
13
+ VoxelTagIds.isTransparent,
14
+ VoxelTagIds.canHaveSecondary,
15
+ ];
16
+ static IncludedSubstnacesTags = [
17
+ VoxelSubstanceTagIds.parent,
18
+ VoxelSubstanceTagIds.isSolid,
19
+ VoxelSubstanceTagIds.isTransparent,
20
+ VoxelSubstanceTagIds.isLiquid,
21
+ VoxelSubstanceTagIds.flowRate,
22
+ VoxelSubstanceTagIds.isWindAffected,
23
+ ];
24
+ static VoxelTagDefaults = {
25
+ [VoxelTagIds.renderedMaterial]: "dve_solid",
26
+ [VoxelTagIds.substance]: "dve_solid",
27
+ [VoxelTagIds.colliderID]: "dve_cube",
28
+ };
29
+ static VoxelTags = [];
30
+ static SubstanceStagDefaults = {};
31
+ static SubstanceStags = [];
32
+ }
@@ -1,8 +1,8 @@
1
1
  import { StateCompareOperationsMap, StateLogicOperationsMap, } from "../State/State.types";
2
2
  import { StringPalette } from "../../Util/StringPalette";
3
- import { VoxelModelManager } from "../../Models/Rules/VoxelModelManager";
4
- import { VoxelTagStates } from "../State/VoxelTagStates";
5
- import { VoxelPalette } from "../Palettes/VoxelPalette";
3
+ import { VoxelModelRuleBuilderRegister } from "../../Models/Rules/VoxelModelRuleBuilderRegister";
4
+ import { VoxelTagStates } from "../Data/VoxelTagStates";
5
+ import { VoxelPalettesRegister } from "../Data/VoxelPalettesRegister";
6
6
  import { StateSchema } from "../State/Schema/StateSchema";
7
7
  function bitsNeeded(n) {
8
8
  if (n < 0)
@@ -182,7 +182,7 @@ export function BuildStateData(model, geoPalette) {
182
182
  if (geometryLinkPalette.isRegistered(node.id))
183
183
  continue;
184
184
  const linkId = geometryLinkPalette.register(node.id);
185
- geometryLinkStateMap[linkId] = geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node));
185
+ geometryLinkStateMap[linkId] = geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node));
186
186
  }
187
187
  }
188
188
  //add geomtry from condiotnal shape states
@@ -192,7 +192,7 @@ export function BuildStateData(model, geoPalette) {
192
192
  if (geometryLinkPalette.isRegistered(node.id))
193
193
  continue;
194
194
  const linkId = geometryLinkPalette.register(node.id);
195
- geometryLinkStateMap[linkId] = geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node));
195
+ geometryLinkStateMap[linkId] = geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node));
196
196
  }
197
197
  }
198
198
  const shapeStateRelativeGeometryMap = [];
@@ -206,15 +206,15 @@ export function BuildStateData(model, geoPalette) {
206
206
  const shapeStateRecord = {};
207
207
  for (const key in data.shapeStatesNodes) {
208
208
  shapeStateGeoLinkPalette.push(data.shapeStatesNodes[key].map((_) => geometryLinkPalette.getNumberId(_.id)));
209
- shapeStateGeometryPalette.push(data.shapeStatesNodes[key].map((_) => geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(_))));
209
+ shapeStateGeometryPalette.push(data.shapeStatesNodes[key].map((_) => geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(_))));
210
210
  shapeStateRecord[key] = shapeStateGeometryPalette.length - 1;
211
211
  shapeStateRelativeGeometryMap[shapeStateRecord[key]] ??= [];
212
212
  const nodeData = data.shapeStatesNodes[key];
213
213
  for (const node of nodeData) {
214
- shapeStateRelativeGeometryMap[shapeStateRecord[key]][geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node))] = relativeGeoId;
214
+ shapeStateRelativeGeometryMap[shapeStateRecord[key]][geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node))] = relativeGeoId;
215
215
  relativeGeometryByteIndexMap[relativeGeoId] = relativeByteCount;
216
216
  relativeGeoId++;
217
- relativeByteCount += Math.ceil(VoxelModelManager.getGeomtryFromLink(node).faceCount / 8);
217
+ relativeByteCount += Math.ceil(VoxelModelRuleBuilderRegister.getGeomtryFromLink(node).faceCount / 8);
218
218
  }
219
219
  addPathToTree(shapeStateTree, key
220
220
  .split(",")
@@ -229,17 +229,17 @@ export function BuildStateData(model, geoPalette) {
229
229
  const compareOperations = Object.keys(StateCompareOperationsMap);
230
230
  for (const key in data.shapeStatesConditonalNodes) {
231
231
  condiotnalShapeStateNodePalette.push(data.shapeStatesConditonalNodes[key].map((_) => geometryLinkPalette.getNumberId(_.id)));
232
- condiotnalShapeStateGeometryPalette.push(data.shapeStatesConditonalNodes[key].map((_) => geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(_))));
232
+ condiotnalShapeStateGeometryPalette.push(data.shapeStatesConditonalNodes[key].map((_) => geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(_))));
233
233
  condiotnalShapeStateNodeRecord[key] =
234
234
  condiotnalShapeStateGeometryPalette.length - 1;
235
235
  condiotnalShapeStateRelativeGeometryMap[condiotnalShapeStateNodeRecord[key]] ??= [];
236
236
  const nodeData = data.shapeStatesConditonalNodes[key];
237
237
  for (const node of nodeData) {
238
- condiotnalShapeStateRelativeGeometryMap[condiotnalShapeStateNodeRecord[key]][geoPalette.getNumberId(VoxelModelManager.getGeometryLinkId(node))] =
238
+ condiotnalShapeStateRelativeGeometryMap[condiotnalShapeStateNodeRecord[key]][geoPalette.getNumberId(VoxelModelRuleBuilderRegister.getGeometryLinkId(node))] =
239
239
  relativeGeoId;
240
240
  relativeGeometryByteIndexMap[relativeGeoId] = relativeByteCount;
241
241
  relativeGeoId++;
242
- relativeByteCount += Math.ceil(VoxelModelManager.getGeomtryFromLink(node).faceCount / 8);
242
+ relativeByteCount += Math.ceil(VoxelModelRuleBuilderRegister.getGeomtryFromLink(node).faceCount / 8);
243
243
  }
244
244
  const statement = [];
245
245
  const nodes = key.split(" ");
@@ -334,7 +334,7 @@ export function BuildStateData(model, geoPalette) {
334
334
  const modStatePalette = [];
335
335
  const modStateRecord = {};
336
336
  for (const tag of tagEffects) {
337
- VoxelTagStates.register(VoxelPalette.ids.getNumberId(voxelId), tag.tagId, schema, tag.tree, tag.treePalette);
337
+ VoxelTagStates.register(VoxelPalettesRegister.voxels.getNumberId(voxelId), tag.tagId, schema, tag.tree, tag.treePalette);
338
338
  }
339
339
  const { baseSchema, schemaIdPalette, schemaValuePalette } = buildSchemas(voxelData.modSchema || [], voxelData.modRelationSchema || []);
340
340
  for (const key in voxelData.inputs) {
@@ -0,0 +1,13 @@
1
+ import { VoxelData } from "../Types/Voxel.types";
2
+ import { VoxelMaterialData } from "../Types/VoxelMaterial.types";
3
+ import { VoxelSubstanceData } from "../Types/VoxelSubstances.types";
4
+ import { CompiledVoxelTagAndPaletteData } from "../Types/VoxelModelCompiledData.types";
5
+ export type BuildTagAndPaletteDataProps = {
6
+ voxels: VoxelData[];
7
+ voxelsOverrides?: Record<string, (value: any) => any>;
8
+ substances: VoxelSubstanceData[];
9
+ substancesOverrides?: Record<string, (value: any) => any>;
10
+ materials: VoxelMaterialData[];
11
+ materialsOverrides?: Record<string, (value: any) => any>;
12
+ };
13
+ export declare function BuildTagAndPaletteData(props: BuildTagAndPaletteDataProps): CompiledVoxelTagAndPaletteData;
@@ -0,0 +1,55 @@
1
+ import { VoxelTagsRegister } from "../Data/VoxelTagsRegister";
2
+ import { VoxelPalettesRegister } from "../Data/VoxelPalettesRegister";
3
+ export function BuildTagAndPaletteData(props) {
4
+ for (const voxel of props.voxels) {
5
+ const tags = {};
6
+ const voxelId = VoxelPalettesRegister.voxels.register(voxel.id);
7
+ VoxelPalettesRegister.voxelIdToNameMap.set(voxel.id, voxel.name || "");
8
+ VoxelPalettesRegister.voxelNametoIdMap.set(voxel.name || voxel.id, voxel.id);
9
+ for (const tag of VoxelTagsRegister.IncludedVoxelTags) {
10
+ if (voxel.properties[tag] === undefined) {
11
+ tags[tag] = VoxelTagsRegister.VoxelTagDefaults[tag] || false;
12
+ continue;
13
+ }
14
+ if (props?.voxelsOverrides?.[tag]) {
15
+ tags[tag] = props.voxelsOverrides[tag](voxel.properties[tag]);
16
+ continue;
17
+ }
18
+ tags[tag] = voxel.properties[tag];
19
+ }
20
+ VoxelTagsRegister.VoxelTags[voxelId] = tags;
21
+ }
22
+ for (const substance of props.substances) {
23
+ const tags = {};
24
+ const substanceId = VoxelPalettesRegister.substance.register(substance.id);
25
+ for (const tag of VoxelTagsRegister.IncludedSubstnacesTags) {
26
+ if (substance.properties[tag] === undefined) {
27
+ tags[tag] =
28
+ VoxelTagsRegister.SubstanceStagDefaults[tag] || false;
29
+ continue;
30
+ }
31
+ if (props?.substancesOverrides?.[tag]) {
32
+ tags[tag] = props.substancesOverrides[tag](substance.properties[tag]);
33
+ continue;
34
+ }
35
+ tags[tag] = substance.properties[tag];
36
+ }
37
+ VoxelTagsRegister.SubstanceStags[substanceId] = tags;
38
+ }
39
+ for (const material of props.materials) {
40
+ VoxelPalettesRegister.material.register(material.id);
41
+ }
42
+ return {
43
+ data: {
44
+ palette: VoxelPalettesRegister.voxels._palette,
45
+ tags: VoxelTagsRegister.VoxelTags,
46
+ idToNameMap: [...VoxelPalettesRegister.voxelIdToNameMap.entries()],
47
+ nameToIdMap: [...VoxelPalettesRegister.voxelNametoIdMap.entries()],
48
+ },
49
+ substances: {
50
+ tags: VoxelTagsRegister.SubstanceStags,
51
+ palette: VoxelPalettesRegister.substance._palette,
52
+ },
53
+ materials: { palette: VoxelPalettesRegister.material._palette },
54
+ };
55
+ }
@@ -1,6 +1,6 @@
1
1
  import { PaintVoxelData } from "../Types/Voxel.types";
2
2
  import { SchemaRegister } from "../State/SchemaRegister";
3
- import { VoxelPalette } from "../Palettes/VoxelPalette";
3
+ import { VoxelPalettesRegister } from "../../Voxels/Data/VoxelPalettesRegister";
4
4
  export class VoxelNamedState {
5
5
  voxelId;
6
6
  data;
@@ -82,11 +82,11 @@ export class VoxelIndex {
82
82
  if (!VoxelIndex.instance)
83
83
  VoxelIndex.instance = this;
84
84
  for (const voxelData of data) {
85
+ this.dataMap.set(voxelData.id, voxelData);
85
86
  const namedStates = voxelData.properties["dve_named_states"];
86
87
  if (!namedStates)
87
88
  continue;
88
89
  const states = new VoxelNamedStateContainer(voxelData.id, namedStates.map((_) => new VoxelNamedState(voxelData.id, _)));
89
- this.dataMap.set(voxelData.id, voxelData);
90
90
  this.stateArray.push(states);
91
91
  this.states.set(voxelData.id, states);
92
92
  for (const [id, state] of states.states) {
@@ -119,7 +119,7 @@ export class VoxelIndex {
119
119
  }
120
120
  getStateFromRawData(data) {
121
121
  const [id, light, shapeState, secondary, mod] = data;
122
- const conatiner = this.states.get(VoxelPalette.ids.getStringId(id));
122
+ const conatiner = this.states.get(VoxelPalettesRegister.voxels.getStringId(id));
123
123
  if (!conatiner)
124
124
  return false;
125
125
  for (const state of conatiner?.stateArray) {
@@ -4,26 +4,18 @@ import { orientedCube, pillarCube, simpleCube, simpleHalfCube, } from "../Models
4
4
  import { diagonalFlatPanelEastWest, diagonalFlatPanelWestEast, thinPanelDown, thinPanelSouth, thinPanelWest, } from "../Models/Defaults/PanelVoxelGeometry";
5
5
  import { stair } from "../Models/Defaults/StairVoxelModel";
6
6
  import { liquidGeometry, liquidModel, } from "../Models/Defaults/LiquidVoxelModel";
7
- import { VoxelModelManager } from "../Models/Rules/VoxelModelManager";
8
- import { VoxelStructIds } from "./Types/Voxel.types";
7
+ import { VoxelModelRuleBuilderRegister } from "../Models/Rules/VoxelModelRuleBuilderRegister";
9
8
  import { BuildRules } from "../Models/Rules/Functions/BuildRules";
10
9
  import { BuildStateData } from "./Functions/BuildStateData";
11
10
  import { BuildFinalInputs } from "../Models/Rules/Functions/BuildFinalInputs";
12
11
  import { SchemaRegister } from "../Voxels/State/SchemaRegister";
13
12
  import { simpleCrossedPannel, simpleThinPannel, } from "../Models/Defaults/PanelVoxelModels";
14
- import { VoxelTagStates } from "../Voxels/State/VoxelTagStates";
13
+ import { VoxelTagStates } from "./Data/VoxelTagStates";
15
14
  import { VoxelIndex } from "../Voxels/Indexes/VoxelIndex";
16
15
  import { CacheManager } from "../Cache/CacheManager";
17
16
  import { VoxelLightData } from "./Cursor/VoxelLightData";
18
- import { MaterialDataGenerator } from "./Segments/MaterialDataGenerator";
19
- import { SubstanceDataGenerator } from "./Segments/SubstanceDataGenerator";
20
- import { VoxelDataGenerator } from "./Segments/VoxelDataGenerator";
21
- import { SubstanceStructBuilder } from "./Structs/Builder/SubstanceStructBuilder";
22
- import { MappedDataRegister } from "../Data/Register/MappedDataRegister";
23
- import { MaterialPalette } from "./Palettes/MaterialPalette";
24
- import { VoxelStruct } from "./Structs/VoxelStruct";
25
- import { SubstanceStruct } from "./Structs/SubstanceStruct";
26
- import { VoxelStructBuilder } from "./Structs/Builder/VoxelStructBuilder";
17
+ import { VoxelTagIds } from "./Data/VoxelTag.types";
18
+ import { BuildTagAndPaletteData } from "./Functions/BuildTagAndPaletteData";
27
19
  function GetModelData(data) {
28
20
  if (CacheManager.cacheLoadEnabled && CacheManager.cachedData) {
29
21
  const syncData = CacheManager.cachedData.models;
@@ -38,10 +30,10 @@ function GetModelData(data) {
38
30
  VoxelTagStates.load(syncData.tagState);
39
31
  return syncData;
40
32
  }
41
- VoxelModelManager.registerGeometry(cube, halfDownCube, halfSouthCube, halfWestCube, quaterCubeSouthNorth, quaterCubeUpDown, quaterCubeWestEast, eighthCube, thinPanelDown, thinPanelSouth, thinPanelWest, diagonalFlatPanelEastWest, diagonalFlatPanelWestEast, fencePost, fenceEastWest, fenceNorthsouth, chainGeometry, carpetGeometry, candlesGeometry1, candlesGeometry2, candlesGeometry3, candlesGeometry4, liquidGeometry, ...leverGeometry, ...(data.geometry || []));
42
- VoxelModelManager.registerModels(simpleCube, orientedCube, simpleHalfCube, pillarCube, simpleThinPannel, stair, simpleCrossedPannel, chainModel, carpetModel, candlesModel, leverModel, fence, liquidModel, ...(data.models || []));
33
+ VoxelModelRuleBuilderRegister.registerGeometry(cube, halfDownCube, halfSouthCube, halfWestCube, quaterCubeSouthNorth, quaterCubeUpDown, quaterCubeWestEast, eighthCube, thinPanelDown, thinPanelSouth, thinPanelWest, diagonalFlatPanelEastWest, diagonalFlatPanelWestEast, fencePost, fenceEastWest, fenceNorthsouth, chainGeometry, carpetGeometry, candlesGeometry1, candlesGeometry2, candlesGeometry3, candlesGeometry4, liquidGeometry, ...leverGeometry, ...(data.geometry || []));
34
+ VoxelModelRuleBuilderRegister.registerModels(simpleCube, orientedCube, simpleHalfCube, pillarCube, simpleThinPannel, stair, simpleCrossedPannel, chainModel, carpetModel, candlesModel, leverModel, fence, liquidModel, ...(data.models || []));
43
35
  const syncData = {
44
- geometryPalette: VoxelModelManager.geometryPalette._palette,
36
+ geometryPalette: VoxelModelRuleBuilderRegister.geometryPalette._palette,
45
37
  geometry: [],
46
38
  models: [],
47
39
  voxels: [],
@@ -51,13 +43,13 @@ function GetModelData(data) {
51
43
  const voxelData = voxel.properties["dve_model_data"];
52
44
  if (!voxelData)
53
45
  continue;
54
- VoxelModelManager.registerVoxel(voxel.id, voxelData);
55
- const model = VoxelModelManager.models.get(voxelData.id);
46
+ VoxelModelRuleBuilderRegister.registerVoxel(voxel.id, voxelData);
47
+ const model = VoxelModelRuleBuilderRegister.models.get(voxelData.id);
56
48
  if (!model)
57
49
  throw new Error(`Voxel model with id ${voxelData.id} does not exist.`);
58
50
  model.voxels.set(voxel.id, voxelData);
59
51
  }
60
- for (const [mainKey, mainGeo] of VoxelModelManager.geometry) {
52
+ for (const [mainKey, mainGeo] of VoxelModelRuleBuilderRegister.geometry) {
61
53
  if (mainGeo.data.ogData.doNotBuildRules) {
62
54
  syncData.geometry.push({
63
55
  id: mainKey,
@@ -66,15 +58,15 @@ function GetModelData(data) {
66
58
  });
67
59
  continue;
68
60
  }
69
- const output = BuildRules(mainGeo, VoxelModelManager.geometryPalette);
61
+ const output = BuildRules(mainGeo, VoxelModelRuleBuilderRegister.geometryPalette);
70
62
  syncData.geometry.push({
71
63
  id: mainKey,
72
64
  nodes: mainGeo.data.nodes,
73
65
  ...output,
74
66
  });
75
67
  }
76
- for (const [mainKey, model] of VoxelModelManager.models) {
77
- const stateData = BuildStateData(model, VoxelModelManager.geometryPalette);
68
+ for (const [mainKey, model] of VoxelModelRuleBuilderRegister.models) {
69
+ const stateData = BuildStateData(model, VoxelModelRuleBuilderRegister.geometryPalette);
78
70
  model.stateData = stateData;
79
71
  SchemaRegister.registerModel(mainKey, stateData.schema);
80
72
  syncData.models.push({
@@ -98,13 +90,14 @@ function GetModelData(data) {
98
90
  /* for (const [mainKey, geometry] of VoxelModelManager.geometry) {
99
91
  BuildGeomtryInputs(geometry);
100
92
  } */
101
- for (const [mainKey, model] of VoxelModelManager.models) {
93
+ for (const [mainKey, model] of VoxelModelRuleBuilderRegister.models) {
102
94
  const { shapeStateVoxelInputs, conditionalShapeStateVoxelInputs, transparentVoxelFaceIndexes, } = BuildFinalInputs(model);
103
95
  for (const v in shapeStateVoxelInputs) {
104
96
  const stateData = model.voxelModData.get(v);
105
97
  SchemaRegister.registerVoxel(v, mainKey, stateData.modSchema);
106
98
  syncData.voxels.push({
107
99
  id: v,
100
+ materialId: VoxelIndex.instance.dataMap.get(v)?.properties["dve_rendered_material"] || "dve_solid",
108
101
  modelId: mainKey,
109
102
  transparentFaceIndex: transparentVoxelFaceIndexes[v].data,
110
103
  modSchema: stateData.modSchema,
@@ -122,7 +115,7 @@ function GetModelData(data) {
122
115
  }
123
116
  export function InitVoxelData(data) {
124
117
  const lightData = new VoxelLightData();
125
- const voxelIndex = new VoxelIndex(data.voxels);
118
+ new VoxelIndex(data.voxels);
126
119
  const materials = [
127
120
  { id: "dve_solid", properties: {} },
128
121
  { id: "dve_flora", properties: {} },
@@ -141,7 +134,6 @@ export function InitVoxelData(data) {
141
134
  },
142
135
  ...(data.materials || []),
143
136
  ];
144
- MaterialDataGenerator.generate(materials);
145
137
  const substances = [
146
138
  {
147
139
  id: "dve_air",
@@ -226,7 +218,6 @@ export function InitVoxelData(data) {
226
218
  },
227
219
  ...(data.substances || []),
228
220
  ];
229
- SubstanceDataGenerator.generate(substances);
230
221
  const voxels = [
231
222
  {
232
223
  id: "dve_air",
@@ -236,57 +227,24 @@ export function InitVoxelData(data) {
236
227
  },
237
228
  ...data.voxels,
238
229
  ];
239
- VoxelDataGenerator.overrides.set(VoxelStructIds.lightValue, (tags, value) => {
240
- const v = value;
241
- let sl = 0;
242
- sl = lightData.setR(v[0], sl);
243
- sl = lightData.setG(v[1], sl);
244
- sl = lightData.setB(v[2], sl);
245
- tags.setProperty(VoxelStructIds.lightValue, sl);
246
- });
247
- VoxelDataGenerator.overrides.set(VoxelStructIds.renderedMaterial, (tags, value) => {
248
- tags.setProperty(VoxelStructIds.renderedMaterial, MaterialDataGenerator.palette._map[value]);
249
- });
250
- VoxelDataGenerator.overrides.set(VoxelStructIds.substance, (tags, value) => {
251
- tags.setProperty(VoxelStructIds.substance, SubstanceDataGenerator.palette._map[value]);
230
+ const voxelData = BuildTagAndPaletteData({
231
+ voxels,
232
+ voxelsOverrides: {
233
+ [VoxelTagIds.lightValue]: (value) => {
234
+ const v = value;
235
+ let sl = 0;
236
+ sl = lightData.setR(v[0], sl);
237
+ sl = lightData.setG(v[1], sl);
238
+ sl = lightData.setB(v[2], sl);
239
+ return sl;
240
+ },
241
+ },
242
+ substances,
243
+ materials,
252
244
  });
253
- VoxelDataGenerator.generate(voxels);
254
245
  let models = GetModelData(data);
255
- const voxelMaps = VoxelStructBuilder.getMaps();
256
- const voxelStringMaps = MappedDataRegister.stringMaps.getSegment("voxel");
257
- for (const key in voxelMaps.stringMaps) {
258
- voxelStringMaps.add(key, voxelMaps.stringMaps[key]);
259
- }
260
- const voxelObjectMaps = MappedDataRegister.objectMaps.getSegment("voxel");
261
- for (const key in voxelMaps.objectMaps) {
262
- voxelObjectMaps.add(key, voxelMaps.objectMaps[key]);
263
- }
264
- const substanceMaps = SubstanceStructBuilder.getMaps();
265
- const substanceStringMaps = MappedDataRegister.stringMaps.getSegment("substance");
266
- for (const key in substanceMaps.stringMaps) {
267
- substanceStringMaps.add(key, substanceMaps.stringMaps[key]);
268
- }
269
- const substanceObjectMaps = MappedDataRegister.objectMaps.getSegment("substance");
270
- for (const key in substanceMaps.objectMaps) {
271
- substanceObjectMaps.add(key, substanceMaps.objectMaps[key]);
272
- }
273
246
  return {
274
- materials: {
275
- palette: MaterialPalette.palette._palette,
276
- },
277
247
  models,
278
- data: {
279
- palette: VoxelDataGenerator.palette._palette,
280
- nameToIdMap: VoxelDataGenerator.nameToIdMap,
281
- idToNameMap: VoxelDataGenerator.idToNameMap,
282
- ...voxelMaps,
283
- struct: VoxelStruct.initData,
284
- index: VoxelStruct.voxelIndex,
285
- },
286
- substances: {
287
- palette: SubstanceDataGenerator.palette._palette,
288
- ...substanceMaps,
289
- struct: SubstanceStruct.initData,
290
- },
248
+ ...voxelData,
291
249
  };
292
250
  }