diff --git a/src/gaemstone/ECS/Observer.cs b/src/gaemstone/ECS/Observer.cs index 398b1ab..b9b3759 100644 --- a/src/gaemstone/ECS/Observer.cs +++ b/src/gaemstone/ECS/Observer.cs @@ -21,16 +21,16 @@ public static class ObserverExtensions public static unsafe EntityRef RegisterObserver(this Universe universe, FilterDesc filter, Entity @event, Action callback) { + var entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(); using var alloc = TempAllocator.Lock(); var desc = new ecs_observer_desc_t { filter = filter.ToFlecs(alloc), - entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(), + entity = entity, binding_ctx = (void*)CallbackContextHelper.Create((universe, callback)), callback = new() { Data = new() { Pointer = &SystemExtensions.Callback } }, }; desc.events[0] = @event; - var entity = ecs_observer_init(universe, &desc); - return new(universe, new(entity)); + return new(universe, new(ecs_observer_init(universe, &desc))); } public static EntityRef RegisterObserver(this Universe universe,