@divinevoxel/vlox 0.0.72 → 0.0.74
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/Contexts/Base/Remote/InitDataSync.js +4 -0
- package/Contexts/Base/Remote/InitWorldDataSync.js +1 -1
- package/Contexts/Render/DivineVoxelEngineRender.d.ts +2 -1
- package/Contexts/World/DivineVoxelEngineWorld.d.ts +2 -1
- package/Init/StartConstructor.js +8 -4
- package/Init/StartWorld.d.ts +1 -1
- package/Math/index.d.ts +5 -1
- package/Mesher/Functions/CompactVoxelMesh.d.ts +2 -2
- package/Mesher/Functions/CompactVoxelMesh.js +1 -1
- package/Mesher/Functions/CompactVoxelSectionMesh.d.ts +4 -0
- package/Mesher/Functions/CompactVoxelSectionMesh.js +112 -0
- package/Mesher/Functions/MeshSection.d.ts +1 -1
- package/Mesher/Functions/MeshSection.js +27 -22
- package/Mesher/Functions/MeshTexture.d.ts +1 -1
- package/Mesher/Functions/MeshTexture.js +3 -4
- package/Mesher/Geomtry/CompactedSectionVoxelMesh.d.ts +23 -0
- package/Mesher/Geomtry/CompactedSectionVoxelMesh.js +144 -0
- package/Mesher/Geomtry/Primitives/QuadVertexData.d.ts +12 -10
- package/Mesher/Geomtry/Primitives/QuadVertexData.js +49 -56
- package/Mesher/Geomtry/VoxelGeometryBuilder.d.ts +2 -2
- package/Mesher/Geomtry/VoxelGeometryBuilder.js +120 -199
- package/Mesher/Geomtry/VoxelMesh.d.ts +1 -1
- package/Mesher/Geomtry/VoxelMesh.js +4 -4
- package/Mesher/Geomtry/VoxelMeshBVHBuilder.d.ts +16 -0
- package/Mesher/Geomtry/VoxelMeshBVHBuilder.js +51 -0
- package/Mesher/Geomtry/VoxelMeshBVHStructCursor.d.ts +22 -0
- package/Mesher/Geomtry/VoxelMeshBVHStructCursor.js +78 -0
- package/Mesher/Geomtry/{Buffers.js → VoxelMeshBuffers.js} +2 -2
- package/Mesher/Geomtry/index.d.ts +0 -1
- package/Mesher/Geomtry/index.js +0 -1
- package/Mesher/InitMesher.js +1 -1
- package/Mesher/InitTask.js +9 -23
- package/Mesher/Models/Common/BoxGeometryNode.js +7 -7
- package/Mesher/Models/Common/Calc/CalcConstants.d.ts +1 -1
- package/Mesher/Models/Common/Calc/CalcConstants.js +1 -1
- package/Mesher/Models/Common/Calc/FaceDataCalc.d.ts +2 -2
- package/Mesher/Models/Common/Calc/FaceDataCalc.js +37 -30
- package/Mesher/Models/Common/QuadGeometryNode.js +2 -2
- package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.d.ts +2 -2
- package/Mesher/Models/Nodes/Custom/Liquid/FlowGradient.js +1 -1
- package/Mesher/Models/Nodes/Custom/Liquid/LiquidGeomtryNode.js +18 -24
- package/Mesher/Models/Nodes/GeometryNode.d.ts +2 -2
- package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.d.ts +1 -0
- package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.js +40 -31
- package/Mesher/Models/Nodes/Ruled/QuadVoxelGeometryNode.js +2 -2
- package/Mesher/Models/Nodes/Ruleless/RulelessBoxVoxelGeometryNode.js +2 -2
- package/Mesher/Models/Nodes/Ruleless/RulelessQuadVoxelGeometryNode.js +2 -2
- package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.d.ts +1 -1
- package/Mesher/{Tools → Models/Protocols}/OutlinedVoxelTool.js +1 -1
- package/Mesher/Models/RenderedMaterials.d.ts +6 -0
- package/Mesher/{RenderedMaterials.js → Models/RenderedMaterials.js} +2 -2
- package/Mesher/Models/VoxelConstructor.d.ts +6 -6
- package/Mesher/Models/VoxelConstructor.js +8 -8
- package/Mesher/Models/VoxelGeometryBuilderCacheSpace.d.ts +3 -5
- package/Mesher/Models/VoxelGeometryBuilderCacheSpace.js +8 -32
- package/Mesher/{Tools/VoxelMesherDataTool.d.ts → Models/VoxelModelBuilder.d.ts} +4 -5
- package/Mesher/{Tools/VoxelMesherDataTool.js → Models/VoxelModelBuilder.js} +5 -8
- package/Mesher/Types/Mesher.types.d.ts +1 -0
- package/Models/Defaults/CubeVoxelGeometry.js +4 -0
- package/Models/Defaults/CubeVoxelModels.js +360 -383
- package/Models/Defaults/LiquidVoxelModel.js +5 -5
- package/Models/Defaults/PanelVoxelModels.js +442 -468
- package/Models/Defaults/StairVoxelModel.js +582 -597
- package/Models/Examples.js +490 -498
- package/Models/Rules/Classes/VoxelRulesModel.d.ts +1 -1
- package/Models/Rules/Classes/VoxelRulesModel.js +3 -3
- package/Models/Rules/Functions/BuildFinalInputs.d.ts +1 -1
- package/Models/Rules/Functions/BuildFinalInputs.js +21 -19
- package/Models/Rules/Functions/BuildGeomtryInputs.js +8 -5
- package/Models/Rules/Functions/BuildRules.js +2 -2
- package/Models/Rules/{VoxelModelManager.d.ts → VoxelModelRuleBuilderRegister.d.ts} +1 -1
- package/Models/Rules/VoxelModelRuleBuilderRegister.js +178 -0
- package/Models/VoxelModel.types.d.ts +17 -8
- package/Renderer/Classes/DVESectionMeshes.d.ts +2 -3
- package/Renderer/Classes/SectorMesh.d.ts +3 -4
- package/Renderer/Classes/SectorMesh.js +6 -11
- package/Renderer/InitTasks.js +1 -10
- package/Renderer/MeshManager.d.ts +1 -1
- package/Renderer/MeshManager.js +26 -25
- package/Renderer/MeshRegister.d.ts +5 -5
- package/Renderer/MeshRegister.js +4 -3
- package/Settings/EngineSettings.d.ts +2 -1
- package/Settings/EngineSettings.js +6 -5
- package/Settings/EngineSettings.types.d.ts +24 -39
- package/Settings/EngineSettings.types.js +22 -29
- package/Tasks/Logic/InitTasks.d.ts +1 -0
- package/Tasks/Logic/InitTasks.js +10 -0
- package/Tasks/Logic/VoxelLogicUpdate.d.ts +3 -0
- package/Tasks/Logic/VoxelLogicUpdate.js +71 -0
- package/Tasks/Propagation/Explosion/ExplosionManager.d.ts +2 -2
- package/Tasks/Propagation/Explosion/ExplosionManager.js +1 -2
- package/Tasks/Propagation/Flow/FlowManager.d.ts +4 -4
- package/Tasks/Propagation/Flow/FlowRemove.d.ts +2 -2
- package/Tasks/Propagation/Flow/FlowUpdate.d.ts +2 -2
- package/Tasks/Propagation/Flow/WorldFlow.d.ts +2 -2
- package/Tasks/Propagation/Illumanation/RGBUpdate.d.ts +3 -3
- package/Tasks/Propagation/Illumanation/SunUpdate.d.ts +3 -3
- package/Tasks/Propagation/Illumanation/WorldRGB.d.ts +2 -2
- package/Tasks/Propagation/Illumanation/WorldSun.d.ts +2 -2
- package/Tasks/Propagation/Illumanation/WorldSun.js +8 -15
- package/Tasks/Propagation/InitTasks.js +4 -4
- package/Tasks/Propagation/Power/PowerUpdate.d.ts +3 -0
- package/Tasks/Propagation/Power/PowerUpdate.js +80 -0
- package/Tasks/Tasks.types.d.ts +2 -2
- package/Tasks/TasksIds.d.ts +2 -1
- package/Tasks/TasksIds.js +1 -0
- package/Tasks/Update/Common.d.ts +3 -0
- package/Tasks/Update/Common.js +41 -0
- package/Tasks/Update/EreaseUpdate.d.ts +3 -0
- package/Tasks/Update/EreaseUpdate.js +66 -0
- package/Tasks/Update/InitTasks.d.ts +2 -2
- package/Tasks/Update/InitTasks.js +3 -1
- package/Tasks/Update/PaintUpdate.d.ts +3 -0
- package/Tasks/Update/PaintUpdate.js +89 -0
- package/Tasks/Update/VoxelUpdate.d.ts +2 -5
- package/Tasks/Update/VoxelUpdate.js +7 -143
- package/Tasks/{Update/UpdateTask.d.ts → VoxelUpdateTask.d.ts} +16 -6
- package/Tasks/{Update/UpdateTask.js → VoxelUpdateTask.js} +44 -5
- package/Tasks/WorldGeneration/WorldGenBrush.d.ts +3 -3
- package/Tasks/WorldGeneration/WorldGenBrush.js +3 -3
- package/Tasks/WorldGeneration/WorldGenRegister.d.ts +1 -1
- package/Templates/Cursor/TemplateCursor.d.ts +2 -2
- package/Templates/Cursor/TemplateCursor.js +1 -2
- package/Templates/Functions/CreateTemplate.d.ts +1 -1
- package/Templates/VoxelTemplates.types.d.ts +1 -1
- package/Textures/Classes/CompiledTexture.d.ts +18 -0
- package/Textures/Classes/CompiledTexture.js +50 -0
- package/Textures/Classes/CompiledTextureAnimation.d.ts +12 -0
- package/Textures/Classes/CompiledTextureAnimation.js +27 -0
- package/Textures/Classes/TextureAnimationTexture.d.ts +10 -0
- package/Textures/Classes/TextureAnimationTexture.js +32 -0
- package/Textures/Functions/BuildTextureData.d.ts +10 -0
- package/Textures/Functions/BuildTextureData.js +205 -0
- package/Textures/Texture.types.d.ts +50 -64
- package/Textures/TextureManager.d.ts +8 -19
- package/Textures/TextureManager.js +28 -166
- package/Tools/Brush/AdvancedBrushTool.js +1 -1
- package/Tools/Brush/Brush.d.ts +3 -3
- package/Tools/Brush/Brush.js +40 -8
- package/Tools/Tasks/TasksTool.d.ts +1 -0
- package/Tools/Tasks/TasksTool.js +2 -0
- package/Util/Binary/BinaryArrays.d.ts +6 -0
- package/Util/Binary/BinaryArrays.js +25 -0
- package/Util/Binary/BinaryBuffer.d.ts +35 -0
- package/Util/Binary/BinaryBuffer.js +136 -0
- package/Util/Binary/{BitArray.d.ts → BinaryFunctions.d.ts} +1 -2
- package/Util/Binary/BinaryFunctions.js +11 -0
- package/{Mesher/Tools/VoxelMeshBVHBuilder.d.ts → Util/Binary/BinaryTree.d.ts} +1 -33
- package/Util/Binary/BinaryTree.js +104 -0
- package/Voxels/Cursor/DataCursor.interface.d.ts +5 -0
- package/Voxels/Cursor/VoxelCursor.interface.d.ts +8 -3
- package/Voxels/Cursor/VoxelCursor.interface.js +54 -13
- package/Voxels/Cursor/VoxelLightData.js +1 -1
- package/Voxels/Data/VoxelPalettesRegister.d.ts +0 -5
- package/Voxels/Data/VoxelPalettesRegister.js +0 -9
- package/Voxels/Data/VoxelTag.types.d.ts +17 -2
- package/Voxels/Data/VoxelTag.types.js +6 -1
- package/Voxels/Data/VoxelTagsRegister.js +12 -7
- package/Voxels/Functions/BuildStateData.d.ts +6 -6
- package/Voxels/Functions/BuildStateData.js +37 -37
- package/Voxels/Functions/BuildTagAndPaletteData.js +6 -3
- package/Voxels/Indexes/VoxelIndex.d.ts +2 -2
- package/Voxels/Indexes/VoxelIndex.js +16 -18
- package/Voxels/InitVoxelData.js +24 -21
- package/Voxels/Logic/Classes/Default/Types/VoxelPoweredLogicType.d.ts +5 -0
- package/Voxels/Logic/Classes/Default/Types/VoxelPoweredLogicType.js +6 -0
- package/Voxels/Logic/Classes/VoxelLogic.d.ts +11 -0
- package/Voxels/Logic/Classes/VoxelLogic.js +49 -0
- package/Voxels/Logic/Classes/VoxelLogicType.d.ts +4 -0
- package/Voxels/Logic/Classes/VoxelLogicType.js +2 -0
- package/Voxels/Logic/VoxelLogic.types.d.ts +23 -0
- package/Voxels/Logic/VoxelLogic.types.js +1 -0
- package/Voxels/Logic/VoxelLogicRegister.d.ts +9 -0
- package/Voxels/Logic/VoxelLogicRegister.js +15 -0
- package/Voxels/State/Schema/StateSchema.d.ts +1 -1
- package/Voxels/State/SchemaRegister.js +10 -5
- package/Voxels/State/State.types.d.ts +1 -1
- package/Voxels/State/StateTreeReader.d.ts +1 -1
- package/Voxels/State/StateTreeReader.js +2 -3
- package/Voxels/Types/Voxel.types.d.ts +21 -0
- package/Voxels/Types/Voxel.types.js +6 -2
- package/Voxels/Types/VoxelModelCompiledData.types.d.ts +6 -4
- package/World/Archive/Archive.types.d.ts +65 -42
- package/World/Archive/Classes/ArchiveClasses.d.ts +66 -0
- package/World/Archive/Classes/ArchiveClasses.js +78 -0
- package/World/Archive/Classes/ImportedSection.d.ts +40 -0
- package/World/Archive/Classes/ImportedSection.js +307 -0
- package/World/Archive/Classes/ImportedSector.d.ts +23 -0
- package/World/Archive/Classes/ImportedSector.js +97 -0
- package/World/Archive/Functions/ArchiveArea.d.ts +1 -1
- package/World/Archive/Functions/ArchiveArea.js +49 -54
- package/World/Archive/Functions/ArchiveSector.js +373 -282
- package/World/Archive/Functions/CreateArchivedSection.d.ts +3 -0
- package/World/Archive/Functions/CreateArchivedSection.js +207 -0
- package/World/Archive/Functions/ImportSector.d.ts +2 -4
- package/World/Archive/Functions/ImportSector.js +50 -220
- package/World/Archive/Functions/RemoveDuplicates.d.ts +3 -0
- package/World/Archive/Functions/RemoveDuplicates.js +92 -0
- package/World/Archive/Functions/Shared.d.ts +6 -0
- package/World/Archive/Functions/Shared.js +50 -0
- package/World/Archive/InitTasks.js +37 -23
- package/World/Cursor/SectionCursor.d.ts +3 -3
- package/World/Cursor/SectionCursor.js +2 -3
- package/World/Cursor/SectorCursor.d.ts +3 -3
- package/World/Cursor/SectorCursor.js +1 -2
- package/World/Cursor/WorldCursor.d.ts +6 -5
- package/World/Cursor/WorldCursor.js +17 -15
- package/World/Cursor/WorldVoxelCursor.d.ts +0 -4
- package/World/Cursor/WorldVoxelCursor.js +24 -14
- package/World/Dimension/Dimension.d.ts +4 -1
- package/World/Dimension/Dimension.js +8 -1
- package/World/InitTasks.d.ts +1 -1
- package/World/Lock/WorldLock.d.ts +1 -1
- package/World/Section/Section.d.ts +27 -18
- package/World/Section/Section.js +125 -21
- package/World/Section/SectionState.d.ts +12 -0
- package/World/Section/SectionState.js +13 -0
- package/World/Sector/Sector.d.ts +20 -6
- package/World/Sector/Sector.js +100 -17
- package/World/Sector/SectorHeightMap.js +2 -2
- package/World/Sector/SectorState.d.ts +16 -7
- package/World/Sector/SectorState.js +29 -15
- package/World/Types/WorldData.types.d.ts +2 -7
- package/World/Types/WorldStorage.interface.js +1 -0
- package/World/WorldRegister.d.ts +13 -9
- package/World/WorldRegister.js +24 -9
- package/World/WorldSpaces.d.ts +4 -0
- package/World/WorldSpaces.js +25 -12
- package/{Tasks/IWG → WorldSimulation}/Internal/Classes/DimensionSegment.d.ts +2 -2
- package/{Tasks/IWG → WorldSimulation}/Internal/Classes/Generator.d.ts +10 -3
- package/{Tasks/IWG → WorldSimulation}/Internal/Classes/Generator.js +19 -3
- package/WorldSimulation/Internal/Classes/Queues/BuildQueue.d.ts +5 -0
- package/WorldSimulation/Internal/Classes/Queues/BuildQueue.js +6 -0
- package/WorldSimulation/Internal/Classes/Queues/LogiccQueue.d.ts +5 -0
- package/WorldSimulation/Internal/Classes/Queues/LogiccQueue.js +6 -0
- package/{Tasks/IWG → WorldSimulation}/Internal/Classes/SectorVisistedMap.js +1 -1
- package/WorldSimulation/Internal/Classes/TickQueue.d.ts +12 -0
- package/WorldSimulation/Internal/Classes/TickQueue.js +58 -0
- package/WorldSimulation/Internal/Classes/WorldSimulationTaskBase.d.ts +15 -0
- package/{Tasks/IWG/Internal/Classes/IWGTaskBase.js → WorldSimulation/Internal/Classes/WorldSimulationTaskBase.js} +8 -8
- package/{Tasks/IWG → WorldSimulation}/Internal/Functions/cullSectors.js +9 -9
- package/{Tasks/IWG → WorldSimulation}/Internal/Functions/getSectorState.d.ts +1 -1
- package/{Tasks/IWG → WorldSimulation}/Internal/Functions/getSectorState.js +4 -4
- package/WorldSimulation/Internal/Functions/runTickUpdate.d.ts +2 -0
- package/{Tasks/IWG/Internal/Functions/runBuildUpdate.js → WorldSimulation/Internal/Functions/runTickUpdate.js} +38 -9
- package/{Tasks/IWG → WorldSimulation}/Internal/Functions/runWorldUpdate.js +13 -13
- package/{Tasks/IWG → WorldSimulation}/Internal/TaskRegister.d.ts +2 -2
- package/{Tasks/IWG → WorldSimulation}/Internal/TaskRegister.js +1 -1
- package/WorldSimulation/Internal/WorldSimulationDimensions.d.ts +6 -0
- package/{Tasks/IWG/Internal/IWGDimensions.js → WorldSimulation/Internal/WorldSimulationDimensions.js} +1 -1
- package/WorldSimulation/Internal/WorldSimulationTasks.d.ts +30 -0
- package/{Tasks/IWG/Internal/IWGTasks.js → WorldSimulation/Internal/WorldSimulationTasks.js} +14 -24
- package/WorldSimulation/Internal/WorldSimulationTools.d.ts +8 -0
- package/{Tasks/IWG/Internal/IWGTools.js → WorldSimulation/Internal/WorldSimulationTools.js} +1 -1
- package/{Tasks/IWG → WorldSimulation}/Procedures/InitalLoad.d.ts +1 -1
- package/{Tasks/IWG → WorldSimulation}/Procedures/InitalLoad.js +11 -11
- package/{Tasks/IWG → WorldSimulation}/Procedures/SaveAllSectors.js +7 -5
- package/{Tasks/IWG/IWG.d.ts → WorldSimulation/WorldSimulation.d.ts} +6 -5
- package/{Tasks/IWG/IWG.js → WorldSimulation/WorldSimulation.js} +29 -23
- package/{Tasks/IWG → WorldSimulation}/index.d.ts +1 -1
- package/{Tasks/IWG → WorldSimulation}/index.js +1 -1
- package/package.json +1 -1
- package/Mesher/Functions/CompactMesh.d.ts +0 -2
- package/Mesher/Functions/CompactMesh.js +0 -42
- package/Mesher/Geomtry/GeometryNormals.d.ts +0 -10
- package/Mesher/Geomtry/GeometryNormals.js +0 -52
- package/Mesher/Geomtry/MeshData.types.d.ts +0 -13
- package/Mesher/Geomtry/MeshData.types.js +0 -6
- package/Mesher/Geomtry/Tools/MesherDataTools.d.ts +0 -7
- package/Mesher/Geomtry/Tools/MesherDataTools.js +0 -12
- package/Mesher/Geomtry/Tools/index.d.ts +0 -1
- package/Mesher/Geomtry/Tools/index.js +0 -1
- package/Mesher/RenderedMaterials.d.ts +0 -6
- package/Mesher/Tools/VoxelMeshBVHBuilder.js +0 -216
- package/Models/Rules/VoxelModelManager.js +0 -82
- package/Tasks/IWG/Internal/Classes/IWGTaskBase.d.ts +0 -15
- package/Tasks/IWG/Internal/Functions/runBuildUpdate.d.ts +0 -2
- package/Tasks/IWG/Internal/IWGDimensions.d.ts +0 -6
- package/Tasks/IWG/Internal/IWGTasks.d.ts +0 -34
- package/Tasks/IWG/Internal/IWGTools.d.ts +0 -8
- package/Textures/TextureAnimations.d.ts +0 -4
- package/Textures/TextureAnimations.js +0 -35
- package/Textures/TextureArray.d.ts +0 -47
- package/Textures/TextureArray.js +0 -202
- package/Textures/TextureBuilder.d.ts +0 -13
- package/Textures/TextureBuilder.js +0 -120
- package/Textures/TextureRegister.d.ts +0 -9
- package/Textures/TextureRegister.js +0 -28
- package/Tools/DataCursor.interface.d.ts +0 -5
- package/Tools/DataCursor.interface.js +0 -2
- package/Util/Binary/BitArray.js +0 -16
- package/World/Structs/WorldDataStructProperties.d.ts +0 -8
- package/World/Structs/WorldDataStructProperties.js +0 -9
- /package/Mesher/Geomtry/{Buffers.d.ts → VoxelMeshBuffers.d.ts} +0 -0
- /package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.d.ts +0 -0
- /package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.js +0 -0
- /package/Mesher/{VoxelShaderData.d.ts → Geomtry/VoxelShaderData.d.ts} +0 -0
- /package/Mesher/{VoxelShaderData.js → Geomtry/VoxelShaderData.js} +0 -0
- /package/{World/Storage/WorldStorage.interface.js → Voxels/Cursor/DataCursor.interface.js} +0 -0
- /package/World/{Storage → Types}/WorldStorage.interface.d.ts +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Classes/DimensionSegment.js +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Classes/SectorState.d.ts +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Classes/SectorState.js +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Classes/SectorVisistedMap.d.ts +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Functions/cullSectors.d.ts +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Internal/Functions/runWorldUpdate.d.ts +0 -0
- /package/{Tasks/IWG → WorldSimulation}/Procedures/SaveAllSectors.d.ts +0 -0
|
@@ -11,33 +11,40 @@ function runArchiveSector(location) {
|
|
|
11
11
|
location: location,
|
|
12
12
|
});
|
|
13
13
|
const transfers = [];
|
|
14
|
-
if (archived.palettes.light)
|
|
15
|
-
|
|
16
|
-
if (archived.palettes.
|
|
17
|
-
transfers.push(archived.palettes.
|
|
18
|
-
if (archived.palettes.secondaryState)
|
|
19
|
-
transfers.push(archived.palettes.secondaryState.buffer);
|
|
14
|
+
// if (archived.palettes.light) transfers.push(archived.palettes.light.buffer);
|
|
15
|
+
// if (archived.palettes.state) transfers.push(archived.palettes.state.buffer);
|
|
16
|
+
if (archived.palettes.secondaryValue)
|
|
17
|
+
transfers.push(archived.palettes.secondaryValue.buffer);
|
|
20
18
|
for (const section of archived.sections) {
|
|
21
|
-
if (typeof section
|
|
19
|
+
if (typeof section == "string")
|
|
20
|
+
continue;
|
|
21
|
+
if (ArrayBuffer.isView(section.buffers.id?.buffer))
|
|
22
22
|
transfers.push(section.buffers.id.buffer);
|
|
23
|
-
if (
|
|
24
|
-
transfers.push(section.buffers.light.buffer);
|
|
25
|
-
if (typeof section.buffers.state != "number")
|
|
23
|
+
if (ArrayBuffer.isView(section.buffers.state?.buffer))
|
|
26
24
|
transfers.push(section.buffers.state.buffer);
|
|
27
|
-
if (
|
|
28
|
-
transfers.push(section.buffers.secondary.buffer);
|
|
29
|
-
if (typeof section.buffers.mod != "number")
|
|
25
|
+
if (ArrayBuffer.isView(section.buffers.mod?.buffer))
|
|
30
26
|
transfers.push(section.buffers.mod.buffer);
|
|
27
|
+
if (ArrayBuffer.isView(section.buffers.state?.buffer))
|
|
28
|
+
transfers.push(section.buffers.state.buffer);
|
|
29
|
+
if (ArrayBuffer.isView(section.buffers.light?.sun?.buffer))
|
|
30
|
+
transfers.push((section.buffers.light?.sun).buffer);
|
|
31
|
+
if (ArrayBuffer.isView(section.buffers.light?.red?.buffer))
|
|
32
|
+
transfers.push((section.buffers.light?.red).buffer);
|
|
33
|
+
if (ArrayBuffer.isView(section.buffers.light?.green?.buffer))
|
|
34
|
+
transfers.push((section.buffers.light?.green).buffer);
|
|
35
|
+
if (ArrayBuffer.isView(section.buffers.light?.blue?.buffer))
|
|
36
|
+
transfers.push((section.buffers.light?.blue).buffer);
|
|
37
|
+
if (ArrayBuffer.isView(section.buffers.secondary?.buffer))
|
|
38
|
+
transfers.push(section.buffers.secondary.buffer);
|
|
39
|
+
if (!section.palettes)
|
|
40
|
+
continue;
|
|
31
41
|
if (section.palettes.id)
|
|
32
42
|
transfers.push(section.palettes.id.buffer);
|
|
33
|
-
if (section.palettes.light)
|
|
34
|
-
|
|
35
|
-
if (section.palettes.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
transfers.push(section.palettes.mod.buffer);
|
|
39
|
-
if (section.palettes.secondaryState)
|
|
40
|
-
transfers.push(section.palettes.secondaryState.buffer);
|
|
43
|
+
// if (section.palettes.light) transfers.push(section.palettes.light.buffer);
|
|
44
|
+
// if (section.palettes.state) transfers.push(section.palettes.state.buffer);
|
|
45
|
+
// if (section.palettes.mod) transfers.push(section.palettes.mod.buffer);
|
|
46
|
+
if (section.palettes.secondaryValue)
|
|
47
|
+
transfers.push(section.palettes.secondaryValue.buffer);
|
|
41
48
|
if (section.palettes.secondaryId)
|
|
42
49
|
transfers.push(section.palettes.secondaryId.buffer);
|
|
43
50
|
}
|
|
@@ -49,8 +56,15 @@ export default function InitTasks(props) {
|
|
|
49
56
|
});
|
|
50
57
|
Threads.registerTask("archive-sector-binary", async (location) => {
|
|
51
58
|
const [archived] = runArchiveSector(location);
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
try {
|
|
60
|
+
const compressed = await compressBinaryObject(archived);
|
|
61
|
+
return [compressed, [compressed]];
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.log(archived);
|
|
65
|
+
console.error(error);
|
|
66
|
+
}
|
|
67
|
+
return [null, []];
|
|
54
68
|
});
|
|
55
69
|
Threads.registerTask("import-sector", async (archived) => {
|
|
56
70
|
const importedSector = ImportSector(archived, {});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { WorldVoxelCursor } from "./WorldVoxelCursor";
|
|
2
2
|
import { Vector3Like } from "@amodx/math";
|
|
3
|
-
import { DataCursorInterface } from "../../
|
|
3
|
+
import { DataCursorInterface } from "../../Voxels/Cursor/DataCursor.interface";
|
|
4
4
|
import { WorldSectionCursorInterface } from "./WorldSectionCursor.interface";
|
|
5
5
|
import type { Section } from "../Section/index";
|
|
6
|
-
export declare class SectionCursor
|
|
6
|
+
export declare class SectionCursor implements DataCursorInterface, WorldSectionCursorInterface {
|
|
7
7
|
_section: Section | null;
|
|
8
8
|
private voxel;
|
|
9
9
|
_voxelIndex: number;
|
|
@@ -11,7 +11,7 @@ export declare class SectionCursor extends DataCursorInterface implements WorldS
|
|
|
11
11
|
_sectionPosition: Vector3Like;
|
|
12
12
|
inBounds(x: number, y: number, z: number): boolean;
|
|
13
13
|
setSection(section: Section): boolean;
|
|
14
|
-
setSection(dimension:
|
|
14
|
+
setSection(dimension: number, x: number, y: number, z: number): boolean;
|
|
15
15
|
getVoxelAtIndex(index: number): WorldVoxelCursor;
|
|
16
16
|
getVoxel(x: number, y: number, z: number): WorldVoxelCursor | null;
|
|
17
17
|
}
|
|
@@ -2,8 +2,7 @@ import { WorldRegister } from "../WorldRegister";
|
|
|
2
2
|
import { WorldVoxelCursor } from "./WorldVoxelCursor";
|
|
3
3
|
import { WorldSpaces } from "../WorldSpaces";
|
|
4
4
|
import { Vector3Like } from "@amodx/math";
|
|
5
|
-
|
|
6
|
-
export class SectionCursor extends DataCursorInterface {
|
|
5
|
+
export class SectionCursor {
|
|
7
6
|
_section;
|
|
8
7
|
voxel = new WorldVoxelCursor(this);
|
|
9
8
|
_voxelIndex = 0;
|
|
@@ -39,7 +38,7 @@ export class SectionCursor extends DataCursorInterface {
|
|
|
39
38
|
const sector = WorldRegister.sectors.get(sectionOrDimension, x || 0, y || 0, z || 0);
|
|
40
39
|
if (!sector)
|
|
41
40
|
return false;
|
|
42
|
-
this._section = sector.getSection(y || 0);
|
|
41
|
+
this._section = sector.getSection(x || 0, y || 0, z || 0);
|
|
43
42
|
const sectionPos = this._section.getPosition();
|
|
44
43
|
this._sectionPosition.x = sectionPos[0];
|
|
45
44
|
this._sectionPosition.y = sectionPos[1];
|
|
@@ -2,9 +2,9 @@ import type { Section } from "../Section/index";
|
|
|
2
2
|
import type { Sector } from "../Sector/index";
|
|
3
3
|
import { WorldVoxelCursor } from "./WorldVoxelCursor";
|
|
4
4
|
import { Vector3Like } from "@amodx/math";
|
|
5
|
-
import { DataCursorInterface } from "../../
|
|
5
|
+
import { DataCursorInterface } from "../../Voxels/Cursor/DataCursor.interface";
|
|
6
6
|
import { WorldSectionCursorInterface } from "./WorldSectionCursor.interface";
|
|
7
|
-
export declare class SectorCursor
|
|
7
|
+
export declare class SectorCursor implements DataCursorInterface, WorldSectionCursorInterface {
|
|
8
8
|
_current: Sector | null;
|
|
9
9
|
_section: Section | null;
|
|
10
10
|
private voxel;
|
|
@@ -12,7 +12,7 @@ export declare class SectorCursor extends DataCursorInterface implements WorldSe
|
|
|
12
12
|
_voxelPosition: Vector3Like;
|
|
13
13
|
_sectorPosition: Vector3Like;
|
|
14
14
|
inBounds(x: number, y: number, z: number): boolean;
|
|
15
|
-
setSector(dimension:
|
|
15
|
+
setSector(dimension: number, x: number, y: number, z: number): boolean;
|
|
16
16
|
getSection(x: number, y: number, z: number): Section | null;
|
|
17
17
|
getVoxel(x: number, y: number, z: number): WorldVoxelCursor | null;
|
|
18
18
|
getVoxelAtIndex(index: number): void;
|
|
@@ -2,8 +2,7 @@ import { WorldRegister } from "../WorldRegister";
|
|
|
2
2
|
import { WorldVoxelCursor } from "./WorldVoxelCursor";
|
|
3
3
|
import { WorldSpaces } from "../WorldSpaces";
|
|
4
4
|
import { Vector3Like } from "@amodx/math";
|
|
5
|
-
|
|
6
|
-
export class SectorCursor extends DataCursorInterface {
|
|
5
|
+
export class SectorCursor {
|
|
7
6
|
_current = null;
|
|
8
7
|
_section;
|
|
9
8
|
voxel = new WorldVoxelCursor(this);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Vector3Like } from "@amodx/math";
|
|
2
2
|
import { SectorCursor } from "./SectorCursor";
|
|
3
|
-
import { DataCursorInterface } from "../../
|
|
4
|
-
export declare class WorldCursor
|
|
5
|
-
sectorCursors:
|
|
3
|
+
import { DataCursorInterface } from "../../Voxels/Cursor/DataCursor.interface";
|
|
4
|
+
export declare class WorldCursor implements DataCursorInterface {
|
|
5
|
+
sectorCursors: Record<number, Record<number, SectorCursor | null>>;
|
|
6
6
|
origin: Vector3Like;
|
|
7
|
-
dimension:
|
|
8
|
-
|
|
7
|
+
dimension: number;
|
|
8
|
+
_lastPosition: Vector3Like;
|
|
9
|
+
setFocalPoint(dimension: number, x: number, y: number, z: number): void;
|
|
9
10
|
inBounds(x: number, y: number, z: number): boolean;
|
|
10
11
|
getSector(x: number, y: number, z: number): SectorCursor | null;
|
|
11
12
|
getVoxel(x: number, y: number, z: number): import("./WorldVoxelCursor").WorldVoxelCursor | null;
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { Vector3Like } from "@amodx/math";
|
|
2
2
|
import { SectorCursor } from "./SectorCursor";
|
|
3
3
|
import { WorldSpaces } from "../WorldSpaces";
|
|
4
|
-
import { DataCursorInterface } from "../../Tools/DataCursor.interface";
|
|
5
4
|
let cursorCache = [];
|
|
6
5
|
const tempPosition = Vector3Like.Create();
|
|
7
|
-
export class WorldCursor
|
|
8
|
-
sectorCursors =
|
|
9
|
-
origin =
|
|
10
|
-
dimension =
|
|
6
|
+
export class WorldCursor {
|
|
7
|
+
sectorCursors = {};
|
|
8
|
+
origin = Vector3Like.Create();
|
|
9
|
+
dimension = 0;
|
|
10
|
+
_lastPosition = Vector3Like.Create();
|
|
11
11
|
setFocalPoint(dimension, x, y, z) {
|
|
12
12
|
const sectorPos = WorldSpaces.sector.getPosition(x, y, z, tempPosition);
|
|
13
|
-
for (const
|
|
14
|
-
for (const
|
|
15
|
-
|
|
13
|
+
for (const row in this.sectorCursors) {
|
|
14
|
+
for (const col in this.sectorCursors[row]) {
|
|
15
|
+
const cursor = this.sectorCursors[row][col];
|
|
16
|
+
if (!cursor)
|
|
17
|
+
continue;
|
|
18
|
+
cursorCache.push(cursor);
|
|
19
|
+
this.sectorCursors[row][col] = null;
|
|
16
20
|
}
|
|
17
21
|
}
|
|
18
|
-
this.sectorCursors.clear();
|
|
19
22
|
this.dimension = dimension;
|
|
20
23
|
this.origin.x = sectorPos.x / WorldSpaces.sector.bounds.x;
|
|
21
24
|
this.origin.y = sectorPos.y / WorldSpaces.sector.bounds.y;
|
|
22
25
|
this.origin.z = sectorPos.z / WorldSpaces.sector.bounds.z;
|
|
26
|
+
this.getSector(x, y, z);
|
|
23
27
|
}
|
|
24
28
|
inBounds(x, y, z) {
|
|
25
29
|
return WorldSpaces.world.inBounds(x, y, z);
|
|
@@ -30,19 +34,17 @@ export class WorldCursor extends DataCursorInterface {
|
|
|
30
34
|
const sectorPos = WorldSpaces.sector.getPosition(x, y, z, tempPosition);
|
|
31
35
|
const cx = sectorPos.x / WorldSpaces.sector.bounds.x - this.origin.x;
|
|
32
36
|
const cz = sectorPos.z / WorldSpaces.sector.bounds.z - this.origin.z;
|
|
33
|
-
let
|
|
34
|
-
let cursor = row?.get(cz);
|
|
37
|
+
let cursor = this.sectorCursors[cx]?.[cz];
|
|
35
38
|
if (!cursor) {
|
|
36
39
|
cursor = cursorCache.length ? cursorCache.shift() : new SectorCursor();
|
|
37
40
|
if (!cursor.setSector(this.dimension, sectorPos.x, sectorPos.y, sectorPos.z)) {
|
|
38
41
|
cursorCache.push(cursor);
|
|
39
42
|
return null;
|
|
40
43
|
}
|
|
41
|
-
if (!
|
|
42
|
-
|
|
43
|
-
this.sectorCursors.set(cx, row);
|
|
44
|
+
if (!this.sectorCursors[cx]) {
|
|
45
|
+
this.sectorCursors[cx] ??= {};
|
|
44
46
|
}
|
|
45
|
-
|
|
47
|
+
this.sectorCursors[cx][cz] = cursor;
|
|
46
48
|
}
|
|
47
49
|
return cursor;
|
|
48
50
|
}
|
|
@@ -11,9 +11,5 @@ export declare class WorldVoxelCursor extends VoxelCursorInterface {
|
|
|
11
11
|
secondary: Uint16Array;
|
|
12
12
|
constructor(dataCursor: WorldSectionCursorInterface);
|
|
13
13
|
loadIn(): void;
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @param mode 0 for add 1 for remove
|
|
17
|
-
*/
|
|
18
14
|
updateVoxel(mode: 0 | 1 | 2): boolean;
|
|
19
15
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { VoxelCursorInterface } from "../../Voxels/Cursor/VoxelCursor.interface";
|
|
2
2
|
export class WorldVoxelCursor extends VoxelCursorInterface {
|
|
3
3
|
dataCursor;
|
|
4
|
-
_section;
|
|
5
|
-
ids;
|
|
6
|
-
light;
|
|
7
|
-
level;
|
|
8
|
-
state;
|
|
9
|
-
mod;
|
|
10
|
-
secondary;
|
|
4
|
+
_section = null;
|
|
5
|
+
ids = new Uint16Array(1);
|
|
6
|
+
light = new Uint16Array(1);
|
|
7
|
+
level = new Uint8Array(1);
|
|
8
|
+
state = new Uint16Array(1);
|
|
9
|
+
mod = new Uint16Array(1);
|
|
10
|
+
secondary = new Uint16Array(1);
|
|
11
11
|
constructor(dataCursor) {
|
|
12
12
|
super();
|
|
13
13
|
this.dataCursor = dataCursor;
|
|
@@ -25,25 +25,35 @@ export class WorldVoxelCursor extends VoxelCursorInterface {
|
|
|
25
25
|
this._index = this.dataCursor._voxelIndex;
|
|
26
26
|
this.process();
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
* @param mode 0 for add 1 for remove
|
|
31
|
-
*/
|
|
32
28
|
updateVoxel(mode) {
|
|
33
29
|
const voxelPos = this.dataCursor._voxelPosition;
|
|
30
|
+
this.dataCursor._section?.sector.setStored(false);
|
|
31
|
+
this.dataCursor._section?.setBuried(this.dataCursor._voxelIndex, false);
|
|
34
32
|
if (mode == 0) {
|
|
35
|
-
this.
|
|
33
|
+
if (this.doesVoxelAffectLogic()) {
|
|
34
|
+
this.dataCursor._section?.setLogicDirty(true);
|
|
35
|
+
this.dataCursor._section?.setLogicSliceDirty(voxelPos.y, true);
|
|
36
|
+
this.dataCursor._section?.setVoxelLogicDirty(this.dataCursor._voxelIndex, true);
|
|
37
|
+
}
|
|
36
38
|
this.dataCursor._section?.setHasVoxel(voxelPos.y, true);
|
|
37
39
|
return true;
|
|
38
40
|
}
|
|
39
41
|
if (mode == 1) {
|
|
40
|
-
this.
|
|
42
|
+
if (this.doesVoxelAffectLogic()) {
|
|
43
|
+
this.dataCursor._section?.setLogicDirty(true);
|
|
44
|
+
this.dataCursor._section?.setLogicSliceDirty(voxelPos.y, true);
|
|
45
|
+
this.dataCursor._section?.setVoxelLogicDirty(this.dataCursor._voxelIndex, true);
|
|
46
|
+
}
|
|
41
47
|
this.dataCursor._section?.setHasVoxelDirty(voxelPos.y, true);
|
|
42
48
|
this.dataCursor._section?.setHasVoxel(voxelPos.y, false);
|
|
43
49
|
return true;
|
|
44
50
|
}
|
|
45
51
|
if (mode == 2) {
|
|
46
|
-
this.
|
|
52
|
+
if (this.doesVoxelAffectLogic()) {
|
|
53
|
+
this.dataCursor._section?.setLogicDirty(true);
|
|
54
|
+
this.dataCursor._section?.setLogicSliceDirty(voxelPos.y, true);
|
|
55
|
+
this.dataCursor._section?.setVoxelLogicDirty(this.dataCursor._voxelIndex, true);
|
|
56
|
+
}
|
|
47
57
|
}
|
|
48
58
|
return false;
|
|
49
59
|
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import { DimensionSyncData } from "../Types/WorldData.types";
|
|
1
2
|
import { Sector } from "../Sector";
|
|
2
3
|
export interface DimensionData {
|
|
3
4
|
id: string;
|
|
5
|
+
index: number;
|
|
4
6
|
sectors: Map<string, Sector>;
|
|
5
7
|
}
|
|
6
8
|
export interface Dimension extends DimensionData {
|
|
7
9
|
}
|
|
8
10
|
export declare class Dimension {
|
|
9
|
-
static CreateNew(
|
|
11
|
+
static CreateNew(index: number, id?: string): Dimension;
|
|
10
12
|
constructor(data: DimensionData);
|
|
11
13
|
set(sectorId: string, region: Sector): void;
|
|
12
14
|
delete(sectorId: string): void;
|
|
13
15
|
get(sectorId: string): Sector | undefined;
|
|
16
|
+
getData(): DimensionSyncData;
|
|
14
17
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export class Dimension {
|
|
2
|
-
static CreateNew(id) {
|
|
2
|
+
static CreateNew(index, id = "") {
|
|
3
3
|
return new Dimension({
|
|
4
4
|
id,
|
|
5
|
+
index,
|
|
5
6
|
sectors: new Map(),
|
|
6
7
|
});
|
|
7
8
|
}
|
|
@@ -17,4 +18,10 @@ export class Dimension {
|
|
|
17
18
|
get(sectorId) {
|
|
18
19
|
return this.sectors.get(sectorId);
|
|
19
20
|
}
|
|
21
|
+
getData() {
|
|
22
|
+
return {
|
|
23
|
+
id: this.id,
|
|
24
|
+
index: this.index,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
20
27
|
}
|
package/World/InitTasks.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Thread } from "@amodx/threads/";
|
|
2
|
-
import { WorldStorageInterface } from "./
|
|
2
|
+
import { WorldStorageInterface } from "./Types/WorldStorage.interface.js";
|
|
3
3
|
export default function ({ threads, worldStorage, }: {
|
|
4
4
|
threads: Thread[];
|
|
5
5
|
worldStorage?: WorldStorageInterface;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WorldLockTasks } from "../../Tasks/Tasks.types";
|
|
2
2
|
import type { LocationData } from "../../Math";
|
|
3
|
-
import { WorldStorageInterface } from "
|
|
3
|
+
import { WorldStorageInterface } from "../Types/WorldStorage.interface";
|
|
4
4
|
export declare class WorldLock {
|
|
5
5
|
static locks: Map<string, WorldLockTasks>;
|
|
6
6
|
static _loadMap: Map<string, boolean>;
|
|
@@ -1,28 +1,19 @@
|
|
|
1
1
|
import { Sector } from "../Sector/Sector.js";
|
|
2
|
-
import { Vec3Array } from "@amodx/math";
|
|
3
|
-
|
|
4
|
-
/**The runtime numeric voxel ids */
|
|
5
|
-
ids: Uint16Array;
|
|
6
|
-
/**The light data for voxels stored as 4 nibbles. 0 -> sun light 1 -> red light 2 -> green light 3 -> blue light */
|
|
7
|
-
light: Uint16Array;
|
|
8
|
-
/**The levels of the voxel. Used mainly for waterflow now. */
|
|
9
|
-
level: Uint8Array;
|
|
10
|
-
/**The state of the voxel. Used mainly be the voxel model system to get the model shape. */
|
|
11
|
-
state: Uint16Array;
|
|
12
|
-
/**The mod state of the voxel. Used mainly by the voxel model system to change model inputs. */
|
|
13
|
-
mod: Uint16Array;
|
|
14
|
-
/**The secondary state of the voxel. Can be set to a voxel id to make things like water logged voxels.
|
|
15
|
-
* But the main voxel itself must not use state or mod because the secondary voxel will use the same state and mod.
|
|
16
|
-
*/
|
|
17
|
-
secondary: Uint16Array;
|
|
18
|
-
}
|
|
2
|
+
import { Vec2Array, Vec3Array } from "@amodx/math";
|
|
3
|
+
import { VoxelDataArrays } from "Voxels/index.js";
|
|
19
4
|
export interface SectionData extends VoxelDataArrays {
|
|
5
|
+
/**Array of bit flags for the sector*/
|
|
6
|
+
flagArray: Uint8Array;
|
|
20
7
|
/**Y slice of the section to tell if there is voxels or not. Used for height maps. */
|
|
21
8
|
voxelMap: Uint8Array;
|
|
22
9
|
/**Y slice of the section to tell if the slice is dirty and voxelMap needs to be re-checked. */
|
|
23
10
|
dirtyMap: Uint8Array;
|
|
11
|
+
/**Y slice of the section to tell if the slice is needs it voxel logic checked.*/
|
|
12
|
+
logicDirtyMap: Uint8Array;
|
|
24
13
|
/**A bit array used to cache if a voxel is exposed or not. */
|
|
25
14
|
buried: Uint8Array;
|
|
15
|
+
/**A bit array used to cache if a voxel needs its logic evaled or not*/
|
|
16
|
+
logicDirty: Uint8Array;
|
|
26
17
|
}
|
|
27
18
|
export interface Section extends SectionData {
|
|
28
19
|
}
|
|
@@ -33,14 +24,32 @@ export declare class Section {
|
|
|
33
24
|
static GetArrayStartIndex(index: number): number;
|
|
34
25
|
static CreateNew(index: number, sectorBuffer: ArrayBufferLike): SectionData;
|
|
35
26
|
static toObject(sector: Sector, index: number, data: SectionData): Section;
|
|
27
|
+
readonly position: Vec3Array;
|
|
36
28
|
constructor(sector: Sector, index: number, data: SectionData);
|
|
37
29
|
getPosition(): Readonly<Vec3Array>;
|
|
30
|
+
setBitFlag(index: number, value: boolean): void;
|
|
31
|
+
getBitFlag(index: number): boolean;
|
|
32
|
+
isDisplayDirty(): boolean;
|
|
33
|
+
setDisplayDirty(dirty: boolean): void;
|
|
34
|
+
isLogicDirty(): boolean;
|
|
35
|
+
setLogicDirty(dirty: boolean): void;
|
|
36
|
+
isLogicSliceDirty(y: number): boolean;
|
|
37
|
+
setLogicSliceDirty(y: number, dirty: boolean): void;
|
|
38
|
+
getVoxelLogicDirty(index: number): boolean;
|
|
39
|
+
setVoxelLogicDirty(index: number, value: boolean): void;
|
|
40
|
+
isInProgress(): boolean;
|
|
41
|
+
setInProgress(inProgress: boolean): void;
|
|
42
|
+
isLogicUpdateInProgress(): boolean;
|
|
43
|
+
setLogicUpdateInProgress(inProgress: boolean): void;
|
|
38
44
|
getBuried(index: number): boolean;
|
|
39
45
|
setBuried(index: number, value: boolean): void;
|
|
40
46
|
setHasVoxel(y: number, hasVoxel: boolean): void;
|
|
41
47
|
getHasVoxel(y: number): boolean;
|
|
42
48
|
setHasVoxelDirty(y: number, dirty: boolean): void;
|
|
43
49
|
getHasVoxelDirty(y: number): boolean;
|
|
44
|
-
getMinMax():
|
|
50
|
+
getMinMax(): Vec2Array;
|
|
51
|
+
getLogicMinMax(): Vec2Array;
|
|
52
|
+
storeFlags(): Record<string, boolean>;
|
|
53
|
+
loadFlags(flags: Record<string, boolean>): void;
|
|
45
54
|
toJSON(): SectionData;
|
|
46
55
|
}
|
package/World/Section/Section.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { WorldSpaces } from "../WorldSpaces.js";
|
|
2
2
|
import { Sector } from "../Sector/Sector.js";
|
|
3
|
-
import { getBitArrayIndex, setBitArrayIndex, } from "../../Util/Binary/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const position = [0, 0, 0];
|
|
3
|
+
import { getBitArrayIndex, setBitArrayIndex, } from "../../Util/Binary/BinaryArrays.js";
|
|
4
|
+
import { SectionState, SectionStateDefaultFlags } from "./SectionState.js";
|
|
5
|
+
import { forceMultipleOf2 } from "../../Util/Binary/BinaryFunctions.js";
|
|
6
|
+
const temp = [0, 0];
|
|
8
7
|
export class Section {
|
|
9
8
|
sector;
|
|
10
9
|
index;
|
|
@@ -12,18 +11,20 @@ export class Section {
|
|
|
12
11
|
const voxelSize = WorldSpaces.section.volumne;
|
|
13
12
|
const height = WorldSpaces.section.bounds.y;
|
|
14
13
|
return forceMultipleOf2(
|
|
15
|
-
//-----
|
|
16
|
-
//
|
|
17
|
-
|
|
14
|
+
//----- state
|
|
15
|
+
//2 bytes for flags
|
|
16
|
+
2 +
|
|
17
|
+
//voxelMap
|
|
18
|
+
height / 8 +
|
|
18
19
|
//dirtyMap
|
|
19
20
|
height / 8 +
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
//logicDirtyMap
|
|
22
|
+
height / 8 +
|
|
23
|
+
//bureid
|
|
22
24
|
voxelSize / 8 +
|
|
23
|
-
//
|
|
24
|
-
voxelSize
|
|
25
|
-
|
|
26
|
-
//voxel data
|
|
25
|
+
//logic dirty
|
|
26
|
+
voxelSize / 8 +
|
|
27
|
+
//---- voxel data arrays
|
|
27
28
|
//ids
|
|
28
29
|
voxelSize * 2 +
|
|
29
30
|
//light
|
|
@@ -42,14 +43,20 @@ export class Section {
|
|
|
42
43
|
}
|
|
43
44
|
static CreateNew(index, sectorBuffer) {
|
|
44
45
|
const voxelSize = WorldSpaces.section.volumne;
|
|
45
|
-
let bufferStart = this.GetArrayStartIndex(index);
|
|
46
46
|
const height = WorldSpaces.section.bounds.y;
|
|
47
|
+
let bufferStart = this.GetArrayStartIndex(index);
|
|
48
|
+
const flagArray = new Uint8Array(sectorBuffer, bufferStart, 2);
|
|
49
|
+
bufferStart += 2;
|
|
47
50
|
const voxelMap = new Uint8Array(sectorBuffer, bufferStart, height / 8);
|
|
48
51
|
bufferStart += height / 8;
|
|
49
52
|
const dirtyMap = new Uint8Array(sectorBuffer, bufferStart, height / 8);
|
|
50
53
|
bufferStart += height / 8;
|
|
54
|
+
const logicDirtyMap = new Uint8Array(sectorBuffer, bufferStart, height / 8);
|
|
55
|
+
bufferStart += height / 8;
|
|
51
56
|
const buried = new Uint8Array(sectorBuffer, bufferStart, voxelSize / 8);
|
|
52
57
|
bufferStart += voxelSize / 8;
|
|
58
|
+
const logicDirty = new Uint8Array(sectorBuffer, bufferStart, voxelSize / 8);
|
|
59
|
+
bufferStart += voxelSize / 8;
|
|
53
60
|
const ids = new Uint16Array(sectorBuffer, bufferStart, voxelSize);
|
|
54
61
|
bufferStart += voxelSize * 2;
|
|
55
62
|
const light = new Uint16Array(sectorBuffer, bufferStart, voxelSize);
|
|
@@ -63,8 +70,11 @@ export class Section {
|
|
|
63
70
|
const level = new Uint8Array(sectorBuffer, bufferStart, voxelSize);
|
|
64
71
|
bufferStart += voxelSize;
|
|
65
72
|
return {
|
|
73
|
+
flagArray,
|
|
66
74
|
voxelMap,
|
|
67
75
|
dirtyMap,
|
|
76
|
+
logicDirtyMap,
|
|
77
|
+
logicDirty,
|
|
68
78
|
buried,
|
|
69
79
|
ids,
|
|
70
80
|
light,
|
|
@@ -77,11 +87,22 @@ export class Section {
|
|
|
77
87
|
static toObject(sector, index, data) {
|
|
78
88
|
return new Section(sector, index, data);
|
|
79
89
|
}
|
|
90
|
+
position;
|
|
80
91
|
constructor(sector, index, data) {
|
|
81
92
|
this.sector = sector;
|
|
82
93
|
this.index = index;
|
|
94
|
+
this.position = WorldSpaces.section.getPositionFromIndexVec3Array(this.index);
|
|
95
|
+
this.position[0] =
|
|
96
|
+
this.position[0] * WorldSpaces.section.bounds.x + this.sector.position[0];
|
|
97
|
+
this.position[1] =
|
|
98
|
+
this.position[1] * WorldSpaces.section.bounds.y + this.sector.position[1];
|
|
99
|
+
this.position[2] =
|
|
100
|
+
this.position[2] * WorldSpaces.section.bounds.z + this.sector.position[2];
|
|
101
|
+
this.flagArray = data.flagArray;
|
|
83
102
|
this.voxelMap = data.voxelMap;
|
|
84
103
|
this.dirtyMap = data.dirtyMap;
|
|
104
|
+
this.logicDirty = data.logicDirty;
|
|
105
|
+
this.logicDirtyMap = data.logicDirtyMap;
|
|
85
106
|
this.buried = data.buried;
|
|
86
107
|
this.ids = data.ids;
|
|
87
108
|
this.level = data.level;
|
|
@@ -91,11 +112,56 @@ export class Section {
|
|
|
91
112
|
this.mod = data.mod;
|
|
92
113
|
}
|
|
93
114
|
getPosition() {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
115
|
+
return this.position;
|
|
116
|
+
}
|
|
117
|
+
setBitFlag(index, value) {
|
|
118
|
+
setBitArrayIndex(this.flagArray, index, value ? 1 : 0);
|
|
119
|
+
}
|
|
120
|
+
getBitFlag(index) {
|
|
121
|
+
return getBitArrayIndex(this.flagArray, index) == 1;
|
|
122
|
+
}
|
|
123
|
+
isDisplayDirty() {
|
|
124
|
+
return this.getBitFlag(SectionStateDefaultFlags.displayDirty);
|
|
125
|
+
}
|
|
126
|
+
setDisplayDirty(dirty) {
|
|
127
|
+
this.setBitFlag(SectionStateDefaultFlags.displayDirty, dirty);
|
|
128
|
+
if (dirty) {
|
|
129
|
+
this.sector.setStored(false);
|
|
130
|
+
this.sector.setDisplayDirty(true);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
isLogicDirty() {
|
|
134
|
+
return this.getBitFlag(SectionStateDefaultFlags.logicDirty);
|
|
135
|
+
}
|
|
136
|
+
setLogicDirty(dirty) {
|
|
137
|
+
this.setBitFlag(SectionStateDefaultFlags.logicDirty, dirty);
|
|
138
|
+
if (dirty) {
|
|
139
|
+
this.sector.setLogicDirty(true);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
isLogicSliceDirty(y) {
|
|
143
|
+
return getBitArrayIndex(this.logicDirtyMap, y) == 1;
|
|
144
|
+
}
|
|
145
|
+
setLogicSliceDirty(y, dirty) {
|
|
146
|
+
setBitArrayIndex(this.logicDirtyMap, y, dirty ? 1 : 0);
|
|
147
|
+
}
|
|
148
|
+
getVoxelLogicDirty(index) {
|
|
149
|
+
return getBitArrayIndex(this.logicDirty, index) == 1;
|
|
150
|
+
}
|
|
151
|
+
setVoxelLogicDirty(index, value) {
|
|
152
|
+
return setBitArrayIndex(this.logicDirty, index, value ? 1 : 0);
|
|
153
|
+
}
|
|
154
|
+
isInProgress() {
|
|
155
|
+
return this.getBitFlag(SectionStateDefaultFlags.inProgress);
|
|
156
|
+
}
|
|
157
|
+
setInProgress(inProgress) {
|
|
158
|
+
this.setBitFlag(SectionStateDefaultFlags.inProgress, inProgress);
|
|
159
|
+
}
|
|
160
|
+
isLogicUpdateInProgress() {
|
|
161
|
+
return this.getBitFlag(SectionStateDefaultFlags.logicUpdateInProgress);
|
|
162
|
+
}
|
|
163
|
+
setLogicUpdateInProgress(inProgress) {
|
|
164
|
+
this.setBitFlag(SectionStateDefaultFlags.logicUpdateInProgress, inProgress);
|
|
99
165
|
}
|
|
100
166
|
getBuried(index) {
|
|
101
167
|
return getBitArrayIndex(this.buried, index) == 1;
|
|
@@ -127,10 +193,48 @@ export class Section {
|
|
|
127
193
|
max = i;
|
|
128
194
|
}
|
|
129
195
|
}
|
|
130
|
-
|
|
196
|
+
temp[0] = min;
|
|
197
|
+
temp[1] = max;
|
|
198
|
+
return temp;
|
|
199
|
+
}
|
|
200
|
+
getLogicMinMax() {
|
|
201
|
+
let min = Infinity;
|
|
202
|
+
let max = -Infinity;
|
|
203
|
+
let i = WorldSpaces.section.bounds.y;
|
|
204
|
+
while (i--) {
|
|
205
|
+
if (this.isLogicSliceDirty(i)) {
|
|
206
|
+
if (i < min)
|
|
207
|
+
min = i;
|
|
208
|
+
if (i > max)
|
|
209
|
+
max = i;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
temp[0] = min;
|
|
213
|
+
temp[1] = max;
|
|
214
|
+
return temp;
|
|
215
|
+
}
|
|
216
|
+
storeFlags() {
|
|
217
|
+
const stored = {};
|
|
218
|
+
for (const key in SectionState.StoredFlags) {
|
|
219
|
+
stored[key] = this.getBitFlag(SectionState.StoredFlags[key]);
|
|
220
|
+
}
|
|
221
|
+
return stored;
|
|
222
|
+
}
|
|
223
|
+
loadFlags(flags) {
|
|
224
|
+
for (const flag in flags) {
|
|
225
|
+
const storedIndex = SectionState.StoredFlags[flag];
|
|
226
|
+
if (storedIndex === undefined) {
|
|
227
|
+
console.warn(`${flag} does not exist on stored flags for section`);
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
this.setBitFlag(storedIndex, flags[flag]);
|
|
231
|
+
}
|
|
131
232
|
}
|
|
132
233
|
toJSON() {
|
|
133
234
|
return {
|
|
235
|
+
flagArray: this.flagArray,
|
|
236
|
+
logicDirtyMap: this.logicDirtyMap,
|
|
237
|
+
logicDirty: this.logicDirty,
|
|
134
238
|
voxelMap: this.voxelMap,
|
|
135
239
|
dirtyMap: this.dirtyMap,
|
|
136
240
|
buried: this.buried,
|