@divinevoxel/vlox 0.0.78 → 0.0.79

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 (315) hide show
  1. package/Builder/Tools/Wrench/WrenchTool.js +26 -21
  2. package/Builder/VoxelBuildSpace.d.ts +2 -2
  3. package/Builder/VoxelBuildSpace.js +4 -4
  4. package/Builder/World/InitTasks.js +1 -1
  5. package/Cache/Cache.types.d.ts +0 -4
  6. package/Cache/CacheManager.d.ts +1 -2
  7. package/Cache/CacheManager.js +0 -2
  8. package/Contexts/Base/Main/InitDataGenerator.js +10 -2
  9. package/Contexts/Base/Remote/DataSync.types.d.ts +10 -4
  10. package/Contexts/Base/Remote/InitDataSync.js +10 -20
  11. package/Init/StartMesher.js +2 -1
  12. package/Init/StartRenderer.js +2 -1
  13. package/Mesher/{Geomtry → Geometry}/Geometry.types.d.ts +1 -0
  14. package/Mesher/InitMesher.d.ts +1 -2
  15. package/Mesher/InitMesher.js +7 -14
  16. package/Mesher/Items/{Geomtry → Geometry}/ItemGeometryBuilder.d.ts +2 -2
  17. package/Mesher/Items/{Geomtry → Geometry}/ItemGeometryBuilder.js +1 -1
  18. package/Mesher/Items/MeshTexture.d.ts +2 -1
  19. package/Mesher/Items/MeshTexture.js +7 -6
  20. package/Mesher/Items/MeshTextureO.js +1 -1
  21. package/Mesher/Items/Models/ItemModelBuilder.d.ts +1 -1
  22. package/Mesher/Items/Models/ItemModelBuilder.js +2 -2
  23. package/Mesher/Voxels/Base/CompactTemplateMesh.js +1 -1
  24. package/Mesher/Voxels/Base/CompactVoxelSectionMesh.js +2 -2
  25. package/Mesher/Voxels/Base/MeshSectionBase.js +1 -3
  26. package/Mesher/Voxels/{Geomtry → Geometry}/CompactedSectionVoxelMesh.js +3 -3
  27. package/Mesher/Voxels/{Geomtry → Geometry}/VoxelGeometryBuilder.d.ts +2 -2
  28. package/Mesher/Voxels/{Geomtry → Geometry}/VoxelGeometryBuilder.js +1 -1
  29. package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHBuilder.js +1 -1
  30. package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHStructCursor.d.ts +1 -1
  31. package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHStructCursor.js +1 -1
  32. package/Mesher/Voxels/MeshTemplate.js +0 -3
  33. package/Mesher/Voxels/MeshVoxel.js +0 -2
  34. package/Mesher/Voxels/Models/Common/Calc/CalcConstants.d.ts +1 -1
  35. package/Mesher/Voxels/Models/Common/Calc/CalcConstants.js +2 -2
  36. package/Mesher/Voxels/Models/Common/Calc/FaceDataCalc.js +4 -1
  37. package/Mesher/Voxels/Models/Common/Faces/CullRulledFace.js +29 -18
  38. package/Mesher/Voxels/Models/Common/Faces/ShadeRulelessFace.d.ts +1 -1
  39. package/Mesher/Voxels/Models/Common/Faces/ShadeRulledFace.d.ts +1 -1
  40. package/Mesher/Voxels/Models/Common/Faces/ShadeRulledFace.js +31 -21
  41. package/Mesher/Voxels/Models/Common/GetTexture.d.ts +4 -4
  42. package/Mesher/Voxels/Models/Nodes/Custom/Liquid/FlowGradient.d.ts +1 -1
  43. package/Mesher/Voxels/Models/Nodes/Custom/Liquid/FlowGradient.js +1 -1
  44. package/Mesher/Voxels/Models/Nodes/Custom/Liquid/{LiquidGeomtryNode.d.ts → LiquidGeometryNode.d.ts} +2 -2
  45. package/Mesher/Voxels/Models/Nodes/Custom/Liquid/{LiquidGeomtryNode.js → LiquidGeometryNode.js} +5 -5
  46. package/Mesher/Voxels/Models/Nodes/Default/QuadVoxelGeometryNode.d.ts +3 -3
  47. package/Mesher/Voxels/Models/Nodes/Default/QuadVoxelGeometryNode.js +2 -2
  48. package/Mesher/Voxels/Models/Nodes/Default/TriangleVoxelGeometryNode.d.ts +3 -3
  49. package/Mesher/Voxels/Models/Nodes/Default/TriangleVoxelGeometryNode.js +2 -2
  50. package/Mesher/Voxels/Models/Nodes/GeometryNode.d.ts +3 -3
  51. package/Mesher/Voxels/Models/Nodes/GeometryNode.js +3 -3
  52. package/Mesher/Voxels/Models/Nodes/Types/GeometryNode.types.d.ts +7 -0
  53. package/Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes.d.ts +3 -3
  54. package/Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes.d.ts +2 -2
  55. package/Mesher/Voxels/Models/Nodes/VoxelGeometryConstructor.d.ts +2 -3
  56. package/Mesher/Voxels/Models/Nodes/VoxelGeometryConstructor.js +6 -5
  57. package/Mesher/Voxels/Models/Procedures/Default/ConsistentRotationTextureProcedure.d.ts +4 -4
  58. package/Mesher/Voxels/Models/Procedures/Default/OutlinedTextureProcedure.d.ts +4 -4
  59. package/Mesher/Voxels/Models/Procedures/Default/PillarTextureProcedure.d.ts +4 -4
  60. package/Mesher/Voxels/Models/Procedures/Default/PillarTextureProcedure.js +20 -6
  61. package/Mesher/Voxels/Models/Procedures/TextureProcedure.d.ts +2 -2
  62. package/Mesher/Voxels/Models/VoxelConstructor.d.ts +1 -16
  63. package/Mesher/Voxels/Models/VoxelConstructor.js +50 -56
  64. package/Mesher/Voxels/Models/VoxelGeometryBuilderCacheSpace.d.ts +3 -6
  65. package/Mesher/Voxels/Models/VoxelGeometryBuilderCacheSpace.js +40 -44
  66. package/Mesher/Voxels/Models/VoxelModelBuilder.d.ts +4 -4
  67. package/Mesher/Voxels/Models/VoxelModelBuilder.js +4 -4
  68. package/Mesher/Voxels/Models/VoxelModelConstructorRegister.d.ts +1 -14
  69. package/Mesher/Voxels/Models/VoxelModelConstructorRegister.js +7 -21
  70. package/Mesher/Voxels/Models/VoxelModelEffect.d.ts +1 -7
  71. package/Mesher/Voxels/Models/VoxelModelEffect.js +23 -26
  72. package/Renderer/Classes/DVESectionMeshes.d.ts +1 -1
  73. package/Renderer/MeshManager.js +1 -1
  74. package/Settings/EngineSettings.types.d.ts +2 -1
  75. package/Settings/EngineSettings.types.js +1 -0
  76. package/Stats/EngineStats.d.ts +5 -3
  77. package/Stats/EngineStats.js +8 -6
  78. package/Templates/Archive/ArchivedVoxelTemplate.d.ts +1 -1
  79. package/Templates/Archive/ArchivedVoxelTemplate.js +5 -5
  80. package/Templates/Archive/Functions/CreateArchivedTemplate.d.ts +1 -1
  81. package/Templates/Archive/Functions/CreateArchivedTemplate.js +2 -2
  82. package/Templates/Cursor/TemplateCursor.d.ts +1 -1
  83. package/Templates/Cursor/TemplateCursor.js +1 -1
  84. package/Templates/Full/FullVoxelTemplate.d.ts +1 -1
  85. package/Templates/Full/FullVoxelTemplate.js +1 -1
  86. package/Templates/Full/Functions/CreateFullTemplate.d.ts +1 -1
  87. package/Templates/Selection/VoxelBFSSelection.d.ts +1 -1
  88. package/Templates/Selection/VoxelBFSSelection.js +1 -1
  89. package/Templates/Selection/VoxelBoundsSelection.d.ts +1 -1
  90. package/Templates/Selection/VoxelBoundsSelection.js +1 -1
  91. package/Templates/Selection/VoxelPointSelection.d.ts +1 -1
  92. package/Templates/Selection/VoxelPointSelection.js +1 -1
  93. package/Templates/Selection/VoxelSelection.d.ts +1 -1
  94. package/Templates/Selection/VoxelSurfaceSelection.d.ts +1 -1
  95. package/Templates/Selection/VoxelSurfaceSelection.js +1 -1
  96. package/Templates/Selection/VoxelTemplateSelection.d.ts +1 -1
  97. package/Templates/Selection/VoxelTemplateSelection.js +1 -1
  98. package/Templates/Shapes/Selections/BoxVoxelShapeSelection.d.ts +1 -1
  99. package/Templates/Shapes/Selections/BoxVoxelShapeSelection.js +1 -1
  100. package/Templates/Shapes/Selections/ConeVoxelShapeSelection.d.ts +1 -1
  101. package/Templates/Shapes/Selections/ConeVoxelShapeSelection.js +1 -1
  102. package/Templates/Shapes/Selections/CylinderVoxelShapeSelection.d.ts +1 -1
  103. package/Templates/Shapes/Selections/CylinderVoxelShapeSelection.js +1 -1
  104. package/Templates/Shapes/Selections/EllipsoidVoxelShapeSelection.d.ts +1 -1
  105. package/Templates/Shapes/Selections/EllipsoidVoxelShapeSelection.js +1 -1
  106. package/Templates/Shapes/Selections/OctahedronVoxelShapeSelection.d.ts +1 -1
  107. package/Templates/Shapes/Selections/OctahedronVoxelShapeSelection.js +1 -1
  108. package/Templates/Shapes/Selections/PyramidVoxelShapeSelection.d.ts +1 -1
  109. package/Templates/Shapes/Selections/PyramidVoxelShapeSelection.js +1 -1
  110. package/Templates/Shapes/Selections/SphereVoxelShapeSelection.d.ts +1 -1
  111. package/Templates/Shapes/Selections/SphereVoxelShapeSelection.js +1 -1
  112. package/Templates/Shapes/Selections/TorusVoxelShapeSelection.d.ts +1 -1
  113. package/Templates/Shapes/Selections/TorusVoxelShapeSelection.js +1 -1
  114. package/Templates/Shapes/VoxelShapeTemplate.d.ts +1 -1
  115. package/Templates/Shapes/VoxelShapeTemplate.js +1 -1
  116. package/Templates/VoxelTemplates.types.d.ts +1 -1
  117. package/Textures/Functions/BuildTextureData.js +4 -52
  118. package/Tools/Brush/Brush.js +5 -5
  119. package/Util/StringPalette.js +2 -0
  120. package/Voxels/Archive/VoxelPaletteArchiveReader.js +7 -6
  121. package/Voxels/Archive/VoxelPaletteArechive.js +8 -8
  122. package/Voxels/Cursor/DataCursor.interface.d.ts +1 -1
  123. package/Voxels/Cursor/VoxelCursor.interface.d.ts +0 -2
  124. package/Voxels/Cursor/VoxelCursor.interface.js +14 -16
  125. package/Voxels/Cursor/VoxelCursor.js +5 -5
  126. package/Voxels/Data/GeometryLUT.d.ts +32 -0
  127. package/Voxels/Data/GeometryLUT.js +50 -0
  128. package/Voxels/Data/VoxelLUT.d.ts +83 -0
  129. package/Voxels/Data/VoxelLUT.js +119 -0
  130. package/Voxels/Data/VoxelTagsRegister.d.ts +2 -2
  131. package/Voxels/Data/VoxelTagsRegister.js +2 -2
  132. package/Voxels/Functions/BuildLUTs.d.ts +6 -0
  133. package/Voxels/Functions/BuildLUTs.js +361 -0
  134. package/Voxels/Functions/BuildTagData.d.ts +4 -2
  135. package/Voxels/Functions/BuildTagData.js +15 -32
  136. package/Voxels/Functions/Geometry/BuildGeometryLUT.d.ts +11 -0
  137. package/Voxels/Functions/Geometry/BuildGeometryLUT.js +395 -0
  138. package/Voxels/{Models/Rules/Functions/Compile/Nodes → Functions/Geometry}/CalcFunctions.d.ts +3 -3
  139. package/Voxels/{Models/Rules/Functions/Compile/Nodes → Functions/Geometry}/CalcFunctions.js +2 -2
  140. package/Voxels/Functions/Geometry/Compile/BuildCompiled.d.ts +4 -0
  141. package/Voxels/Functions/Geometry/Compile/BuildCompiled.js +25 -0
  142. package/Voxels/Functions/Geometry/Compile/BuildCompiledBox.d.ts +4 -0
  143. package/Voxels/Functions/Geometry/Compile/BuildCompiledBox.js +13 -0
  144. package/Voxels/Functions/Geometry/Compile/BuildCompiledQuad.d.ts +4 -0
  145. package/Voxels/Functions/Geometry/Compile/BuildCompiledQuad.js +41 -0
  146. package/Voxels/Functions/Geometry/Compile/BuildCompiledTri.d.ts +4 -0
  147. package/Voxels/Functions/Geometry/Compile/BuildCompiledTri.js +44 -0
  148. package/Voxels/Functions/Geometry/GeometryLUT.types.d.ts +7 -0
  149. package/Voxels/Functions/Geometry/Inputs/BaseFunctions.d.ts +4 -0
  150. package/Voxels/Functions/Geometry/Inputs/BaseFunctions.js +28 -0
  151. package/Voxels/Functions/Geometry/Inputs/BuildBoxInputs.d.ts +5 -0
  152. package/Voxels/Functions/Geometry/Inputs/BuildBoxInputs.js +8 -0
  153. package/Voxels/Functions/Geometry/Inputs/BuildCustomInputs.d.ts +5 -0
  154. package/Voxels/Functions/Geometry/Inputs/BuildCustomInputs.js +41 -0
  155. package/Voxels/Functions/Geometry/Inputs/BuildQuadInputs.d.ts +5 -0
  156. package/Voxels/Functions/Geometry/Inputs/BuildQuadInputs.js +103 -0
  157. package/Voxels/Functions/Geometry/Inputs/BuildTriangleInputs.d.ts +5 -0
  158. package/Voxels/Functions/Geometry/Inputs/BuildTriangleInputs.js +101 -0
  159. package/Voxels/Functions/Geometry/Inputs/BuldInputs.d.ts +4 -0
  160. package/Voxels/Functions/Geometry/Inputs/BuldInputs.js +22 -0
  161. package/Voxels/Functions/Geometry/Rules/BuildRules.d.ts +1 -0
  162. package/Voxels/{Models/Rules/Functions → Functions/Geometry/Rules}/BuildRules.js +23 -23
  163. package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFaceRegister.d.ts +2 -2
  164. package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionQuadFace.js +1 -1
  165. package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionTriangleFace.js +1 -1
  166. package/Voxels/{Models/Indexing → Geometry}/AOOcclusionFaceIndex.d.ts +2 -2
  167. package/Voxels/Geometry/AOOcclusionFaceIndex.js +28 -0
  168. package/Voxels/{Models/Indexing → Geometry}/CulledOcclusionFaceIndex.d.ts +2 -2
  169. package/Voxels/Geometry/CulledOcclusionFaceIndex.js +27 -0
  170. package/Voxels/Geometry/VoxelGeometry.types.d.ts +105 -0
  171. package/Voxels/Geometry/VoxelGeometry.types.js +1 -0
  172. package/Voxels/Indexes/VoxelIndex.js +15 -21
  173. package/Voxels/InitVoxelData.d.ts +4 -3
  174. package/Voxels/InitVoxelData.js +53 -110
  175. package/Voxels/Interaction/Functions/PickVoxel.js +1 -1
  176. package/Voxels/Logic/Classes/Types/VoxelLogicStateType.js +2 -2
  177. package/Voxels/Logic/Classes/VoxelLogic.d.ts +2 -2
  178. package/Voxels/Logic/Classes/VoxelLogic.js +2 -2
  179. package/Voxels/Logic/VoxelLogicRegister.js +2 -2
  180. package/Voxels/Models/Defaults/CubeVoxelGeometry.d.ts +1 -1
  181. package/Voxels/Models/Defaults/CubeVoxelModels.d.ts +1 -0
  182. package/Voxels/Models/Defaults/CubeVoxelModels.js +45 -0
  183. package/Voxels/Models/Defaults/Examples.d.ts +2 -1
  184. package/Voxels/Models/Defaults/Examples.js +28 -28
  185. package/Voxels/Models/Defaults/FarmVoxelModels.d.ts +3 -2
  186. package/Voxels/Models/Defaults/FarmVoxelModels.js +3 -3
  187. package/Voxels/Models/Defaults/LiquidVoxelModel.d.ts +2 -1
  188. package/Voxels/Models/Defaults/PanelVoxelGeometry.d.ts +1 -1
  189. package/Voxels/Models/VoxelModel.types.d.ts +2 -109
  190. package/Voxels/State/{Schema → Reltional}/Conditions/SameVoxelConditions.d.ts +2 -2
  191. package/Voxels/State/Reltional/Conditions/SameVoxelConditions.js +19 -0
  192. package/Voxels/State/Reltional/Conditions/ShapeStateSchemaRelationsCondition.d.ts +6 -0
  193. package/Voxels/State/Reltional/Conditions/ShapeStateSchemaRelationsCondition.js +6 -0
  194. package/Voxels/State/Reltional/ReltionalStateBuilder.d.ts +18 -0
  195. package/Voxels/State/Reltional/ReltionalStateBuilder.js +42 -0
  196. package/Voxels/State/Schema/BinarySchema.d.ts +1 -0
  197. package/Voxels/State/Schema/BinarySchema.js +3 -0
  198. package/Voxels/State/State.types.d.ts +0 -25
  199. package/Voxels/State/State.types.js +1 -22
  200. package/Voxels/State/VoxelSchemas.d.ts +22 -0
  201. package/Voxels/State/VoxelSchemas.js +60 -0
  202. package/Voxels/Types/PaintVoxelData.js +55 -45
  203. package/Voxels/Types/VoxelModelCompiledData.types.d.ts +4 -22
  204. package/World/Archive/Classes/ImportedSection.js +8 -8
  205. package/World/Archive/Functions/Sector/ArchiveSector.js +3 -3
  206. package/World/Cursor/SectionCursor.d.ts +1 -1
  207. package/World/Cursor/SectionCursor.js +1 -1
  208. package/World/Cursor/SectorCursor.d.ts +1 -1
  209. package/World/Cursor/SectorCursor.js +1 -1
  210. package/World/Cursor/WorldCursor.d.ts +1 -1
  211. package/World/Cursor/WorldCursor.js +1 -1
  212. package/World/Lock/Function/LockSectors.d.ts +1 -1
  213. package/World/Lock/Function/UnLockSectors.d.ts +1 -1
  214. package/World/SnapShot/SectionSnapShotCursor.d.ts +1 -1
  215. package/World/SnapShot/SectionSnapShotCursor.js +1 -1
  216. package/World/SnapShot/SnapShots.d.ts +1 -1
  217. package/World/SnapShot/SnapShots.js +1 -1
  218. package/WorldSimulation/Dimensions/SimulationSector.d.ts +1 -1
  219. package/WorldSimulation/Dimensions/SimulationSector.js +2 -2
  220. package/WorldSimulation/Tools/SimulationBrush.js +9 -9
  221. package/WorldSimulation/Voxels/Behaviors/Types/CropVoxelBehavior.js +4 -2
  222. package/WorldSimulation/Voxels/Behaviors/Types/FarmlandVoxelBehavior.js +5 -2
  223. package/WorldSimulation/WorldSimulation.d.ts +1 -0
  224. package/WorldSimulation/WorldSimulation.js +2 -1
  225. package/package.json +1 -1
  226. package/Mesher/Voxels/Models/Nodes/Types/GeomtryNode.types.d.ts +0 -7
  227. package/Voxels/Data/VoxelPalettesRegister.d.ts +0 -18
  228. package/Voxels/Data/VoxelPalettesRegister.js +0 -24
  229. package/Voxels/Functions/BuildPaletteData.d.ts +0 -6
  230. package/Voxels/Functions/BuildPaletteData.js +0 -87
  231. package/Voxels/Functions/BuildStateData.d.ts +0 -23
  232. package/Voxels/Functions/BuildStateData.js +0 -327
  233. package/Voxels/Models/CompiledVoxelModel.types.d.ts +0 -46
  234. package/Voxels/Models/Indexing/AOOcclusionFaceIndex.js +0 -28
  235. package/Voxels/Models/Indexing/CulledOcclusionFaceIndex.js +0 -27
  236. package/Voxels/Models/Rules/Classes/GeomtryInput.d.ts +0 -16
  237. package/Voxels/Models/Rules/Classes/GeomtryInput.js +0 -85
  238. package/Voxels/Models/Rules/Classes/VoxelRulesGeometry.d.ts +0 -22
  239. package/Voxels/Models/Rules/Classes/VoxelRulesGeometry.js +0 -15
  240. package/Voxels/Models/Rules/Classes/VoxelRulesModel.d.ts +0 -19
  241. package/Voxels/Models/Rules/Classes/VoxelRulesModel.js +0 -29
  242. package/Voxels/Models/Rules/Functions/BuildFinalInputs.d.ts +0 -5
  243. package/Voxels/Models/Rules/Functions/BuildFinalInputs.js +0 -87
  244. package/Voxels/Models/Rules/Functions/BuildRules.d.ts +0 -7
  245. package/Voxels/Models/Rules/Functions/Compile/CompileGeomtryNodes.d.ts +0 -4
  246. package/Voxels/Models/Rules/Functions/Compile/CompileGeomtryNodes.js +0 -39
  247. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileBoxGeometryNode.d.ts +0 -5
  248. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileBoxGeometryNode.js +0 -14
  249. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileQuadGeometryNode.d.ts +0 -6
  250. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileQuadGeometryNode.js +0 -92
  251. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileTriangleGeometryNode.d.ts +0 -6
  252. package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileTriangleGeometryNode.js +0 -115
  253. package/Voxels/Models/Rules/VoxelModelRuleBuilderRegister.d.ts +0 -18
  254. package/Voxels/Models/Rules/VoxelModelRuleBuilderRegister.js +0 -202
  255. package/Voxels/State/CondiotnalTreeReader.d.ts +0 -10
  256. package/Voxels/State/CondiotnalTreeReader.js +0 -23
  257. package/Voxels/State/LogicStatementReader.d.ts +0 -9
  258. package/Voxels/State/LogicStatementReader.js +0 -50
  259. package/Voxels/State/Schema/Conditions/SameVoxelConditions.js +0 -19
  260. package/Voxels/State/Schema/Conditions/ShapeStateSchemaRelationsCondition.d.ts +0 -6
  261. package/Voxels/State/Schema/Conditions/ShapeStateSchemaRelationsCondition.js +0 -6
  262. package/Voxels/State/Schema/ShapeStateRelationsNode.d.ts +0 -10
  263. package/Voxels/State/Schema/ShapeStateRelationsNode.js +0 -26
  264. package/Voxels/State/Schema/StateSchema.d.ts +0 -13
  265. package/Voxels/State/Schema/StateSchema.js +0 -17
  266. package/Voxels/State/Schema/VoxelSchema.d.ts +0 -7
  267. package/Voxels/State/Schema/VoxelSchema.js +0 -10
  268. package/Voxels/State/SchemaRegister.d.ts +0 -18
  269. package/Voxels/State/SchemaRegister.js +0 -76
  270. package/Voxels/State/StateTreeReader.d.ts +0 -9
  271. package/Voxels/State/StateTreeReader.js +0 -37
  272. /package/Mesher/{Geomtry → Geometry}/Functions/GetBounds.d.ts +0 -0
  273. /package/Mesher/{Geomtry → Geometry}/Functions/GetBounds.js +0 -0
  274. /package/Mesher/{Geomtry → Geometry}/Geometry.types.js +0 -0
  275. /package/Mesher/{Geomtry → Geometry}/Primitives/Quad.d.ts +0 -0
  276. /package/Mesher/{Geomtry → Geometry}/Primitives/Quad.js +0 -0
  277. /package/Mesher/{Geomtry → Geometry}/Primitives/QuadVertexData.d.ts +0 -0
  278. /package/Mesher/{Geomtry → Geometry}/Primitives/QuadVertexData.js +0 -0
  279. /package/Mesher/{Geomtry → Geometry}/Primitives/Triangle.d.ts +0 -0
  280. /package/Mesher/{Geomtry → Geometry}/Primitives/Triangle.js +0 -0
  281. /package/Mesher/{Geomtry → Geometry}/Primitives/TriangleVertexData.d.ts +0 -0
  282. /package/Mesher/{Geomtry → Geometry}/Primitives/TriangleVertexData.js +0 -0
  283. /package/Mesher/{Geomtry → Geometry}/Primitives/index.d.ts +0 -0
  284. /package/Mesher/{Geomtry → Geometry}/Primitives/index.js +0 -0
  285. /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMesh.d.ts +0 -0
  286. /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMesh.js +0 -0
  287. /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMeshBuffer.d.ts +0 -0
  288. /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMeshBuffer.js +0 -0
  289. /package/Mesher/{Geomtry → Geometry}/Shapes/Box.d.ts +0 -0
  290. /package/Mesher/{Geomtry → Geometry}/Shapes/Box.js +0 -0
  291. /package/Mesher/{Geomtry → Geometry}/Transform/TransformBox.d.ts +0 -0
  292. /package/Mesher/{Geomtry → Geometry}/Transform/TransformBox.js +0 -0
  293. /package/Mesher/{Geomtry → Geometry}/Transform/TransformQuad.d.ts +0 -0
  294. /package/Mesher/{Geomtry → Geometry}/Transform/TransformQuad.js +0 -0
  295. /package/Mesher/{Geomtry → Geometry}/Transform/TransformTriangle.d.ts +0 -0
  296. /package/Mesher/{Geomtry → Geometry}/Transform/TransformTriangle.js +0 -0
  297. /package/Mesher/{Geomtry → Geometry}/index.d.ts +0 -0
  298. /package/Mesher/{Geomtry → Geometry}/index.js +0 -0
  299. /package/Mesher/Items/{Geomtry → Geometry}/ItemMeshVertexStructCursor.d.ts +0 -0
  300. /package/Mesher/Items/{Geomtry → Geometry}/ItemMeshVertexStructCursor.js +0 -0
  301. /package/Mesher/Voxels/{Geomtry → Geometry}/CompactedSectionVoxelMesh.d.ts +0 -0
  302. /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHBuilder.d.ts +0 -0
  303. /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshVertexStructCursor.d.ts +0 -0
  304. /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshVertexStructCursor.js +0 -0
  305. /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelShaderData.d.ts +0 -0
  306. /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelShaderData.js +0 -0
  307. /package/Mesher/Voxels/Models/Nodes/Types/{GeomtryNode.types.js → GeometryNode.types.js} +0 -0
  308. /package/Voxels/{Models/CompiledVoxelModel.types.js → Functions/Geometry/GeometryLUT.types.js} +0 -0
  309. /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFace.d.ts +0 -0
  310. /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFace.js +0 -0
  311. /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFaceRegister.js +0 -0
  312. /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionQuadFace.d.ts +0 -0
  313. /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionTriangleFace.d.ts +0 -0
  314. /package/Voxels/{Models/Indexing → Geometry}/VoxelRelativeCubeIndex.d.ts +0 -0
  315. /package/Voxels/{Models/Indexing → Geometry}/VoxelRelativeCubeIndex.js +0 -0
