@divinevoxel/vlox 0.0.77 → 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,41 @@
1
+ import { cleanArgString, isArgString, processTexture } from "./BaseFunctions";
2
+ export function BuildCustomInputs(args, transform, data, custom, model, geometry) {
3
+ const customArgs = {};
4
+ for (const inputKey in custom.inputs) {
5
+ const inputValue = custom.inputs[inputKey];
6
+ if (isArgString(inputValue) && typeof inputValue == "string") {
7
+ const geometryArgumentId = cleanArgString(inputValue);
8
+ if (isArgString(data.modelInputs[geometryArgumentId]) &&
9
+ typeof inputValue == "string") {
10
+ const modelArgumentId = cleanArgString(inputValue);
11
+ const modelArgument = model.arguments[modelArgumentId];
12
+ const voxelInputValue = data.voxelInputs[modelArgumentId];
13
+ if (modelArgument.type == "texture") {
14
+ if (typeof voxelInputValue == "string") {
15
+ customArgs[geometryArgumentId] = processTexture(voxelInputValue);
16
+ continue;
17
+ }
18
+ if (typeof voxelInputValue == "object") {
19
+ const textureProcedure = voxelInputValue;
20
+ if (typeof textureProcedure.texture == "string") {
21
+ textureProcedure.texture = processTexture(textureProcedure.texture);
22
+ }
23
+ if (textureProcedure.textureRecrod) {
24
+ for (const key in textureProcedure.textureRecrod) {
25
+ textureProcedure.textureRecrod[key] = processTexture(textureProcedure.textureRecrod[key]);
26
+ }
27
+ }
28
+ customArgs[geometryArgumentId] = textureProcedure;
29
+ }
30
+ }
31
+ else {
32
+ customArgs[geometryArgumentId] = voxelInputValue;
33
+ }
34
+ }
35
+ }
36
+ else {
37
+ customArgs[inputKey] = inputValue;
38
+ }
39
+ }
40
+ args.push(customArgs);
41
+ }
@@ -0,0 +1,5 @@
1
+ import { VoxelModelData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelModelInputs } from "../GeometryLUT.types";
3
+ import { BaseVoxelQuadData, VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
4
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
5
+ export declare function BuildQuadInputs(args: any[], transform: VoxelGeometryTransform, data: VoxelModelInputs, quad: BaseVoxelQuadData, model: VoxelModelData, geometry: VoxelGeometryData): void;
@@ -0,0 +1,103 @@
1
+ import { QuadVoxelGometryInputs } from "../../../../Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
2
+ import { cleanArgString, isArgString, processTexture } from "./BaseFunctions";
3
+ import { mapQuadUvs } from "../CalcFunctions";
4
+ export function BuildQuadInputs(args, transform, data, quad, model, geometry) {
5
+ const ArgIndexes = QuadVoxelGometryInputs.ArgIndexes;
6
+ const inputs = QuadVoxelGometryInputs.CreateArgs();
7
+ let enabled = quad.enabled || true;
8
+ inputs[ArgIndexes.Enabled] = enabled;
9
+ let texture = 0;
10
+ if (isArgString(quad.texture)) {
11
+ const geometryInputId = cleanArgString(quad.texture);
12
+ let modelInput = data.modelInputs[geometryInputId];
13
+ if (!modelInput) {
14
+ for (const argKey in data.modelInputs) {
15
+ const arg = geometry.arguments[argKey];
16
+ if (!arg)
17
+ continue;
18
+ if (arg.type == "arg-list" && arg.arguments.includes(geometryInputId)) {
19
+ modelInput = data.modelInputs[argKey];
20
+ }
21
+ }
22
+ }
23
+ if (!modelInput)
24
+ throw new Error(`Could not find input for ${quad.texture} on geometry ${geometry.id} model ${model.id}`);
25
+ if (typeof modelInput == "string") {
26
+ const modelInputId = cleanArgString(modelInput);
27
+ texture = processTexture(data.voxelInputs[modelInputId]);
28
+ }
29
+ if (typeof modelInput == "object") {
30
+ const procedureData = structuredClone(modelInput);
31
+ if (typeof procedureData.texture == "string" &&
32
+ isArgString(procedureData.texture)) {
33
+ procedureData.texture =
34
+ data.voxelInputs[cleanArgString(procedureData.texture)];
35
+ }
36
+ if (procedureData.textureRecrod) {
37
+ for (const key in procedureData.textureRecrod) {
38
+ const value = procedureData.textureRecrod[key];
39
+ if (typeof value == "string" && isArgString(value)) {
40
+ procedureData.textureRecrod[key] =
41
+ data.voxelInputs[cleanArgString(value)];
42
+ }
43
+ }
44
+ }
45
+ texture = processTexture(procedureData);
46
+ }
47
+ }
48
+ inputs[ArgIndexes.Texture] = texture;
49
+ let rotation = 0;
50
+ if (isArgString(quad.rotation) && typeof quad.rotation == "string") {
51
+ const geoInput = cleanArgString(quad.rotation);
52
+ const modelInput = data.modelInputs[geoInput];
53
+ if (isArgString(modelInput) && typeof modelInput == "string") {
54
+ rotation = data.voxelInputs[cleanArgString(modelInput)];
55
+ }
56
+ else {
57
+ rotation = modelInput;
58
+ }
59
+ }
60
+ else {
61
+ rotation = quad.rotation;
62
+ }
63
+ inputs[ArgIndexes.Rotation] = rotation ? rotation : 0;
64
+ let doubleSided = false;
65
+ if (isArgString(quad.doubleSided) && typeof quad.doubleSided == "string") {
66
+ const geoInput = cleanArgString(quad.doubleSided);
67
+ const modelInput = data.modelInputs[geoInput];
68
+ if (isArgString(modelInput) && typeof modelInput == "string") {
69
+ doubleSided = data.voxelInputs[cleanArgString(modelInput)];
70
+ }
71
+ else {
72
+ doubleSided = modelInput;
73
+ }
74
+ }
75
+ else {
76
+ doubleSided = quad.doubleSided;
77
+ }
78
+ inputs[ArgIndexes.DoubleSided] = doubleSided ? doubleSided : false;
79
+ let quadUVs = [0, 0, 1, 1];
80
+ if (isArgString(quad.uv) && typeof quad.uv == "string") {
81
+ const geoInput = cleanArgString(quad.uv);
82
+ const modelInput = data.modelInputs[geoInput];
83
+ if (isArgString(modelInput) && typeof modelInput == "string") {
84
+ quadUVs = data.voxelInputs[cleanArgString(modelInput)];
85
+ }
86
+ else {
87
+ if (!modelInput) {
88
+ const input = geometry.arguments[geoInput];
89
+ if (input.type == "uv") {
90
+ quadUVs = input.default;
91
+ }
92
+ }
93
+ else {
94
+ quadUVs = modelInput;
95
+ }
96
+ }
97
+ }
98
+ else if (Array.isArray(quad.uv)) {
99
+ quadUVs = quad.uv;
100
+ }
101
+ inputs[ArgIndexes.UVs] = mapQuadUvs(quadUVs, inputs[ArgIndexes.Rotation] || 0, transform);
102
+ args.push(inputs);
103
+ }
@@ -0,0 +1,5 @@
1
+ import { VoxelModelData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelModelInputs } from "../GeometryLUT.types";
3
+ import { BaseVoxelTriangleData, VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
4
+ import { VoxelGeometryTransform } from "../../../../Mesher/Geometry/Geometry.types";
5
+ export declare function BuildTriangleInputs(args: any[], transform: VoxelGeometryTransform, data: VoxelModelInputs, tri: BaseVoxelTriangleData, model: VoxelModelData, geometry: VoxelGeometryData): void;
@@ -0,0 +1,101 @@
1
+ import { TriangleVoxelGometryInputs } from "../../../../Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes";
2
+ import { cleanArgString, isArgString, processTexture } from "./BaseFunctions";
3
+ export function BuildTriangleInputs(args, transform, data, tri, model, geometry) {
4
+ const ArgIndexes = TriangleVoxelGometryInputs.ArgIndexes;
5
+ const inputs = TriangleVoxelGometryInputs.CreateArgs();
6
+ inputs[ArgIndexes.Enabled] = true;
7
+ let texture = 0;
8
+ if (isArgString(tri.texture)) {
9
+ const geometryInputId = cleanArgString(tri.texture);
10
+ let modelInput = data.modelInputs[geometryInputId];
11
+ if (!modelInput) {
12
+ for (const argKey in data.modelInputs) {
13
+ const arg = geometry.arguments[argKey];
14
+ if (!arg)
15
+ continue;
16
+ if (arg.type == "arg-list" && arg.arguments.includes(geometryInputId)) {
17
+ modelInput = data.modelInputs[argKey];
18
+ }
19
+ }
20
+ }
21
+ if (!modelInput)
22
+ throw new Error(`Could not find input for ${tri.texture} on geometry ${geometry.id} model ${model.id}`);
23
+ if (typeof modelInput == "string") {
24
+ const modelInputId = cleanArgString(tri.texture);
25
+ texture = processTexture(data.voxelInputs[modelInputId]);
26
+ }
27
+ if (typeof modelInput == "object") {
28
+ const procedureData = structuredClone(modelInput);
29
+ if (typeof procedureData.texture == "string" &&
30
+ isArgString(procedureData.texture)) {
31
+ procedureData.texture =
32
+ data.voxelInputs[cleanArgString(procedureData.texture)];
33
+ }
34
+ if (procedureData.textureRecrod) {
35
+ for (const key in procedureData.textureRecrod) {
36
+ const value = procedureData.textureRecrod[key];
37
+ if (typeof value == "string" && isArgString(value)) {
38
+ procedureData.textureRecrod[key] =
39
+ data.voxelInputs[cleanArgString(value)];
40
+ }
41
+ }
42
+ }
43
+ texture = processTexture(procedureData);
44
+ }
45
+ }
46
+ inputs[ArgIndexes.Texture] = texture;
47
+ let rotation = 0;
48
+ if (isArgString(tri.rotation) && typeof tri.rotation == "string") {
49
+ const geoInput = cleanArgString(tri.rotation);
50
+ const modelInput = data.modelInputs[geoInput];
51
+ if (isArgString(modelInput) && typeof modelInput == "string") {
52
+ rotation = data.voxelInputs[cleanArgString(modelInput)];
53
+ }
54
+ else {
55
+ rotation = modelInput;
56
+ }
57
+ }
58
+ else {
59
+ rotation = tri.rotation;
60
+ }
61
+ inputs[ArgIndexes.Rotation] = rotation;
62
+ let doubleSided = false;
63
+ if (isArgString(tri.doubleSided) && typeof tri.doubleSided == "string") {
64
+ const geoInput = cleanArgString(tri.doubleSided);
65
+ const modelInput = data.modelInputs[geoInput];
66
+ if (isArgString(modelInput) && typeof modelInput == "string") {
67
+ doubleSided = data.voxelInputs[cleanArgString(modelInput)];
68
+ }
69
+ else {
70
+ doubleSided = modelInput;
71
+ }
72
+ }
73
+ else {
74
+ doubleSided = tri.doubleSided;
75
+ }
76
+ inputs[ArgIndexes.DoubleSided] = doubleSided;
77
+ let uvs = inputs[ArgIndexes.UVs];
78
+ if (isArgString(tri.uv) && typeof tri.uv == "string") {
79
+ const geoInput = cleanArgString(tri.uv);
80
+ const modelInput = data.modelInputs[geoInput];
81
+ if (isArgString(modelInput) && typeof modelInput == "string") {
82
+ uvs = data.voxelInputs[cleanArgString(modelInput)];
83
+ }
84
+ else {
85
+ if (!modelInput) {
86
+ const input = geometry.arguments[geoInput];
87
+ if (input.type == "uv") {
88
+ uvs = input.default;
89
+ }
90
+ }
91
+ else {
92
+ uvs = modelInput;
93
+ }
94
+ }
95
+ }
96
+ inputs[ArgIndexes.UVs] = uvs;
97
+ /**@TODO updae the tri uvs if it is rotated or transformed */
98
+ if (inputs[ArgIndexes.Rotation]) {
99
+ }
100
+ args.push(inputs);
101
+ }
@@ -0,0 +1,4 @@
1
+ import { VoxelGeometryLinkData, VoxelModelData } from "../../..//Models/VoxelModel.types";
2
+ import { VoxelModelInputs } from "../GeometryLUT.types";
3
+ import { VoxelGeometryData } from "../../../Geometry/VoxelGeometry.types";
4
+ export declare function BuildInputs(link: VoxelGeometryLinkData, data: VoxelModelInputs, model: VoxelModelData, geometry: VoxelGeometryData): any[];
@@ -0,0 +1,22 @@
1
+ import { BuildQuadInputs } from "./BuildQuadInputs";
2
+ import { BuildBoxInputs } from "./BuildBoxInputs";
3
+ import { BuildTriangleInputs } from "./BuildTriangleInputs";
4
+ import { BuildCustomInputs } from "./BuildCustomInputs";
5
+ export function BuildInputs(link, data, model, geometry) {
6
+ const args = [];
7
+ for (const node of geometry.nodes) {
8
+ if (node.type == "box") {
9
+ BuildBoxInputs(args, link, data, node, model, geometry);
10
+ }
11
+ if (node.type == "quad") {
12
+ BuildQuadInputs(args, link, data, node, model, geometry);
13
+ }
14
+ if (node.type == "triangle") {
15
+ BuildTriangleInputs(args, link, data, node, model, geometry);
16
+ }
17
+ if (node.type == "custom") {
18
+ BuildCustomInputs(args, link, data, node, model, geometry);
19
+ }
20
+ }
21
+ return args;
22
+ }
@@ -0,0 +1 @@
1
+ export declare function BuildRules(): void;
@@ -1,13 +1,13 @@
1
- import { VoxelRelativeCubeIndex } from "../../Indexing/VoxelRelativeCubeIndex";
1
+ import { VoxelRelativeCubeIndex } from "../../../Geometry/VoxelRelativeCubeIndex";
2
2
  import { Vec3ArrayLike } from "@amodx/math";
3
- import { VoxelModelRuleBuilderRegister } from "../VoxelModelRuleBuilderRegister";
4
- import { OcclusionFaceRegister } from "../Classes/OcclusionFaceRegister";
5
- import { AOOcclusionFaceIndex } from "../../Indexing/AOOcclusionFaceIndex";
6
- import { CulledOcclusionFaceIndex } from "../../Indexing/CulledOcclusionFaceIndex";
7
- import { OcclusionQuadFace } from "../Classes/OcclusionQuadFace";
8
- import { OcclusionTriangleFace } from "../Classes/OcclusionTriangleFace";
3
+ import { OcclusionFaceRegister } from "./OcclusionFaceRegister";
4
+ import { AOOcclusionFaceIndex } from "../../../Geometry/AOOcclusionFaceIndex";
5
+ import { CulledOcclusionFaceIndex } from "../../../Geometry/CulledOcclusionFaceIndex";
6
+ import { OcclusionQuadFace } from "./OcclusionQuadFace";
7
+ import { OcclusionTriangleFace } from "./OcclusionTriangleFace";
9
8
  import { EngineSettings } from "../../../../Settings/EngineSettings";
10
9
  import { EngineStats } from "../../../../Stats/EngineStats";
10
+ import { GeometryLUT } from "../../../Data/GeometryLUT";
11
11
  class OcculsionBox {
12
12
  p1;
13
13
  p2;
@@ -115,12 +115,13 @@ function doesBoxIntersectFace(quad) {
115
115
  }
116
116
  return true;
117
117
  }
118
- export function BuildRules(geoPalette) {
118
+ export function BuildRules() {
119
119
  const faceCullMap = [];
120
120
  const vertexHitMap = [];
121
121
  const cubeIndexSize = VoxelRelativeCubeIndex.flatIndex.size;
122
122
  const totalFaces = OcclusionFaceRegister.faces.size;
123
- const totalAOReusltsSize = totalFaces * 4 * cubeIndexSize * geoPalette.size;
123
+ const geometryPaletteSize = GeometryLUT.compiledGeometry.length;
124
+ const totalAOReusltsSize = totalFaces * 4 * cubeIndexSize * geometryPaletteSize;
124
125
  const aoIndexBufferSize = Math.ceil(totalAOReusltsSize / 8);
125
126
  const aoIndex = new AOOcclusionFaceIndex({
126
127
  buffer: EngineSettings.settings.memoryAndCPU.useSharedMemory
@@ -128,7 +129,7 @@ export function BuildRules(geoPalette) {
128
129
  : new ArrayBuffer(aoIndexBufferSize),
129
130
  totalFaces,
130
131
  });
131
- const cullIndexResultsSize = totalFaces * cubeIndexSize * geoPalette.size;
132
+ const cullIndexResultsSize = totalFaces * cubeIndexSize * geometryPaletteSize;
132
133
  const cullIndexBufferSize = Math.ceil(cullIndexResultsSize / 8);
133
134
  const cullIndex = new CulledOcclusionFaceIndex({
134
135
  buffer: EngineSettings.settings.memoryAndCPU.useSharedMemory
@@ -141,7 +142,8 @@ export function BuildRules(geoPalette) {
141
142
  const currentTriangleFace = new OcclusionTriangleFace();
142
143
  const otherQuadFace = new OcclusionQuadFace();
143
144
  const otherTriangleFace = new OcclusionTriangleFace();
144
- EngineStats.geomtry.faces = faces.length;
145
+ EngineStats.geometry.faces = faces.length;
146
+ const compiledGeometry = GeometryLUT.compiledGeometry;
145
147
  for (let faceIndex = 0; faceIndex < faces.length; faceIndex++) {
146
148
  const faceData = OcclusionFaceRegister.faceIndex[faceIndex];
147
149
  let currentFace;
@@ -157,11 +159,11 @@ export function BuildRules(geoPalette) {
157
159
  vertexHitMap[faceIndex] = [];
158
160
  const facePoints = currentFace.points;
159
161
  const faceNormal = currentFace.normal;
160
- for (let gometryId = 0; gometryId < geoPalette.size; gometryId++) {
161
- let geomtry = VoxelModelRuleBuilderRegister.geometry.get(geoPalette._palette[gometryId]);
162
- if (geomtry.data.ogData.doNotBuildRules !== undefined)
162
+ for (let geometryId = 0; geometryId < compiledGeometry.length; geometryId++) {
163
+ const compiled = compiledGeometry[geometryId];
164
+ if (GeometryLUT.rulelessIndex[geometryId])
163
165
  continue;
164
- for (const otherGeo of geomtry.compiled) {
166
+ for (const otherGeo of compiled) {
165
167
  if (otherGeo.type == "custom" || otherGeo.trueFaceIndex === undefined)
166
168
  continue;
167
169
  const otherFaceData = OcclusionFaceRegister.faceIndex[otherGeo.trueFaceIndex];
@@ -185,7 +187,7 @@ export function BuildRules(geoPalette) {
185
187
  const directionIndex = VoxelRelativeCubeIndex.getIndex(x, y, z);
186
188
  otherQuadFace.setOffset(x, y, z);
187
189
  if (otherFace.doesCoverFace(currentFace)) {
188
- cullIndex.setValue(gometryId, directionIndex, faceIndex, 1);
190
+ cullIndex.setValue(geometryId, directionIndex, faceIndex, 1);
189
191
  if (!faceCullMap[faceIndex].includes(directionIndex)) {
190
192
  faceCullMap[faceIndex].push(directionIndex);
191
193
  }
@@ -196,7 +198,7 @@ export function BuildRules(geoPalette) {
196
198
  updateOcculsionBox(facePoints[v], faceNormal);
197
199
  vertexHitMap[faceIndex][v] ??= [];
198
200
  if (doesBoxIntersectFace(otherFace)) {
199
- aoIndex.setValue(gometryId, directionIndex, faceIndex, v, 1);
201
+ aoIndex.setValue(geometryId, directionIndex, faceIndex, v, 1);
200
202
  if (!vertexHitMap[faceIndex][v].includes(directionIndex)) {
201
203
  vertexHitMap[faceIndex][v].push(directionIndex);
202
204
  }
@@ -208,10 +210,8 @@ export function BuildRules(geoPalette) {
208
210
  }
209
211
  }
210
212
  }
211
- return {
212
- aoIndex: aoIndex.toJSON(),
213
- faceCullIndex: cullIndex.toJSON(),
214
- faceCullMap,
215
- vertexHitMap,
216
- };
213
+ GeometryLUT.aoIndex = aoIndex;
214
+ GeometryLUT.faceCullIndex = cullIndex;
215
+ GeometryLUT.faceCullMap = faceCullMap;
216
+ GeometryLUT.aoVertexHitMap = vertexHitMap;
217
217
  }
@@ -1,7 +1,7 @@
1
1
  import { Vec3Array } from "@amodx/math";
2
- import { Quad } from "../../../../Mesher/Geomtry/Primitives/Quad";
2
+ import { Quad } from "../../../../Mesher/Geometry/Primitives/Quad";
3
3
  import { StringPalette } from "../../../../Util/StringPalette";
4
- import { Triangle } from "../../../../Mesher/Geomtry/Primitives/Triangle";
4
+ import { Triangle } from "../../../../Mesher/Geometry/Primitives/Triangle";
5
5
  export declare class OcclusionFaceRegister {
6
6
  static faces: StringPalette;
7
7
  static faceIndex: ([
@@ -1,5 +1,5 @@
1
1
  import { Vec3ArrayLike } from "@amodx/math";
2
- import { Quad } from "../../../../Mesher/Geomtry/Primitives/Quad";
2
+ import { Quad } from "../../../../Mesher/Geometry/Primitives/Quad";
3
3
  import { IOcclusionFace } from "./OcclusionFace";
4
4
  export class OcclusionQuadFace extends IOcclusionFace {
5
5
  normals;
@@ -1,5 +1,5 @@
1
1
  import { Vec3ArrayLike } from "@amodx/math";
2
- import { Triangle } from "../../../../Mesher/Geomtry/Primitives/Triangle";
2
+ import { Triangle } from "../../../../Mesher/Geometry/Primitives/Triangle";
3
3
  import { IOcclusionFace } from "./OcclusionFace";
4
4
  export class OcclusionTriangleFace extends IOcclusionFace {
5
5
  normals;
@@ -6,7 +6,7 @@ export declare class AOOcclusionFaceIndex {
6
6
  view: Uint8Array;
7
7
  readonly totalFaces: number;
8
8
  constructor(data: AOOcclusionFaceIndexData);
9
- getValue(geomtryId: number, directionIndex: number, faceIndex: number, vertexIndex: number): number;
10
- setValue(geomtryId: number, directionIndex: number, faceIndex: number, vertexIndex: number, value?: number): void;
9
+ getValue(geometryId: number, directionIndex: number, faceIndex: number, vertexIndex: number): number;
10
+ setValue(geometryId: number, directionIndex: number, faceIndex: number, vertexIndex: number, value?: number): void;
11
11
  toJSON(): AOOcclusionFaceIndexData;
12
12
  }
@@ -0,0 +1,28 @@
1
+ import { getBitArrayIndex, setBitArrayIndex, } from "../../Util/Binary/BinaryArrays";
2
+ import { VoxelRelativeCubeIndex } from "./VoxelRelativeCubeIndex";
3
+ const flatIndexSize = VoxelRelativeCubeIndex.flatIndex.size;
4
+ function getIndex(geometryId, directionIndex, faceIndex, totalFaces, vertexIndex) {
5
+ const start = totalFaces * 4 * flatIndexSize * geometryId +
6
+ directionIndex * (totalFaces * 4);
7
+ return start + faceIndex * 4 + vertexIndex;
8
+ }
9
+ export class AOOcclusionFaceIndex {
10
+ view;
11
+ totalFaces;
12
+ constructor(data) {
13
+ this.view = new Uint8Array(data.buffer);
14
+ this.totalFaces = data.totalFaces;
15
+ }
16
+ getValue(geometryId, directionIndex, faceIndex, vertexIndex) {
17
+ return getBitArrayIndex(this.view, getIndex(geometryId, directionIndex, faceIndex, this.totalFaces, vertexIndex));
18
+ }
19
+ setValue(geometryId, directionIndex, faceIndex, vertexIndex, value = 0) {
20
+ return setBitArrayIndex(this.view, getIndex(geometryId, directionIndex, faceIndex, this.totalFaces, vertexIndex), value);
21
+ }
22
+ toJSON() {
23
+ return {
24
+ buffer: this.view.buffer,
25
+ totalFaces: this.totalFaces,
26
+ };
27
+ }
28
+ }
@@ -6,7 +6,7 @@ export declare class CulledOcclusionFaceIndex {
6
6
  view: Uint8Array;
7
7
  readonly totalFaces: number;
8
8
  constructor(data: CulledOcclusionFaceIndexData);
9
- getValue(geomtryId: number, directionIndex: number, faceIndex: number): number;
10
- setValue(geomtryId: number, directionIndex: number, faceIndex: number, value?: number): void;
9
+ getValue(geometryId: number, directionIndex: number, faceIndex: number): number;
10
+ setValue(geometryId: number, directionIndex: number, faceIndex: number, value?: number): void;
11
11
  toJSON(): CulledOcclusionFaceIndexData;
12
12
  }
@@ -0,0 +1,27 @@
1
+ import { getBitArrayIndex, setBitArrayIndex } from "../../Util/Binary/BinaryArrays";
2
+ import { VoxelRelativeCubeIndex } from "./VoxelRelativeCubeIndex";
3
+ const flatIndexSize = VoxelRelativeCubeIndex.flatIndex.size;
4
+ function getIndex(geometryId, directionIndex, faceIndex, totalFaces) {
5
+ const start = totalFaces * flatIndexSize * geometryId + directionIndex * totalFaces;
6
+ return start + faceIndex;
7
+ }
8
+ export class CulledOcclusionFaceIndex {
9
+ view;
10
+ totalFaces;
11
+ constructor(data) {
12
+ this.view = new Uint8Array(data.buffer);
13
+ this.totalFaces = data.totalFaces;
14
+ }
15
+ getValue(geometryId, directionIndex, faceIndex) {
16
+ return getBitArrayIndex(this.view, getIndex(geometryId, directionIndex, faceIndex, this.totalFaces));
17
+ }
18
+ setValue(geometryId, directionIndex, faceIndex, value = 0) {
19
+ return setBitArrayIndex(this.view, getIndex(geometryId, directionIndex, faceIndex, this.totalFaces), value);
20
+ }
21
+ toJSON() {
22
+ return {
23
+ buffer: this.view.buffer,
24
+ totalFaces: this.totalFaces,
25
+ };
26
+ }
27
+ }
@@ -0,0 +1,105 @@
1
+ import { Vec2Array, Vec3Array } from "@amodx/math";
2
+ import { VoxelFaceNames } from "../../Math";
3
+ /**Define a custom geometry node */
4
+ export interface VoxelCustomGeometryNode {
5
+ type: "custom";
6
+ id: string;
7
+ inputs: Record<string, any>;
8
+ }
9
+ export interface VoxelBoxGeometryNode {
10
+ type: "box";
11
+ /**Divisor used for transform of this specific node.*/
12
+ divisor?: Vec3Array;
13
+ points: [start: Vec3Array, end: Vec3Array];
14
+ rotation?: Vec3Array;
15
+ faces: Record<VoxelFaceNames, BaseVoxelQuadData>;
16
+ }
17
+ export interface BaseVoxelQuadData {
18
+ doubleSided?: boolean | string;
19
+ enabled?: boolean;
20
+ /**Id for an input arg for the texture */
21
+ texture: string;
22
+ /**UV for the face or id for an input arg. */
23
+ uv: [x1: number, y1: number, x2: number, y2: number] | string;
24
+ /**UV rotation or id for an input arg */
25
+ rotation?: number | string;
26
+ }
27
+ export interface VoxelQuadGeometryNode extends BaseVoxelQuadData {
28
+ type: "quad";
29
+ /**Divisor used for transform of this specific node.*/
30
+ divisor?: Vec3Array;
31
+ points: [p1: Vec3Array, p2: Vec3Array, p3: Vec3Array, p4: Vec3Array];
32
+ }
33
+ export interface BaseVoxelTriangleData {
34
+ doubleSided?: boolean;
35
+ /**Id for the input arg for the texture */
36
+ texture: string;
37
+ /**UV for the triangle or id for the input arg. */
38
+ uv: [v1: Vec2Array, v2: Vec2Array, v3: Vec2Array] | string;
39
+ /**UV rotation or id for an input arg */
40
+ rotation?: number | string;
41
+ }
42
+ export interface VoxelTriangleGeometryNode extends BaseVoxelTriangleData {
43
+ type: "triangle";
44
+ /**Divisor used for transform of this specific node.*/
45
+ divisor?: Vec3Array;
46
+ points: [p1: Vec3Array, p2: Vec3Array, p3: Vec3Array];
47
+ }
48
+ export interface VoxelGeometryTextureArgument {
49
+ type: "texture";
50
+ }
51
+ /**Creates a way to set multiple arguments to the same thing. What ever value is passed in will be passed to the arguments. */
52
+ export interface VoxelGeometryArgumentAliasList {
53
+ type: "arg-list";
54
+ arguments: string[];
55
+ }
56
+ export interface VoxelGeometryBooleanArgument {
57
+ type: "boolean";
58
+ default: boolean;
59
+ }
60
+ export interface VoxelGeometryIntArgument {
61
+ type: "int";
62
+ default: number;
63
+ }
64
+ export interface VoxelGeometryFloatArgument {
65
+ type: "float";
66
+ default: number;
67
+ }
68
+ export interface VoxelGeometryBoxUVArgument {
69
+ type: "box-uv";
70
+ default: [x1: number, y1: number, x2: number, y2: number];
71
+ }
72
+ export interface VoxelGeometryUVArgument {
73
+ type: "uv";
74
+ default: Vec2Array[];
75
+ }
76
+ export interface VoxelGeometryVector3Argument {
77
+ type: "vector3";
78
+ default?: Vec3Array;
79
+ min?: Vec3Array;
80
+ max?: Vec3Array;
81
+ }
82
+ export type VoxelGeometryNodes = VoxelCustomGeometryNode | VoxelBoxGeometryNode | VoxelTriangleGeometryNode | VoxelQuadGeometryNode;
83
+ export type CullingProcedureData = {
84
+ type: "default";
85
+ } | {
86
+ type: "none";
87
+ } | {
88
+ type: "transparent";
89
+ };
90
+ export interface VoxelGeometryData {
91
+ id: string;
92
+ nodes: VoxelGeometryNodes[];
93
+ divisor?: Vec3Array;
94
+ /**
95
+ * If this is set the voxel geometry will not be included in the
96
+ * geometry rules and will be fall back to custom inputs.
97
+ * Ideal for advanced or non cubic models.
98
+ * */
99
+ doNotBuildRules?: true;
100
+ /**
101
+ * Define the culling procedure for faces
102
+ */
103
+ cullingProcedure?: CullingProcedureData;
104
+ arguments: Record<string, VoxelGeometryTextureArgument | VoxelGeometryBoxUVArgument | VoxelGeometryUVArgument | VoxelGeometryVector3Argument | VoxelGeometryIntArgument | VoxelGeometryBooleanArgument | VoxelGeometryFloatArgument | VoxelGeometryArgumentAliasList>;
105
+ }
@@ -0,0 +1 @@
1
+ export {};