public void Press(bool press) { pressed = press; if (releaseTime <= 0) { currentReleaseTime = releaseTime; //if (press) { // GetComponent<Animator>().Play("ButtonDown"); //} else { // GetComponent<Animator>().Play("ButtonUp"); //} } else { if (press == true) { //if (!timerPressed) { // GetComponent<Animator>().Play("ButtonDown"); //} timerPressed = true; currentReleaseTime = releaseTime; } } // Activate like normally if this button isn't connected to a combinator (logic gate) if (combinator == null) { if (pressed) { foreach (GameObject listener in onListeners) { // All types of listeners go here to keep things nice n tidy MovingPlatform mp = listener.GetComponent <MovingPlatform>(); ObjectChute oc = listener.GetComponent <ObjectChute>(); Teleporter tp = listener.GetComponent <Teleporter>(); if (mp != null) { mp.activated = true; } if (oc != null) { oc.SpawnObject(true); } if (tp != null) { tp.DoTeleport(); } } } else { foreach (GameObject listener in offListeners) { // All types of listeners go here to keep things nice n tidy MovingPlatform mp = listener.GetComponent <MovingPlatform>(); ObjectChute oc = listener.GetComponent <ObjectChute>(); Teleporter tp = listener.GetComponent <Teleporter>(); if (mp != null) { mp.activated = false; } if (oc != null) { oc.SpawnObject(true); } if (tp != null) { tp.DoTeleport(); } } } } else { // No need to notify the combinator or anything -- it's always listening. <_< } }
void Update() { bool allActivated = true; bool oneActivated = false; foreach (GameObject activator in activators) { PushButton button = activator.GetComponent <PushButton>(); if (button != null) { if (button.pressed) { oneActivated = true; } else { allActivated = false; } } } activatedPreviously = activated; switch (gateType) { case CombinationGateType.AND: if (allActivated) { activated = true; } break; case CombinationGateType.OR: if (oneActivated) { activated = true; } break; case CombinationGateType.XOR: if (oneActivated && !allActivated) { activated = true; } break; } // Check to see if a change happened if (activated != activatedPreviously) { if (activated) { foreach (GameObject listener in onListeners) { // All types of listeners go here to keep things nice n tidy MovingPlatform mp = listener.GetComponent <MovingPlatform>(); ObjectChute oc = listener.GetComponent <ObjectChute>(); Teleporter tp = listener.GetComponent <Teleporter>(); if (mp != null) { mp.activated = true; } if (oc != null) { oc.SpawnObject(true); } if (tp != null) { tp.DoTeleport(); } } } else { foreach (GameObject listener in offListeners) { // All types of listeners go here to keep things nice n tidy MovingPlatform mp = listener.GetComponent <MovingPlatform>(); ObjectChute oc = listener.GetComponent <ObjectChute>(); Teleporter tp = listener.GetComponent <Teleporter>(); if (mp != null) { mp.activated = false; } if (oc != null) { oc.SpawnObject(true); } if (tp != null) { tp.DoTeleport(); } } } } }