コード例 #1
0
ファイル: ray.go プロジェクト: yeerkkiller1/buildblast
func (ray *Ray) FindAnyIntersect(blocks mapgen.BlockSource, boxes []*Box) (*vmath.Vec3, int) {
	pos := ray.pos
	for dist := 0.0; dist < RAY_MAX_DIST; dist += RAY_PRECISION {
		pos.Translate(&ray.dir, RAY_PRECISION)

		for i, v := range boxes {
			if v == nil {
				continue
			}
			if !v.Contains(pos) {
				continue
			}
			return &pos, i
		}

		wc := coords.World(pos)
		if blocks.Block(wc.Block()).Solid() {
			return &pos, -1
		}
	}
	return nil, -1
}
コード例 #2
0
ファイル: entity.go プロジェクト: yeerkkiller1/buildblast
func (es *EntityState) Wpos() coords.World {
	return coords.World(es.Body.Pos)
}