space

package
v0.0.0-...-20810c9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Brute

type Brute[D Dimensional] struct {
	// contains filtered or unexported fields
}

func (*Brute[D]) Add

func (s *Brute[D]) Add(entity *Entity[D])

func (*Brute[D]) Collisions

func (s *Brute[D]) Collisions(flags util.Match[Flags], callback CollisionCallback[D])

func (*Brute[D]) Contains

func (s *Brute[D]) Contains(query Query[D], callback SearchCallback[D]) int

func (*Brute[D]) Intersects

func (s *Brute[D]) Intersects(query Query[D], callback SearchCallback[D]) int

func (*Brute[D]) Nearest

func (s *Brute[D]) Nearest(query Query[D], nearest []Nearest[D]) int

func (*Brute[D]) Raytrace

func (s *Brute[D]) Raytrace(query Query[D], callback SearchCallback[D]) int

func (*Brute[D]) Update

func (s *Brute[D]) Update()

type CollisionCallback

type CollisionCallback[D Dimensional] func(subject *Entity[D], otherSubject *Entity[D], overlap float32, index int, second bool)

type Dimensional

type Dimensional interface {
	Dimensions() int
	Get(v []*float32)
}

type Entity

type Entity[D Dimensional] struct {
	Shape    Shape[D]
	Position D
	Flags    Flags
	Static   bool
	Disabled bool
	Expired  bool
	Update   func()
	Data     any
}

type Flags

type Flags uint64

type Nearest

type Nearest[D Dimensional] struct {
	Entity   *Entity[D]
	Distance float32
}

type Query

type Query[D Dimensional] struct {
	Point   D
	End     D
	Shape   Shape[D]
	Maximum int
	Flags   util.Match[Flags]
}

type SearchCallback

type SearchCallback[D Dimensional] func(entity *Entity[D], overlap float32, index int, query Query[D]) bool

type Shape

type Shape[D Dimensional] interface {
	GetExtent(position D) (min, max D)
	GetCircle(position D) (center D, radius float32)
}

type Space

type Space[D Dimensional] interface {
	Add(entity *Entity[D])
	Update()
	Collisions(flags util.Match[Flags], callback CollisionCallback[D])
	Intersects(query Query[D], callback SearchCallback[D]) int
	Contains(query Query[D], callback SearchCallback[D]) int
	Raytrace(query Query[D], callback SearchCallback[D]) int
	Nearest(query Query[D], nearest []Nearest[D]) int
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL