Repository navigation
Major release v2.0.0!
🧨 Breaking changes 🧨
Better system method names:
- Renamed
system.GetFrequency()tosystem.Frequency() - Renamed
system.GetPriority()tosystem.Priority() - Renamed
system.GetType()tosystem.Type()
✅ Convenience Improvements
Less boilerplate with SystemBase, no need in writing all systems methods:
type MovementSystem struct {
core.SystemBase
}
// Main logic
func (s *MovementSystem) Process(es *core.EntityStore, dt time.Duration) {}
func MakeMovementSystem() *MovementSystem {
return &MovementSystem{
// Define system params here
SystemBase: *core.MakeSystemBase("sys_movement", 0, 0),
}
}vs old way
type MovementSystem_EXP struct{}
func (s *MovementSystem_EXP) Type() string {
return "sys_movement"
}
// System lifecycle
func (s *MovementSystem_EXP) Setup(es *core.EntityStore) {}
func (s *MovementSystem_EXP) Cleanup(es *core.EntityStore) {}
func (s *MovementSystem_EXP) Priority() int { return 0 }
func (s *MovementSystem_EXP) Frequency() uint { return 0 }
// Main logic
func (s *MovementSystem_EXP) Process(es *core.EntityStore, dt time.Duration) {}
func MakeMovementSystemEXP() *MovementSystem {
return &MovementSystem{}
}💉 Safety
SystemStore.Add() Now panics if you provide a system with already registered type.