public virtual void PowerNetworkUpdate() { ElectricityFunctions.WorkOutActualNumbers(wireConnect); if (MaximumInstantBreakCurrent != 0 && CanOverCurrent) { if (MaximumInstantBreakCurrent < wireConnect.Data.CurrentInWire) { QueueForDemolition(this); return; } if (MaximumBreakdownCurrent < wireConnect.Data.CurrentInWire) { if (CheckDestruction) { if (wireConnect.RelatedLine != null) { foreach (var CB in wireConnect.RelatedLine.Covering) { CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Stop(); } } QueueForDemolition(this); return; } else { if (wireConnect.RelatedLine != null) { foreach (var CB in wireConnect.RelatedLine.Covering) { CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Play(); } } Smoke.Play(); StartCoroutine(WaitForDemolition()); return; } } if (CheckDestruction) { CheckDestruction = false; if (wireConnect.RelatedLine != null) { foreach (var CB in wireConnect.RelatedLine.Covering) { CB.gameObject.GetComponent <CableInheritance>()?.Smoke.Stop(); } } Smoke.Stop(); } if (IsSparking()) { Sparks.Stop(); } } }
void OnCollisionEnter2D(Collision2D collision) { var target = collision.gameObject.GetMessageBus(); MessageToTarget(target); MessageToTarget(gameObject.GetMessageBus()); Sparks.Instantiate( transform.position, collision.contacts[0].normal); }
private void OnTriggerEnter2D(Collider2D collision) { Pipe pipe = collision.gameObject.GetComponent <Pipe>(); if (pipe != null) { Debug.Log("Fireball: Collision with Pipe"); Sparks newSpark = Instantiate(sparks, transform.position, Quaternion.identity); newSpark.ShowSparks(); Destroy(gameObject); Destroy(collision.gameObject); } }
public void QueueForDemolition(CableInheritance CableToDestroy) { if (!IsSparking()) { Sparks.Play(); } DestructionPriority = wireConnect.Data.CurrentInWire * MaximumBreakdownCurrent; if (ElectricalSynchronisation.CableToDestroy != null) { if (DestructionPriority > ElectricalSynchronisation.CableToDestroy.DestructionPriority) { ElectricalSynchronisation.CableUpdates.Add(ElectricalSynchronisation.CableToDestroy); ElectricalSynchronisation.CableToDestroy = this; } else { ElectricalSynchronisation.CableUpdates.Add(this); } } else { ElectricalSynchronisation.CableToDestroy = this; } }