aoi.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package aoi
  2. type (
  3. MarkerFunc func(marker *Object, notifyWatchers Objects)
  4. MarkerUpdateFunc func(marker *Object, notifyWatchers Objects, updateID uint32, funcName string)
  5. WatcherFunc func(watcher *Object, updateMarkers Objects)
  6. AOI interface {
  7. events
  8. Get(objectID int64) *Object
  9. Enter(object *Object) bool
  10. Move(objectID int64, x, y int32) bool
  11. Leave(objectID int64)
  12. Update(objectID int64, updateID uint32, funcName string)
  13. }
  14. events interface {
  15. OnMarkerEnter(fn MarkerFunc)
  16. OnMarkerMove(fn MarkerFunc)
  17. OnMarkerLeave(fn MarkerFunc)
  18. OnMarkerUpdate(fn MarkerUpdateFunc)
  19. OnWatcherEnter(fn WatcherFunc)
  20. OnWatcherMove(fn WatcherFunc)
  21. }
  22. EventBase struct {
  23. MarkerEnterFunc MarkerFunc
  24. MarkerMoveFunc MarkerFunc
  25. MarkerLeaveFunc MarkerFunc
  26. MarkerUpdateFunc MarkerUpdateFunc
  27. WatcherEnterFunc WatcherFunc
  28. WatcherMoveFunc WatcherFunc
  29. }
  30. )
  31. func (p *EventBase) OnMarkerEnter(fn MarkerFunc) {
  32. p.MarkerEnterFunc = fn
  33. }
  34. func (p *EventBase) OnMarkerMove(fn MarkerFunc) {
  35. p.MarkerMoveFunc = fn
  36. }
  37. func (p *EventBase) OnMarkerLeave(fn MarkerFunc) {
  38. p.MarkerLeaveFunc = fn
  39. }
  40. func (p *EventBase) OnMarkerUpdate(fn MarkerUpdateFunc) {
  41. p.MarkerUpdateFunc = fn
  42. }
  43. func (p *EventBase) OnWatcherEnter(fn WatcherFunc) {
  44. p.WatcherEnterFunc = fn
  45. }
  46. func (p *EventBase) OnWatcherMove(fn WatcherFunc) {
  47. p.WatcherMoveFunc = fn
  48. }