public override void processHoldGesture(Vector2 pos, float holdTime, bool finished) { float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime; if (range > maxRange) { range = maxRange; } if (finished) { Collider2D[] hitColliders = Physics2D.OverlapCircleAll(pos, range); for (int i = 0; i < hitColliders.Length; i++) { Rigidbody2D orb2d = hitColliders[i].gameObject.GetComponent <Rigidbody2D>(); if (orb2d != null) { Utility.AddWeightedExplosionForce(orb2d, forceAmount, pos, range); } else { HardMaterial hm = hitColliders[i].gameObject.GetComponent <HardMaterial>(); if (hm != null) { float force = forceAmount * (range - Utility.distanceToObject(pos, hitColliders[i].gameObject)) / Time.fixedDeltaTime; hm.checkForce(force); } ShieldBubbleController sbc = hitColliders[i].gameObject.GetComponent <ShieldBubbleController>(); if (sbc != null) { float force = forceAmount * (range - Utility.distanceToObject(pos, hitColliders[i].gameObject)) / Time.fixedDeltaTime; sbc.checkForce(force); } } } showExplosionEffect(pos, range * 2); AudioSource.PlayClipAtPoint(forceTeleportSound, pos); Destroy(frii); frii = null; particleController.activateTeleportParticleSystem(false); } else { if (frii == null) { frii = Instantiate(forceRangeIndicator); friu = frii.GetComponent <TeleportRangeIndicatorUpdater>(); frii.GetComponent <SpriteRenderer>().enabled = false; } frii.transform.position = (Vector2)pos; friu.setRange(range); //Particle effects particleController.activateTeleportParticleSystem(true, effectColor, pos, range); } }
public void processHoldGesture(Vector2 pos, float holdTime, bool finished, out GameObject spawnedShield) { spawnedShield = null; float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime; if (range > maxRange) { range = maxRange; } if (finished) { //Spawn Shield Bubble if (canSpawnShieldBubble(pos, range)) { GameObject newSB = spawnShieldBubble(pos, range, 100 * range / maxRange); if (!spawnDemos) { GameManager.addObject(newSB); } spawnedShield = newSB; AudioSource.PlayClipAtPoint(shieldBubbleSound, pos); } else { AudioSource.PlayClipAtPoint(shieldBubbleFailSound, pos); } Destroy(srii); srii = null; particleController.activateTeleportParticleSystem(false); if (circularProgressBar != null) { circularProgressBar.setPercentage(0); } } else { if (srii == null) { srii = Instantiate(shieldRangeIndicator); sriu = srii.GetComponent <TeleportRangeIndicatorUpdater>(); srii.GetComponent <SpriteRenderer>().enabled = false; } srii.transform.position = (Vector2)pos; sriu.setRange(range); //Particle effects particleController.activateTeleportParticleSystem(true, effectColor, pos, range); if (circularProgressBar != null) { circularProgressBar.setPercentage(range / maxRange); circularProgressBar.transform.position = pos; } } }
public override void processHoldGesture(Vector2 pos, float holdTime, bool finished) { float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime; if (range > maxRange) { range = maxRange; } if (finished) { futureProjection.SetActive(false); Destroy(frii); frii = null; particleController.activateTeleportParticleSystem(false); if (circularProgressBar != null) { circularProgressBar.setPercentage(0); } } else { futureProjection.SetActive(true); futureProjection.transform.rotation = transform.rotation; futureProjection.transform.localScale = transform.localScale; Vector2 futurePos = pc.findTeleportablePosition(pos); futureProjection.transform.position = futurePos; if (frii == null) { frii = Instantiate(teleportRangeIndicator); friu = frii.GetComponent <TeleportRangeIndicatorUpdater>(); frii.GetComponent <SpriteRenderer>().enabled = false; } frii.transform.position = futurePos; friu.setRange(range); //Particle effects particleController.activateTeleportParticleSystem(true, effectColor, futurePos, range); if (circularProgressBar != null) { circularProgressBar.setPercentage(range / maxRange); circularProgressBar.transform.position = pos; } } }