private static bool HasJobWithScanTarget(ScanTarget scanTarget, IEnumerable <Job> jobs) { foreach (var job in jobs) { if (job.AgentId == scanTarget.AgentId && job.Target == scanTarget.Target) { return(true); } } return(false); }
// Update is called once per frame void FixedUpdate() { GameObject[] allScanObjects = GameObject.FindGameObjectsWithTag("ScanSignature"); Vector3 shipPos = this.ShipTransform.position; foreach (var obj in allScanObjects) { ScanTarget objScanTarget = this.GetScanTargetForObject(obj); Vector3 objPos = obj.transform.position; Vector3 diffVec = objPos - shipPos; float distance = diffVec.magnitude; Vector2 direction = Quaternion.Inverse(ShipTransform.rotation) * diffVec.normalized; if (distance < SCAN_RANGE) { if (objScanTarget == null) { ScanTargetType type = obj.GetComponent <ScanSignature>().ScanTargetType; var newScanTarget = new ScanTarget() { ID = this.objIdCounter++, Distance = distance, Direction = direction, Type = type, Object = obj }; this.objectsInRange.Add(newScanTarget); CoreNetwork.Instance.Send(new ScanTargetMsg() { ScanTarget = newScanTarget, Action = ScanTargetMsg.Type.Add, Allegiance = this.allegiance }); } else { objScanTarget.Distance = distance; objScanTarget.Direction = direction; } } else if (distance > SCAN_RANGE && objScanTarget != null) { CoreNetwork.Instance.Send(new ScanTargetMsg() { ScanTarget = objScanTarget, Action = ScanTargetMsg.Type.Remove, Allegiance = this.allegiance }); this.objectsInRange.Remove(objScanTarget); } } if (Time.time > this.nextTargetsUpdate) { var msg = new ScanTargetMsg() { ScanTarget = null, Action = ScanTargetMsg.Type.Update, Allegiance = this.allegiance }; foreach (var scanTarget in this.objectsInRange) { msg.ScanTarget = scanTarget; CoreNetwork.Instance.Send(msg); } this.nextTargetsUpdate = Time.time + UPDATE_SEND_RATE; } }
// Update is called once per frame void FixedUpdate () { GameObject[] allScanObjects = GameObject.FindGameObjectsWithTag("ScanSignature"); Vector3 shipPos = this.ShipTransform.position; foreach (var obj in allScanObjects) { ScanTarget objScanTarget = this.GetScanTargetForObject(obj); Vector3 objPos = obj.transform.position; Vector3 diffVec = objPos - shipPos; float distance = diffVec.magnitude; Vector2 direction = Quaternion.Inverse( ShipTransform.rotation ) * diffVec.normalized; if (distance < SCAN_RANGE) { if (objScanTarget == null) { ScanTargetType type = obj.GetComponent<ScanSignature>().ScanTargetType; var newScanTarget = new ScanTarget() { ID = this.objIdCounter++, Distance = distance, Direction = direction, Type = type, Object = obj }; this.objectsInRange.Add(newScanTarget); CoreNetwork.Instance.Send( new ScanTargetMsg() { ScanTarget = newScanTarget, Action = ScanTargetMsg.Type.Add, Allegiance = this.allegiance }); } else { objScanTarget.Distance = distance; objScanTarget.Direction = direction; } } else if (distance > SCAN_RANGE && objScanTarget != null) { CoreNetwork.Instance.Send( new ScanTargetMsg() { ScanTarget = objScanTarget, Action = ScanTargetMsg.Type.Remove, Allegiance = this.allegiance }); this.objectsInRange.Remove(objScanTarget); } } if (Time.time >this.nextTargetsUpdate) { var msg = new ScanTargetMsg() { ScanTarget = null, Action = ScanTargetMsg.Type.Update, Allegiance = this.allegiance }; foreach(var scanTarget in this.objectsInRange) { msg.ScanTarget = scanTarget ; CoreNetwork.Instance.Send(msg); } this.nextTargetsUpdate = Time.time + UPDATE_SEND_RATE; } }
private static Job CreateJob(ScanTarget scanTarget) { var job = new Job(Guid.NewGuid(), scanTarget.AgentId, scanTarget.Target); return(job); }
private void scanButton_Click(object sender, EventArgs e) { if (!"".Equals(Properties.Settings.Default.twain_source)) if (this.scanSemaphore.WaitOne(0)) { this.scanTarget = ScanTarget.APP; this.scanData.Clear(); this.dataReady = false; this.twain.SelectSource(Properties.Settings.Default.twain_source); ScanSettings settings = MainForm.CreateDefaultSettings(); try { this.twain.StartScanning(settings); } catch (Exception ex) { if (Properties.Settings.Default.useADF) { settings.AbortWhenNoPaperDetectable = false; settings.ShouldTransferAllPages = false; settings.UseAutoFeeder = false; settings.UseDocumentFeeder = false; this.twain.StartScanning(settings); } else { throw ex; } } } else { MessageBox.Show("Scanner in use, try to scan later or restart application in case of out-of-sync communication to scanner", "Scanner in use", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } }