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  }