@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.
- 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
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { VoxelModelRuleBuilderRegister } from "../VoxelModelRuleBuilderRegister";
|
|
2
|
-
export function BuildFinalInputs(model) {
|
|
3
|
-
const stateVoxelInputs = {};
|
|
4
|
-
const conditionalShapeStateVoxelInputs = {};
|
|
5
|
-
for (const [voxelId, voxel] of model.voxels) {
|
|
6
|
-
const voxelModData = model.voxelModData.get(voxelId);
|
|
7
|
-
voxel.inputs;
|
|
8
|
-
for (const modVoxelInputKey in voxel.inputs) {
|
|
9
|
-
const modVoxelInput = voxel.inputs[modVoxelInputKey];
|
|
10
|
-
const baseStates = [];
|
|
11
|
-
for (const state in model.data.stateNodes) {
|
|
12
|
-
const geoNodes = [];
|
|
13
|
-
const stateNodes = model.data.stateNodes[state];
|
|
14
|
-
for (let n = 0; n < stateNodes.length; n++) {
|
|
15
|
-
const node = stateNodes[n];
|
|
16
|
-
const geo = VoxelModelRuleBuilderRegister.getGeomtryFromLink(node);
|
|
17
|
-
if (!geo)
|
|
18
|
-
throw new Error(`Geometry does not exist`);
|
|
19
|
-
geo.input.resetDefaults();
|
|
20
|
-
for (const geoArg in node.inputs) {
|
|
21
|
-
const arg = geo.input.arguments[geoArg];
|
|
22
|
-
const keys = [];
|
|
23
|
-
let proxyValue = null;
|
|
24
|
-
if (arg.type === "arg-list") {
|
|
25
|
-
keys.push(...arg.arguments);
|
|
26
|
-
proxyValue = node.inputs[geoArg];
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
keys.push(geoArg);
|
|
30
|
-
}
|
|
31
|
-
geo.input.currentModel = voxel;
|
|
32
|
-
geo.input.currentModelState = state;
|
|
33
|
-
for (const key of keys) {
|
|
34
|
-
const constructorArg = proxyValue ?? node.inputs[key];
|
|
35
|
-
if (geo.input.isArgString(constructorArg)) {
|
|
36
|
-
const arg = constructorArg.replace("@", "");
|
|
37
|
-
if (!Object.hasOwn(modVoxelInput, arg)) {
|
|
38
|
-
console.warn(`Could not input for voxel ${voxelId} and geo ${geo.data.id}. ${key} does not exist`);
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
geo.input.proxy[key] = modVoxelInput[arg];
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
geo.input.proxy[key] = constructorArg;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
geoNodes[model.stateData.geometryLinkStateMap[state][n]] =
|
|
48
|
-
geo.input.cloneArgs();
|
|
49
|
-
}
|
|
50
|
-
baseStates[model.stateData.stateRecord[state]] = geoNodes;
|
|
51
|
-
}
|
|
52
|
-
stateVoxelInputs[voxelId] ??= [];
|
|
53
|
-
stateVoxelInputs[voxelId][voxelModData.modRecord[modVoxelInputKey]] =
|
|
54
|
-
baseStates;
|
|
55
|
-
const condiotnalStates = [];
|
|
56
|
-
for (const state in model.data.conditonalNodes) {
|
|
57
|
-
const geoNodes = [];
|
|
58
|
-
const stateNodes = model.data.conditonalNodes[state];
|
|
59
|
-
for (let i = 0; i < stateNodes.length; i++) {
|
|
60
|
-
const node = stateNodes[i];
|
|
61
|
-
const geo = VoxelModelRuleBuilderRegister.getGeomtryFromLink(node);
|
|
62
|
-
if (!geo)
|
|
63
|
-
throw new Error(`Geometry does not exist`);
|
|
64
|
-
geo.input.resetDefaults();
|
|
65
|
-
for (const geoArg in node.inputs) {
|
|
66
|
-
const constructorArg = node.inputs[geoArg];
|
|
67
|
-
if (geo.input.isArgString(constructorArg)) {
|
|
68
|
-
geo.input.proxy[geoArg] =
|
|
69
|
-
modVoxelInput[constructorArg.replace("@", "")];
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
geo.input.proxy[geoArg] = constructorArg;
|
|
73
|
-
}
|
|
74
|
-
geoNodes[i] = geo.input.cloneArgs();
|
|
75
|
-
}
|
|
76
|
-
condiotnalStates[model.stateData.condiotnalShapeStateRecord[state]] =
|
|
77
|
-
geoNodes;
|
|
78
|
-
}
|
|
79
|
-
conditionalShapeStateVoxelInputs[voxelId] ??= [];
|
|
80
|
-
conditionalShapeStateVoxelInputs[voxelId][voxelModData.modRecord[modVoxelInputKey]] = condiotnalStates;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
stateVoxelInputs,
|
|
85
|
-
conditionalShapeStateVoxelInputs,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { StringPalette } from "../../../../Util/StringPalette";
|
|
2
|
-
export declare function BuildRules(geoPalette: StringPalette): {
|
|
3
|
-
aoIndex: import("../../Indexing/AOOcclusionFaceIndex").AOOcclusionFaceIndexData;
|
|
4
|
-
faceCullIndex: import("../../Indexing/CulledOcclusionFaceIndex").CulledOcclusionFaceIndexData;
|
|
5
|
-
faceCullMap: number[][];
|
|
6
|
-
vertexHitMap: number[][][];
|
|
7
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { CompiledGeomtryNodes } from "../../../../../Mesher/Voxels/Models/Nodes/Types/GeomtryNode.types";
|
|
2
|
-
import { VoxelRuleGeometryData } from "../../Classes/VoxelRulesGeometry";
|
|
3
|
-
import { GeomtryInput } from "../../Classes/GeomtryInput";
|
|
4
|
-
export declare function CompileGeomtryNodes(buildRules: boolean, input: GeomtryInput, data: VoxelRuleGeometryData["nodes"]): CompiledGeomtryNodes[];
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { CompileBoxGeometryNode } from "./Nodes/CompileBoxGeometryNode";
|
|
2
|
-
import { CompileQuadGeometryNode } from "./Nodes/CompileQuadGeometryNode";
|
|
3
|
-
import { CompileTriangleGeometryNode } from "./Nodes/CompileTriangleGeometryNode";
|
|
4
|
-
export function CompileGeomtryNodes(buildRules, input, data) {
|
|
5
|
-
const compiled = [];
|
|
6
|
-
for (const { node, tranform } of data) {
|
|
7
|
-
if (node.type == "custom") {
|
|
8
|
-
compiled.push({
|
|
9
|
-
type: "custom",
|
|
10
|
-
id: node.id,
|
|
11
|
-
});
|
|
12
|
-
input.args.push({});
|
|
13
|
-
const argsIndex = input.args.length - 1;
|
|
14
|
-
for (const inputArg in node.inputs) {
|
|
15
|
-
const value = node.inputs[inputArg];
|
|
16
|
-
if (input.isArgString(value)) {
|
|
17
|
-
input.args[argsIndex][inputArg] = null;
|
|
18
|
-
input.onInput(value, (value) => {
|
|
19
|
-
input.args[argsIndex][inputArg] = value;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
input.args[argsIndex][inputArg] = value;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (node.type == "box") {
|
|
28
|
-
compiled.push(...CompileBoxGeometryNode(buildRules, input, node, tranform));
|
|
29
|
-
}
|
|
30
|
-
if (node.type == "quad") {
|
|
31
|
-
compiled.push(CompileQuadGeometryNode(buildRules, input, node.points, node, tranform));
|
|
32
|
-
}
|
|
33
|
-
if (node.type == "triangle") {
|
|
34
|
-
compiled.push(CompileTriangleGeometryNode(buildRules, input, node.points, node, tranform));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
input.orginalArgs = structuredClone(input.args);
|
|
38
|
-
return compiled;
|
|
39
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { VoxelGeometryTransform } from "../../../../../../Mesher/Geomtry/Geometry.types";
|
|
2
|
-
import { CompiledQuadVoxelGeomtryNode } from "Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
|
|
3
|
-
import { GeomtryInput } from "../../../../../../Voxels/Models/Rules/Classes/GeomtryInput";
|
|
4
|
-
import { VoxelBoxGeometryNode } from "Voxels/Models/VoxelModel.types";
|
|
5
|
-
export declare function CompileBoxGeometryNode(buildRules: boolean, input: GeomtryInput, data: VoxelBoxGeometryNode, transform: VoxelGeometryTransform): CompiledQuadVoxelGeomtryNode[];
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { VoxelFaceNameMap } from "../../../../../../Math";
|
|
2
|
-
import { TransformBox } from "../../../../../../Mesher/Geomtry/Transform/TransformBox";
|
|
3
|
-
import { CompileQuadGeometryNode } from "./CompileQuadGeometryNode";
|
|
4
|
-
import { Box } from "../../../../../../Mesher/Geomtry/Shapes/Box";
|
|
5
|
-
export function CompileBoxGeometryNode(buildRules, input, data, transform) {
|
|
6
|
-
// const quads: Quad[] = [];
|
|
7
|
-
const box = Box.Create(data.points);
|
|
8
|
-
TransformBox(box, transform);
|
|
9
|
-
const compiled = [];
|
|
10
|
-
for (let i = 0; i < 6; i++) {
|
|
11
|
-
compiled.push(CompileQuadGeometryNode(buildRules, input, box.quads[i].positions.toVec3Array(), data.faces[VoxelFaceNameMap[i]]));
|
|
12
|
-
}
|
|
13
|
-
return compiled;
|
|
14
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Vec3Array } from "@amodx/math";
|
|
2
|
-
import { VoxelGeometryTransform } from "../../../../../../Mesher/Geomtry/Geometry.types";
|
|
3
|
-
import { CompiledQuadVoxelGeomtryNode } from "../../../../../../Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
|
|
4
|
-
import { GeomtryInput } from "Voxels/Models/Rules/Classes/GeomtryInput";
|
|
5
|
-
import { BaseVoxelQuadData } from "Voxels/Models/VoxelModel.types";
|
|
6
|
-
export declare function CompileQuadGeometryNode(buildRules: boolean, input: GeomtryInput, points: [Vec3Array, Vec3Array, Vec3Array, Vec3Array], node: BaseVoxelQuadData, transform?: VoxelGeometryTransform): CompiledQuadVoxelGeomtryNode;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Quad } from "../../../../../../Mesher/Geomtry/Primitives/Quad";
|
|
2
|
-
import { getQuadWeights, mapQuadUvs } from "./CalcFunctions";
|
|
3
|
-
import { TransformQuad } from "../../../../../../Mesher/Geomtry/Transform/TransformQuad";
|
|
4
|
-
import { QuadVoxelGometryInputs, } from "../../../../../../Mesher/Voxels/Models/Nodes/Types/QuadVoxelGometryNodeTypes";
|
|
5
|
-
import { OcclusionFaceRegister } from "../../../Classes/OcclusionFaceRegister";
|
|
6
|
-
import { closestVoxelFace } from "../../../../../../Math/UtilFunctions";
|
|
7
|
-
export function CompileQuadGeometryNode(buildRules, input, points, node, transform = {}) {
|
|
8
|
-
const quad = transform
|
|
9
|
-
? TransformQuad(Quad.Create(points), transform)
|
|
10
|
-
: Quad.Create(points);
|
|
11
|
-
const normals = quad.normals.toArray();
|
|
12
|
-
const averageNormal = [0, 0, 0];
|
|
13
|
-
for (let i = 0; i < normals.length; i++) {
|
|
14
|
-
averageNormal[0] += normals[i].x;
|
|
15
|
-
averageNormal[1] += normals[i].y;
|
|
16
|
-
averageNormal[2] += normals[i].z;
|
|
17
|
-
}
|
|
18
|
-
averageNormal[0] /= normals.length;
|
|
19
|
-
averageNormal[1] /= normals.length;
|
|
20
|
-
averageNormal[2] /= normals.length;
|
|
21
|
-
// Normalize the average normal
|
|
22
|
-
const magnitude = Math.sqrt(averageNormal[0] * averageNormal[0] +
|
|
23
|
-
averageNormal[1] * averageNormal[1] +
|
|
24
|
-
averageNormal[2] * averageNormal[2]);
|
|
25
|
-
if (magnitude !== 0) {
|
|
26
|
-
averageNormal[0] /= magnitude;
|
|
27
|
-
averageNormal[1] /= magnitude;
|
|
28
|
-
averageNormal[2] /= magnitude;
|
|
29
|
-
}
|
|
30
|
-
const closestFace = closestVoxelFace(averageNormal);
|
|
31
|
-
const weights = getQuadWeights(quad, closestFace);
|
|
32
|
-
const positions = quad.positions.toVec3Array();
|
|
33
|
-
input.args.push(QuadVoxelGometryInputs.CreateArgs());
|
|
34
|
-
const argsIndex = input.args.length - 1;
|
|
35
|
-
let defaultUvs = [0, 0, 1, 1];
|
|
36
|
-
if (input.isArgString(node.enabled)) {
|
|
37
|
-
input.onInput(String(node.enabled), (value) => (input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Enabled] =
|
|
38
|
-
value));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
node.enabled !== undefined &&
|
|
42
|
-
(input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Enabled] =
|
|
43
|
-
node.enabled);
|
|
44
|
-
}
|
|
45
|
-
if (input.isArgString(node.doubleSided)) {
|
|
46
|
-
input.onInput(String(node.doubleSided), (value) => (input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.DoubleSided] =
|
|
47
|
-
value));
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
node.doubleSided !== undefined &&
|
|
51
|
-
(input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.DoubleSided] =
|
|
52
|
-
node.doubleSided);
|
|
53
|
-
}
|
|
54
|
-
if (input.isArgString(node.rotation)) {
|
|
55
|
-
input.onInput(String(node.rotation), (value) => {
|
|
56
|
-
input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation] = value;
|
|
57
|
-
input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(defaultUvs, value, transform);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
node.rotation &&
|
|
62
|
-
(input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation] =
|
|
63
|
-
node.rotation);
|
|
64
|
-
}
|
|
65
|
-
if (input.isArgString(node.uv)) {
|
|
66
|
-
const defaultInput = input.geomtry.arguments[node.uv.substring(1)];
|
|
67
|
-
if (defaultInput.type == "box-uv" && defaultInput.default) {
|
|
68
|
-
input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(defaultInput.default, input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation], transform);
|
|
69
|
-
defaultUvs = defaultInput.default;
|
|
70
|
-
}
|
|
71
|
-
input.onInput(String(node.uv), (value) => {
|
|
72
|
-
input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(value, input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation], transform);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(node.uv, input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation], transform);
|
|
77
|
-
defaultUvs = node.uv;
|
|
78
|
-
}
|
|
79
|
-
if (input.isArgString(node.texture)) {
|
|
80
|
-
input.onInput(String(node.texture), (value) => (input.args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Texture] =
|
|
81
|
-
value));
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
type: "quad",
|
|
85
|
-
positions,
|
|
86
|
-
weights,
|
|
87
|
-
closestFace,
|
|
88
|
-
trueFaceIndex: buildRules
|
|
89
|
-
? OcclusionFaceRegister.getQuadId(quad)
|
|
90
|
-
: undefined,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Vec3Array } from "@amodx/math";
|
|
2
|
-
import { VoxelGeometryTransform } from "../../../../../../Mesher/Geomtry/Geometry.types";
|
|
3
|
-
import { CompiledTriangleVoxelGeomtryNode } from "../../../../../../Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes";
|
|
4
|
-
import { GeomtryInput } from "../../../Classes/GeomtryInput";
|
|
5
|
-
import { BaseVoxelTriangleData } from "../../../../VoxelModel.types";
|
|
6
|
-
export declare function CompileTriangleGeometryNode(buildRules: boolean, input: GeomtryInput, points: [Vec3Array, Vec3Array, Vec3Array], node: BaseVoxelTriangleData, transform?: VoxelGeometryTransform): CompiledTriangleVoxelGeomtryNode;
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { Triangle } from "../../../../../../Mesher/Geomtry/Primitives/Triangle";
|
|
2
|
-
import { getVertexWeights } from "./CalcFunctions";
|
|
3
|
-
import { TransformTriangle } from "../../../../../../Mesher/Geomtry/Transform/TransformTriangle";
|
|
4
|
-
import { TriangleVoxelGometryInputs, } from "../../../../../../Mesher/Voxels/Models/Nodes/Types/TriangleVoxelGometryNodeTypes";
|
|
5
|
-
import { OcclusionFaceRegister } from "../../../Classes/OcclusionFaceRegister";
|
|
6
|
-
import { closestVoxelFace } from "../../../../../../Math/UtilFunctions";
|
|
7
|
-
export function CompileTriangleGeometryNode(buildRules, input, points, node, transform) {
|
|
8
|
-
const triangle = transform
|
|
9
|
-
? TransformTriangle(Triangle.Create(points), transform)
|
|
10
|
-
: Triangle.Create(points);
|
|
11
|
-
const normals = triangle.normals.toArray();
|
|
12
|
-
const averageNormal = [0, 0, 0];
|
|
13
|
-
for (let i = 0; i < normals.length; i++) {
|
|
14
|
-
averageNormal[0] += normals[i].x;
|
|
15
|
-
averageNormal[1] += normals[i].y;
|
|
16
|
-
averageNormal[2] += normals[i].z;
|
|
17
|
-
}
|
|
18
|
-
averageNormal[0] /= normals.length;
|
|
19
|
-
averageNormal[1] /= normals.length;
|
|
20
|
-
averageNormal[2] /= normals.length;
|
|
21
|
-
// Normalize the average normal
|
|
22
|
-
const magnitude = Math.sqrt(averageNormal[0] * averageNormal[0] +
|
|
23
|
-
averageNormal[1] * averageNormal[1] +
|
|
24
|
-
averageNormal[2] * averageNormal[2]);
|
|
25
|
-
if (magnitude !== 0) {
|
|
26
|
-
averageNormal[0] /= magnitude;
|
|
27
|
-
averageNormal[1] /= magnitude;
|
|
28
|
-
averageNormal[2] /= magnitude;
|
|
29
|
-
}
|
|
30
|
-
const closestFace = closestVoxelFace(averageNormal);
|
|
31
|
-
const weights = [];
|
|
32
|
-
const positions = triangle.positions.toVec3Array();
|
|
33
|
-
for (let i = 0; i < positions.length; i++) {
|
|
34
|
-
weights[i] = getVertexWeights(closestFace, ...positions[i]);
|
|
35
|
-
}
|
|
36
|
-
input.args.push(TriangleVoxelGometryInputs.CreateArgs());
|
|
37
|
-
const argsIndex = input.args.length - 1;
|
|
38
|
-
let defaultUvs = [
|
|
39
|
-
[0, 0],
|
|
40
|
-
[0, 0],
|
|
41
|
-
[0, 0],
|
|
42
|
-
];
|
|
43
|
-
if (input.isArgString(node.doubleSided)) {
|
|
44
|
-
input.onInput(String(node.doubleSided), (value) => {
|
|
45
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.DoubleSided] =
|
|
46
|
-
value;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.DoubleSided] =
|
|
51
|
-
Boolean(node.doubleSided);
|
|
52
|
-
}
|
|
53
|
-
if (input.isArgString(node.rotation)) {
|
|
54
|
-
input.onInput(String(node.rotation), (value) => {
|
|
55
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.Rotation] =
|
|
56
|
-
value;
|
|
57
|
-
/* args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(
|
|
58
|
-
defaultUvs,
|
|
59
|
-
value,
|
|
60
|
-
tranform
|
|
61
|
-
); */
|
|
62
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] =
|
|
63
|
-
defaultUvs;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
node.rotation &&
|
|
68
|
-
(input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.Rotation] =
|
|
69
|
-
node.rotation);
|
|
70
|
-
}
|
|
71
|
-
if (input.isArgString(node.uv)) {
|
|
72
|
-
const defaultInput = input.geomtry.arguments[node.uv.substring(1)];
|
|
73
|
-
if (defaultInput.type == "uv" && defaultInput.default) {
|
|
74
|
-
/* args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(
|
|
75
|
-
defaultInput.default,
|
|
76
|
-
args[argsIndex][QuadVoxelGometryInputs.ArgIndexes.Rotation],
|
|
77
|
-
tranform
|
|
78
|
-
); */
|
|
79
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] =
|
|
80
|
-
defaultInput.default;
|
|
81
|
-
defaultInput.default = defaultUvs;
|
|
82
|
-
}
|
|
83
|
-
input.onInput(String(node.uv), (value) => {
|
|
84
|
-
/* args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(
|
|
85
|
-
value,
|
|
86
|
-
args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.Rotation],
|
|
87
|
-
transform
|
|
88
|
-
);
|
|
89
|
-
*/
|
|
90
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] = value;
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
/* args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] = mapQuadUvs(
|
|
95
|
-
node.uv as Vec4Array,
|
|
96
|
-
args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.Rotation],
|
|
97
|
-
tranform
|
|
98
|
-
); */
|
|
99
|
-
input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.UVs] = node.uv;
|
|
100
|
-
defaultUvs = node.uv;
|
|
101
|
-
}
|
|
102
|
-
if (input.isArgString(node.texture)) {
|
|
103
|
-
input.onInput(String(node.texture), (value) => (input.args[argsIndex][TriangleVoxelGometryInputs.ArgIndexes.Texture] =
|
|
104
|
-
value));
|
|
105
|
-
}
|
|
106
|
-
return {
|
|
107
|
-
type: "triangle",
|
|
108
|
-
positions,
|
|
109
|
-
weights,
|
|
110
|
-
closestFace,
|
|
111
|
-
trueFaceIndex: buildRules
|
|
112
|
-
? OcclusionFaceRegister.getTriangleId(triangle)
|
|
113
|
-
: undefined,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { StringPalette } from "../../../Util/StringPalette";
|
|
2
|
-
import { VoxelGeometryData, VoxelGeometryLinkData, VoxelModelConstructorData, VoxelModelData } from "../VoxelModel.types";
|
|
3
|
-
import { VoxelRuleGeometry } from "./Classes/VoxelRulesGeometry";
|
|
4
|
-
import { VoxelRulesModoel } from "./Classes/VoxelRulesModel";
|
|
5
|
-
export declare class VoxelModelRuleBuilderRegister {
|
|
6
|
-
static geometryPalette: StringPalette;
|
|
7
|
-
static getGeometryLinkId: (node: VoxelGeometryLinkData) => string;
|
|
8
|
-
static voxels: Map<string, {
|
|
9
|
-
id: string;
|
|
10
|
-
data: VoxelModelConstructorData;
|
|
11
|
-
}[]>;
|
|
12
|
-
static geometry: Map<string, VoxelRuleGeometry>;
|
|
13
|
-
static models: Map<string, VoxelRulesModoel>;
|
|
14
|
-
static registerGeometry(...geometry: VoxelGeometryData[]): void;
|
|
15
|
-
static getGeomtryFromLink(link: VoxelGeometryLinkData): VoxelRuleGeometry | undefined;
|
|
16
|
-
static registerModels(...models: VoxelModelData[]): void;
|
|
17
|
-
static registerVoxel(id: string, data: VoxelModelConstructorData): void;
|
|
18
|
-
}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { VoxelFaceNameArray } from "../../../Math";
|
|
2
|
-
import { StringPalette } from "../../../Util/StringPalette";
|
|
3
|
-
import { VoxelRuleGeometry } from "./Classes/VoxelRulesGeometry";
|
|
4
|
-
import { VoxelRulesModoel } from "./Classes/VoxelRulesModel";
|
|
5
|
-
const addGeo = (model, stateId, nodes) => {
|
|
6
|
-
const registred = [];
|
|
7
|
-
for (const geoLinkNode of nodes) {
|
|
8
|
-
const geo = VoxelModelRuleBuilderRegister.geometry.get(geoLinkNode.geometryId);
|
|
9
|
-
if (!geo)
|
|
10
|
-
throw new Error(`Geometry ${geoLinkNode.geometryId} is not registered.`);
|
|
11
|
-
const newId = getGeometryLinkId(geoLinkNode);
|
|
12
|
-
if (VoxelModelRuleBuilderRegister.geometry.has(newId))
|
|
13
|
-
continue;
|
|
14
|
-
registred.push([stateId, newId]);
|
|
15
|
-
if (!VoxelModelRuleBuilderRegister.geometryPalette.isRegistered(newId))
|
|
16
|
-
VoxelModelRuleBuilderRegister.geometryPalette.register(newId);
|
|
17
|
-
const newData = structuredClone(geo.data);
|
|
18
|
-
newData.cullingProcedure = geoLinkNode?.cullingProcedure
|
|
19
|
-
? geoLinkNode?.cullingProcedure
|
|
20
|
-
: newData.cullingProcedure;
|
|
21
|
-
for (const node of newData.nodes) {
|
|
22
|
-
node.tranform = {
|
|
23
|
-
...(geoLinkNode.position ? { position: geoLinkNode.position } : {}),
|
|
24
|
-
...(geoLinkNode.scale ? { scale: geoLinkNode.scale } : {}),
|
|
25
|
-
...(geoLinkNode.rotation ? { rotation: geoLinkNode.rotation } : {}),
|
|
26
|
-
...(geoLinkNode.rotationPivot
|
|
27
|
-
? { rotationPivot: geoLinkNode.rotationPivot }
|
|
28
|
-
: {}),
|
|
29
|
-
...(geoLinkNode.flip ? { flip: geoLinkNode.flip } : {}),
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
VoxelModelRuleBuilderRegister.geometry.set(newId, new VoxelRuleGeometry(newId, newData));
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
return registred;
|
|
36
|
-
};
|
|
37
|
-
const getGeometryLinkId = (node) => {
|
|
38
|
-
return `${node.geometryId}${node.cullingProcedure ? JSON.stringify(node.cullingProcedure) : " "}${node.position ? `-p${node.position.toString()}` : ""}${node.rotation ? `-r${node.rotation.toString()}` : ""}${node.scale ? `-s${node.scale.toString()}` : ""}`.trim();
|
|
39
|
-
};
|
|
40
|
-
export class VoxelModelRuleBuilderRegister {
|
|
41
|
-
static geometryPalette = new StringPalette();
|
|
42
|
-
static getGeometryLinkId = getGeometryLinkId;
|
|
43
|
-
static voxels = new Map();
|
|
44
|
-
static geometry = new Map();
|
|
45
|
-
static models = new Map();
|
|
46
|
-
static registerGeometry(...geometry) {
|
|
47
|
-
for (const geo of geometry) {
|
|
48
|
-
if (!this.geometryPalette.isRegistered(geo.id))
|
|
49
|
-
this.geometryPalette.register(geo.id);
|
|
50
|
-
const divisor = geo.divisor ? geo.divisor : false;
|
|
51
|
-
if (divisor) {
|
|
52
|
-
for (const node of geo.nodes) {
|
|
53
|
-
if (node.type == "box") {
|
|
54
|
-
let d = node.divisor ? node.divisor : divisor;
|
|
55
|
-
node.points[0][0] /= d[0];
|
|
56
|
-
node.points[0][1] /= d[1];
|
|
57
|
-
node.points[0][2] /= d[2];
|
|
58
|
-
node.points[1][0] /= d[0];
|
|
59
|
-
node.points[1][1] /= d[1];
|
|
60
|
-
node.points[1][2] /= d[2];
|
|
61
|
-
for (const faceName of VoxelFaceNameArray) {
|
|
62
|
-
const data = node.faces[faceName];
|
|
63
|
-
if (Array.isArray(data.uv)) {
|
|
64
|
-
data.uv[0] /= d[0];
|
|
65
|
-
data.uv[1] /= d[1];
|
|
66
|
-
data.uv[2] /= d[0];
|
|
67
|
-
data.uv[3] /= d[1];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (node.type == "quad") {
|
|
72
|
-
let d = node.divisor ? node.divisor : divisor;
|
|
73
|
-
for (let i = 0; i < 4; i++) {
|
|
74
|
-
const point = node.points[i];
|
|
75
|
-
point[0] /= d[0];
|
|
76
|
-
point[1] /= d[1];
|
|
77
|
-
point[2] /= d[2];
|
|
78
|
-
}
|
|
79
|
-
if (Array.isArray(node.uv)) {
|
|
80
|
-
if (Array.isArray(node.uv[0])) {
|
|
81
|
-
let uvs = node.uv;
|
|
82
|
-
for (let i = 0; i < node.uv.length; i++) {
|
|
83
|
-
uvs[i][0] /= d[0];
|
|
84
|
-
uvs[i][1] /= d[1];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
let uvs = node.uv;
|
|
89
|
-
uvs[0] /= d[0];
|
|
90
|
-
uvs[1] /= d[1];
|
|
91
|
-
uvs[2] /= d[0];
|
|
92
|
-
uvs[3] /= d[1];
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (node.type == "triangle") {
|
|
97
|
-
let d = node.divisor ? node.divisor : divisor;
|
|
98
|
-
for (let i = 0; i < 4; i++) {
|
|
99
|
-
const point = node.points[i];
|
|
100
|
-
point[0] /= d[0];
|
|
101
|
-
point[1] /= d[1];
|
|
102
|
-
point[2] /= d[2];
|
|
103
|
-
}
|
|
104
|
-
if (Array.isArray(node.uv)) {
|
|
105
|
-
if (Array.isArray(node.uv[0])) {
|
|
106
|
-
let uvs = node.uv;
|
|
107
|
-
for (let i = 0; i < node.uv.length; i++) {
|
|
108
|
-
uvs[i][0] /= d[0];
|
|
109
|
-
uvs[i][1] /= d[1];
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
this.geometry.set(geo.id, new VoxelRuleGeometry(geo.id, {
|
|
117
|
-
ogData: geo,
|
|
118
|
-
id: geo.id,
|
|
119
|
-
cullingProcedure: geo.cullingProcedure
|
|
120
|
-
? geo.cullingProcedure
|
|
121
|
-
: { type: "default" },
|
|
122
|
-
nodes: geo.nodes.map((node) => ({
|
|
123
|
-
node,
|
|
124
|
-
tranform: {},
|
|
125
|
-
})),
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
static getGeomtryFromLink(link) {
|
|
130
|
-
return this.geometry.get(getGeometryLinkId(link));
|
|
131
|
-
}
|
|
132
|
-
static registerModels(...models) {
|
|
133
|
-
for (const model of models) {
|
|
134
|
-
const rulesModel = new VoxelRulesModoel(model);
|
|
135
|
-
this.models.set(model.id, rulesModel);
|
|
136
|
-
const divisor = model.divisor ? model.divisor : null;
|
|
137
|
-
if (divisor) {
|
|
138
|
-
for (const stateId in model.stateNodes) {
|
|
139
|
-
const nodes = model.stateNodes[stateId];
|
|
140
|
-
for (const node of nodes) {
|
|
141
|
-
const d = "divisor" in node ? node.divisor : divisor;
|
|
142
|
-
if (node.position) {
|
|
143
|
-
node.position[0] /= d[0];
|
|
144
|
-
node.position[1] /= d[1];
|
|
145
|
-
node.position[2] /= d[2];
|
|
146
|
-
}
|
|
147
|
-
if (node.rotationPivot) {
|
|
148
|
-
node.rotationPivot[0] /= d[0];
|
|
149
|
-
node.rotationPivot[1] /= d[1];
|
|
150
|
-
node.rotationPivot[2] /= d[2];
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
for (const stateId in model.conditonalNodes) {
|
|
155
|
-
const nodes = model.conditonalNodes[stateId];
|
|
156
|
-
for (const node of nodes) {
|
|
157
|
-
const d = "divisor" in node ? node.divisor : divisor;
|
|
158
|
-
if (node.position) {
|
|
159
|
-
node.position[0] /= d[0];
|
|
160
|
-
node.position[1] /= d[1];
|
|
161
|
-
node.position[2] /= d[2];
|
|
162
|
-
}
|
|
163
|
-
if (node.rotationPivot) {
|
|
164
|
-
node.rotationPivot[0] /= d[0];
|
|
165
|
-
node.rotationPivot[1] /= d[1];
|
|
166
|
-
node.rotationPivot[2] /= d[2];
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (model.effects) {
|
|
171
|
-
for (const effect of model.effects) {
|
|
172
|
-
if (effect.type == "fx-points") {
|
|
173
|
-
for (const state in effect.values) {
|
|
174
|
-
for (const point of effect.values[state]) {
|
|
175
|
-
point[0] /= divisor[0];
|
|
176
|
-
point[1] /= divisor[1];
|
|
177
|
-
point[2] /= divisor[2];
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
for (const stateId in model.stateNodes) {
|
|
185
|
-
const nodes = model.stateNodes[stateId];
|
|
186
|
-
addGeo(model, stateId, nodes).forEach((_) => rulesModel.registerShapeState(..._));
|
|
187
|
-
}
|
|
188
|
-
for (const stateId in model.conditonalNodes) {
|
|
189
|
-
const nodes = model.conditonalNodes[stateId];
|
|
190
|
-
addGeo(model, stateId, nodes).forEach((_) => rulesModel.registerCondiotnalNode(..._));
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
static registerVoxel(id, data) {
|
|
195
|
-
let voxelModels = this.voxels.get(data.id);
|
|
196
|
-
if (!voxelModels) {
|
|
197
|
-
voxelModels = [];
|
|
198
|
-
this.voxels.set(data.id, voxelModels);
|
|
199
|
-
}
|
|
200
|
-
voxelModels.push({ id, data });
|
|
201
|
-
}
|
|
202
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { LogicStatementReader } from "./LogicStatementReader";
|
|
2
|
-
import { StateSchema } from "./Schema/StateSchema";
|
|
3
|
-
import { StateLogicStatement } from "./State.types";
|
|
4
|
-
export declare class CondtionalTreeReader {
|
|
5
|
-
schema: StateSchema;
|
|
6
|
-
tree: any[];
|
|
7
|
-
statements: LogicStatementReader[];
|
|
8
|
-
constructor(schema: StateSchema, statements: StateLogicStatement[], tree: any[]);
|
|
9
|
-
getState(): number;
|
|
10
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { LogicStatementReader } from "./LogicStatementReader";
|
|
2
|
-
export class CondtionalTreeReader {
|
|
3
|
-
schema;
|
|
4
|
-
tree;
|
|
5
|
-
statements = [];
|
|
6
|
-
constructor(schema, statements, tree) {
|
|
7
|
-
this.schema = schema;
|
|
8
|
-
this.tree = tree;
|
|
9
|
-
for (const statement of statements) {
|
|
10
|
-
this.statements.push(new LogicStatementReader(schema, statement));
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
getState() {
|
|
14
|
-
if (!this.tree.length)
|
|
15
|
-
return -1;
|
|
16
|
-
let curretNode = this.tree;
|
|
17
|
-
for (let i = 0; i < this.statements.length; i++) {
|
|
18
|
-
const value = this.statements[i].getValue(this);
|
|
19
|
-
curretNode = curretNode[value ? 1 : 0];
|
|
20
|
-
}
|
|
21
|
-
return curretNode;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { CondtionalTreeReader } from "./CondiotnalTreeReader";
|
|
2
|
-
import { StateSchema } from "./Schema/StateSchema";
|
|
3
|
-
import { StateLogicStatement } from "./State.types";
|
|
4
|
-
export declare class LogicStatementReader {
|
|
5
|
-
schema: StateSchema;
|
|
6
|
-
statement: StateLogicStatement;
|
|
7
|
-
constructor(schema: StateSchema, statement: StateLogicStatement);
|
|
8
|
-
getValue(treeReader: CondtionalTreeReader): boolean;
|
|
9
|
-
}
|