public override void ForEach(IBaseObjectCallback <ICheckpoint> baseObjectCallback) { foreach (var baseObject in GetAllObjects()) { using var baseObjectRef = new CheckpointRef(baseObject); if (!baseObjectRef.Exists) { continue; } baseObjectRef.DebugCountUp(); baseObjectCallback.OnBaseObject(baseObject); baseObjectRef.DebugCountDown(); } }
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(); }); }