github.com/dfklegend/cell2/utils@v0.0.0-20240402033734-a0a9f3d9335d/event/light/utils.go (about) 1 package light 2 3 import ( 4 "reflect" 5 ) 6 7 // Bind接口避免书写错误 8 9 func BindEventWithReceiver(bind bool, center *EventCenter, eventName string, receiver any, cb CBFunc, args ...interface{}) { 10 if bind { 11 center.SubscribeWithReceiver(eventName, receiver, cb, args...) 12 } else { 13 center.UnsubscribeWithReceiver(eventName, receiver, cb) 14 } 15 } 16 17 func BindEvent(bind bool, center *EventCenter, eventName string, cb CBFunc, args ...interface{}) { 18 if bind { 19 center.Subscribe(eventName, cb, args...) 20 } else { 21 center.Unsubscribe(eventName, cb) 22 } 23 } 24 25 func toAny(in any) any { 26 return in 27 } 28 29 func toPointer(in any) uintptr { 30 if in == nil { 31 return 0 32 } 33 return reflect.ValueOf(in).Pointer() 34 } 35 36 func compareFunc(a any, b any) bool { 37 aPointer := toPointer(a) 38 bPointer := toPointer(b) 39 return aPointer == bPointer 40 }