Fix double-use of TempAllocator with observers

wip/source-generators
copygirl 2 years ago
parent bb0ab53c06
commit 9fdd28fe5a
  1. 6
      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<Iterator> 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,

Loading…
Cancel
Save