@divinevoxel/vlox 0.0.78 → 0.0.80
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,361 @@
|
|
|
1
|
+
import { VoxelLUT } from "../Data/VoxelLUT";
|
|
2
|
+
import { BinarySchema } from "../State/Schema/BinarySchema";
|
|
3
|
+
import { VoxelSchemas } from "../State/VoxelSchemas";
|
|
4
|
+
import { EngineStats } from "../../Stats/EngineStats";
|
|
5
|
+
import { BuildGeomeetryLUT } from "./Geometry/BuildGeometryLUT";
|
|
6
|
+
import { ReltionalStateBuilder } from "../State/Reltional/ReltionalStateBuilder";
|
|
7
|
+
function recurse(index, current, result, valuePairs) {
|
|
8
|
+
if (index === valuePairs.length) {
|
|
9
|
+
result.push(current.join(","));
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const [key, values] = valuePairs[index];
|
|
13
|
+
for (const value of values) {
|
|
14
|
+
current.push(`${key}=${value}`);
|
|
15
|
+
recurse(index + 1, current, result, valuePairs);
|
|
16
|
+
current.pop();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function getAllCombinations(valuePairs) {
|
|
20
|
+
const result = [];
|
|
21
|
+
recurse(0, [], result, valuePairs);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
function buildScehmas(voxels, models) {
|
|
25
|
+
//build state schemas
|
|
26
|
+
for (const model of models) {
|
|
27
|
+
VoxelLUT.models.register(model.id);
|
|
28
|
+
//build state schema
|
|
29
|
+
const schemaNodes = [];
|
|
30
|
+
for (const schemaNode of model.stateSchema) {
|
|
31
|
+
const node = {
|
|
32
|
+
name: schemaNode.name,
|
|
33
|
+
bitIndex: schemaNode.bitIndex,
|
|
34
|
+
bitSize: schemaNode.bitSize,
|
|
35
|
+
};
|
|
36
|
+
if (schemaNode.values) {
|
|
37
|
+
node.values = schemaNode.values;
|
|
38
|
+
}
|
|
39
|
+
schemaNodes.push(node);
|
|
40
|
+
}
|
|
41
|
+
const stateSchema = new BinarySchema(schemaNodes);
|
|
42
|
+
VoxelSchemas.state.set(model.id, stateSchema);
|
|
43
|
+
//build reltional state schema
|
|
44
|
+
const reltionalSchemaNodes = [];
|
|
45
|
+
let bitIndex = 0;
|
|
46
|
+
for (const schemaNode of model.relationsSchema) {
|
|
47
|
+
const node = {
|
|
48
|
+
name: schemaNode.name,
|
|
49
|
+
bitIndex: bitIndex,
|
|
50
|
+
bitSize: 1,
|
|
51
|
+
values: ["false", "true"],
|
|
52
|
+
};
|
|
53
|
+
bitIndex++;
|
|
54
|
+
reltionalSchemaNodes.push(node);
|
|
55
|
+
}
|
|
56
|
+
const reltionalStateSchema = new BinarySchema(reltionalSchemaNodes);
|
|
57
|
+
VoxelSchemas.reltioanlState.set(model.id, reltionalStateSchema);
|
|
58
|
+
const reltionalStateBuilder = new ReltionalStateBuilder(reltionalStateSchema, model.relationsSchema);
|
|
59
|
+
VoxelSchemas.reltionalStateBuilder.set(model.id, reltionalStateBuilder);
|
|
60
|
+
}
|
|
61
|
+
//build mod schemas
|
|
62
|
+
for (const voxel of voxels) {
|
|
63
|
+
const modelData = voxel.properties["dve_model_data"];
|
|
64
|
+
const trueVoxelId = VoxelLUT.voxelIds.register(voxel.id);
|
|
65
|
+
VoxelLUT.materialMap[trueVoxelId] = VoxelLUT.material.getNumberId(voxel.properties["dve_rendered_material"] || "dve_solid");
|
|
66
|
+
VoxelLUT.substanceMap[trueVoxelId] = VoxelLUT.material.getNumberId(voxel.properties["dve_substance"] || "dve_solid");
|
|
67
|
+
if (!modelData)
|
|
68
|
+
continue;
|
|
69
|
+
VoxelLUT.modelsIndex[trueVoxelId] = VoxelLUT.models.getNumberId(modelData.id);
|
|
70
|
+
//build state schema
|
|
71
|
+
const schemaNodes = [];
|
|
72
|
+
if (modelData.modSchema) {
|
|
73
|
+
for (const schemaNode of modelData.modSchema) {
|
|
74
|
+
const node = {
|
|
75
|
+
name: schemaNode.name,
|
|
76
|
+
bitIndex: schemaNode.bitIndex,
|
|
77
|
+
bitSize: schemaNode.bitSize,
|
|
78
|
+
};
|
|
79
|
+
if (schemaNode.values) {
|
|
80
|
+
node.values = schemaNode.values;
|
|
81
|
+
}
|
|
82
|
+
schemaNodes.push(node);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const stateSchema = new BinarySchema(schemaNodes);
|
|
86
|
+
VoxelSchemas.mod.set(voxel.id, stateSchema);
|
|
87
|
+
//build reltional mod schema
|
|
88
|
+
const reltionalSchemaNodes = [];
|
|
89
|
+
if (modelData.modRelationSchema) {
|
|
90
|
+
let bitIndex = 0;
|
|
91
|
+
for (const schemaNode of modelData.modRelationSchema) {
|
|
92
|
+
const node = {
|
|
93
|
+
name: schemaNode.name,
|
|
94
|
+
bitIndex: bitIndex,
|
|
95
|
+
bitSize: 1,
|
|
96
|
+
values: ["false", "true"],
|
|
97
|
+
};
|
|
98
|
+
bitIndex++;
|
|
99
|
+
reltionalSchemaNodes.push(node);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const reltionalStateSchema = new BinarySchema(reltionalSchemaNodes);
|
|
103
|
+
VoxelSchemas.reltioanlMod.set(voxel.id, reltionalStateSchema);
|
|
104
|
+
const reltionalModBuilder = new ReltionalStateBuilder(reltionalStateSchema, modelData.modRelationSchema || []);
|
|
105
|
+
VoxelSchemas.reltionalModBuilder.set(voxel.id, reltionalModBuilder);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function buildStatePalette(voxels, models) {
|
|
109
|
+
const modelStateArray = new Map();
|
|
110
|
+
for (const model of models) {
|
|
111
|
+
const schema = VoxelSchemas.state.get(model.id);
|
|
112
|
+
const valuePairs = [];
|
|
113
|
+
for (const node of schema.nodes) {
|
|
114
|
+
valuePairs.push([
|
|
115
|
+
node.name,
|
|
116
|
+
node.valuePalette
|
|
117
|
+
? node.valuePalette._palette
|
|
118
|
+
: new Array(node.bitMask + 1).fill(0).map((_, i) => `${i}`),
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
const stateStrings = getAllCombinations(valuePairs);
|
|
122
|
+
const statePalette = [];
|
|
123
|
+
for (const state of stateStrings) {
|
|
124
|
+
const value = schema.readString(!state ? "*" : state);
|
|
125
|
+
statePalette.push(value);
|
|
126
|
+
}
|
|
127
|
+
modelStateArray.set(model.id, statePalette);
|
|
128
|
+
}
|
|
129
|
+
const finalPalette = [[0, 0, 0]];
|
|
130
|
+
const finalPaletteRecord = [[[0]]];
|
|
131
|
+
let voxelIdCount = 1;
|
|
132
|
+
for (const voxel of voxels) {
|
|
133
|
+
const modelData = voxel.properties["dve_model_data"];
|
|
134
|
+
if (!modelData)
|
|
135
|
+
continue;
|
|
136
|
+
const schema = VoxelSchemas.mod.get(voxel.id);
|
|
137
|
+
const valuePairs = [];
|
|
138
|
+
if (schema) {
|
|
139
|
+
for (const node of schema.nodes) {
|
|
140
|
+
valuePairs.push([
|
|
141
|
+
node.name,
|
|
142
|
+
node.valuePalette
|
|
143
|
+
? node.valuePalette._palette
|
|
144
|
+
: new Array(node.bitMask + 1).fill(0).map((_, i) => `${i}`),
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const stateStrings = getAllCombinations(valuePairs);
|
|
149
|
+
const modPalette = [];
|
|
150
|
+
if (valuePairs.length && schema) {
|
|
151
|
+
for (const state of stateStrings) {
|
|
152
|
+
const value = schema.readString(!state ? "*" : state);
|
|
153
|
+
modPalette.push(value);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
modPalette.push(0);
|
|
158
|
+
}
|
|
159
|
+
const voxelId = VoxelLUT.voxelIds.getNumberId(voxel.id);
|
|
160
|
+
const statePalette = modelStateArray.get(modelData.id);
|
|
161
|
+
VoxelLUT.totalStates[voxelId] = statePalette.length;
|
|
162
|
+
VoxelLUT.totalMods[voxelId] = modPalette.length;
|
|
163
|
+
finalPaletteRecord[voxelId] = new Array(modPalette.length).fill(-1);
|
|
164
|
+
for (let modIndex = 0; modIndex < modPalette.length; modIndex++) {
|
|
165
|
+
finalPaletteRecord[voxelId][modPalette[modIndex]] = new Array(statePalette.length).fill(-1);
|
|
166
|
+
for (let stateIndex = 0; stateIndex < statePalette.length; stateIndex++) {
|
|
167
|
+
finalPalette[voxelIdCount] = [
|
|
168
|
+
voxelId,
|
|
169
|
+
statePalette[stateIndex],
|
|
170
|
+
modPalette[modIndex],
|
|
171
|
+
];
|
|
172
|
+
finalPaletteRecord[voxelId][modPalette[modIndex]][statePalette[stateIndex]] = voxelIdCount;
|
|
173
|
+
VoxelLUT.voxelIdToModelState[voxelIdCount] = statePalette[stateIndex];
|
|
174
|
+
voxelIdCount++;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
EngineStats.palette.paletteSize = finalPalette.length;
|
|
179
|
+
VoxelLUT.voxels = finalPalette;
|
|
180
|
+
VoxelLUT.voxelRecord = finalPaletteRecord;
|
|
181
|
+
}
|
|
182
|
+
function buildReltionalStatePalette(voxels, models) {
|
|
183
|
+
const modelStateArray = new Map();
|
|
184
|
+
for (const model of models) {
|
|
185
|
+
const schema = VoxelSchemas.reltioanlState.get(model.id);
|
|
186
|
+
const valuePairs = [];
|
|
187
|
+
for (const node of schema.nodes) {
|
|
188
|
+
valuePairs.push([node.name, ["false", "true"]]);
|
|
189
|
+
}
|
|
190
|
+
const stateStrings = getAllCombinations(valuePairs);
|
|
191
|
+
const statePalette = [];
|
|
192
|
+
for (const state of stateStrings) {
|
|
193
|
+
const value = schema.readString(!state ? "*" : state);
|
|
194
|
+
statePalette.push(value);
|
|
195
|
+
}
|
|
196
|
+
modelStateArray.set(model.id, statePalette);
|
|
197
|
+
}
|
|
198
|
+
const finalPalette = [[0, 0, 0]];
|
|
199
|
+
const finalPaletteRecord = [[[0]]];
|
|
200
|
+
let voxelIdCount = 1;
|
|
201
|
+
for (const voxel of voxels) {
|
|
202
|
+
const modelData = voxel.properties["dve_model_data"];
|
|
203
|
+
if (!modelData)
|
|
204
|
+
continue;
|
|
205
|
+
const schema = VoxelSchemas.reltioanlMod.get(voxel.id);
|
|
206
|
+
const valuePairs = [];
|
|
207
|
+
if (schema) {
|
|
208
|
+
for (const node of schema.nodes) {
|
|
209
|
+
valuePairs.push([node.name, ["false", "true"]]);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const stateStrings = getAllCombinations(valuePairs);
|
|
213
|
+
const modPalette = [];
|
|
214
|
+
if (valuePairs.length && schema) {
|
|
215
|
+
for (const state of stateStrings) {
|
|
216
|
+
const value = schema.readString(!state ? "*" : state);
|
|
217
|
+
modPalette.push(value);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
modPalette.push(0);
|
|
222
|
+
}
|
|
223
|
+
const voxelId = VoxelLUT.voxelIds.getNumberId(voxel.id);
|
|
224
|
+
const statePalette = modelStateArray.get(modelData.id);
|
|
225
|
+
VoxelLUT.totalReltionalStates[voxelId] = statePalette.length;
|
|
226
|
+
VoxelLUT.totalReltionalMods[voxelId] = modPalette.length;
|
|
227
|
+
finalPaletteRecord[voxelId] = new Array(modPalette.length).fill(-1);
|
|
228
|
+
for (let modIndex = 0; modIndex < modPalette.length; modIndex++) {
|
|
229
|
+
finalPaletteRecord[voxelId][modPalette[modIndex]] = new Array(statePalette.length).fill(-1);
|
|
230
|
+
for (let stateIndex = 0; stateIndex < statePalette.length; stateIndex++) {
|
|
231
|
+
finalPalette[voxelIdCount] = [
|
|
232
|
+
voxelId,
|
|
233
|
+
statePalette[stateIndex],
|
|
234
|
+
modPalette[modIndex],
|
|
235
|
+
];
|
|
236
|
+
finalPaletteRecord[voxelId][modPalette[modIndex]][statePalette[stateIndex]] = voxelIdCount;
|
|
237
|
+
voxelIdCount++;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
EngineStats.palette.reltionalPaletteSize = finalPalette.length;
|
|
242
|
+
VoxelLUT.reltioanlVoxels = finalPalette;
|
|
243
|
+
VoxelLUT.reltionalVoxelRecord = finalPaletteRecord;
|
|
244
|
+
}
|
|
245
|
+
export function BuildLUTs(materials, substances, voxels, geometry, models) {
|
|
246
|
+
for (const material of materials) {
|
|
247
|
+
VoxelLUT.material.register(material.id);
|
|
248
|
+
}
|
|
249
|
+
for (const substance of substances) {
|
|
250
|
+
VoxelLUT.substance.register(substance.id);
|
|
251
|
+
}
|
|
252
|
+
buildScehmas(voxels, models);
|
|
253
|
+
buildStatePalette(voxels, models);
|
|
254
|
+
buildReltionalStatePalette(voxels, models);
|
|
255
|
+
const { finalModelStateMap, finalModelConditionalMap, finalVoxelStateInputMap, finalVoxelConditionalInputMap, } = BuildGeomeetryLUT(voxels, geometry, models);
|
|
256
|
+
for (const voxel of voxels) {
|
|
257
|
+
const voxelModelData = voxel.properties["dve_model_data"];
|
|
258
|
+
if (!voxelModelData)
|
|
259
|
+
continue;
|
|
260
|
+
const trueVoxelId = VoxelLUT.voxelIds.getNumberId(voxel.id);
|
|
261
|
+
const modelStateMap = finalModelStateMap.get(voxelModelData.id);
|
|
262
|
+
const modelConditonalMap = finalModelConditionalMap.get(voxelModelData.id);
|
|
263
|
+
const stateSchema = VoxelSchemas.state.get(voxelModelData.id);
|
|
264
|
+
const reltionalStateSchema = VoxelSchemas.reltioanlState.get(voxelModelData.id);
|
|
265
|
+
const modSchema = VoxelSchemas.mod.get(voxel.id);
|
|
266
|
+
const reltionalModSchema = VoxelSchemas.reltioanlMod.get(voxel.id);
|
|
267
|
+
const inputs = finalVoxelStateInputMap.get(voxel.id);
|
|
268
|
+
const conditonalInputs = finalVoxelConditionalInputMap.get(voxel.id);
|
|
269
|
+
for (const modKey in voxelModelData.inputs) {
|
|
270
|
+
const [modString, modReltionalString] = modKey.split("|");
|
|
271
|
+
const modValue = modSchema ? modSchema.readString(modString) : 0;
|
|
272
|
+
const reltionalModValue = modReltionalString && reltionalModSchema
|
|
273
|
+
? reltionalModSchema.readString(modReltionalString)
|
|
274
|
+
: 0;
|
|
275
|
+
for (const stateKey in modelStateMap) {
|
|
276
|
+
const [stateString, reltionalString] = stateKey.split("|");
|
|
277
|
+
const stateValue = stateSchema
|
|
278
|
+
? stateSchema.readString(stateString)
|
|
279
|
+
: 0;
|
|
280
|
+
const reltionalStateValue = reltionalString && reltionalStateSchema
|
|
281
|
+
? reltionalStateSchema.readString(reltionalString)
|
|
282
|
+
: 0;
|
|
283
|
+
const voxelId = VoxelLUT.getVoxelId(trueVoxelId, stateValue, modValue);
|
|
284
|
+
const reltionalVoxelId = VoxelLUT.getReltionalVoxelId(trueVoxelId, reltionalStateValue, reltionalModValue);
|
|
285
|
+
VoxelLUT.geometryIndex[voxelId] ??= [];
|
|
286
|
+
VoxelLUT.geometryInputsIndex[voxelId] ??= [];
|
|
287
|
+
const totalReltionalStates = reltionalStateSchema
|
|
288
|
+
? Math.pow(2, reltionalStateSchema.nodes.length)
|
|
289
|
+
: 0;
|
|
290
|
+
if (!totalReltionalStates) {
|
|
291
|
+
VoxelLUT.geometryIndex[voxelId][reltionalVoxelId] =
|
|
292
|
+
modelStateMap[stateKey];
|
|
293
|
+
VoxelLUT.geometryInputsIndex[voxelId][reltionalVoxelId] =
|
|
294
|
+
inputs[modKey][stateKey];
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const baseReltionalVoxelId = VoxelLUT.getReltionalVoxelId(trueVoxelId, 0, 0);
|
|
298
|
+
for (let i = baseReltionalVoxelId; i < baseReltionalVoxelId + totalReltionalStates; i++) {
|
|
299
|
+
VoxelLUT.geometryIndex[voxelId][i] = modelStateMap[stateKey];
|
|
300
|
+
VoxelLUT.geometryInputsIndex[voxelId][i] = inputs[modKey][stateKey];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
for (const stateKey in modelConditonalMap) {
|
|
305
|
+
const [stateString, reltionalString] = stateKey.split("|");
|
|
306
|
+
const stateValue = stateSchema
|
|
307
|
+
? stateSchema.readString(stateString)
|
|
308
|
+
: 0;
|
|
309
|
+
const reltionalStateValue = reltionalString && reltionalStateSchema
|
|
310
|
+
? reltionalStateSchema.readString(reltionalString)
|
|
311
|
+
: 0;
|
|
312
|
+
const geoId = modelConditonalMap[stateKey];
|
|
313
|
+
const voxelId = VoxelLUT.getVoxelId(trueVoxelId, stateValue, modValue);
|
|
314
|
+
const reltionalVoxelId = VoxelLUT.getReltionalVoxelId(trueVoxelId, reltionalStateValue, reltionalModValue);
|
|
315
|
+
const totalReltionalStates = reltionalStateSchema
|
|
316
|
+
? Math.pow(2, reltionalStateSchema.nodes.length)
|
|
317
|
+
: 0;
|
|
318
|
+
VoxelLUT.conditionalGeometryInputIndex[geoId] ??= [];
|
|
319
|
+
VoxelLUT.conditionalGeometryInputIndex[geoId][voxelId] ??= [];
|
|
320
|
+
if (!totalReltionalStates) {
|
|
321
|
+
VoxelLUT.conditionalGeometryInputIndex[geoId][voxelId][reltionalVoxelId] = conditonalInputs[modKey][stateKey];
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
const baseReltionalVoxelId = VoxelLUT.getReltionalVoxelId(trueVoxelId, 0, 0);
|
|
325
|
+
for (let i = baseReltionalVoxelId; i < baseReltionalVoxelId + totalReltionalStates; i++) {
|
|
326
|
+
VoxelLUT.conditionalGeometryInputIndex[geoId][voxelId][i] =
|
|
327
|
+
conditonalInputs[modKey][stateKey];
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
for (const stateKey in modelConditonalMap) {
|
|
333
|
+
const [stateString, reltionalString] = stateKey.split("|");
|
|
334
|
+
const stateValue = stateSchema ? stateSchema.readString(stateString) : 0;
|
|
335
|
+
const totalReltionalStates = reltionalStateSchema
|
|
336
|
+
? Math.pow(2, reltionalStateSchema.nodes.length) *
|
|
337
|
+
(reltionalModSchema
|
|
338
|
+
? Math.pow(2, reltionalModSchema.nodes.length)
|
|
339
|
+
: 1)
|
|
340
|
+
: 0;
|
|
341
|
+
const enabledArray = new Array(totalReltionalStates || 1).fill(true);
|
|
342
|
+
if (reltionalStateSchema) {
|
|
343
|
+
const reltionalNodes = ((reltionalString ? reltionalString.split(",") : []).map((v) => v.split("=")));
|
|
344
|
+
for (let i = 0; i < totalReltionalStates; i++) {
|
|
345
|
+
reltionalStateSchema.startEncoding(i);
|
|
346
|
+
for (const [key, value] of reltionalNodes) {
|
|
347
|
+
if (reltionalStateSchema.getValue(key) !== value) {
|
|
348
|
+
enabledArray[i] = false;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
VoxelLUT.conditionalGeometryIndex[trueVoxelId] ??= [];
|
|
354
|
+
VoxelLUT.conditionalGeometryIndex[trueVoxelId].push([
|
|
355
|
+
modelConditonalMap[stateKey],
|
|
356
|
+
stateValue,
|
|
357
|
+
enabledArray,
|
|
358
|
+
]);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { VoxelData } from "../Types/Voxel.types";
|
|
2
2
|
import { VoxelMaterialData } from "../Types/VoxelMaterial.types";
|
|
3
3
|
import { VoxelSubstanceData } from "../Types/VoxelSubstances.types";
|
|
4
|
-
import {
|
|
4
|
+
import { CompiledvVxelTags } from "../Types/VoxelModelCompiledData.types";
|
|
5
|
+
import { VoxelModelData } from "../../Voxels/Models/VoxelModel.types";
|
|
5
6
|
export type BuildTagDataProps = {
|
|
6
7
|
voxels: VoxelData[];
|
|
8
|
+
models: VoxelModelData[];
|
|
7
9
|
voxelsOverrides?: Record<string, (value: any) => any>;
|
|
8
10
|
substances: VoxelSubstanceData[];
|
|
9
11
|
substancesOverrides?: Record<string, (value: any) => any>;
|
|
10
12
|
materials: VoxelMaterialData[];
|
|
11
13
|
materialsOverrides?: Record<string, (value: any) => any>;
|
|
12
14
|
};
|
|
13
|
-
export declare function BuildTagAndPaletteData(props: BuildTagDataProps):
|
|
15
|
+
export declare function BuildTagAndPaletteData(props: BuildTagDataProps): CompiledvVxelTags;
|
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
import { VoxelTagsRegister } from "../Data/VoxelTagsRegister";
|
|
2
|
-
import { VoxelPalettesRegister } from "../Data/VoxelPalettesRegister";
|
|
3
|
-
import { VoxelModelRuleBuilderRegister } from "../Models/Rules/VoxelModelRuleBuilderRegister";
|
|
4
2
|
import { VoxelPropertiesRegister } from "../Data/VoxelPropertiesRegister";
|
|
5
3
|
import { VoxelPlacingStrategyRegister } from "../../Voxels/Interaction/Placing/VoxelPlacingStrategyRegister";
|
|
4
|
+
import { VoxelLUT } from "../../Voxels/Data/VoxelLUT";
|
|
6
5
|
export function BuildTagAndPaletteData(props) {
|
|
7
6
|
const logic = {};
|
|
7
|
+
const models = new Map(props.models.map((_) => [_.id, _]));
|
|
8
8
|
for (const voxel of props.voxels) {
|
|
9
9
|
const tags = {};
|
|
10
|
-
|
|
11
|
-
throw new Error(`Voxel with id [${voxel.id}] is already registered.`);
|
|
12
|
-
}
|
|
13
|
-
const voxelId = VoxelPalettesRegister.voxelIds.register(voxel.id);
|
|
10
|
+
const voxelId = VoxelLUT.voxelIds.getNumberId(voxel.id);
|
|
14
11
|
VoxelPropertiesRegister.VoxelProperties[voxelId] = voxel.properties;
|
|
15
12
|
if (voxel.properties["dve_model_data"]) {
|
|
16
13
|
tags["dve_model_id"] = voxel.properties["dve_model_data"].id;
|
|
17
|
-
const model =
|
|
18
|
-
if (model
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const model = models.get(tags["dve_model_id"]);
|
|
15
|
+
if (model) {
|
|
16
|
+
if (model?.properties) {
|
|
17
|
+
for (const tagId in model.properties) {
|
|
18
|
+
voxel.properties[tagId] = model.properties[tagId];
|
|
19
|
+
}
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
if (voxel.properties["dve_placing_strategy"]) {
|
|
25
24
|
VoxelPlacingStrategyRegister.register(voxel.id, voxel.properties["dve_placing_strategy"]);
|
|
26
25
|
}
|
|
27
|
-
VoxelPalettesRegister.voxelIdToNameMap.set(voxel.id, voxel.name || "");
|
|
28
|
-
VoxelPalettesRegister.voxelNametoIdMap.set(voxel.name || voxel.id, voxel.id);
|
|
29
26
|
if (voxel.properties["dve_logic_data"]) {
|
|
30
27
|
logic[voxel.id] = voxel.properties["dve_logic_data"];
|
|
31
28
|
}
|
|
@@ -44,11 +41,11 @@ export function BuildTagAndPaletteData(props) {
|
|
|
44
41
|
}
|
|
45
42
|
for (const substance of props.substances) {
|
|
46
43
|
const tags = {};
|
|
47
|
-
const substanceId =
|
|
44
|
+
const substanceId = VoxelLUT.substance.getNumberId(substance.id);
|
|
48
45
|
for (const tag of VoxelTagsRegister.IncludedSubstnacesTags) {
|
|
49
46
|
if (substance.properties[tag] === undefined) {
|
|
50
47
|
tags[tag] =
|
|
51
|
-
VoxelTagsRegister.
|
|
48
|
+
VoxelTagsRegister.SubstanceTagDefaults[tag] || false;
|
|
52
49
|
continue;
|
|
53
50
|
}
|
|
54
51
|
if (props?.substancesOverrides?.[tag]) {
|
|
@@ -57,25 +54,11 @@ export function BuildTagAndPaletteData(props) {
|
|
|
57
54
|
}
|
|
58
55
|
tags[tag] = substance.properties[tag];
|
|
59
56
|
}
|
|
60
|
-
VoxelTagsRegister.
|
|
61
|
-
}
|
|
62
|
-
for (const material of props.materials) {
|
|
63
|
-
VoxelPalettesRegister.material.register(material.id);
|
|
57
|
+
VoxelTagsRegister.SubstanceTags[substanceId] = tags;
|
|
64
58
|
}
|
|
65
59
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
record: [],
|
|
70
|
-
idPalette: VoxelPalettesRegister.voxelIds._palette,
|
|
71
|
-
tags: VoxelTagsRegister.VoxelTags,
|
|
72
|
-
idToNameMap: [...VoxelPalettesRegister.voxelIdToNameMap.entries()],
|
|
73
|
-
nameToIdMap: [...VoxelPalettesRegister.voxelNametoIdMap.entries()],
|
|
74
|
-
},
|
|
75
|
-
substances: {
|
|
76
|
-
tags: VoxelTagsRegister.SubstanceStags,
|
|
77
|
-
palette: VoxelPalettesRegister.substance._palette,
|
|
78
|
-
},
|
|
79
|
-
materials: { palette: VoxelPalettesRegister.material._palette },
|
|
60
|
+
logic,
|
|
61
|
+
tags: VoxelTagsRegister.VoxelTags,
|
|
62
|
+
substanceTags: VoxelTagsRegister.SubstanceTags,
|
|
80
63
|
};
|
|
81
64
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VoxelModelData } from "../../Models/VoxelModel.types";
|
|
2
|
+
import { VoxelData } from "../../Types/Voxel.types";
|
|
3
|
+
import { VoxelGeometryData } from "../../Geometry/VoxelGeometry.types";
|
|
4
|
+
type FinalMappedVoxelInputs = Record<string, Record<string, number>>;
|
|
5
|
+
export declare function BuildGeomeetryLUT(voxels: VoxelData[], geomtries: VoxelGeometryData[], models: VoxelModelData[]): {
|
|
6
|
+
finalModelStateMap: Map<string, Record<string, number>>;
|
|
7
|
+
finalModelConditionalMap: Map<string, Record<string, number>>;
|
|
8
|
+
finalVoxelStateInputMap: Map<string, FinalMappedVoxelInputs>;
|
|
9
|
+
finalVoxelConditionalInputMap: Map<string, FinalMappedVoxelInputs>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|