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();
     }
 }
Beispiel #2
0
        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();
            });
        }
Beispiel #3
0
        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();
            });
        }