@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.
- package/Builder/Tools/Wrench/WrenchTool.js +26 -21
- package/Builder/VoxelBuildSpace.d.ts +2 -2
- package/Builder/VoxelBuildSpace.js +4 -4
- package/Builder/World/InitTasks.js +1 -1
- package/Cache/Cache.types.d.ts +0 -4
- package/Cache/CacheManager.d.ts +1 -2
- package/Cache/CacheManager.js +0 -2
- package/Contexts/Base/Main/InitDataGenerator.js +10 -2
- package/Contexts/Base/Remote/DataSync.types.d.ts +10 -4
- package/Contexts/Base/Remote/InitDataSync.js +10 -20
- package/Init/StartMesher.js +2 -1
- package/Init/StartRenderer.js +2 -1
- package/Mesher/{Geomtry → Geometry}/Geometry.types.d.ts +1 -0
- package/Mesher/InitMesher.d.ts +1 -2
- package/Mesher/InitMesher.js +7 -14
- package/Mesher/Items/{Geomtry → Geometry}/ItemGeometryBuilder.d.ts +2 -2
- package/Mesher/Items/{Geomtry → Geometry}/ItemGeometryBuilder.js +1 -1
- package/Mesher/Items/MeshTexture.d.ts +2 -1
- package/Mesher/Items/MeshTexture.js +7 -6
- package/Mesher/Items/MeshTextureO.js +1 -1
- package/Mesher/Items/Models/ItemModelBuilder.d.ts +1 -1
- package/Mesher/Items/Models/ItemModelBuilder.js +2 -2
- package/Mesher/Voxels/Base/CompactTemplateMesh.js +1 -1
- package/Mesher/Voxels/Base/CompactVoxelSectionMesh.js +2 -2
- package/Mesher/Voxels/Base/MeshSectionBase.js +1 -3
- package/Mesher/Voxels/{Geomtry → Geometry}/CompactedSectionVoxelMesh.js +3 -3
- package/Mesher/Voxels/{Geomtry → Geometry}/VoxelGeometryBuilder.d.ts +2 -2
- package/Mesher/Voxels/{Geomtry → Geometry}/VoxelGeometryBuilder.js +1 -1
- package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHBuilder.js +1 -1
- package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHStructCursor.d.ts +1 -1
- package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHStructCursor.js +1 -1
- package/Mesher/Voxels/MeshTemplate.js +0 -3
- package/Mesher/Voxels/MeshVoxel.js +0 -2
- package/Mesher/Voxels/Models/Common/Calc/CalcConstants.d.ts +1 -1
- package/Mesher/Voxels/Models/Common/Calc/CalcConstants.js +2 -2
- package/Mesher/Voxels/Models/Common/Calc/FaceDataCalc.js +4 -1
- package/Mesher/Voxels/Models/Common/Faces/CullRulledFace.js +29 -18
- package/Mesher/Voxels/Models/Common/Faces/ShadeRulelessFace.d.ts +1 -1
- package/Mesher/Voxels/Models/Common/Faces/ShadeRulledFace.d.ts +1 -1
- package/Mesher/Voxels/Models/Common/Faces/ShadeRulledFace.js +31 -21
- package/Mesher/Voxels/Models/Common/GetTexture.d.ts +4 -4
- package/Mesher/Voxels/Models/Nodes/Custom/Liquid/FlowGradient.d.ts +1 -1
- package/Mesher/Voxels/Models/Nodes/Custom/Liquid/FlowGradient.js +1 -1
- package/Mesher/Voxels/Models/Nodes/Custom/Liquid/{LiquidGeomtryNode.d.ts → LiquidGeometryNode.d.ts} +2 -2
- package/Mesher/Voxels/Models/Nodes/Custom/Liquid/{LiquidGeomtryNode.js → LiquidGeometryNode.js} +5 -5
- package/Mesher/Voxels/Models/Nodes/Default/QuadVoxelGeometryNode.d.ts +3 -3
- package/Mesher/Voxels/Models/Nodes/Default/QuadVoxelGeometryNode.js +2 -2
- package/Mesher/Voxels/Models/Nodes/Default/TriangleVoxelGeometryNode.d.ts +3 -3
- package/Mesher/Voxels/Models/Nodes/Default/TriangleVoxelGeometryNode.js +2 -2
- package/Mesher/Voxels/Models/Nodes/GeometryNode.d.ts +3 -3
- package/Mesher/Voxels/Models/Nodes/GeometryNode.js +3 -3
- package/Mesher/Voxels/Models/Nodes/Types/GeometryNode.types.d.ts +7 -0
- package/Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes.d.ts +3 -3
- package/Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes.d.ts +2 -2
- package/Mesher/Voxels/Models/Nodes/VoxelGeometryConstructor.d.ts +2 -3
- package/Mesher/Voxels/Models/Nodes/VoxelGeometryConstructor.js +6 -5
- package/Mesher/Voxels/Models/Procedures/Default/ConsistentRotationTextureProcedure.d.ts +4 -4
- package/Mesher/Voxels/Models/Procedures/Default/OutlinedTextureProcedure.d.ts +4 -4
- package/Mesher/Voxels/Models/Procedures/Default/PillarTextureProcedure.d.ts +4 -4
- package/Mesher/Voxels/Models/Procedures/Default/PillarTextureProcedure.js +20 -6
- package/Mesher/Voxels/Models/Procedures/TextureProcedure.d.ts +2 -2
- package/Mesher/Voxels/Models/VoxelConstructor.d.ts +1 -16
- package/Mesher/Voxels/Models/VoxelConstructor.js +50 -56
- package/Mesher/Voxels/Models/VoxelGeometryBuilderCacheSpace.d.ts +3 -6
- package/Mesher/Voxels/Models/VoxelGeometryBuilderCacheSpace.js +40 -44
- package/Mesher/Voxels/Models/VoxelModelBuilder.d.ts +4 -4
- package/Mesher/Voxels/Models/VoxelModelBuilder.js +4 -4
- package/Mesher/Voxels/Models/VoxelModelConstructorRegister.d.ts +1 -14
- package/Mesher/Voxels/Models/VoxelModelConstructorRegister.js +7 -21
- package/Mesher/Voxels/Models/VoxelModelEffect.d.ts +1 -7
- package/Mesher/Voxels/Models/VoxelModelEffect.js +23 -26
- package/Renderer/Classes/DVESectionMeshes.d.ts +1 -1
- package/Renderer/MeshManager.js +1 -1
- package/Settings/EngineSettings.types.d.ts +2 -1
- package/Settings/EngineSettings.types.js +1 -0
- package/Stats/EngineStats.d.ts +5 -3
- package/Stats/EngineStats.js +8 -6
- package/Templates/Archive/ArchivedVoxelTemplate.d.ts +1 -1
- package/Templates/Archive/ArchivedVoxelTemplate.js +5 -5
- package/Templates/Archive/Functions/CreateArchivedTemplate.d.ts +1 -1
- package/Templates/Archive/Functions/CreateArchivedTemplate.js +2 -2
- package/Templates/Cursor/TemplateCursor.d.ts +1 -1
- package/Templates/Cursor/TemplateCursor.js +1 -1
- package/Templates/Full/FullVoxelTemplate.d.ts +1 -1
- package/Templates/Full/FullVoxelTemplate.js +1 -1
- package/Templates/Full/Functions/CreateFullTemplate.d.ts +1 -1
- package/Templates/Selection/VoxelBFSSelection.d.ts +1 -1
- package/Templates/Selection/VoxelBFSSelection.js +1 -1
- package/Templates/Selection/VoxelBoundsSelection.d.ts +1 -1
- package/Templates/Selection/VoxelBoundsSelection.js +1 -1
- package/Templates/Selection/VoxelPointSelection.d.ts +1 -1
- package/Templates/Selection/VoxelPointSelection.js +1 -1
- package/Templates/Selection/VoxelSelection.d.ts +1 -1
- package/Templates/Selection/VoxelSurfaceSelection.d.ts +1 -1
- package/Templates/Selection/VoxelSurfaceSelection.js +1 -1
- package/Templates/Selection/VoxelTemplateSelection.d.ts +1 -1
- package/Templates/Selection/VoxelTemplateSelection.js +1 -1
- package/Templates/Shapes/Selections/BoxVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/BoxVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/ConeVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/ConeVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/CylinderVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/CylinderVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/EllipsoidVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/EllipsoidVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/OctahedronVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/OctahedronVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/PyramidVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/PyramidVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/SphereVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/SphereVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/Selections/TorusVoxelShapeSelection.d.ts +1 -1
- package/Templates/Shapes/Selections/TorusVoxelShapeSelection.js +1 -1
- package/Templates/Shapes/VoxelShapeTemplate.d.ts +1 -1
- package/Templates/Shapes/VoxelShapeTemplate.js +1 -1
- package/Templates/VoxelTemplates.types.d.ts +1 -1
- package/Textures/Functions/BuildTextureData.js +4 -52
- package/Tools/Brush/Brush.js +5 -5
- package/Util/StringPalette.js +2 -0
- package/Voxels/Archive/VoxelPaletteArchiveReader.js +7 -6
- package/Voxels/Archive/VoxelPaletteArechive.js +8 -8
- package/Voxels/Cursor/DataCursor.interface.d.ts +1 -1
- package/Voxels/Cursor/VoxelCursor.interface.d.ts +0 -2
- package/Voxels/Cursor/VoxelCursor.interface.js +14 -16
- package/Voxels/Cursor/VoxelCursor.js +5 -5
- package/Voxels/Data/GeometryLUT.d.ts +32 -0
- package/Voxels/Data/GeometryLUT.js +50 -0
- package/Voxels/Data/VoxelLUT.d.ts +83 -0
- package/Voxels/Data/VoxelLUT.js +119 -0
- package/Voxels/Data/VoxelTagsRegister.d.ts +2 -2
- package/Voxels/Data/VoxelTagsRegister.js +2 -2
- package/Voxels/Functions/BuildLUTs.d.ts +6 -0
- package/Voxels/Functions/BuildLUTs.js +361 -0
- package/Voxels/Functions/BuildTagData.d.ts +4 -2
- package/Voxels/Functions/BuildTagData.js +15 -32
- package/Voxels/Functions/Geometry/BuildGeometryLUT.d.ts +11 -0
- package/Voxels/Functions/Geometry/BuildGeometryLUT.js +395 -0
- package/Voxels/{Models/Rules/Functions/Compile/Nodes → Functions/Geometry}/CalcFunctions.d.ts +3 -3
- package/Voxels/{Models/Rules/Functions/Compile/Nodes → Functions/Geometry}/CalcFunctions.js +2 -2
- package/Voxels/Functions/Geometry/Compile/BuildCompiled.d.ts +4 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiled.js +25 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledBox.d.ts +4 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledBox.js +13 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledQuad.d.ts +4 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledQuad.js +41 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledTri.d.ts +4 -0
- package/Voxels/Functions/Geometry/Compile/BuildCompiledTri.js +44 -0
- package/Voxels/Functions/Geometry/GeometryLUT.types.d.ts +7 -0
- package/Voxels/Functions/Geometry/Inputs/BaseFunctions.d.ts +4 -0
- package/Voxels/Functions/Geometry/Inputs/BaseFunctions.js +28 -0
- package/Voxels/Functions/Geometry/Inputs/BuildBoxInputs.d.ts +5 -0
- package/Voxels/Functions/Geometry/Inputs/BuildBoxInputs.js +8 -0
- package/Voxels/Functions/Geometry/Inputs/BuildCustomInputs.d.ts +5 -0
- package/Voxels/Functions/Geometry/Inputs/BuildCustomInputs.js +41 -0
- package/Voxels/Functions/Geometry/Inputs/BuildQuadInputs.d.ts +5 -0
- package/Voxels/Functions/Geometry/Inputs/BuildQuadInputs.js +103 -0
- package/Voxels/Functions/Geometry/Inputs/BuildTriangleInputs.d.ts +5 -0
- package/Voxels/Functions/Geometry/Inputs/BuildTriangleInputs.js +101 -0
- package/Voxels/Functions/Geometry/Inputs/BuldInputs.d.ts +4 -0
- package/Voxels/Functions/Geometry/Inputs/BuldInputs.js +22 -0
- package/Voxels/Functions/Geometry/Rules/BuildRules.d.ts +1 -0
- package/Voxels/{Models/Rules/Functions → Functions/Geometry/Rules}/BuildRules.js +23 -23
- package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFaceRegister.d.ts +2 -2
- package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionQuadFace.js +1 -1
- package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionTriangleFace.js +1 -1
- package/Voxels/{Models/Indexing → Geometry}/AOOcclusionFaceIndex.d.ts +2 -2
- package/Voxels/Geometry/AOOcclusionFaceIndex.js +28 -0
- package/Voxels/{Models/Indexing → Geometry}/CulledOcclusionFaceIndex.d.ts +2 -2
- package/Voxels/Geometry/CulledOcclusionFaceIndex.js +27 -0
- package/Voxels/Geometry/VoxelGeometry.types.d.ts +105 -0
- package/Voxels/Geometry/VoxelGeometry.types.js +1 -0
- package/Voxels/Indexes/VoxelIndex.js +15 -21
- package/Voxels/InitVoxelData.d.ts +4 -3
- package/Voxels/InitVoxelData.js +53 -110
- package/Voxels/Interaction/Functions/PickVoxel.js +1 -1
- package/Voxels/Logic/Classes/Types/VoxelLogicStateType.js +2 -2
- package/Voxels/Logic/Classes/VoxelLogic.d.ts +2 -2
- package/Voxels/Logic/Classes/VoxelLogic.js +2 -2
- package/Voxels/Logic/VoxelLogicRegister.js +2 -2
- package/Voxels/Models/Defaults/CubeVoxelGeometry.d.ts +1 -1
- package/Voxels/Models/Defaults/CubeVoxelModels.d.ts +1 -0
- package/Voxels/Models/Defaults/CubeVoxelModels.js +45 -0
- package/Voxels/Models/Defaults/Examples.d.ts +2 -1
- package/Voxels/Models/Defaults/Examples.js +28 -28
- package/Voxels/Models/Defaults/FarmVoxelModels.d.ts +3 -2
- package/Voxels/Models/Defaults/FarmVoxelModels.js +3 -3
- package/Voxels/Models/Defaults/LiquidVoxelModel.d.ts +2 -1
- package/Voxels/Models/Defaults/PanelVoxelGeometry.d.ts +1 -1
- package/Voxels/Models/VoxelModel.types.d.ts +2 -109
- package/Voxels/State/{Schema → Reltional}/Conditions/SameVoxelConditions.d.ts +2 -2
- package/Voxels/State/Reltional/Conditions/SameVoxelConditions.js +19 -0
- package/Voxels/State/Reltional/Conditions/ShapeStateSchemaRelationsCondition.d.ts +6 -0
- package/Voxels/State/Reltional/Conditions/ShapeStateSchemaRelationsCondition.js +6 -0
- package/Voxels/State/Reltional/ReltionalStateBuilder.d.ts +18 -0
- package/Voxels/State/Reltional/ReltionalStateBuilder.js +42 -0
- package/Voxels/State/Schema/BinarySchema.d.ts +1 -0
- package/Voxels/State/Schema/BinarySchema.js +3 -0
- package/Voxels/State/State.types.d.ts +0 -25
- package/Voxels/State/State.types.js +1 -22
- package/Voxels/State/VoxelSchemas.d.ts +22 -0
- package/Voxels/State/VoxelSchemas.js +60 -0
- package/Voxels/Types/PaintVoxelData.js +55 -45
- package/Voxels/Types/VoxelModelCompiledData.types.d.ts +4 -22
- package/World/Archive/Classes/ImportedSection.js +8 -8
- package/World/Archive/Functions/Sector/ArchiveSector.js +3 -3
- package/World/Cursor/SectionCursor.d.ts +1 -1
- package/World/Cursor/SectionCursor.js +1 -1
- package/World/Cursor/SectorCursor.d.ts +1 -1
- package/World/Cursor/SectorCursor.js +1 -1
- package/World/Cursor/WorldCursor.d.ts +1 -1
- package/World/Cursor/WorldCursor.js +1 -1
- package/World/Lock/Function/LockSectors.d.ts +1 -1
- package/World/Lock/Function/UnLockSectors.d.ts +1 -1
- package/World/SnapShot/SectionSnapShotCursor.d.ts +1 -1
- package/World/SnapShot/SectionSnapShotCursor.js +1 -1
- package/World/SnapShot/SnapShots.d.ts +1 -1
- package/World/SnapShot/SnapShots.js +1 -1
- package/WorldSimulation/Dimensions/SimulationSector.d.ts +1 -1
- package/WorldSimulation/Dimensions/SimulationSector.js +2 -2
- package/WorldSimulation/Tools/SimulationBrush.js +9 -9
- package/WorldSimulation/Voxels/Behaviors/Types/CropVoxelBehavior.js +4 -2
- package/WorldSimulation/Voxels/Behaviors/Types/FarmlandVoxelBehavior.js +5 -2
- package/WorldSimulation/WorldSimulation.d.ts +1 -0
- package/WorldSimulation/WorldSimulation.js +2 -1
- package/package.json +1 -1
- package/Mesher/Voxels/Models/Nodes/Types/GeomtryNode.types.d.ts +0 -7
- package/Voxels/Data/VoxelPalettesRegister.d.ts +0 -18
- package/Voxels/Data/VoxelPalettesRegister.js +0 -24
- package/Voxels/Functions/BuildPaletteData.d.ts +0 -6
- package/Voxels/Functions/BuildPaletteData.js +0 -87
- package/Voxels/Functions/BuildStateData.d.ts +0 -23
- package/Voxels/Functions/BuildStateData.js +0 -327
- package/Voxels/Models/CompiledVoxelModel.types.d.ts +0 -46
- package/Voxels/Models/Indexing/AOOcclusionFaceIndex.js +0 -28
- package/Voxels/Models/Indexing/CulledOcclusionFaceIndex.js +0 -27
- package/Voxels/Models/Rules/Classes/GeomtryInput.d.ts +0 -16
- package/Voxels/Models/Rules/Classes/GeomtryInput.js +0 -85
- package/Voxels/Models/Rules/Classes/VoxelRulesGeometry.d.ts +0 -22
- package/Voxels/Models/Rules/Classes/VoxelRulesGeometry.js +0 -15
- package/Voxels/Models/Rules/Classes/VoxelRulesModel.d.ts +0 -19
- package/Voxels/Models/Rules/Classes/VoxelRulesModel.js +0 -29
- package/Voxels/Models/Rules/Functions/BuildFinalInputs.d.ts +0 -5
- package/Voxels/Models/Rules/Functions/BuildFinalInputs.js +0 -87
- package/Voxels/Models/Rules/Functions/BuildRules.d.ts +0 -7
- package/Voxels/Models/Rules/Functions/Compile/CompileGeomtryNodes.d.ts +0 -4
- package/Voxels/Models/Rules/Functions/Compile/CompileGeomtryNodes.js +0 -39
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileBoxGeometryNode.d.ts +0 -5
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileBoxGeometryNode.js +0 -14
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileQuadGeometryNode.d.ts +0 -6
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileQuadGeometryNode.js +0 -92
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileTriangleGeometryNode.d.ts +0 -6
- package/Voxels/Models/Rules/Functions/Compile/Nodes/CompileTriangleGeometryNode.js +0 -115
- package/Voxels/Models/Rules/VoxelModelRuleBuilderRegister.d.ts +0 -18
- package/Voxels/Models/Rules/VoxelModelRuleBuilderRegister.js +0 -202
- package/Voxels/State/CondiotnalTreeReader.d.ts +0 -10
- package/Voxels/State/CondiotnalTreeReader.js +0 -23
- package/Voxels/State/LogicStatementReader.d.ts +0 -9
- package/Voxels/State/LogicStatementReader.js +0 -50
- package/Voxels/State/Schema/Conditions/SameVoxelConditions.js +0 -19
- package/Voxels/State/Schema/Conditions/ShapeStateSchemaRelationsCondition.d.ts +0 -6
- package/Voxels/State/Schema/Conditions/ShapeStateSchemaRelationsCondition.js +0 -6
- package/Voxels/State/Schema/ShapeStateRelationsNode.d.ts +0 -10
- package/Voxels/State/Schema/ShapeStateRelationsNode.js +0 -26
- package/Voxels/State/Schema/StateSchema.d.ts +0 -13
- package/Voxels/State/Schema/StateSchema.js +0 -17
- package/Voxels/State/Schema/VoxelSchema.d.ts +0 -7
- package/Voxels/State/Schema/VoxelSchema.js +0 -10
- package/Voxels/State/SchemaRegister.d.ts +0 -18
- package/Voxels/State/SchemaRegister.js +0 -76
- package/Voxels/State/StateTreeReader.d.ts +0 -9
- package/Voxels/State/StateTreeReader.js +0 -37
- /package/Mesher/{Geomtry → Geometry}/Functions/GetBounds.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Functions/GetBounds.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Geometry.types.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/Quad.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/Quad.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/QuadVertexData.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/QuadVertexData.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/Triangle.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/Triangle.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/TriangleVertexData.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/TriangleVertexData.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/index.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Primitives/index.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMesh.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMesh.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMeshBuffer.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Proto/ProtoMeshBuffer.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Shapes/Box.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Shapes/Box.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformBox.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformBox.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformQuad.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformQuad.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformTriangle.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/Transform/TransformTriangle.js +0 -0
- /package/Mesher/{Geomtry → Geometry}/index.d.ts +0 -0
- /package/Mesher/{Geomtry → Geometry}/index.js +0 -0
- /package/Mesher/Items/{Geomtry → Geometry}/ItemMeshVertexStructCursor.d.ts +0 -0
- /package/Mesher/Items/{Geomtry → Geometry}/ItemMeshVertexStructCursor.js +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/CompactedSectionVoxelMesh.d.ts +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshBVHBuilder.d.ts +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshVertexStructCursor.d.ts +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelMeshVertexStructCursor.js +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelShaderData.d.ts +0 -0
- /package/Mesher/Voxels/{Geomtry → Geometry}/VoxelShaderData.js +0 -0
- /package/Mesher/Voxels/Models/Nodes/Types/{GeomtryNode.types.js → GeometryNode.types.js} +0 -0
- /package/Voxels/{Models/CompiledVoxelModel.types.js → Functions/Geometry/GeometryLUT.types.js} +0 -0
- /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFace.d.ts +0 -0
- /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFace.js +0 -0
- /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionFaceRegister.js +0 -0
- /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionQuadFace.d.ts +0 -0
- /package/Voxels/{Models/Rules/Classes → Functions/Geometry/Rules}/OcclusionTriangleFace.d.ts +0 -0
- /package/Voxels/{Models/Indexing → Geometry}/VoxelRelativeCubeIndex.d.ts +0 -0
- /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 "
|
|
1
|
+
import { VoxelRelativeCubeIndex } from "../../../Geometry/VoxelRelativeCubeIndex";
|
|
2
2
|
import { Vec3ArrayLike } from "@amodx/math";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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(
|
|
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
|
|
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 *
|
|
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.
|
|
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
|
|
161
|
-
|
|
162
|
-
if (
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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/
|
|
2
|
+
import { Quad } from "../../../../Mesher/Geometry/Primitives/Quad";
|
|
3
3
|
import { StringPalette } from "../../../../Util/StringPalette";
|
|
4
|
-
import { Triangle } from "../../../../Mesher/
|
|
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/
|
|
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/
|
|
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(
|
|
10
|
-
setValue(
|
|
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(
|
|
10
|
-
setValue(
|
|
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 {};
|