@@ -0,0 +1,395 @@
1
+ import { StringPalette } from "../../../Util/StringPalette";
2
+ import { GeometryLUT } from "../../Data/GeometryLUT";
3
+ import { BuildInputs } from "./Inputs/BuldInputs";
4
+ import { BuildCompiled } from "./Compile/BuildCompiled";
5
+ import { BuildRules } from "./Rules/BuildRules";
6
+ import { VoxelFaceNameArray } from "../../../Math";
7
+ const getGeometryLinkId = (node) => {
8
+ return `${node.geometryId}${node.cullingProcedure ? JSON.stringify(node.cullingProcedure) : " "}${node.position ? `-p${node.position.toString()}` : ""}${node.rotation ? `-r${node.rotation.toString()}` : ""}${node.scale ? `-s${node.scale.toString()}` : ""}${node.flip ? `-f${node.flip.toString()}` : ""}`.trim();
9
+ };
10
+ const getVoxelModelInputId = (data) => {
11
+ let baseId = `${data.geoNodeId}-${data.modelId}`;
12
+ const modelInputKeys = Object.keys(data.modelInputs).sort();
13
+ for (const key of modelInputKeys) {
14
+ baseId += `${key}-${JSON.stringify(data.modelInputs[key])}`;
15
+ }
16
+ const voxelInputKeys = Object.keys(data.voxelInputs).sort();
17
+ for (const key of voxelInputKeys) {
18
+ baseId += `${key}-${JSON.stringify(data.voxelInputs[key])}`;
19
+ }
20
+ return baseId;
21
+ };
22
+ export function BuildGeomeetryLUT(voxels, geomtries, models) {
23
+ const geometryMap = new Map();
24
+ for (const geometry of geomtries) {
25
+ geometryMap.set(geometry.id, geometry);
26
+ const divisor = geometry.divisor;
27
+ for (const node of geometry.nodes) {
28
+ if (node.type == "box") {
29
+ let d = node.divisor ? node.divisor : divisor;
30
+ if (!d)
31
+ continue;
32
+ node.points[0][0] /= d[0];
33
+ node.points[0][1] /= d[1];
34
+ node.points[0][2] /= d[2];
35
+ node.points[1][0] /= d[0];
36
+ node.points[1][1] /= d[1];
37
+ node.points[1][2] /= d[2];
38
+ for (const faceName of VoxelFaceNameArray) {
39
+ const data = node.faces[faceName];
40
+ if (Array.isArray(data.uv)) {
41
+ data.uv[0] /= d[0];
42
+ data.uv[1] /= d[1];
43
+ data.uv[2] /= d[0];
44
+ data.uv[3] /= d[1];
45
+ }
46
+ }
47
+ if (node.divisor)
48
+ node.divisor = undefined;
49
+ }
50
+ if (node.type == "quad") {
51
+ let d = node.divisor ? node.divisor : divisor;
52
+ if (!d)
53
+ continue;
54
+ for (let i = 0; i < 4; i++) {
55
+ const point = node.points[i];
56
+ point[0] /= d[0];
57
+ point[1] /= d[1];
58
+ point[2] /= d[2];
59
+ }
60
+ if (Array.isArray(node.uv)) {
61
+ if (Array.isArray(node.uv[0])) {
62
+ let uvs = node.uv;
63
+ for (let i = 0; i < node.uv.length; i++) {
64
+ uvs[i][0] /= d[0];
65
+ uvs[i][1] /= d[1];
66
+ }
67
+ }
68
+ else {
69
+ let uvs = node.uv;
70
+ uvs[0] /= d[0];
71
+ uvs[1] /= d[1];
72
+ uvs[2] /= d[0];
73
+ uvs[3] /= d[1];
74
+ }
75
+ }
76
+ if (node.divisor)
77
+ node.divisor = undefined;
78
+ }
79
+ if (node.type == "triangle") {
80
+ let d = node.divisor ? node.divisor : divisor;
81
+ if (!d)
82
+ continue;
83
+ for (let i = 0; i < 4; i++) {
84
+ const point = node.points[i];
85
+ point[0] /= d[0];
86
+ point[1] /= d[1];
87
+ point[2] /= d[2];
88
+ }
89
+ if (Array.isArray(node.uv)) {
90
+ if (Array.isArray(node.uv[0])) {
91
+ let uvs = node.uv;
92
+ for (let i = 0; i < node.uv.length; i++) {
93
+ uvs[i][0] /= d[0];
94
+ uvs[i][1] /= d[1];
95
+ }
96
+ }
97
+ }
98
+ if (node.divisor)
99
+ node.divisor = undefined;
100
+ }
101
+ if (geometry.divisor)
102
+ geometry.divisor = undefined;
103
+ }
104
+ }
105
+ const modelMap = new Map();
106
+ for (const model of models) {
107
+ modelMap.set(model.id, model);
108
+ for (const stateKey in model.stateNodes) {
109
+ const nodes = model.stateNodes[stateKey];
110
+ for (const node of nodes) {
111
+ let d = node.divisor ? node.divisor : model.divisor;
112
+ if (!d)
113
+ continue;
114
+ if (node.position) {
115
+ node.position[0] /= d[0];
116
+ node.position[1] /= d[1];
117
+ node.position[2] /= d[2];
118
+ }
119
+ }
120
+ }
121
+ for (const stateKey in model.conditonalNodes) {
122
+ const nodes = model.conditonalNodes[stateKey];
123
+ for (const node of nodes) {
124
+ let d = node.divisor ? node.divisor : model.divisor;
125
+ if (!d)
126
+ continue;
127
+ if (node.position) {
128
+ node.position[0] /= d[0];
129
+ node.position[1] /= d[1];
130
+ node.position[2] /= d[2];
131
+ }
132
+ }
133
+ }
134
+ }
135
+ const modelsProcessed = new Set();
136
+ const modelStateMap = new Map();
137
+ const modelConditionalMap = new Map();
138
+ const geometryLinkRecord = [];
139
+ const geometryLinkPalette = new StringPalette();
140
+ const rulelessIndex = [];
141
+ const inputMap = new Map();
142
+ const conditionalInputMap = new Map();
143
+ const cullingProcedures = [
144
+ {
145
+ type: "default",
146
+ },
147
+ {
148
+ type: "none",
149
+ },
150
+ {
151
+ type: "transparent",
152
+ },
153
+ ];
154
+ const cullProcedurePalette = new StringPalette();
155
+ for (const procedure of cullingProcedures) {
156
+ cullProcedurePalette.register(procedure.type);
157
+ }
158
+ GeometryLUT.geometryCullingProcedures = cullingProcedures;
159
+ for (const voxel of voxels) {
160
+ const voxelModelData = voxel.properties["dve_model_data"];
161
+ if (!voxelModelData)
162
+ continue;
163
+ const model = modelMap.get(voxelModelData.id);
164
+ if (!modelsProcessed.has(voxelModelData.id)) {
165
+ modelsProcessed.add(voxelModelData.id);
166
+ const stateNodes = {};
167
+ for (const state in model.stateNodes) {
168
+ const nodes = model.stateNodes[state];
169
+ const nodeIds = [];
170
+ for (const node of nodes) {
171
+ const getLinkId = getGeometryLinkId(node);
172
+ const getLinkPaletteId = geometryLinkPalette.register(getLinkId);
173
+ geometryLinkRecord[getLinkPaletteId] = node;
174
+ nodeIds.push(getLinkPaletteId);
175
+ const cullingProcedure = node.cullingProcedure
176
+ ? node.cullingProcedure
177
+ : geometryMap.get(node.geometryId)?.cullingProcedure ||
178
+ cullingProcedures[0];
179
+ GeometryLUT.geometryCullingProceduresIndex[getLinkPaletteId] =
180
+ cullProcedurePalette.getNumberId(cullingProcedure.type);
181
+ if (geometryMap.get(node.geometryId)?.doNotBuildRules) {
182
+ rulelessIndex[getLinkPaletteId] = true;
183
+ }
184
+ else {
185
+ rulelessIndex[getLinkPaletteId] = false;
186
+ }
187
+ }
188
+ nodeIds.sort();
189
+ stateNodes[state] = nodeIds;
190
+ }
191
+ modelStateMap.set(model.id, stateNodes);
192
+ const conditionalStateNodes = {};
193
+ for (const state in model.conditonalNodes) {
194
+ const nodes = model.conditonalNodes[state];
195
+ const nodeIds = [];
196
+ for (const node of nodes) {
197
+ const getLinkId = getGeometryLinkId(node);
198
+ const getLinkPaletteId = geometryLinkPalette.register(getLinkId);
199
+ geometryLinkRecord[getLinkPaletteId] = node;
200
+ nodeIds.push(getLinkPaletteId);
201
+ const cullingProcedure = node.cullingProcedure
202
+ ? node.cullingProcedure
203
+ : geometryMap.get(node.geometryId)?.cullingProcedure ||
204
+ cullingProcedures[0];
205
+ GeometryLUT.geometryCullingProceduresIndex[getLinkPaletteId] =
206
+ cullProcedurePalette.getNumberId(cullingProcedure.type);
207
+ if (geometryMap.get(node.geometryId)?.doNotBuildRules) {
208
+ rulelessIndex[getLinkPaletteId] = true;
209
+ }
210
+ else {
211
+ rulelessIndex[getLinkPaletteId] = false;
212
+ }
213
+ }
214
+ nodeIds.sort();
215
+ conditionalStateNodes[state] = nodeIds;
216
+ }
217
+ modelConditionalMap.set(model.id, conditionalStateNodes);
218
+ }
219
+ const voxelInputStates = {};
220
+ const conditonalVoxelInputStates = {};
221
+ for (const mod in voxelModelData.inputs) {
222
+ const voxelInputs = voxelModelData.inputs[mod];
223
+ const voxelStateInputs = {};
224
+ for (const state in model.stateNodes) {
225
+ const nodes = model.stateNodes[state];
226
+ const inputs = [];
227
+ for (const node of nodes) {
228
+ const getLinkId = getGeometryLinkId(node);
229
+ const getLinkPaletteId = geometryLinkPalette.getNumberId(getLinkId);
230
+ inputs.push({
231
+ geoNodeId: getLinkPaletteId,
232
+ modelId: model.id,
233
+ geometryId: node.geometryId,
234
+ voxelInputs: voxelInputs,
235
+ modelInputs: node.inputs,
236
+ });
237
+ }
238
+ voxelStateInputs[state] = inputs;
239
+ }
240
+ voxelInputStates[mod] = voxelStateInputs;
241
+ const conditonalVoxelStateInputs = {};
242
+ for (const state in model.conditonalNodes) {
243
+ const nodes = model.conditonalNodes[state];
244
+ const inputs = [];
245
+ for (const node of nodes) {
246
+ const getLinkId = getGeometryLinkId(node);
247
+ const getLinkPaletteId = geometryLinkPalette.getNumberId(getLinkId);
248
+ inputs.push({
249
+ geoNodeId: getLinkPaletteId,
250
+ modelId: model.id,
251
+ geometryId: node.geometryId,
252
+ voxelInputs: voxelInputs,
253
+ modelInputs: node.inputs,
254
+ });
255
+ }
256
+ conditonalVoxelStateInputs[state] = inputs;
257
+ }
258
+ conditonalVoxelInputStates[mod] = conditonalVoxelStateInputs;
259
+ }
260
+ inputMap.set(voxel.id, voxelInputStates);
261
+ conditionalInputMap.set(voxel.id, conditonalVoxelInputStates);
262
+ }
263
+ //build final
264
+ const finalModelStateMap = new Map();
265
+ const finalModelConditionalMap = new Map();
266
+ const geometryIndex = [];
267
+ const finalGeometryPalette = new StringPalette();
268
+ for (const [model, values] of modelStateMap) {
269
+ const finalStateMap = {};
270
+ for (const state in values) {
271
+ const geoIds = values[state];
272
+ const geoIdsString = geoIds.toString();
273
+ const geoFinalId = finalGeometryPalette.register(geoIdsString);
274
+ geometryIndex[geoFinalId] = geoIds;
275
+ finalStateMap[state] = geoFinalId;
276
+ }
277
+ finalModelStateMap.set(model, finalStateMap);
278
+ }
279
+ for (const [model, values] of modelConditionalMap) {
280
+ const finalStateMap = {};
281
+ for (const state in values) {
282
+ const geoIds = values[state];
283
+ const geoIdsString = geoIds.toString();
284
+ const geoFinalId = finalGeometryPalette.register(geoIdsString);
285
+ geometryIndex[geoFinalId] = geoIds;
286
+ finalStateMap[state] = geoFinalId;
287
+ }
288
+ finalModelConditionalMap.set(model, finalStateMap);
289
+ }
290
+ //prepare to build final inputs
291
+ const preFinalVoxelStateInputMap = new Map();
292
+ const preFinalVoxelConditionalInputMap = new Map();
293
+ const inputRecord = [];
294
+ const finalGeometryInputPalette = new StringPalette();
295
+ for (const [voxel, inputs] of inputMap) {
296
+ const finalInputs = {};
297
+ for (const mod in inputs) {
298
+ finalInputs[mod] = {};
299
+ const states = inputs[mod];
300
+ for (const state in states) {
301
+ const inputs = [];
302
+ const voxelInputs = states[state];
303
+ for (const input of voxelInputs) {
304
+ const inputId = getVoxelModelInputId(input);
305
+ const finalInputId = finalGeometryInputPalette.register(inputId);
306
+ inputs.push(finalInputId);
307
+ inputRecord[finalInputId] = input;
308
+ }
309
+ inputs.sort();
310
+ finalInputs[mod][state] = inputs;
311
+ }
312
+ }
313
+ preFinalVoxelStateInputMap.set(voxel, finalInputs);
314
+ }
315
+ for (const [voxel, inputs] of conditionalInputMap) {
316
+ const finalInputs = {};
317
+ for (const mod in inputs) {
318
+ finalInputs[mod] = {};
319
+ const states = inputs[mod];
320
+ for (const state in states) {
321
+ const inputs = [];
322
+ const voxelInputs = states[state];
323
+ for (const input of voxelInputs) {
324
+ const inputId = getVoxelModelInputId(input);
325
+ const finalInputId = finalGeometryInputPalette.register(inputId);
326
+ inputs.push(finalInputId);
327
+ inputRecord[finalInputId] = input;
328
+ }
329
+ inputs.sort();
330
+ finalInputs[mod][state] = inputs;
331
+ }
332
+ }
333
+ preFinalVoxelConditionalInputMap.set(voxel, finalInputs);
334
+ }
335
+ //build final inputs
336
+ const finalVoxelStateInputMap = new Map();
337
+ const finalVoxelConditionalInputMap = new Map();
338
+ const inputIndex = [];
339
+ const finalInputPalette = new StringPalette();
340
+ for (const [voxel, inputs] of preFinalVoxelStateInputMap) {
341
+ const finalInputs = {};
342
+ for (const mod in inputs) {
343
+ finalInputs[mod] = {};
344
+ const states = inputs[mod];
345
+ for (const state in states) {
346
+ const inputIds = inputs[mod][state];
347
+ const inputsStringId = inputIds.toString();
348
+ const inputsFinalId = finalInputPalette.register(inputsStringId);
349
+ finalInputs[mod][state] = inputsFinalId;
350
+ inputIndex[inputsFinalId] = inputIds;
351
+ }
352
+ }
353
+ finalVoxelStateInputMap.set(voxel, finalInputs);
354
+ }
355
+ for (const [voxel, inputs] of preFinalVoxelConditionalInputMap) {
356
+ const finalInputs = {};
357
+ for (const mod in inputs) {
358
+ finalInputs[mod] = {};
359
+ const states = inputs[mod];
360
+ for (const state in states) {
361
+ const inputIds = inputs[mod][state];
362
+ const inputsStringId = inputIds.toString();
363
+ const inputsFinalId = finalInputPalette.register(inputsStringId);
364
+ finalInputs[mod][state] = inputsFinalId;
365
+ inputIndex[inputsFinalId] = inputIds;
366
+ }
367
+ }
368
+ finalVoxelConditionalInputMap.set(voxel, finalInputs);
369
+ }
370
+ GeometryLUT.geometryIndex = geometryIndex;
371
+ GeometryLUT.geometryInputsIndex = inputIndex;
372
+ //Build compiled geometry
373
+ const finalCompiledData = [];
374
+ for (let i = 0; i < geometryLinkRecord.length; i++) {
375
+ const geoLinkData = geometryLinkRecord[i];
376
+ finalCompiledData[i] = BuildCompiled(geoLinkData, geometryMap.get(geoLinkData.geometryId));
377
+ }
378
+ GeometryLUT.compiledGeometry = finalCompiledData;
379
+ //Build geometry inputs
380
+ const finalInputData = [];
381
+ for (let i = 0; i < inputRecord.length; i++) {
382
+ const inputs = inputRecord[i];
383
+ const geoLinkData = geometryLinkRecord[inputs.geoNodeId];
384
+ finalInputData[i] = BuildInputs(geoLinkData, inputs, modelMap.get(inputs.modelId), geometryMap.get(inputs.geometryId));
385
+ }
386
+ GeometryLUT.geometryInputs = finalInputData;
387
+ //Build Rules
388
+ BuildRules();
389
+ return {
390
+ finalModelStateMap,
391
+ finalModelConditionalMap,
392
+ finalVoxelStateInputMap,
393
+ finalVoxelConditionalInputMap,
394
+ };
395
+ }
@@ -1,6 +1,6 @@
1
- import { VoxelFaces } from "../../../../../../Math";
2
- import { Quad } from "../../../../../../Mesher/Geomtry";
3
- import { QuadUVData, VoxelGeometryTransform } from "../../../../../../Mesher/Geomtry/Geometry.types";
1
+ import { VoxelFaces } from "../../../Math";
2
+ import { Quad } from "../../../Mesher/Geometry";
3
+ import { QuadUVData, VoxelGeometryTransform } from "../../../Mesher/Geometry/Geometry.types";
4
4
  import { Vec4Array } from "@amodx/math";
