mirror of
https://github.com/bloeys/nmage.git
synced 2025-12-29 13:28:20 +00:00
Move comp into own file
This commit is contained in:
36
entity/comp.go
Executable file
36
entity/comp.go
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
package entity
|
||||||
|
|
||||||
|
type Comp interface {
|
||||||
|
Name() string
|
||||||
|
}
|
||||||
|
|
||||||
|
func AddComp(e *Entity, c Comp) {
|
||||||
|
e.Comps = append(e.Comps, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetComp[T Comp](e *Entity) (out T) {
|
||||||
|
|
||||||
|
for i := 0; i < len(e.Comps); i++ {
|
||||||
|
|
||||||
|
comp, ok := e.Comps[i].(T)
|
||||||
|
if ok {
|
||||||
|
return comp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetAllCompOfType[T Comp](e *Entity) (out []T) {
|
||||||
|
|
||||||
|
out = []T{}
|
||||||
|
for i := 0; i < len(e.Comps); i++ {
|
||||||
|
|
||||||
|
comp, ok := e.Comps[i].(T)
|
||||||
|
if ok {
|
||||||
|
out = append(out, comp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
@ -39,38 +39,3 @@ func (e *Entity) HasFlag(ef EntityFlag) bool {
|
|||||||
func NewEntityId(generation byte, flags EntityFlag, index uint64) uint64 {
|
func NewEntityId(generation byte, flags EntityFlag, index uint64) uint64 {
|
||||||
return index | (uint64(generation) << GenerationShiftBits) | (uint64(flags) << FlagsShiftBits)
|
return index | (uint64(generation) << GenerationShiftBits) | (uint64(flags) << FlagsShiftBits)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Comp interface {
|
|
||||||
Name() string
|
|
||||||
}
|
|
||||||
|
|
||||||
func AddComp(e *Entity, c Comp) {
|
|
||||||
e.Comps = append(e.Comps, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetComp[T Comp](e *Entity) (out T) {
|
|
||||||
|
|
||||||
for i := 0; i < len(e.Comps); i++ {
|
|
||||||
|
|
||||||
comp, ok := e.Comps[i].(T)
|
|
||||||
if ok {
|
|
||||||
return comp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAllCompOfType[T Comp](e *Entity) (out []T) {
|
|
||||||
|
|
||||||
out = []T{}
|
|
||||||
for i := 0; i < len(e.Comps); i++ {
|
|
||||||
|
|
||||||
comp, ok := e.Comps[i].(T)
|
|
||||||
if ok {
|
|
||||||
out = append(out, comp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user