private void UpdateCircuit(bool should_update_anim = true) { if ((UnityEngine.Object)attachedWire != (UnityEngine.Object)null) { if (switchedOn) { attachedWire.Connect(); } else { attachedWire.Disconnect(); } } if (should_update_anim && wasOn != switchedOn) { KBatchedAnimController component = GetComponent <KBatchedAnimController>(); component.Play((!switchedOn) ? "on_pst" : "on_pre", KAnim.PlayMode.Once, 1f, 0f); component.Queue((!switchedOn) ? "off" : "on", KAnim.PlayMode.Once, 1f, 0f); Game.Instance.userMenu.Refresh(base.gameObject); } wasOn = switchedOn; }
void CheckWire(bool rightArm, float triggerValue, HingeJoint2D connector, CircleCollider2D col) { if (triggerValue > .5f && !connector.enabled) // if trigger down // find all nearby things on connect layer { int count = Physics2D.OverlapCircleNonAlloc(col.transform.position, col.radius * col.transform.localScale.x, overlapArr, 1 << 8); // find closest object Collider2D closestOverlap = null; float distance = float.PositiveInfinity; for (int i = 0; i < count; i++) { if (overlapArr[i] == rightCol || overlapArr[i] == leftCol) { continue; } float sqr = Vector2.SqrMagnitude(overlapArr[i].transform.position - col.transform.position); if (sqr < distance) { distance = sqr; closestOverlap = overlapArr[i]; } } // if found any object if (closestOverlap) { connector.enabled = true; Rigidbody2D closestRb = closestOverlap.GetComponent <Rigidbody2D>(); wire.Connect(rightArm, closestOverlap); if (rightArm) { rightMotorTime = 0.3f; } else { leftMotorTime = 0.3f; } if (closestRb) { connector.connectedBody = closestRb; } else { connector.connectedAnchor = closestOverlap.transform.position; } } } else if (triggerValue <= .5f && connector.enabled) // else disconnect if trigger isnt down { connector.connectedBody = null; connector.enabled = false; // lock it but dont pop it (to combat electricity) // this doesnt do shit because arms are all rigidbodies too so f this (saving for later) love john, godbless //if (wire.powered) { // Debug.Log("depower"); // float mag = rb2d.velocity.magnitude; // mag = Mathf.Min(mag, 1.0f); // rb2d.velocity = rb2d.velocity.normalized * mag; //} wire.Disconnect(rightArm); } }