@divinevoxel/vlox 0.0.71 → 0.0.73
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/Main/InitDataGenerator.js +0 -9
- package/Contexts/Base/Remote/DataSync.types.d.ts +0 -5
- package/Contexts/Base/Remote/InitDataSync.js +17 -31
- package/Contexts/Render/DivineVoxelEngineRender.d.ts +1 -1
- package/Contexts/World/DivineVoxelEngineWorld.d.ts +1 -1
- package/Init/StartConstructor.js +7 -7
- package/Init/StartWorld.d.ts +1 -1
- package/Init/StartWorld.js +0 -12
- package/Math/Indexing.d.ts +12 -3
- package/Math/Indexing.js +24 -15
- package/Mesher/Functions/CompactVoxelMesh.d.ts +2 -2
- package/Mesher/Functions/CompactVoxelMesh.js +4 -5
- package/Mesher/Functions/MeshSection.d.ts +1 -1
- package/Mesher/Functions/MeshSection.js +72 -66
- package/Mesher/Functions/MeshTexture.d.ts +1 -1
- package/Mesher/Functions/MeshTexture.js +3 -4
- package/Mesher/Functions/MeshVoxel.js +20 -26
- 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 +108 -125
- package/Mesher/Geomtry/VoxelMesh.d.ts +1 -1
- package/Mesher/Geomtry/VoxelMesh.js +2 -2
- package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.d.ts +2 -9
- package/Mesher/{Tools → Geomtry}/VoxelMeshBVHBuilder.js +4 -16
- package/Mesher/Geomtry/{Buffers.d.ts → VoxelMeshBuffers.d.ts} +9 -8
- package/Mesher/Geomtry/VoxelMeshBuffers.js +49 -0
- package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.d.ts +10 -0
- package/Mesher/{Tools → Geomtry}/VoxelMeshVertexStructCursor.js +10 -0
- package/Mesher/Geomtry/index.d.ts +0 -1
- package/Mesher/Geomtry/index.js +0 -1
- package/Mesher/InitMesher.js +2 -11
- package/Mesher/InitTask.js +10 -22
- package/Mesher/Models/Common/BoundsFunctions.d.ts +1 -3
- package/Mesher/Models/Common/BoundsFunctions.js +0 -16
- package/Mesher/Models/Common/Calc/CalcConstants.js +14 -31
- package/Mesher/Models/Common/Calc/FaceDataCalc.d.ts +2 -8
- package/Mesher/Models/Common/Calc/FaceDataCalc.js +50 -52
- 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.d.ts +1 -5
- package/Mesher/Models/Nodes/Custom/Liquid/LiquidGeomtryNode.js +40 -42
- package/Mesher/Models/Nodes/GeometryNode.d.ts +3 -5
- package/Mesher/Models/Nodes/GeometryNode.js +1 -2
- package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.d.ts +3 -6
- package/Mesher/Models/Nodes/Ruled/BoxVoxelGeometryNode.js +55 -40
- package/Mesher/Models/Nodes/Ruled/QuadVoxelGeometryNode.d.ts +2 -6
- package/Mesher/Models/Nodes/Ruled/QuadVoxelGeometryNode.js +52 -51
- package/Mesher/Models/Nodes/Ruleless/RulelessBoxVoxelGeometryNode.d.ts +2 -6
- package/Mesher/Models/Nodes/Ruleless/RulelessBoxVoxelGeometryNode.js +18 -19
- package/Mesher/Models/Nodes/Ruleless/RulelessQuadVoxelGeometryNode.d.ts +2 -6
- package/Mesher/Models/Nodes/Ruleless/RulelessQuadVoxelGeometryNode.js +37 -40
- 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 +4 -5
- package/Mesher/Models/VoxelConstructor.js +23 -12
- package/Mesher/Models/{VoxelGeometryLookUp.d.ts → VoxelGeometryBuilderCacheSpace.d.ts} +6 -14
- package/Mesher/Models/{VoxelGeometryLookUp.js → VoxelGeometryBuilderCacheSpace.js} +26 -44
- package/Mesher/{Tools/VoxelMesherDataTool.d.ts → Models/VoxelModelBuilder.d.ts} +10 -8
- package/Mesher/{Tools/VoxelMesherDataTool.js → Models/VoxelModelBuilder.js} +44 -19
- package/Mesher/Models/VoxelModelConstructorRegister.js +3 -3
- package/Models/Defaults/CubeVoxelGeometry.js +4 -0
- package/Models/Defaults/CubeVoxelModels.js +344 -344
- package/Models/Defaults/LiquidVoxelModel.js +2 -2
- package/Models/Defaults/PanelVoxelModels.js +432 -432
- package/Models/Defaults/StairVoxelModel.js +576 -576
- package/Models/Examples.js +469 -456
- package/Models/Indexing/VoxelAOResultsIndex.d.ts +4 -4
- package/Models/Indexing/VoxelAOResultsIndex.js +15 -9
- package/Models/Indexing/VoxelFaceCullResultsIndex.d.ts +3 -3
- package/Models/Indexing/VoxelFaceCullResultsIndex.js +14 -9
- package/Models/Indexing/VoxelFaceTransparentResultsIndex.d.ts +1 -1
- package/Models/Indexing/VoxelFaceTransparentResultsIndex.js +1 -1
- package/Models/Rules/Functions/BuildFinalInputs.js +9 -7
- package/Models/Rules/Functions/BuildGeomtryInputs.js +8 -5
- package/Models/Rules/Functions/BuildRules.js +4 -4
- package/Models/Rules/{VoxelModelManager.d.ts → VoxelModelRuleBuilderRegister.d.ts} +1 -1
- package/Models/Rules/VoxelModelRuleBuilderRegister.js +178 -0
- package/Models/VoxelModel.types.d.ts +14 -5
- package/Renderer/Classes/SectorMesh.d.ts +3 -4
- package/Renderer/Classes/SectorMesh.js +6 -11
- package/Renderer/InitTasks.js +6 -7
- package/Renderer/MeshManager.js +2 -2
- package/Renderer/MeshRegister.js +2 -1
- package/Settings/EngineSettings.d.ts +1 -1
- package/Settings/EngineSettings.js +3 -5
- package/Settings/EngineSettings.types.d.ts +17 -18
- package/Settings/EngineSettings.types.js +16 -15
- package/Tasks/IWG/IWG.d.ts +2 -1
- package/Tasks/IWG/IWG.js +9 -3
- package/Tasks/IWG/Internal/Classes/BuildQueue.d.ts +11 -0
- package/Tasks/IWG/Internal/Classes/BuildQueue.js +49 -0
- package/Tasks/IWG/Internal/Classes/Generator.d.ts +6 -1
- package/Tasks/IWG/Internal/Classes/Generator.js +14 -2
- package/Tasks/IWG/Internal/Classes/IWGTaskBase.js +2 -2
- package/Tasks/IWG/Internal/Functions/getSectorState.js +4 -7
- package/Tasks/IWG/Internal/Functions/runBuildUpdate.js +21 -2
- package/Tasks/IWG/Internal/Functions/runWorldUpdate.js +5 -6
- package/Tasks/IWG/Internal/IWGTasks.d.ts +0 -4
- package/Tasks/IWG/Internal/IWGTasks.js +12 -31
- package/Tasks/IWG/Internal/IWGTools.d.ts +1 -1
- package/Tasks/IWG/Procedures/SaveAllSectors.js +2 -0
- package/Tasks/Propagation/Flow/FlowManager.d.ts +0 -2
- package/Tasks/Propagation/Flow/FlowManager.js +86 -87
- package/Tasks/Propagation/Flow/WorldFlow.js +2 -3
- package/Tasks/Propagation/Illumanation/WorldRGB.js +1 -2
- package/Tasks/Update/InitTasks.d.ts +2 -1
- package/Tasks/Update/InitTasks.js +6 -6
- package/Tasks/Update/UpdateTask.d.ts +3 -1
- package/Tasks/Update/UpdateTask.js +28 -2
- package/Tasks/Update/VoxelUpdate.js +21 -7
- package/Tasks/WorldGeneration/WorldGenBrush.js +2 -1
- package/Templates/Cursor/TemplateCursor.d.ts +2 -2
- package/Templates/Cursor/TemplateCursor.js +1 -2
- package/Templates/Functions/CreateTemplate.js +1 -1
- package/Templates/VoxelTemplate.js +6 -8
- 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/Brush.d.ts +1 -3
- package/Tools/Brush/Brush.js +43 -12
- package/Util/Binary/BinaryArrays.d.ts +6 -0
- package/Util/Binary/BinaryArrays.js +25 -0
- package/Util/Binary/BinaryBuffer.d.ts +29 -0
- package/Util/Binary/BinaryBuffer.js +130 -0
- package/Util/Binary/BinaryFunctions.d.ts +3 -0
- package/Util/Binary/BinaryFunctions.js +11 -0
- package/Util/StringPalette.d.ts +1 -0
- package/Util/StringPalette.js +8 -0
- package/Voxels/Cursor/DataCursor.interface.d.ts +5 -0
- package/Voxels/Cursor/VoxelCursor.d.ts +6 -6
- package/Voxels/Cursor/VoxelCursor.interface.d.ts +11 -16
- package/Voxels/Cursor/VoxelCursor.interface.js +35 -58
- package/Voxels/Cursor/VoxelCursor.js +13 -12
- package/Voxels/Cursor/VoxelLightData.d.ts +3 -4
- package/Voxels/Cursor/VoxelLightData.js +8 -7
- package/Voxels/Data/VoxelPalettesRegister.d.ts +8 -0
- package/Voxels/Data/VoxelPalettesRegister.js +8 -0
- package/Voxels/Data/VoxelTag.types.d.ts +56 -0
- package/Voxels/Data/VoxelTag.types.js +23 -0
- package/Voxels/{State → Data}/VoxelTagStates.d.ts +2 -2
- package/Voxels/{State → Data}/VoxelTagStates.js +5 -5
- package/Voxels/Data/VoxelTagsRegister.d.ts +9 -0
- package/Voxels/Data/VoxelTagsRegister.js +32 -0
- package/Voxels/Functions/BuildStateData.js +12 -12
- package/Voxels/Functions/BuildTagAndPaletteData.d.ts +13 -0
- package/Voxels/Functions/BuildTagAndPaletteData.js +55 -0
- package/Voxels/Indexes/VoxelIndex.js +3 -3
- package/Voxels/InitVoxelData.js +31 -73
- package/Voxels/State/Schema/StateSchema.d.ts +1 -1
- package/Voxels/Types/Voxel.types.d.ts +20 -42
- package/Voxels/Types/Voxel.types.js +6 -17
- package/Voxels/Types/VoxelModelCompiledData.types.d.ts +11 -13
- package/Voxels/Types/VoxelSubstances.types.d.ts +2 -15
- package/Voxels/Types/VoxelSubstances.types.js +1 -9
- package/World/Archive/Archive.types.d.ts +38 -34
- package/World/Archive/Functions/ArchiveArea.js +18 -30
- package/World/Archive/Functions/ArchiveSector.js +484 -213
- package/World/Archive/Functions/ImportSector.d.ts +3 -3
- package/World/Archive/Functions/ImportSector.js +205 -151
- package/World/Archive/Functions/Shared.d.ts +6 -0
- package/World/Archive/Functions/Shared.js +75 -0
- package/World/Archive/InitTasks.js +30 -13
- package/World/Cursor/SectionCursor.d.ts +3 -2
- package/World/Cursor/SectionCursor.js +9 -4
- package/World/Cursor/SectorCursor.d.ts +3 -2
- package/World/Cursor/SectorCursor.js +5 -3
- package/World/Cursor/WorldCursor.d.ts +2 -2
- package/World/Cursor/WorldCursor.js +6 -3
- package/World/Cursor/WorldVoxelCursor.d.ts +7 -7
- package/World/Cursor/WorldVoxelCursor.js +21 -24
- package/World/InitTasks.d.ts +1 -1
- package/World/Lock/WorldLock.d.ts +1 -1
- package/World/Section/Section.d.ts +31 -23
- package/World/Section/Section.js +116 -18
- package/World/Section/SectionState.d.ts +10 -0
- package/World/Section/SectionState.js +11 -0
- package/World/Sector/Sector.d.ts +24 -9
- package/World/Sector/Sector.js +92 -21
- package/World/Sector/SectorHeightMap.js +3 -5
- package/World/Sector/SectorState.d.ts +21 -0
- package/World/Sector/SectorState.js +28 -0
- package/World/WorldRegister.d.ts +4 -0
- package/World/WorldRegister.js +15 -3
- package/World/WorldSpaces.d.ts +6 -0
- package/World/WorldSpaces.js +25 -6
- package/package.json +1 -1
- package/Data/Cursor/DataCursor.interface.d.ts +0 -5
- package/Data/Cursor/DataCursor.interface.js +0 -2
- package/Data/Register/MappedDataRegister.d.ts +0 -5
- package/Data/Register/MappedDataRegister.js +0 -9
- package/Data/Register/MappedRegisterBase.d.ts +0 -14
- package/Data/Register/MappedRegisterBase.js +0 -50
- package/Data/Structs/StructBuilder.d.ts +0 -34
- package/Data/Structs/StructBuilder.js +0 -157
- package/Data/Structs/StructBuilder.types.d.ts +0 -30
- package/Mesher/Functions/CompactMesh.d.ts +0 -2
- package/Mesher/Functions/CompactMesh.js +0 -42
- package/Mesher/Geomtry/Buffers.js +0 -81
- 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/Models/Rules/VoxelModelManager.js +0 -82
- 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/Data/SubstanceDataTool.d.ts +0 -13
- package/Tools/Data/SubstanceDataTool.js +0 -51
- package/Voxels/Palettes/MaterialPalette.d.ts +0 -9
- package/Voxels/Palettes/MaterialPalette.js +0 -11
- package/Voxels/Palettes/SubstancePalette.d.ts +0 -9
- package/Voxels/Palettes/SubstancePalette.js +0 -11
- package/Voxels/Palettes/VoxelPalette.d.ts +0 -11
- package/Voxels/Palettes/VoxelPalette.js +0 -15
- package/Voxels/Segments/MaterialDataGenerator.d.ts +0 -6
- package/Voxels/Segments/MaterialDataGenerator.js +0 -12
- package/Voxels/Segments/SubstanceDataGenerator.d.ts +0 -6
- package/Voxels/Segments/SubstanceDataGenerator.js +0 -35
- package/Voxels/Segments/VoxelDataGenerator.d.ts +0 -10
- package/Voxels/Segments/VoxelDataGenerator.js +0 -56
- package/Voxels/Structs/Builder/SubstanceStructBuilder.d.ts +0 -2
- package/Voxels/Structs/Builder/SubstanceStructBuilder.js +0 -42
- package/Voxels/Structs/Builder/VoxelStructBuilder.d.ts +0 -2
- package/Voxels/Structs/Builder/VoxelStructBuilder.js +0 -68
- package/Voxels/Structs/SubstanceStruct.d.ts +0 -17
- package/Voxels/Structs/SubstanceStruct.js +0 -17
- package/Voxels/Structs/VoxelStruct.d.ts +0 -27
- package/Voxels/Structs/VoxelStruct.js +0 -29
- package/World/Section/SectionHeightMap.d.ts +0 -10
- package/World/Section/SectionHeightMap.js +0 -39
- package/World/Section/SectionStruct.d.ts +0 -8
- package/World/Section/SectionStruct.js +0 -29
- package/World/Section/SectionStructProperties.d.ts +0 -10
- package/World/Section/SectionStructProperties.js +0 -11
- package/World/Sector/SectorStruct.d.ts +0 -1
- package/World/Sector/SectorStruct.js +0 -46
- package/World/Sector/SectorStructIds.d.ts +0 -13
- package/World/Sector/SectorStructIds.js +0 -14
- package/World/Structs/WorldDataStructProperties.d.ts +0 -8
- package/World/Structs/WorldDataStructProperties.js +0 -9
- /package/Mesher/{VoxelShaderData.d.ts → Geomtry/VoxelShaderData.d.ts} +0 -0
- /package/Mesher/{VoxelShaderData.js → Geomtry/VoxelShaderData.js} +0 -0
- /package/{Data/Functions → Util/Binary}/Palettes.d.ts +0 -0
- /package/{Data/Functions → Util/Binary}/Palettes.js +0 -0
- /package/{Data/Structs/StructBuilder.types.js → Voxels/Cursor/DataCursor.interface.js} +0 -0
- /package/Voxels/{VoxelLevelReader.d.ts → Cursor/VoxelLevelReader.d.ts} +0 -0
- /package/Voxels/{VoxelLevelReader.js → Cursor/VoxelLevelReader.js} +0 -0
- /package/World/{Storage → Types}/WorldStorage.interface.d.ts +0 -0
- /package/World/{Storage → Types}/WorldStorage.interface.js +0 -0
|
@@ -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,18 +38,24 @@ 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];
|
|
46
45
|
this._sectionPosition.z = sectionPos[2];
|
|
47
46
|
return true;
|
|
48
47
|
}
|
|
48
|
+
getVoxelAtIndex(index) {
|
|
49
|
+
this._voxelIndex = index;
|
|
50
|
+
WorldSpaces.voxel.getPositionFromIndex(index, this._voxelPosition);
|
|
51
|
+
this.voxel.loadIn();
|
|
52
|
+
return this.voxel;
|
|
53
|
+
}
|
|
49
54
|
getVoxel(x, y, z) {
|
|
50
55
|
if (!this._section)
|
|
51
56
|
return null;
|
|
52
|
-
this._voxelIndex = WorldSpaces.voxel.getIndex(x, y, z);
|
|
53
57
|
WorldSpaces.voxel.getPosition(x, y, z, this._voxelPosition);
|
|
58
|
+
this._voxelIndex = WorldSpaces.voxel.getIndexFromPosition(this._voxelPosition.x, this._voxelPosition.y, this._voxelPosition.z);
|
|
54
59
|
this.voxel.loadIn();
|
|
55
60
|
return this.voxel;
|
|
56
61
|
}
|
|
@@ -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;
|
|
@@ -15,4 +15,5 @@ export declare class SectorCursor extends DataCursorInterface implements WorldSe
|
|
|
15
15
|
setSector(dimension: string, 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
|
+
getVoxelAtIndex(index: number): void;
|
|
18
19
|
}
|
|
@@ -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);
|
|
@@ -55,9 +54,12 @@ export class SectorCursor extends DataCursorInterface {
|
|
|
55
54
|
return null;
|
|
56
55
|
const section = this.getSection(x, y, z);
|
|
57
56
|
this._section = section;
|
|
58
|
-
this._voxelIndex = WorldSpaces.voxel.getIndex(x, y, z);
|
|
59
57
|
WorldSpaces.voxel.getPosition(x, y, z, this._voxelPosition);
|
|
58
|
+
this._voxelIndex = WorldSpaces.voxel.getIndexFromPosition(this._voxelPosition.x, this._voxelPosition.y, this._voxelPosition.z);
|
|
60
59
|
this.voxel.loadIn();
|
|
61
60
|
return this.voxel;
|
|
62
61
|
}
|
|
62
|
+
getVoxelAtIndex(index) {
|
|
63
|
+
this._voxelIndex = index;
|
|
64
|
+
}
|
|
63
65
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Vector3Like } from "@amodx/math";
|
|
2
2
|
import { SectorCursor } from "./SectorCursor";
|
|
3
|
-
import { DataCursorInterface } from "../../
|
|
4
|
-
export declare class WorldCursor
|
|
3
|
+
import { DataCursorInterface } from "../../Voxels/Cursor/DataCursor.interface";
|
|
4
|
+
export declare class WorldCursor implements DataCursorInterface {
|
|
5
5
|
sectorCursors: Map<number, Map<number, SectorCursor>>;
|
|
6
6
|
origin: Vector3Like;
|
|
7
7
|
dimension: string;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Vector3Like } from "@amodx/math";
|
|
2
2
|
import { SectorCursor } from "./SectorCursor";
|
|
3
3
|
import { WorldSpaces } from "../WorldSpaces";
|
|
4
|
-
import { DataCursorInterface } from "../../Data/Cursor/DataCursor.interface";
|
|
5
4
|
let cursorCache = [];
|
|
6
5
|
const tempPosition = Vector3Like.Create();
|
|
7
|
-
export class WorldCursor
|
|
6
|
+
export class WorldCursor {
|
|
8
7
|
sectorCursors = new Map();
|
|
9
8
|
origin = { x: 0, y: 0, z: 0 };
|
|
10
9
|
dimension = "";
|
|
@@ -25,6 +24,8 @@ export class WorldCursor extends DataCursorInterface {
|
|
|
25
24
|
return WorldSpaces.world.inBounds(x, y, z);
|
|
26
25
|
}
|
|
27
26
|
getSector(x, y, z) {
|
|
27
|
+
if (!this.inBounds(x, y, z))
|
|
28
|
+
return null;
|
|
28
29
|
const sectorPos = WorldSpaces.sector.getPosition(x, y, z, tempPosition);
|
|
29
30
|
const cx = sectorPos.x / WorldSpaces.sector.bounds.x - this.origin.x;
|
|
30
31
|
const cz = sectorPos.z / WorldSpaces.sector.bounds.z - this.origin.z;
|
|
@@ -32,8 +33,10 @@ export class WorldCursor extends DataCursorInterface {
|
|
|
32
33
|
let cursor = row?.get(cz);
|
|
33
34
|
if (!cursor) {
|
|
34
35
|
cursor = cursorCache.length ? cursorCache.shift() : new SectorCursor();
|
|
35
|
-
if (!cursor.setSector(this.dimension, sectorPos.x, sectorPos.y, sectorPos.z))
|
|
36
|
+
if (!cursor.setSector(this.dimension, sectorPos.x, sectorPos.y, sectorPos.z)) {
|
|
37
|
+
cursorCache.push(cursor);
|
|
36
38
|
return null;
|
|
39
|
+
}
|
|
37
40
|
if (!row) {
|
|
38
41
|
row = new Map();
|
|
39
42
|
this.sectorCursors.set(cx, row);
|
|
@@ -3,17 +3,17 @@ import { WorldSectionCursorInterface } from "./WorldSectionCursor.interface";
|
|
|
3
3
|
export declare class WorldVoxelCursor extends VoxelCursorInterface {
|
|
4
4
|
dataCursor: WorldSectionCursorInterface;
|
|
5
5
|
private _section;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
ids: Uint16Array;
|
|
7
|
+
light: Uint16Array;
|
|
8
|
+
level: Uint8Array;
|
|
9
|
+
state: Uint16Array;
|
|
10
|
+
mod: Uint16Array;
|
|
11
|
+
secondary: Uint16Array;
|
|
12
12
|
constructor(dataCursor: WorldSectionCursorInterface);
|
|
13
13
|
loadIn(): void;
|
|
14
14
|
/**
|
|
15
15
|
*
|
|
16
16
|
* @param mode 0 for add 1 for remove
|
|
17
17
|
*/
|
|
18
|
-
updateVoxel(mode: 0 | 1): boolean;
|
|
18
|
+
updateVoxel(mode: 0 | 1 | 2): boolean;
|
|
19
19
|
}
|
|
@@ -1,27 +1,13 @@
|
|
|
1
|
-
import { Section } from "../Section/index";
|
|
2
|
-
import { SectionStructProperties } from "../Section/SectionStructProperties";
|
|
3
1
|
import { VoxelCursorInterface } from "../../Voxels/Cursor/VoxelCursor.interface";
|
|
4
2
|
export class WorldVoxelCursor extends VoxelCursorInterface {
|
|
5
3
|
dataCursor;
|
|
6
4
|
_section;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
get level() {
|
|
14
|
-
return this._section.level;
|
|
15
|
-
}
|
|
16
|
-
get state() {
|
|
17
|
-
return this._section.state;
|
|
18
|
-
}
|
|
19
|
-
get secondary() {
|
|
20
|
-
return this._section.secondary;
|
|
21
|
-
}
|
|
22
|
-
get mod() {
|
|
23
|
-
return this._section.mod;
|
|
24
|
-
}
|
|
5
|
+
ids;
|
|
6
|
+
light;
|
|
7
|
+
level;
|
|
8
|
+
state;
|
|
9
|
+
mod;
|
|
10
|
+
secondary;
|
|
25
11
|
constructor(dataCursor) {
|
|
26
12
|
super();
|
|
27
13
|
this.dataCursor = dataCursor;
|
|
@@ -30,6 +16,12 @@ export class WorldVoxelCursor extends VoxelCursorInterface {
|
|
|
30
16
|
if (!this.dataCursor._section)
|
|
31
17
|
return;
|
|
32
18
|
this._section = this.dataCursor._section;
|
|
19
|
+
this.ids = this._section.ids;
|
|
20
|
+
this.light = this._section.light;
|
|
21
|
+
this.level = this._section.level;
|
|
22
|
+
this.state = this._section.state;
|
|
23
|
+
this.mod = this._section.mod;
|
|
24
|
+
this.secondary = this._section.secondary;
|
|
33
25
|
this._index = this.dataCursor._voxelIndex;
|
|
34
26
|
this.process();
|
|
35
27
|
}
|
|
@@ -38,17 +30,22 @@ export class WorldVoxelCursor extends VoxelCursorInterface {
|
|
|
38
30
|
* @param mode 0 for add 1 for remove
|
|
39
31
|
*/
|
|
40
32
|
updateVoxel(mode) {
|
|
41
|
-
Section.StateStruct.setData(this._section.sectionState);
|
|
42
33
|
const voxelPos = this.dataCursor._voxelPosition;
|
|
34
|
+
this.dataCursor._section?.sector.setStored(false);
|
|
43
35
|
if (mode == 0) {
|
|
44
|
-
|
|
36
|
+
this.dataCursor._section?.setBuried(this.dataCursor._voxelIndex, false);
|
|
37
|
+
this.dataCursor._section?.setHasVoxel(voxelPos.y, true);
|
|
45
38
|
return true;
|
|
46
39
|
}
|
|
47
40
|
if (mode == 1) {
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
this.dataCursor._section?.setBuried(this.dataCursor._voxelIndex, false);
|
|
42
|
+
this.dataCursor._section?.setHasVoxelDirty(voxelPos.y, true);
|
|
43
|
+
this.dataCursor._section?.setHasVoxel(voxelPos.y, false);
|
|
50
44
|
return true;
|
|
51
45
|
}
|
|
46
|
+
if (mode == 2) {
|
|
47
|
+
this.dataCursor._section?.setBuried(this.dataCursor._voxelIndex, false);
|
|
48
|
+
}
|
|
52
49
|
return false;
|
|
53
50
|
}
|
|
54
51
|
}
|
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,34 +1,42 @@
|
|
|
1
|
-
import { RemoteBinaryStruct } from "@amodx/binary/";
|
|
2
1
|
import { Sector } from "../Sector/Sector.js";
|
|
3
2
|
import { Vec3Array } from "@amodx/math";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
mod: Uint16Array;
|
|
15
|
-
/**The secondary state of the voxel. Can be set to a voxel id to make things like water logged voxels.
|
|
16
|
-
* But the main voxel itself must not use state or mod because the secondary voxel will use the same state and mod.
|
|
17
|
-
*/
|
|
18
|
-
secondary: Uint16Array;
|
|
3
|
+
import { VoxelDataArrays } from "Voxels/index.js";
|
|
4
|
+
export interface SectionData extends VoxelDataArrays {
|
|
5
|
+
/**Array of bit flags for the sector*/
|
|
6
|
+
flagArray: Uint8Array;
|
|
7
|
+
/**Y slice of the section to tell if there is voxels or not. Used for height maps. */
|
|
8
|
+
voxelMap: Uint8Array;
|
|
9
|
+
/**Y slice of the section to tell if the slice is dirty and voxelMap needs to be re-checked. */
|
|
10
|
+
dirtyMap: Uint8Array;
|
|
11
|
+
/**A bit array used to cache if a voxel is exposed or not. */
|
|
12
|
+
buried: Uint8Array;
|
|
19
13
|
}
|
|
20
|
-
export interface Section extends
|
|
14
|
+
export interface Section extends SectionData {
|
|
21
15
|
}
|
|
22
16
|
export declare class Section {
|
|
23
17
|
sector: Sector;
|
|
24
18
|
index: number;
|
|
25
19
|
static GetBufferSize(): number;
|
|
26
20
|
static GetArrayStartIndex(index: number): number;
|
|
27
|
-
static CreateNew(index: number, sectorBuffer: ArrayBufferLike):
|
|
28
|
-
static toObject(sector: Sector, index: number, data:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
constructor(sector: Sector, index: number, data: VoxelDataArrays);
|
|
21
|
+
static CreateNew(index: number, sectorBuffer: ArrayBufferLike): SectionData;
|
|
22
|
+
static toObject(sector: Sector, index: number, data: SectionData): Section;
|
|
23
|
+
readonly position: Vec3Array;
|
|
24
|
+
constructor(sector: Sector, index: number, data: SectionData);
|
|
32
25
|
getPosition(): Readonly<Vec3Array>;
|
|
33
|
-
|
|
26
|
+
setBitFlag(index: number, value: boolean): void;
|
|
27
|
+
getBitFlag(index: number): boolean;
|
|
28
|
+
isDirty(): boolean;
|
|
29
|
+
setDirty(dirty: boolean): void;
|
|
30
|
+
isInProgress(): boolean;
|
|
31
|
+
setInProgress(inProgress: boolean): void;
|
|
32
|
+
getBuried(index: number): boolean;
|
|
33
|
+
setBuried(index: number, value: boolean): void;
|
|
34
|
+
setHasVoxel(y: number, hasVoxel: boolean): void;
|
|
35
|
+
getHasVoxel(y: number): boolean;
|
|
36
|
+
setHasVoxelDirty(y: number, dirty: boolean): void;
|
|
37
|
+
getHasVoxelDirty(y: number): boolean;
|
|
38
|
+
getMinMax(): number[];
|
|
39
|
+
storeFlags(): Record<string, boolean>;
|
|
40
|
+
loadFlags(flags: Record<string, boolean>): void;
|
|
41
|
+
toJSON(): SectionData;
|
|
34
42
|
}
|
package/World/Section/Section.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import { RemoteBinaryStruct } from "@amodx/binary/";
|
|
2
1
|
import { WorldSpaces } from "../WorldSpaces.js";
|
|
3
2
|
import { Sector } from "../Sector/Sector.js";
|
|
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";
|
|
8
6
|
export class Section {
|
|
9
7
|
sector;
|
|
10
8
|
index;
|
|
11
9
|
static GetBufferSize() {
|
|
12
10
|
const voxelSize = WorldSpaces.section.volumne;
|
|
13
|
-
|
|
11
|
+
const height = WorldSpaces.section.bounds.y;
|
|
12
|
+
return forceMultipleOf2(
|
|
13
|
+
//----- state
|
|
14
|
+
//2 bytes for flags
|
|
15
|
+
2 +
|
|
16
|
+
//voxelMap
|
|
17
|
+
height / 8 +
|
|
18
|
+
//dirtyMap
|
|
19
|
+
height / 8 +
|
|
20
|
+
//bureid
|
|
21
|
+
voxelSize / 8 +
|
|
22
|
+
//---- voxel data arrays
|
|
14
23
|
//ids
|
|
15
24
|
voxelSize * 2 +
|
|
16
25
|
//light
|
|
@@ -25,13 +34,20 @@ export class Section {
|
|
|
25
34
|
voxelSize * 2);
|
|
26
35
|
}
|
|
27
36
|
static GetArrayStartIndex(index) {
|
|
28
|
-
return
|
|
29
|
-
Sector.GetHeaderSize() +
|
|
30
|
-
forceMultipleOf2(Section.StateStruct.structSize));
|
|
37
|
+
return index * Section.GetBufferSize() + Sector.GetHeaderSize();
|
|
31
38
|
}
|
|
32
39
|
static CreateNew(index, sectorBuffer) {
|
|
33
40
|
const voxelSize = WorldSpaces.section.volumne;
|
|
41
|
+
const height = WorldSpaces.section.bounds.y;
|
|
34
42
|
let bufferStart = this.GetArrayStartIndex(index);
|
|
43
|
+
const flagArray = new Uint8Array(sectorBuffer, bufferStart, 2);
|
|
44
|
+
bufferStart += 2;
|
|
45
|
+
const voxelMap = new Uint8Array(sectorBuffer, bufferStart, height / 8);
|
|
46
|
+
bufferStart += height / 8;
|
|
47
|
+
const dirtyMap = new Uint8Array(sectorBuffer, bufferStart, height / 8);
|
|
48
|
+
bufferStart += height / 8;
|
|
49
|
+
const buried = new Uint8Array(sectorBuffer, bufferStart, voxelSize / 8);
|
|
50
|
+
bufferStart += voxelSize / 8;
|
|
35
51
|
const ids = new Uint16Array(sectorBuffer, bufferStart, voxelSize);
|
|
36
52
|
bufferStart += voxelSize * 2;
|
|
37
53
|
const light = new Uint16Array(sectorBuffer, bufferStart, voxelSize);
|
|
@@ -45,6 +61,10 @@ export class Section {
|
|
|
45
61
|
const level = new Uint8Array(sectorBuffer, bufferStart, voxelSize);
|
|
46
62
|
bufferStart += voxelSize;
|
|
47
63
|
return {
|
|
64
|
+
flagArray,
|
|
65
|
+
voxelMap,
|
|
66
|
+
dirtyMap,
|
|
67
|
+
buried,
|
|
48
68
|
ids,
|
|
49
69
|
light,
|
|
50
70
|
level,
|
|
@@ -56,12 +76,21 @@ export class Section {
|
|
|
56
76
|
static toObject(sector, index, data) {
|
|
57
77
|
return new Section(sector, index, data);
|
|
58
78
|
}
|
|
59
|
-
|
|
60
|
-
sectionState;
|
|
79
|
+
position;
|
|
61
80
|
constructor(sector, index, data) {
|
|
62
81
|
this.sector = sector;
|
|
63
82
|
this.index = index;
|
|
64
|
-
this.
|
|
83
|
+
this.position = WorldSpaces.section.getPositionFromIndexVec3Array(this.index);
|
|
84
|
+
this.position[0] =
|
|
85
|
+
this.position[0] * WorldSpaces.section.bounds.x + this.sector.position[0];
|
|
86
|
+
this.position[1] =
|
|
87
|
+
this.position[1] * WorldSpaces.section.bounds.y + this.sector.position[1];
|
|
88
|
+
this.position[2] =
|
|
89
|
+
this.position[2] * WorldSpaces.section.bounds.z + this.sector.position[2];
|
|
90
|
+
this.flagArray = data.flagArray;
|
|
91
|
+
this.voxelMap = data.voxelMap;
|
|
92
|
+
this.dirtyMap = data.dirtyMap;
|
|
93
|
+
this.buried = data.buried;
|
|
65
94
|
this.ids = data.ids;
|
|
66
95
|
this.level = data.level;
|
|
67
96
|
this.light = data.light;
|
|
@@ -70,14 +99,83 @@ export class Section {
|
|
|
70
99
|
this.mod = data.mod;
|
|
71
100
|
}
|
|
72
101
|
getPosition() {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
102
|
+
return this.position;
|
|
103
|
+
}
|
|
104
|
+
setBitFlag(index, value) {
|
|
105
|
+
setBitArrayIndex(this.flagArray, index, value ? 1 : 0);
|
|
106
|
+
}
|
|
107
|
+
getBitFlag(index) {
|
|
108
|
+
return getBitArrayIndex(this.flagArray, index) == 1;
|
|
109
|
+
}
|
|
110
|
+
isDirty() {
|
|
111
|
+
return this.getBitFlag(SectionStateDefaultFlags.isDirty);
|
|
112
|
+
}
|
|
113
|
+
setDirty(dirty) {
|
|
114
|
+
this.setBitFlag(SectionStateDefaultFlags.isDirty, dirty);
|
|
115
|
+
if (dirty)
|
|
116
|
+
this.sector.setStored(false);
|
|
117
|
+
}
|
|
118
|
+
isInProgress() {
|
|
119
|
+
return this.getBitFlag(SectionStateDefaultFlags.inProgress);
|
|
120
|
+
}
|
|
121
|
+
setInProgress(inProgress) {
|
|
122
|
+
this.setBitFlag(SectionStateDefaultFlags.inProgress, inProgress);
|
|
123
|
+
}
|
|
124
|
+
getBuried(index) {
|
|
125
|
+
return getBitArrayIndex(this.buried, index) == 1;
|
|
126
|
+
}
|
|
127
|
+
setBuried(index, value) {
|
|
128
|
+
return setBitArrayIndex(this.buried, index, value ? 1 : 0);
|
|
129
|
+
}
|
|
130
|
+
setHasVoxel(y, hasVoxel) {
|
|
131
|
+
return setBitArrayIndex(this.voxelMap, y, hasVoxel ? 1 : 0);
|
|
132
|
+
}
|
|
133
|
+
getHasVoxel(y) {
|
|
134
|
+
return getBitArrayIndex(this.voxelMap, y) == 1;
|
|
135
|
+
}
|
|
136
|
+
setHasVoxelDirty(y, dirty) {
|
|
137
|
+
return setBitArrayIndex(this.dirtyMap, y, dirty ? 1 : 0);
|
|
138
|
+
}
|
|
139
|
+
getHasVoxelDirty(y) {
|
|
140
|
+
return getBitArrayIndex(this.dirtyMap, y) == 1;
|
|
141
|
+
}
|
|
142
|
+
getMinMax() {
|
|
143
|
+
let min = Infinity;
|
|
144
|
+
let max = -Infinity;
|
|
145
|
+
let i = WorldSpaces.section.bounds.y;
|
|
146
|
+
while (i--) {
|
|
147
|
+
if (this.getHasVoxel(i) || this.getHasVoxelDirty(i)) {
|
|
148
|
+
if (i < min)
|
|
149
|
+
min = i;
|
|
150
|
+
if (i > max)
|
|
151
|
+
max = i;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return [min, max];
|
|
155
|
+
}
|
|
156
|
+
storeFlags() {
|
|
157
|
+
const stored = {};
|
|
158
|
+
for (const key in SectionState.StoredFlags) {
|
|
159
|
+
stored[key] = this.getBitFlag(SectionState.StoredFlags[key]);
|
|
160
|
+
}
|
|
161
|
+
return stored;
|
|
162
|
+
}
|
|
163
|
+
loadFlags(flags) {
|
|
164
|
+
for (const flag in flags) {
|
|
165
|
+
const storedIndex = SectionState.StoredFlags[flag];
|
|
166
|
+
if (storedIndex === undefined) {
|
|
167
|
+
console.warn(`${flag} does not exist on stored flags for section`);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
this.setBitFlag(storedIndex, flags[flag]);
|
|
171
|
+
}
|
|
78
172
|
}
|
|
79
|
-
|
|
173
|
+
toJSON() {
|
|
80
174
|
return {
|
|
175
|
+
flagArray: this.flagArray,
|
|
176
|
+
voxelMap: this.voxelMap,
|
|
177
|
+
dirtyMap: this.dirtyMap,
|
|
178
|
+
buried: this.buried,
|
|
81
179
|
ids: this.ids,
|
|
82
180
|
light: this.light,
|
|
83
181
|
level: this.level,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare enum SectionStateDefaultFlags {
|
|
2
|
+
isDirty = 0,
|
|
3
|
+
inProgress = 1
|
|
4
|
+
}
|
|
5
|
+
export declare class SectionState {
|
|
6
|
+
/**The default bit flags for sections */
|
|
7
|
+
static Flags: typeof SectionStateDefaultFlags;
|
|
8
|
+
/**A record of bit flags tht are preserved when the section is stored */
|
|
9
|
+
static StoredFlags: Record<string, number>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export var SectionStateDefaultFlags;
|
|
2
|
+
(function (SectionStateDefaultFlags) {
|
|
3
|
+
SectionStateDefaultFlags[SectionStateDefaultFlags["isDirty"] = 0] = "isDirty";
|
|
4
|
+
SectionStateDefaultFlags[SectionStateDefaultFlags["inProgress"] = 1] = "inProgress";
|
|
5
|
+
})(SectionStateDefaultFlags || (SectionStateDefaultFlags = {}));
|
|
6
|
+
export class SectionState {
|
|
7
|
+
/**The default bit flags for sections */
|
|
8
|
+
static Flags = SectionStateDefaultFlags;
|
|
9
|
+
/**A record of bit flags tht are preserved when the section is stored */
|
|
10
|
+
static StoredFlags = {};
|
|
11
|
+
}
|
package/World/Sector/Sector.d.ts
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Section, VoxelDataArrays } from "../Section/Section.js";
|
|
1
|
+
import { Section, SectionData } from "../Section/Section.js";
|
|
3
2
|
import { Vec3Array } from "@amodx/math";
|
|
3
|
+
import { SectorStateDefaultBitFlags } from "./SectorState.js";
|
|
4
4
|
export interface SectorData {
|
|
5
|
-
position: Vec3Array;
|
|
6
5
|
buffer: ArrayBufferLike;
|
|
7
|
-
|
|
6
|
+
/**Array of timestamps for the sector */
|
|
7
|
+
timeStampArray: Uint32Array;
|
|
8
|
+
/**Array of bit flags for the sector*/
|
|
9
|
+
flagArray: Uint8Array;
|
|
10
|
+
sections: SectionData[];
|
|
8
11
|
}
|
|
9
12
|
export interface Sector extends SectorData {
|
|
10
13
|
}
|
|
11
14
|
export declare class Sector {
|
|
12
|
-
|
|
15
|
+
position: Vec3Array;
|
|
16
|
+
static FlagIds: typeof SectorStateDefaultBitFlags;
|
|
17
|
+
static TimeStampIds: typeof import("./SectorState.js").SectorStateDefaultTimeStamps;
|
|
13
18
|
static GetHeaderSize(): number;
|
|
14
19
|
static GetBufferSize(): number;
|
|
15
20
|
static CreateNew(): SectorData;
|
|
16
21
|
sections: Section[];
|
|
17
22
|
bufferView: Uint8Array;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
constructor(data: SectorData, position: Vec3Array);
|
|
24
|
+
getSection(x: number, y: number, z: number): Section;
|
|
25
|
+
setBitFlag(index: number, value: boolean): void;
|
|
26
|
+
getBitFlag(index: number): boolean;
|
|
27
|
+
setStored(stored: boolean): void;
|
|
28
|
+
isStored(): boolean;
|
|
29
|
+
setTimeStamp(index: number, value: number): void;
|
|
30
|
+
getTimeStamp(index: number): number;
|
|
31
|
+
getRenerableSections(): Generator<Section>;
|
|
32
|
+
anySectionDirty(): boolean;
|
|
33
|
+
storeFlags(): Record<string, boolean>;
|
|
34
|
+
loadFlags(flags: Record<string, boolean>): void;
|
|
35
|
+
storeTimestamps(): Record<string, number>;
|
|
36
|
+
loadTimestamps(stored: Record<string, number>): void;
|
|
22
37
|
toJSON(): SectorData;
|
|
23
38
|
}
|