38 static constexpr BlockID
AirID = 0;
39 static constexpr BlockID MultiblockID = 1;
42 Block(BlockID
id, Layer layer,
const Geometry* geo, RotationMode rotationMode);
43 virtual ~Block() =
default;
45 virtual bool onInteract(
InteractContext* context)
const {
return false; };
47 virtual void onPlaced(
const BlockSetContext& context)
const {};
50 static Block& multiblock();
52 bool isAir()
const {
return m_id ==
AirID; }
53 bool isMultiblock()
const {
return m_id == MultiblockID; }
55 BlockID getID()
const {
return m_id; }
57 const Geometry* geometry()
const {
return m_geometry; }
59 bool isSolid()
const {
return m_isSolid; }
60 bool isVoxel()
const {
return m_isVoxel; }
61 bool facingUp()
const {
return m_faceUp; }
62 Layer layer()
const {
return m_layer; }
63 RotationMode rotationMode()
const {
return m_rotationMode; }
65 Block& rotationMode(RotationMode mode);
66 Block& isSolid(
bool solid);
67 Block& isVoxel(
bool voxel);
69 Block& facingUp(
bool state);
71 Block& material(
const BlockMaterial& mat);
72 const BlockMaterial& material()
const;
77 bool m_faceUp =
false;
79 RotationMode m_rotationMode = RotationMode::None;
81 const Geometry* m_geometry;
82 BlockMaterial m_material;