Class: CompoundBlockVolume
The Compound Block Volume is a collection of individual block volume definitions which, as a collection, define a larger volume of (sometimes non-contiguous) irregular shapes. This class is loosely based on the concept of CSG (Computational Solid Geometry) and allows a user to create complex volumes by building a stack of volumes and voids to make a larger single volume. For example - normally a creator would create a hollow cube by creating 6 "wall" surfaces for each face. With a Compound Block Volume, a creator can define a hollow cube by creating a single outer solid cube, and then defining a further single 'void' cube inside the larger one. Similarly, the Compound Block Volume can represent irregular shaped volumes (e.g. a tree consists of a trunk and lots of leaf cubes which are not necessarily contiguously placed). Each of the volumes added to the CompoundBlockVolume are (by default) relative to the origin set (either at construction or via one of the set functions). However, it is also possible to push volumes to the compound collection which are absolute in nature and are not affected by origin changes.
Constructors
new CompoundBlockVolume()
new CompoundBlockVolume(
origin
?):CompoundBlockVolume
Parameters
Parameter | Type | Description |
---|---|---|
origin ? | Vector3 | An optional world space origin on which to center the compound volume. If not specified, the origin is set to (0,0,0) |
Returns
Remarks
Create a CompoundBlockVolume object
Properties
capacity
readonly
capacity:number
Remarks
Return the 'capacity' of the bounding rectangle which represents the collection of volumes in the stack
items
readonly
items:CompoundBlockVolumeItem
[]
itemsAbsolute
readonly
itemsAbsolute:CompoundBlockVolumeItem
[]
volumeCount
readonly
volumeCount:number
Remarks
Return the number of volumes (positive and negative) in the volume stack
Methods
clear()
clear():
void
Returns
void
Remarks
Clear the contents of the volume stack
This function can't be called in read-only mode.
getBlockLocationIterator()
getBlockLocationIterator():
BlockLocationIterator
Returns
Remarks
Fetch a Block Location Iterator for the Compound Block Volume. This iterator will allow a creator to iterate across all of the selected volumes within the larger bounding area. Areas of a volume which have been overridden by a subtractive volume will not be included in the iterator step. (i.e. if you push a cube to the stack, and then push a subtractive volume to the same location, then the iterator will step over the initial volume because it is considered negative space) Note that the Block Locations returned by this iterator are in absolute world space (irrespective of whether the compound volume items pushed are absolute or relative)
This function can't be called in read-only mode.
getBoundingBox()
getBoundingBox():
BoundingBox
Returns
Remarks
Get the largest bounding box that represents a container for all of the volumes on the stack Note that the bounding box returned is represented in absolute world space (irrespective of whether the compound volume items pushed are absolute or relative)
This function can't be called in read-only mode.
getMax()
getMax():
Vector3
Returns
Remarks
Get the max block location of the outermost bounding rectangle which represents the volumes on the stack. Note that the max location returned is in absolute world space (irrespective of whether the compound volume items pushed are absolute or relative)
This function can't be called in read-only mode.
getMin()
getMin():
Vector3
Returns
Remarks
Get the min block location of the outermost bounding rectangle which represents the volumes on the stack. Note that the min location returned is in absolute world space (irrespective of whether the compound volume items pushed are absolute or relative)
This function can't be called in read-only mode.
getOrigin()
getOrigin():
Vector3
Returns
Remarks
Fetch the origin in world space of the compound volume
This function can't be called in read-only mode.
isEmpty()
isEmpty():
boolean
Returns
boolean
Remarks
Return a boolean which signals if there are any volume items pushed to the volume
This function can't be called in read-only mode.
isInside()
isInside(
worldLocation
):boolean
Parameters
Parameter | Type |
---|---|
worldLocation | Vector3 |
Returns
boolean
Remarks
Return a boolean representing whether or not a given absolute world space block location is inside a positive block volume. E.g. if the stack contains a large cube followed by a slightly smaller negative cube, and the test location is within the negative cube - the function will return false because it's not 'inside' a volume (it IS inside the bounding rectangle, but it is not inside a positively defined location)
This function can't be called in read-only mode.
peekLastVolume()
peekLastVolume(
forceRelativity
?):CompoundBlockVolumeItem