5
5
  export declare function getVertexWeights(face: VoxelFaces, x: number, y: number, z: number): Vec4Array;
6
6
  export type QuadVertexWeights = [Vec4Array, Vec4Array, Vec4Array, Vec4Array];
@@ -1,5 +1,5 @@
1
- import { VoxelFaces } from "../../../../../../Math";
2
- import { QuadVerticiesArray, } from "../../../../../../Mesher/Geomtry/Geometry.types";
1
+ import { VoxelFaces } from "../../../Math";
2
+ import { QuadVerticiesArray, } from "../../../Mesher/Geometry/Geometry.types";
3
3
  import { Matrix2x2Like, Vec2ArrayLike, AMath, } from "@amodx/math";
4
4
  function getInterpolationWeights(x, y, flip = false) {
5
5
  x = Math.max(0, Math.min(1, x));
@@ -0,0 +1,4 @@
1
+ import { VoxelGeometryLinkData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
3
+ import { CompiledGeometryNodes } from "../../../../Mesher/Voxels/Models/Nodes/Types/GeometryNode.types";
4
+ export declare function BuildCompiled(geoLink: VoxelGeometryLinkData, geometry: VoxelGeometryData): CompiledGeometryNodes[];
@@ -0,0 +1,25 @@
1
+ import { BuildCompiledBox } from "./BuildCompiledBox";
2
+ import { BuildCompiledQuad } from "./BuildCompiledQuad";
3
+ import { BuildCompiledTri } from "./BuildCompiledTri";
4
+ export function BuildCompiled(geoLink, geometry) {
5
+ const buildRules = geometry.doNotBuildRules !== true;
6
+ const compiled = [];
7
+ for (const node of geometry.nodes) {
8
+ if (node.type == "box") {
9
+ compiled.push(...BuildCompiledBox(buildRules, node, geoLink));
10
+ }
11
+ if (node.type == "quad") {
12
+ compiled.push(BuildCompiledQuad(buildRules, node.points, geoLink));
13
+ }
14
+ if (node.type == "triangle") {
15
+ compiled.push(BuildCompiledTri(buildRules, node.points, geoLink));
16
+ }
17
+ if (node.type == "custom") {
18
+ compiled.push({
19
+ type: "custom",
20
+ id: node.id,
21
+ });
22
+ }
23
+ }
24
+ return compiled;
25
+ }
@@ -0,0 +1,4 @@
1
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
2
+ import { CompiledQuadVoxelGeometryNode } from "Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
3
+ import { VoxelBoxGeometryNode } from "../../../Geometry/VoxelGeometry.types";
4
+ export declare function BuildCompiledBox(buildRules: boolean, data: VoxelBoxGeometryNode, transform: VoxelGeometryTransform): CompiledQuadVoxelGeometryNode[];
@@ -0,0 +1,13 @@
1
+ import { TransformBox } from "../../../../Mesher/Geometry/Transform/TransformBox";
2
+ import { BuildCompiledQuad } from "./BuildCompiledQuad";
3
+ import { Box } from "../../../../Mesher/Geometry/Shapes/Box";
4
+ export function BuildCompiledBox(buildRules, data, transform) {
5
+ const box = Box.Create(data.points);
6
+ TransformBox(box, transform);
7
+ const blankTransform = {};
8
+ const compiled = [];
9
+ for (let i = 0; i < 6; i++) {
10
+ compiled.push(BuildCompiledQuad(buildRules, box.quads[i].positions.toVec3Array(), blankTransform));
11
+ }
12
+ return compiled;
13
+ }
@@ -0,0 +1,4 @@
1
+ import { Vec3Array } from "@amodx/math";
2
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
3
+ import { CompiledQuadVoxelGeometryNode } from "../../../../Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
4
+ export declare function BuildCompiledQuad(buildRules: boolean, points: [Vec3Array, Vec3Array, Vec3Array, Vec3Array], transform?: VoxelGeometryTransform): CompiledQuadVoxelGeometryNode;
@@ -0,0 +1,41 @@
1
+ import { Quad } from "../../../../Mesher/Geometry/Primitives/Quad";
2
+ import { getQuadWeights } from "../CalcFunctions";
3
+ import { TransformQuad } from "../../../../Mesher/Geometry/Transform/TransformQuad";
4
+ import { OcclusionFaceRegister } from "../Rules/OcclusionFaceRegister";
5
+ import { closestVoxelFace } from "../../../../Math/UtilFunctions";
6
+ export function BuildCompiledQuad(buildRules, points, transform = {}) {
7
+ const quad = transform
8
+ ? TransformQuad(Quad.Create(points), transform)
9
+ : Quad.Create(points);
10
+ const normals = quad.normals.toArray();
11
+ const averageNormal = [0, 0, 0];
12
+ for (let i = 0; i < normals.length; i++) {
13
+ averageNormal[0] += normals[i].x;
14
+ averageNormal[1] += normals[i].y;
15
+ averageNormal[2] += normals[i].z;
16
+ }
17
+ averageNormal[0] /= normals.length;
18
+ averageNormal[1] /= normals.length;
19
+ averageNormal[2] /= normals.length;
20
+ // Normalize the average normal
21
+ const magnitude = Math.sqrt(averageNormal[0] * averageNormal[0] +
22
+ averageNormal[1] * averageNormal[1] +
23
+ averageNormal[2] * averageNormal[2]);
24
+ if (magnitude !== 0) {
25
+ averageNormal[0] /= magnitude;
26
+ averageNormal[1] /= magnitude;
27
+ averageNormal[2] /= magnitude;
28
+ }
29
+ const closestFace = closestVoxelFace(averageNormal);
30
+ const weights = getQuadWeights(quad, closestFace);
31
+ const positions = quad.positions.toVec3Array();
32
+ return {
33
+ type: "quad",
34
+ positions,
35
+ weights,
36
+ closestFace,
37
+ trueFaceIndex: buildRules
38
+ ? OcclusionFaceRegister.getQuadId(quad)
39
+ : undefined,
40
+ };
41
+ }
@@ -0,0 +1,4 @@
1
+ import { Vec3Array } from "@amodx/math";
2
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
3
+ import { CompiledTriangleVoxelGeometryNode } from "../../../../Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes";
4
+ export declare function BuildCompiledTri(buildRules: boolean, points: [Vec3Array, Vec3Array, Vec3Array], transform: VoxelGeometryTransform): CompiledTriangleVoxelGeometryNode;
@@ -0,0 +1,44 @@
1
+ import { Triangle } from "../../../../Mesher/Geometry/Primitives/Triangle";
2
+ import { getVertexWeights } from "../CalcFunctions";
3
+ import { TransformTriangle } from "../../../../Mesher/Geometry/Transform/TransformTriangle";
4
+ import { OcclusionFaceRegister } from "../Rules/OcclusionFaceRegister";
5
+ import { closestVoxelFace } from "../../../../Math/UtilFunctions";
6
+ export function BuildCompiledTri(buildRules, points, transform) {
7
+ const triangle = transform
8
+ ? TransformTriangle(Triangle.Create(points), transform)
9
+ : Triangle.Create(points);
10
+ const normals = triangle.normals.toArray();
11
+ const averageNormal = [0, 0, 0];
12
+ for (let i = 0; i < normals.length; i++) {
13
+ averageNormal[0] += normals[i].x;
14
+ averageNormal[1] += normals[i].y;
15
+ averageNormal[2] += normals[i].z;
16
+ }
17
+ averageNormal[0] /= normals.length;
18
+ averageNormal[1] /= normals.length;
19
+ averageNormal[2] /= normals.length;
20
+ // Normalize the average normal
21
+ const magnitude = Math.sqrt(averageNormal[0] * averageNormal[0] +
22
+ averageNormal[1] * averageNormal[1] +
23
+ averageNormal[2] * averageNormal[2]);
24
+ if (magnitude !== 0) {
25
+ averageNormal[0] /= magnitude;
26
+ averageNormal[1] /= magnitude;
27
+ averageNormal[2] /= magnitude;
28
+ }
29
+ const closestFace = closestVoxelFace(averageNormal);
30
+ const weights = [];
31
+ const positions = triangle.positions.toVec3Array();
32
+ for (let i = 0; i < positions.length; i++) {
33
+ weights[i] = getVertexWeights(closestFace, ...positions[i]);
34
+ }
35
+ return {
36
+ type: "triangle",
37
+ positions,
38
+ weights,
39
+ closestFace,
40
+ trueFaceIndex: buildRules
41
+ ? OcclusionFaceRegister.getTriangleId(triangle)
42
+ : undefined,
43
+ };
44
+ }
@@ -0,0 +1,7 @@
1
+ export type VoxelModelInputs = {
2
+ geoNodeId: number;
3
+ geometryId: string;
4
+ modelId: string;
5
+ voxelInputs: Record<string, any>;
6
+ modelInputs: Record<string, any>;
7
+ };
@@ -0,0 +1,4 @@
1
+ import { BaseVoxelGeometryTextureProcedureData } from "../../../../Mesher/Voxels/Models/Procedures/TextureProcedure";
2
+ export declare function isArgString(data: any): boolean;
3
+ export declare function cleanArgString(data: string): string;
4
+ export declare function processTexture(data: string | BaseVoxelGeometryTextureProcedureData): number | BaseVoxelGeometryTextureProcedureData;
@@ -0,0 +1,28 @@
1
+ import { TextureManager } from "../../../../Textures/TextureManager";
2
+ export function isArgString(data) {
3
+ if (typeof data !== "string")
4
+ return false;
5
+ return data[0] == "@";
6
+ }
7
+ export function cleanArgString(data) {
8
+ return data.replace("@", "");
9
+ }
10
+ export function processTexture(data) {
11
+ if (typeof data == "string")
12
+ return TextureManager.getTexture("dve_voxel").getTextureIndex(data);
13
+ if (!data)
14
+ throw new Error(`Bad data passed into processTexture`);
15
+ if (typeof data.texture == "string") {
16
+ data.texture = TextureManager.getTexture("dve_voxel").getTextureIndex(data.texture);
17
+ }
18
+ if (data.textureRecrod) {
19
+ for (const key in data.textureRecrod) {
20
+ const value = data.textureRecrod[key];
21
+ if (typeof value == "string") {
22
+ data.textureRecrod[key] =
23
+ TextureManager.getTexture("dve_voxel").getTextureIndex(value);
24
+ }
25
+ }
26
+ }
27
+ return data;
28
+ }
@@ -0,0 +1,5 @@
1
+ import { VoxelModelData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelModelInputs } from "../GeometryLUT.types";
3
+ import { VoxelBoxGeometryNode, VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
4
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
5
+ export declare function BuildBoxInputs(args: any[], transform: VoxelGeometryTransform, data: VoxelModelInputs, box: VoxelBoxGeometryNode, model: VoxelModelData, geometry: VoxelGeometryData): void;
@@ -0,0 +1,8 @@
1
+ import { VoxelFaceNameArray } from "../../../../Math";
2
+ import { BuildQuadInputs } from "./BuildQuadInputs";
3
+ export function BuildBoxInputs(args, transform, data, box, model, geometry) {
4
+ for (const quadFace of VoxelFaceNameArray) {
5
+ const quad = box.faces[quadFace];
6
+ BuildQuadInputs(args, transform, data, quad, model, geometry);
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ import { VoxelModelData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelModelInputs } from "../GeometryLUT.types";
3
+ import { VoxelCustomGeometryNode, VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
4
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
5
+ export declare function BuildCustomInputs(args: any[], transform: VoxelGeometryTransform, data: VoxelModelInputs, custom: VoxelCustomGeometryNode, model: VoxelModelData, geometry: VoxelGeometryData): void;