public override void OnCheckPointEvent(ICheckpoint checkpoint, IEntity entity, bool state) { base.OnCheckPointEvent(checkpoint, entity, state); if (!CheckpointAsyncEventHandler.HasEvents()) { return; } var checkpointReference = new CheckpointRef(checkpoint); switch (entity) { case IPlayer playerEntity: var playerEntityReference = new PlayerRef(playerEntity); Task.Run(async() => { await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state)); checkpointReference.Dispose(); playerEntityReference.Dispose(); }); break; case IVehicle vehicleEntity: var vehicleEntityReference = new VehicleRef(vehicleEntity); Task.Run(async() => { await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state)); checkpointReference.Dispose(); vehicleEntityReference.Dispose(); }); break; default: Task.Run(async() => { await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state)); checkpointReference.Dispose(); }); break; } Task.Run(async() => { await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state)); checkpointReference.Dispose(); }); }
public override void OnCheckPointEvent(ICheckpoint checkpoint, IEntity entity, bool state) { base.OnCheckPointEvent(checkpoint, entity, state); if (!CheckpointAsyncEventHandler.HasEvents()) { return; } var checkpointReference = new CheckpointRef(checkpoint); var entityReference = new BaseObjectRef(entity); Task.Run(async() => { checkpointReference.DebugCountUp(); entityReference.DebugCountUp(); await CheckpointAsyncEventHandler.CallAsync(@delegate => @delegate(checkpoint, entity, state)); entityReference.DebugCountDown(); checkpointReference.DebugCountDown(); entityReference.Dispose(); checkpointReference.Dispose(); }); }