// Update is called once per frame void Update() { if (!GameState.isGameActive) { return; } timeLeft -= Time.deltaTime; if (timeLeft < 0) { if (repeat) { timeLeft = WaitTime; numRepeats++; if (numRepeats >= MaxRepeats && MaxRepeats > 0) { enabled = false; numRepeats = 0; } } if (triggerEvent != null) { triggerEvent.Trigger(); } } }
void Update() { Vector2 cameraPoint = Camera.main.WorldToViewportPoint(transform.position).xy(); if (Mathf.Abs(cameraPoint.x) < 1f && Mathf.Abs(cameraPoint.y) < 1f) { trigger.Trigger(); enabled = false; } }
bool ITrigger.Trigger(DateTime time, IJob job, int runnings) { if (job.Frequencies + 1 > 1) { this.expired = true; return(false); } else if (job.Frequencies + runnings + 1 > 1) { return(false); } if (this.subTrigger != null) { ITrigger trigger = (ITrigger)this.subTrigger; if (trigger.Expired) { this.expired = true; return(false); } bool ret = trigger.Trigger(time, this.subJob, 0); if (ret) { this.subJob.IncrementFrequency(); } return(ret); } else { if (timeLimiter != null) { if (!timeLimiter.Arrived(time)) { return(false); } if (timeLimiter.Beyonded(time)) { this.expired = true; return(false); } else { return(true); } } else { return(true); } } }
bool ITrigger.Trigger(DateTime time, int succeedCount, int runningCount) { if (succeedCount + 1 > 1) { this.expired = true; return(false); } else if (succeedCount + runningCount + 1 > 1) { return(false); } if (this.tryTrigger != null) { ITrigger trigger = (ITrigger)this.tryTrigger; if (trigger.Expired) { this.expired = true; return(false); } bool ret = trigger.Trigger(time, this.hasTried, 0); if (ret) { this.hasTried++; } return(ret); } else { if (timeLimiter != null) { if (timeLimiter.Unarrive(time)) { return(false); } if (timeLimiter.Beyonded(time)) { this.expired = true; return(false); } else { return(true); } } else { return(true); } } }
private void Update() { if (PlayerUI.singleton.isPaused) { return; } dropPos = camTransform.position + camTransform.forward * 1.6f; Collider[] colliders = Physics.OverlapSphere(camTransform.position, reach); foreach (IDisplay interactable in FindObjectsOfType <MonoBehaviour>().OfType <IDisplay>()) { interactable.Undisplay(); } foreach (Collider col in colliders) { IDisplay display = col.transform.GetComponent <IDisplay>(); if (display != null) { display.Display(); } } if (Input.GetKeyDown(KeyHandler.PickupKey)) { RaycastHit _hitInfo; if (Physics.Raycast(camTransform.position, camTransform.forward, out _hitInfo, reach)) { IInteractable interactable = _hitInfo.transform.GetComponent <IInteractable>(); if (interactable != null) { interactable.Interact(); } } } else if (Input.GetKeyDown(KeyHandler.TriggerKey)) { RaycastHit _hitInfo; if (Physics.Raycast(camTransform.position, camTransform.forward, out _hitInfo, reach)) { ITrigger interactable = _hitInfo.transform.GetComponent <ITrigger>(); if (interactable != null) { interactable.Trigger(); } } } }
private void schedule(DateTime time, ITrigger trigger, JobProcess process) { if (trigger.Trigger(time, process.SucceedCount, process.RunningCount)) { bool ret = true; foreach (IJob job in process.Jobs) { ret = ret && this.canRunning(job); } if (ret) { process.StartATask(); } } }
private void schedule(DateTime time, ITrigger trigger, IJob job) { int runnings = 0; ConcurrentBag <JobProcess> processBag = null; if (this.processDict.TryGetValue(job, out processBag)) { foreach (JobProcess process in processBag) { if (process.IsRunning) { runnings++; } } } if (trigger.Trigger(time, job, runnings)) { if (!passedNeedJobs(job)) { Console.WriteLine("作业{0}的先行作业没有成功地完全结束,本作业暂时无法调度。", job.Name); return; } if (processBag == null) { processBag = new ConcurrentBag <JobProcess>(); this.processDict.TryAdd(job, processBag); } if (processBag.Count < this.processNumPerJob) { JobProcess process = new JobProcess(job); processBag.Add(process); process.Start(); } else { foreach (JobProcess process in processBag) { if (!process.IsRunning) { process.Start(); break; } } } } }
new void UpdateHit(float dT) { pups.Clear(); hitCount = Physics2D.BoxCastNonAlloc(transform.position, box.size, 0, velocity, RaycastHits, Mathf.Max(raylength, velocity.magnitude * dT), HitLayers); for (int i = 0; i < hitCount; i++) { hit = RaycastHits[i]; if (hit.transform.IsChildOf(transform)) { continue; } ITrigger tri = hit.transform.GetComponent <ITrigger>(); if (tri != null) { tri.Trigger(transform); } IDamage dam = hit.transform.GetComponent <IDamage>(); if (dam != null) { // maybe only damage other if charging weapon or has active powerup? if (ContactDamage != null) { Damage dmg = Instantiate(ContactDamage); dmg.instigator = this; dmg.damageSource = transform; dmg.point = hit.point; dam.TakeDamage(dmg); } } } pups.Clear(); hitCount = Physics2D.CircleCastNonAlloc(transform.position, selectRange, Vector3.zero, RaycastHits, 0, Global.WorldSelectableLayers); for (int i = 0; i < hitCount; i++) { hit = RaycastHits[i]; IWorldSelectable pup = hit.transform.GetComponent <IWorldSelectable>(); if (pup != null) { pups.Add((Component)pup); /*if( !highlightedPickups.Contains( pup ) ) * { * pup.Highlight(); * highlightedPickups.Add( pup ); * }*/ } } //WorldSelectable closest = (WorldSelectable)FindClosest( transform.position, pups.ToArray() ); IWorldSelectable closest = (IWorldSelectable)Util.FindSmallestAngle(transform.position, shoot, pups.ToArray()); if (closest == null) { if (closestISelect != null) { closestISelect.Unhighlight(); closestISelect = null; } if (WorldSelection != null) { WorldSelection.Unselect(); WorldSelection = null; } } else if (closest != closestISelect) { if (closestISelect != null) { closestISelect.Unhighlight(); } closestISelect = closest; closestISelect.Highlight(); } /*highlightedPickupsRemove.Clear(); * foreach( var pup in highlightedPickups ) * if( !pups.Contains( pup ) ) * { * pup.Unhighlight(); * highlightedPickupsRemove.Add( pup ); * } * foreach( var pup in highlightedPickupsRemove ) * highlightedPickups.Remove( pup ); */ }