void sensorDetectionEvents() { var detectedEnumerator = DetectedObjects.GetEnumerator(); while (detectedEnumerator.MoveNext()) { var go = detectedEnumerator.Current; if (previousDetectedObjects.Contains(go)) { previousDetectedObjects.Remove(go); } else { // This is a newly detected object OnDetected.Invoke(go); } } // Any object still in previousDetectedObjects is no longer detected var previousDetectedEnumerator = previousDetectedObjects.GetEnumerator(); while (previousDetectedEnumerator.MoveNext()) { var go = previousDetectedEnumerator.Current; OnLostDetection.Invoke(go); } previousDetectedObjects.Clear(); detectedEnumerator = DetectedObjects.GetEnumerator(); while (detectedEnumerator.MoveNext()) { previousDetectedObjects.Add(detectedEnumerator.Current); } }
void addRayHit(RaycastHit hit) { GameObject go; if (DetectionMode == SensorMode.RigidBodies) { if (hit.rigidbody == null) { return; } go = hit.rigidbody.gameObject; } else { go = hit.collider.gameObject; } if (!detectedObjectHits.ContainsKey(go) && !shouldIgnore(go)) { detectedObjectHits.Add(go, hit); detectedObjectsInternal.Add(go); if (!previousDetectedObjects.Contains(go)) { OnDetected.Invoke(go, this); } else { previousDetectedObjects.Remove(go); } } }
public void ReceiveDetections(Detector.Detections detections) { var qrcodes = detections.DetectedItems; if (qrcodes.Size() != 0) { if (Configuration.IsScanning) { Configuration.IsScanning = false; if (_vibrationOnDetected) { Vibrator vib = (Vibrator)_context.GetSystemService(Context.VibratorService); vib.Vibrate(200); } List <BarcodeResult> barcodeResults = new List <BarcodeResult>(); for (int i = 0; i < qrcodes.Size(); i++) { Barcode barcode = qrcodes.ValueAt(i) as Barcode; if (barcode == null) { continue; } var type = Methods.ConvertBarcodeResultTypes(barcode.ValueFormat); var value = barcode.DisplayValue; barcodeResults.Add(new BarcodeResult { BarcodeType = type, DisplayValue = value }); } OnDetected?.Invoke(barcodeResults); } } }
private async void DetectBarcodeActionAsync(VisionImage image) { if (Configuration.IsScanning) { try { VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(image); if (barcodes == null || barcodes.Length == 0) { return; } Console.WriteLine($"Successfully read barcode"); Configuration.IsScanning = false; if (_vibrationOnDetected) { SystemSound.Vibrate.PlayAlertSound(); } List <BarcodeResult> resultList = new List <BarcodeResult>(); foreach (var barcode in barcodes) { var points = barcode.CornerPoints.ToList().ConvertAll(nsvalue => nsvalue.PointFValue); resultList.Add(new BarcodeResult { BarcodeType = Methods.ConvertBarcodeResultTypes(barcode.ValueType), DisplayValue = barcode.DisplayValue, Points = points.Select(p => (p.X / (double)Width, p.Y / (double)Height)).ToList() }); } OnDetected?.Invoke(resultList); }
private async void DetectBarcodeActionAsync(VisionImage image) { if (Configuration.IsScanning) { try { VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(image); if (barcodes == null || barcodes.Length == 0) { return; } Configuration.IsScanning = false; if (Configuration.IsVibrate) { SystemSound.Vibrate.PlayAlertSound(); } List <BarcodeResult> resultList = new List <BarcodeResult>(); foreach (var barcode in barcodes) { resultList.Add(new BarcodeResult { BarcodeType = Methods.ConvertBarcodeResultTypes(barcode.ValueType), DisplayValue = barcode.DisplayValue }); } OnDetected?.Invoke(resultList); } catch (Exception ex) { return; } } }
void testSensor() { prepareCollidersBuffer(); var numberDetected = Physics.OverlapSphereNonAlloc(transform.position, SensorRange, collidersBuffer, DetectsOnLayers); if (numberDetected == CurrentBufferSize) { if (DynamicallyIncreaseBufferSize) { CurrentBufferSize *= 2; testSensor(); return; } else { logInsufficientBufferSize(); } } clearColliders(); for (int i = 0; i < numberDetected; i++) { var newDetection = addCollider(collidersBuffer[i]); if (newDetection != null) { if (previousDetectedObjects.Contains(newDetection)) { previousDetectedObjects.Remove(newDetection); } else { OnDetected.Invoke(newDetection, this); } } } // Any entries still in previousDetectedObjects are no longer detected var previousDetectedEnumerator = previousDetectedObjects.GetEnumerator(); while (previousDetectedEnumerator.MoveNext()) { var lostDetection = previousDetectedEnumerator.Current; OnLostDetection.Invoke(lostDetection, this); } previousDetectedObjects.Clear(); var detectedEnumerator = DetectedObjects.GetEnumerator(); while (detectedEnumerator.MoveNext()) { previousDetectedObjects.Add(detectedEnumerator.Current); } if (OnSensorUpdate != null) { OnSensorUpdate(); } }
// On Trigger is called when detectable object // is in sight ( in front ). private void OnTriggerStay(Collider detected) { if (IsInFront(detected)) { OnDetected.Invoke(detected.gameObject, (IsVisible(detected.gameObject))); } }
public void TriggerOnDetected(List <BarcodeResult> barCodeResults) { Device.BeginInvokeOnMainThread(() => { OnDetected?.Invoke(this, new OnDetectedEventArg { BarcodeResults = barCodeResults }); }); }
private bool killEnabled = true; //DEBUG ONLY private void OnTriggerEnter(Collider other) { if (other.tag == "Player") { //Send detect player signal if (killEnabled) { OnDetected?.Invoke(); } } }
new void addCollider(Collider other) { var newDetected = base.addCollider(other); isColliderStale[other] = 0; if (newDetected != null) { OnDetected.Invoke(newDetected, this); previousDetectedObjects.Add(newDetected); } if (OnSensorUpdate != null) { OnSensorUpdate(); } }
new void addCollider(Collider2D other) { var newDetected = base.addCollider(other); triggerStayLag[other] = 0; if (newDetected != null) { OnDetected.Invoke(newDetected); previousDetectedObjects.Add(newDetected); } if (OnSensorUpdate != null) { OnSensorUpdate(); } }
private async void DetectBarcodeActionAsync(VisionImage image) { if (Configuration.IsScanning) { try { VisionBarcode[] barcodes = await barcodeDetector.DetectAsync(image); if (barcodes == null || barcodes.Length == 0) { return; } Console.WriteLine($"Successfully read barcode"); Configuration.IsScanning = false; if (_vibrationOnDetected) { SystemSound.Vibrate.PlayAlertSound(); } List <BarcodeResult> resultList = new List <BarcodeResult>(); foreach (var barcode in barcodes) { var barcodeArray = barcode.RawData.ToArray(); for (int i = 0; i < barcodeArray.Length; i++) { if (barcodeArray[i] == 0) { barcodeArray[i] = 32; } } resultList.Add(new BarcodeResult { BarcodeType = Methods.ConvertBarcodeResultTypes(barcode.ValueType), DisplayValue = System.Text.Encoding.Default.GetString(barcodeArray) }); } OnDetected?.Invoke(resultList); } catch (Exception exception) { System.Diagnostics.Debug.WriteLine(exception.Message); } } }
void testSensor() { clearColliders(); var sensedColliders = Physics2D.OverlapCircleAll(transform.position, SensorRange, DetectsOnLayers); for (int i = 0; i < sensedColliders.Length; i++) { var newDetection = addCollider(sensedColliders[i]); if (newDetection != null) { if (previousDetectedObjects.Contains(newDetection)) { previousDetectedObjects.Remove(newDetection); } else { OnDetected.Invoke(newDetection); } } } // Any entries still in previousDetectedObjects are no longer detected var previousDetectedEnumerator = previousDetectedObjects.GetEnumerator(); while (previousDetectedEnumerator.MoveNext()) { var lostDetection = previousDetectedEnumerator.Current; OnLostDetection.Invoke(lostDetection); } previousDetectedObjects.Clear(); var detectedEnumerator = DetectedObjects.GetEnumerator(); while (detectedEnumerator.MoveNext()) { previousDetectedObjects.Add(detectedEnumerator.Current); } if (OnSensorUpdate != null) { OnSensorUpdate(); } }
void sensorDetectionEvents() { // User may call 'DetectedObjects' while enumerating, so we want to copy list of detected objects // out first. or we'll get an exception that enumeration is modified. tempGOList.Clear(); tempGOList.AddRange(DetectedObjects); var detectedEnumerator = tempGOList.GetEnumerator(); while (detectedEnumerator.MoveNext()) { var go = detectedEnumerator.Current; if (previousDetectedObjects.Contains(go)) { previousDetectedObjects.Remove(go); } else { // This is a newly detected object OnDetected.Invoke(go, this); } } // Any object still in previousDetectedObjects is no longer detected var previousDetectedEnumerator = previousDetectedObjects.GetEnumerator(); while (previousDetectedEnumerator.MoveNext()) { var go = previousDetectedEnumerator.Current; OnLostDetection.Invoke(go, this); } previousDetectedObjects.Clear(); detectedEnumerator = DetectedObjects.GetEnumerator(); while (detectedEnumerator.MoveNext()) { previousDetectedObjects.Add(detectedEnumerator.Current); } }
private void DetectProcessor_OnDetected(List <BarcodeResult> obj) { OnDetected?.Invoke(obj); }
// Detects beat basing on analysis result // Beat detection is marked on the first three bits of the returned value private byte DetectBeat(double[] bandEnergies, int peakLevel) { // Sound height ranges (0, 1 is bass, next 6 is mids) int Bass = 2; int Mids = 6; double[] averageEnergies = CalculateAverages(); byte result = 0; double peakLevelPercent = (double)peakLevel / 32768 * 100; // Volume level in % if (peakLevelPercent > 1) // Reduce false detection { for (int i = 0; i < BANDS; i++) { // Set the C parameter double C; if (i < Bass) { C = 2.3 * ((double)_BASSSensivity / 100); } else if (i < Mids) { C = 2.89 * ((double)_MIDSSensivity / 100); } else { C = 3 * ((double)_MIDSSensivity / 100); } // Compare energies in all bands with C*average if (bandEnergies[i] > (C * averageEnergies[i])) { byte partialResult = 0; if (i < Bass) { partialResult = 1; } else if (i < Mids) { partialResult = 2; } else { partialResult = 4; } result = (byte)(result | partialResult); } } } if (result > 0) { foreach (BeatDetectedHandler Subscriber in OnDetected.GetInvocationList()) { ThreadPool.QueueUserWorkItem(delegate { Subscriber(result); }); } } return(result); }
public void TriggerOnDetected(List <BarcodeResult> barCodeResults) { OnDetected?.Invoke(this, new OnDetectedEventArg { BarcodeResults = barCodeResults }); }
private void OnTriggerStay(Collider other) { OnDetected.Invoke(other.gameObject, true); }
void Detector.IProcessor.ReceiveDetections(Detector.Detections detections) { Rectangle formsBounds; Rectangle scanRectangle; Rectangle barcodeRectangle; if (detections.DetectedItems.Size() < 1 || !this.isScanning) { return; } try { this.isScanning = false; List <BarcodeResult> barcodeResults = new List <BarcodeResult>(); for (int i = 0; i < detections.DetectedItems.Size(); i++) { Android.Gms.Vision.Barcodes.Barcode barcode = (detections.DetectedItems.ValueAt(i) as Android.Gms.Vision.Barcodes.Barcode); formsBounds = Xamarin.Forms.Application.Current.MainPage.Bounds; //10~90; //30~60; //barcode.BoundingBox.Width() * 0.1; X //barcode.BoundingBox.Width() * 0.8; Width //barcode.BoundingBox.Height() * 0.3; Y //barcode.BoundingBox.Height() * 0.3; Height //int a = this.cameraSource.PreviewSize.Width; //int b = this.cameraSource.PreviewSize.Height; if (formsBounds.Height > formsBounds.Width) { scanRectangle = new Rectangle(this.cameraSource.PreviewSize.Height * 0.1, this.cameraSource.PreviewSize.Width * 0.3 , this.cameraSource.PreviewSize.Height * 0.8, this.cameraSource.PreviewSize.Width * 0.3); } else { scanRectangle = new Rectangle(this.cameraSource.PreviewSize.Width * 0.1, this.cameraSource.PreviewSize.Height * 0.3 , this.cameraSource.PreviewSize.Width * 0.8, this.cameraSource.PreviewSize.Height * 0.3); } barcodeRectangle = new Rectangle(barcode.BoundingBox.Left, barcode.BoundingBox.Top, barcode.BoundingBox.Width(), barcode.BoundingBox.Height()); if (scanRectangle.Contains(barcodeRectangle)) { barcodeResults.Add(this.BarcodeResultConvert(barcode)); } } if (barcodeResults.Count > 0) { OnDetected?.Invoke(barcodeResults); vibrator.Vibrate(1000); Thread.Sleep(3000); } } catch (Exception ex) { Console.WriteLine("BarCodeDetectorProcessor Exception : {0}", ex.ToString()); } finally { this.isScanning = true; } }