up3
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/df-mc/dragonfly/server/block/cube"
|
||||
"github.com/df-mc/dragonfly/server/world"
|
||||
)
|
||||
|
||||
// Slab is the model of a slab-like block, which is either a half block or a full block, depending on if the
|
||||
// slab is double.
|
||||
type Slab struct {
|
||||
// Double and Top specify if the Slab is a double slab and if it's in the top slot respectively. If Double is true,
|
||||
// the BBox returned is always a full block.
|
||||
Double, Top bool
|
||||
}
|
||||
|
||||
// BBox returns either a physics.BBox spanning a full block or a half block in the top/bottom part of the block,
|
||||
// depending on the Double and Top fields.
|
||||
func (s Slab) BBox(cube.Pos, world.BlockSource) []cube.BBox {
|
||||
if s.Double {
|
||||
return []cube.BBox{full}
|
||||
}
|
||||
if s.Top {
|
||||
return []cube.BBox{cube.Box(0, 0.5, 0, 1, 1, 1)}
|
||||
}
|
||||
return []cube.BBox{cube.Box(0, 0, 0, 1, 0.5, 1)}
|
||||
}
|
||||
|
||||
// FaceSolid returns true if the Slab is double, or if the face is cube.FaceUp when the Top field is true, or if the
|
||||
// face is cube.FaceDown when the Top field is false.
|
||||
func (s Slab) FaceSolid(_ cube.Pos, face cube.Face, _ world.BlockSource) bool {
|
||||
if s.Double {
|
||||
return true
|
||||
} else if s.Top {
|
||||
return face == cube.FaceUp
|
||||
}
|
||||
return face == cube.FaceDown
|
||||
}
|
||||
Reference in New Issue
Block a user