Add VoxelArea() constructor (#12886)

This commit is contained in:
Jude Melton-Houghton 2022-10-22 08:05:45 -04:00 committed by GitHub
parent 7e11b8eb72
commit 8f1593e4e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 3 deletions

@ -8,7 +8,10 @@ VoxelArea = {
zstride = 0, zstride = 0,
} }
function VoxelArea:new(o) local class_metatable = {}
setmetatable(VoxelArea, class_metatable)
local function new(self, o)
o = o or {} o = o or {}
setmetatable(o, self) setmetatable(o, self)
self.__index = self self.__index = self
@ -20,6 +23,12 @@ function VoxelArea:new(o)
return o return o
end end
function class_metatable:__call(MinEdge, MaxEdge)
return new(self, {MinEdge = MinEdge, MaxEdge = MaxEdge})
end
VoxelArea.new = new
function VoxelArea:getExtent() function VoxelArea:getExtent()
local MaxEdge, MinEdge = self.MaxEdge, self.MinEdge local MaxEdge, MinEdge = self.MaxEdge, self.MinEdge
return vector_new( return vector_new(

@ -4485,7 +4485,8 @@ Methods
----------- -----------
A helper class for voxel areas. A helper class for voxel areas.
It can be created via `VoxelArea:new({MinEdge = pmin, MaxEdge = pmax})`. It can be created via `VoxelArea(pmin, pmax)` or
`VoxelArea:new({MinEdge = pmin, MaxEdge = pmax})`.
The coordinates are *inclusive*, like most other things in Minetest. The coordinates are *inclusive*, like most other things in Minetest.
### Methods ### Methods
@ -4533,7 +4534,7 @@ the axes in a voxel area:
If, for example: If, for example:
local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) local area = VoxelArea(emin, emax)
The values of `ystride` and `zstride` can be obtained using `area.ystride` and The values of `ystride` and `zstride` can be obtained using `area.ystride` and
`area.zstride`. `area.zstride`.