|
|
@ -21,16 +21,16 @@ public static class ObserverExtensions |
|
|
|
public static unsafe EntityRef RegisterObserver(this Universe universe, |
|
|
|
public static unsafe EntityRef RegisterObserver(this Universe universe, |
|
|
|
FilterDesc filter, Entity @event, Action<Iterator> callback) |
|
|
|
FilterDesc filter, Entity @event, Action<Iterator> callback) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
var entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(); |
|
|
|
using var alloc = TempAllocator.Lock(); |
|
|
|
using var alloc = TempAllocator.Lock(); |
|
|
|
var desc = new ecs_observer_desc_t { |
|
|
|
var desc = new ecs_observer_desc_t { |
|
|
|
filter = filter.ToFlecs(alloc), |
|
|
|
filter = filter.ToFlecs(alloc), |
|
|
|
entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(), |
|
|
|
entity = entity, |
|
|
|
binding_ctx = (void*)CallbackContextHelper.Create((universe, callback)), |
|
|
|
binding_ctx = (void*)CallbackContextHelper.Create((universe, callback)), |
|
|
|
callback = new() { Data = new() { Pointer = &SystemExtensions.Callback } }, |
|
|
|
callback = new() { Data = new() { Pointer = &SystemExtensions.Callback } }, |
|
|
|
}; |
|
|
|
}; |
|
|
|
desc.events[0] = @event; |
|
|
|
desc.events[0] = @event; |
|
|
|
var entity = ecs_observer_init(universe, &desc); |
|
|
|
return new(universe, new(ecs_observer_init(universe, &desc))); |
|
|
|
return new(universe, new(entity)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static EntityRef RegisterObserver(this Universe universe, |
|
|
|
public static EntityRef RegisterObserver(this Universe universe, |
|
|
|